Allow custom "eye catcher" from LO_TESTNAME in tempfiles on Windows
[libreoffice.git] / configure.ac
blob507fef7e9d341f462ddc19ff088c654f7797edb2
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],[24.8.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
17 AC_PREREQ([2.59])
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19     [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22     AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     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 command -v 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=`command -v git`
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=`command -v gpg`
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 git_date=`git log -1 --pretty=format:"%cd" --date=format:'%Y' 2>&/dev/null`
523 LIBO_THIS_YEAR=${git_date:-2024}
524 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
526 dnl ===================================================================
527 dnl Product version
528 dnl ===================================================================
529 AC_MSG_CHECKING([for product version])
530 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
531 AC_MSG_RESULT([$PRODUCTVERSION])
532 AC_SUBST(PRODUCTVERSION)
534 AC_PROG_EGREP
535 # AC_PROG_EGREP doesn't set GREP on all systems as well
536 AC_PATH_PROG(GREP, grep)
538 BUILDDIR=`pwd`
539 cd $srcdir
540 SRC_ROOT=`pwd`
541 cd $BUILDDIR
542 x_Cygwin=[\#]
544 dnl ======================================
545 dnl Required GObject introspection version
546 dnl ======================================
547 INTROSPECTION_REQUIRED_VERSION=1.32.0
549 dnl ===================================================================
550 dnl Search all the common names for GNU Make
551 dnl ===================================================================
552 AC_MSG_CHECKING([for GNU Make])
554 # try to use our own make if it is available and GNUMAKE was not already defined
555 if test -z "$GNUMAKE"; then
556     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
557         GNUMAKE="$LODE_HOME/opt/bin/make"
558     elif test -x "/opt/lo/bin/make"; then
559         GNUMAKE="/opt/lo/bin/make"
560     fi
563 GNUMAKE_WIN_NATIVE=
564 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
565     if test -n "$a"; then
566         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
567         if test $? -eq 0;  then
568             if test "$build_os" = "cygwin"; then
569                 if test -n "$($a -v | grep 'Built for Windows')" ; then
570                     GNUMAKE="$(cygpath -m "$(command -v "$(cygpath -u $a)")")"
571                     GNUMAKE_WIN_NATIVE="TRUE"
572                 else
573                     GNUMAKE=`command -v $a`
574                 fi
575             else
576                 GNUMAKE=`command -v $a`
577             fi
578             break
579         fi
580     fi
581 done
582 AC_MSG_RESULT($GNUMAKE)
583 if test -z "$GNUMAKE"; then
584     AC_MSG_ERROR([not found. install GNU Make.])
585 else
586     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
587         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
588     fi
591 win_short_path_for_make()
593     local short_path="$1"
594     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
595         cygpath -sm "$short_path"
596     else
597         cygpath -u "$(cygpath -d "$short_path")"
598     fi
602 if test "$build_os" = "cygwin"; then
603     PathFormat "$SRC_ROOT"
604     SRC_ROOT="$formatted_path"
605     PathFormat "$BUILDDIR"
606     BUILDDIR="$formatted_path"
607     x_Cygwin=
608     AC_MSG_CHECKING(for explicit COMSPEC)
609     if test -z "$COMSPEC"; then
610         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
611     else
612         AC_MSG_RESULT([found: $COMSPEC])
613     fi
616 AC_SUBST(SRC_ROOT)
617 AC_SUBST(BUILDDIR)
618 AC_SUBST(x_Cygwin)
619 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
620 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
621 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
623 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
624     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
627 # need sed in os checks...
628 AC_PATH_PROGS(SED, sed)
629 if test -z "$SED"; then
630     AC_MSG_ERROR([install sed to run this script])
633 # Set the ENABLE_LTO variable
634 # ===================================================================
635 AC_MSG_CHECKING([whether to use link-time optimization])
636 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
637     ENABLE_LTO="TRUE"
638     AC_MSG_RESULT([yes])
639 else
640     ENABLE_LTO=""
641     AC_MSG_RESULT([no])
643 AC_SUBST(ENABLE_LTO)
645 AC_ARG_ENABLE(fuzz-options,
646     AS_HELP_STRING([--enable-fuzz-options],
647         [Randomly enable or disable each of those configurable options
648          that are supposed to be freely selectable without interdependencies,
649          or where bad interaction from interdependencies is automatically avoided.])
652 dnl ===================================================================
653 dnl When building for Android, --with-android-ndk,
654 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
655 dnl mandatory
656 dnl ===================================================================
658 AC_ARG_WITH(android-ndk,
659     AS_HELP_STRING([--with-android-ndk],
660         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
663 AC_ARG_WITH(android-ndk-toolchain-version,
664     AS_HELP_STRING([--with-android-ndk-toolchain-version],
665         [Specify which toolchain version to use, of those present in the
666         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
667         with_android_ndk_toolchain_version=clang5.0)
669 AC_ARG_WITH(android-sdk,
670     AS_HELP_STRING([--with-android-sdk],
671         [Specify location of the Android SDK. Mandatory when building for Android.]),
674 AC_ARG_WITH(android-api-level,
675     AS_HELP_STRING([--with-android-api-level],
676         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
679 ANDROID_NDK_DIR=
680 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
681     with_android_ndk="$SRC_ROOT/external/android-ndk"
683 if test -n "$with_android_ndk"; then
684     eval ANDROID_NDK_DIR=$with_android_ndk
686     ANDROID_API_LEVEL=21
687     if test -n "$with_android_api_level" ; then
688         ANDROID_API_LEVEL="$with_android_api_level"
689     fi
691     if test $host_cpu = arm; then
692         LLVM_TRIPLE=armv7a-linux-androideabi
693         ANDROID_SYSROOT_PLATFORM=arm-linux-androideabi
694         ANDROID_APP_ABI=armeabi-v7a
695         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
696     elif test $host_cpu = aarch64; then
697         LLVM_TRIPLE=aarch64-linux-android
698         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
699         ANDROID_APP_ABI=arm64-v8a
700     elif test $host_cpu = x86_64; then
701         LLVM_TRIPLE=x86_64-linux-android
702         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
703         ANDROID_APP_ABI=x86_64
704     else
705         # host_cpu is something like "i386" or "i686" I guess, NDK uses
706         # "x86" in some contexts
707         LLVM_TRIPLE=i686-linux-android
708         ANDROID_SYSROOT_PLATFORM=$LLVM_TRIPLE
709         ANDROID_APP_ABI=x86
710     fi
712     # Set up a lot of pre-canned defaults
714     if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
715         if test ! -f $ANDROID_NDK_DIR/source.properties; then
716             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
717         fi
718         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
719     else
720         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
721     fi
722     if test -z "$ANDROID_NDK_VERSION";  then
723         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
724     fi
725     case $ANDROID_NDK_VERSION in
726     r9*|r10*)
727         AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
728         ;;
729     11.1.*|12.1.*|13.1.*|14.1.*|16.*|17.*|18.*|19.*|20.*|21.*|22.*)
730         AC_MSG_ERROR([Building for Android requires NDK version >= 23.*])
731         ;;
732     23.*|24.*|25.*)
733         ;;
734     *)
735         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk.])
736         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 23.* to 25.* have been used successfully. Proceed at your own risk."
737         ;;
738     esac
740     case "$with_android_ndk_toolchain_version" in
741     clang5.0)
742         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
743         ;;
744     *)
745         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
746     esac
748     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
750     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
751     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
752     # manage to link the (app-specific) single huge .so that is built for the app in
753     # android/source/ if there is debug information in a significant part of the object files.
754     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
755     # all objects have been built with debug information.)
756     case $build_os in
757     linux-gnu*)
758         android_HOST_TAG=linux-x86_64
759         ;;
760     darwin*)
761         android_HOST_TAG=darwin-x86_64
762         ;;
763     *)
764         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
765         # ndk would also support windows and windows-x86_64
766         ;;
767     esac
768     ANDROID_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
769     ANDROID_COMPILER_BIN=$ANDROID_TOOLCHAIN/bin
771     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/llvm-ar
772     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/llvm-nm
773     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/llvm-objdump
774     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/llvm-ranlib
775     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/llvm-strip
777     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
778     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
779     if test "$ENABLE_LTO" = TRUE; then
780         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
781         # $CC and $CXX when building external libraries
782         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
783     fi
785     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
787     if test -z "$CC"; then
788         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
789         CC_BASE="clang"
790     fi
791     if test -z "$CXX"; then
792         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
793         CXX_BASE="clang++"
794     fi
796 AC_SUBST(ANDROID_NDK_DIR)
797 AC_SUBST(ANDROID_API_LEVEL)
798 AC_SUBST(ANDROID_APP_ABI)
799 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
800 AC_SUBST(ANDROID_SYSROOT_PLATFORM)
801 AC_SUBST(ANDROID_TOOLCHAIN)
803 dnl ===================================================================
804 dnl --with-android-sdk
805 dnl ===================================================================
806 ANDROID_SDK_DIR=
807 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
808     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
810 if test -n "$with_android_sdk"; then
811     eval ANDROID_SDK_DIR=$with_android_sdk
812     PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
814 AC_SUBST(ANDROID_SDK_DIR)
816 AC_ARG_ENABLE([android-lok],
817     AS_HELP_STRING([--enable-android-lok],
818         [The Android app from the android/ subdir needs several tweaks all
819          over the place that break the LOK when used in the Online-based
820          Android app.  This switch indicates that the intent of this build is
821          actually the Online-based, non-modified LOK.])
823 ENABLE_ANDROID_LOK=
824 if test -n "$ANDROID_NDK_DIR" ; then
825     if test "$enable_android_lok" = yes; then
826         ENABLE_ANDROID_LOK=TRUE
827         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
828         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
829     else
830         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
831     fi
833 AC_SUBST([ENABLE_ANDROID_LOK])
835 libo_FUZZ_ARG_ENABLE([android-editing],
836     AS_HELP_STRING([--enable-android-editing],
837         [Enable the experimental editing feature on Android.])
839 ENABLE_ANDROID_EDITING=
840 if test "$enable_android_editing" = yes; then
841     ENABLE_ANDROID_EDITING=TRUE
843 AC_SUBST([ENABLE_ANDROID_EDITING])
845 disable_database_connectivity_dependencies()
847     enable_evolution2=no
848     enable_firebird_sdbc=no
849     enable_mariadb_sdbc=no
850     enable_postgresql_sdbc=no
851     enable_report_builder=no
854 # ===================================================================
856 # Start initial platform setup
858 # The using_* variables reflect platform support and should not be
859 # changed after the "End initial platform setup" block.
860 # This is also true for most test_* variables.
861 # ===================================================================
862 build_crypto=yes
863 test_clucene=no
864 test_gdb_index=no
865 test_openldap=yes
866 test_split_debug=no
867 test_webdav=yes
868 usable_dlapi=yes
870 # There is currently just iOS not using salplug, so this explicitly enables it.
871 # must: using_freetype_fontconfig
872 #  may: using_headless_plugin defaults to $using_freetype_fontconfig
873 # must: using_x11
875 # Default values, as such probably valid just for Linux, set
876 # differently below just for Mac OSX, but at least better than
877 # hardcoding these as we used to do. Much of this is duplicated also
878 # in solenv for old build system and for gbuild, ideally we should
879 # perhaps define stuff like this only here in configure.ac?
881 LINKFLAGSSHL="-shared"
882 PICSWITCH="-fpic"
883 DLLPOST=".so"
885 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
887 INSTROOTBASESUFFIX=
888 INSTROOTCONTENTSUFFIX=
889 SDKDIRNAME=sdk
891 HOST_PLATFORM="$host"
893 host_cpu_for_clang="$host_cpu"
895 case "$host_os" in
897 solaris*)
898     using_freetype_fontconfig=yes
899     using_x11=yes
900     build_skia=yes
901     _os=SunOS
903     dnl ===========================================================
904     dnl Check whether we're using Solaris 10 - SPARC or Intel.
905     dnl ===========================================================
906     AC_MSG_CHECKING([the Solaris operating system release])
907     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
908     if test "$_os_release" -lt "10"; then
909         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
910     else
911         AC_MSG_RESULT([ok ($_os_release)])
912     fi
914     dnl Check whether we're using a SPARC or i386 processor
915     AC_MSG_CHECKING([the processor type])
916     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
917         AC_MSG_RESULT([ok ($host_cpu)])
918     else
919         AC_MSG_ERROR([only SPARC and i386 processors are supported])
920     fi
921     ;;
923 linux-gnu*|k*bsd*-gnu*|linux-musl*)
924     using_freetype_fontconfig=yes
925     using_x11=yes
926     build_skia=yes
927     test_gdb_index=yes
928     test_split_debug=yes
929     if test "$enable_fuzzers" = yes; then
930         test_system_freetype=no
931     fi
932     _os=Linux
933     ;;
935 gnu)
936     using_freetype_fontconfig=yes
937     using_x11=no
938     _os=GNU
939      ;;
941 cygwin*|wsl*)
942     # When building on Windows normally with MSVC under Cygwin,
943     # configure thinks that the host platform (the platform the
944     # built code will run on) is Cygwin, even if it obviously is
945     # Windows, which in Autoconf terminology is called
946     # "mingw32". (Which is misleading as MinGW is the name of the
947     # tool-chain, not an operating system.)
949     # Somewhat confusing, yes. But this configure script doesn't
950     # look at $host etc that much, it mostly uses its own $_os
951     # variable, set here in this case statement.
953     using_freetype_fontconfig=no
954     using_x11=no
955     test_unix_dlapi=no
956     test_openldap=no
957     enable_pagein=no
958     build_skia=yes
959     _os=WINNT
961     DLLPOST=".dll"
962     LINKFLAGSNOUNDEFS=
964     if test "$host_cpu" = "aarch64"; then
965         build_skia=no
966         enable_gpgmepp=no
967         enable_coinmp=no
968         enable_firebird_sdbc=no
969     fi
970     ;;
972 darwin*) # macOS
973     using_freetype_fontconfig=no
974     using_x11=no
975     build_skia=yes
976     enable_pagein=no
977     if test -n "$LODE_HOME" ; then
978         mac_sanitize_path
979         AC_MSG_NOTICE([sanitized the PATH to $PATH])
980     fi
981     _os=Darwin
982     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
983     INSTROOTCONTENTSUFFIX=/Contents
984     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
985     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
986     LINKFLAGSSHL="-dynamiclib"
988     # -fPIC is default
989     PICSWITCH=""
991     DLLPOST=".dylib"
993     # -undefined error is the default
994     LINKFLAGSNOUNDEFS=""
995     case "$host_cpu" in
996     aarch64|arm64)
997         # Apple's Clang uses "arm64"
998         host_cpu_for_clang=arm64
999     esac
1002 ios*) # iOS
1003     using_freetype_fontconfig=no
1004     using_x11=no
1005     build_crypto=no
1006     test_libcmis=no
1007     test_openldap=no
1008     test_webdav=no
1009     if test -n "$LODE_HOME" ; then
1010         mac_sanitize_path
1011         AC_MSG_NOTICE([sanitized the PATH to $PATH])
1012     fi
1013     enable_gpgmepp=no
1014     _os=iOS
1015     enable_mpl_subset=yes
1016     enable_lotuswordpro=no
1017     disable_database_connectivity_dependencies
1018     enable_coinmp=no
1019     enable_lpsolve=no
1020     enable_extension_integration=no
1021     enable_xmlhelp=no
1022     with_ppds=no
1023     if test "$enable_ios_simulator" = "yes"; then
1024         host=x86_64-apple-darwin
1025     fi
1026     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1027     LINKFLAGSSHL="-dynamiclib"
1029     # -fPIC is default
1030     PICSWITCH=""
1032     DLLPOST=".dylib"
1034     # -undefined error is the default
1035     LINKFLAGSNOUNDEFS=""
1037     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1038     # part, so use aarch64-apple-darwin for now.
1039     HOST_PLATFORM=aarch64-apple-darwin
1041     # Apple's Clang uses "arm64"
1042     host_cpu_for_clang=arm64
1045 freebsd*)
1046     using_freetype_fontconfig=yes
1047     using_x11=yes
1048     build_skia=yes
1049     AC_MSG_CHECKING([the FreeBSD operating system release])
1050     if test -n "$with_os_version"; then
1051         OSVERSION="$with_os_version"
1052     else
1053         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1054     fi
1055     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1056     AC_MSG_CHECKING([which thread library to use])
1057     if test "$OSVERSION" -lt "500016"; then
1058         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1059         PTHREAD_LIBS="-pthread"
1060     elif test "$OSVERSION" -lt "502102"; then
1061         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1062         PTHREAD_LIBS="-lc_r"
1063     else
1064         PTHREAD_CFLAGS=""
1065         PTHREAD_LIBS="-pthread"
1066     fi
1067     AC_MSG_RESULT([$PTHREAD_LIBS])
1068     _os=FreeBSD
1069     ;;
1071 *netbsd*)
1072     using_freetype_fontconfig=yes
1073     using_x11=yes
1074     test_gtk3_kde5=no
1075     build_skia=yes
1076     PTHREAD_LIBS="-pthread -lpthread"
1077     _os=NetBSD
1078     ;;
1080 openbsd*)
1081     using_freetype_fontconfig=yes
1082     using_x11=yes
1083     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1084     PTHREAD_LIBS="-pthread"
1085     _os=OpenBSD
1086     ;;
1088 dragonfly*)
1089     using_freetype_fontconfig=yes
1090     using_x11=yes
1091     build_skia=yes
1092     PTHREAD_LIBS="-pthread"
1093     _os=DragonFly
1094     ;;
1096 linux-android*)
1097     # API exists, but seems not really usable since Android 7 AFAIK
1098     usable_dlapi=no
1099     using_freetype_fontconfig=yes
1100     using_headless_plugin=no
1101     using_x11=no
1102     build_crypto=no
1103     test_openldap=no
1104     test_system_freetype=no
1105     test_webdav=no
1106     disable_database_connectivity_dependencies
1107     enable_lotuswordpro=no
1108     enable_mpl_subset=yes
1109     enable_cairo_canvas=no
1110     enable_coinmp=yes
1111     enable_lpsolve=no
1112     enable_odk=no
1113     enable_python=no
1114     enable_xmlhelp=no
1115     _os=Android
1116     ;;
1118 haiku*)
1119     using_freetype_fontconfig=yes
1120     using_x11=no
1121     test_gtk3=no
1122     test_gtk3_kde5=no
1123     test_kf5=yes
1124     test_kf6=yes
1125     enable_odk=no
1126     enable_coinmp=no
1127     enable_pdfium=no
1128     enable_sdremote=no
1129     enable_postgresql_sdbc=no
1130     enable_firebird_sdbc=no
1131     _os=Haiku
1132     ;;
1134 emscripten)
1135     # API currently just exists in headers, not code
1136     usable_dlapi=no
1137     using_freetype_fontconfig=yes
1138     using_x11=yes
1139     test_openldap=no
1140     test_qt5=yes
1141     test_split_debug=yes
1142     test_system_freetype=no
1143     enable_compiler_plugins=no
1144     enable_customtarget_components=yes
1145     enable_split_debug=yes
1146     enable_wasm_strip=yes
1147     with_system_zlib=no
1148     with_theme="colibre"
1149     _os=Emscripten
1150     ;;
1153     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1154     ;;
1155 esac
1157 AC_SUBST(HOST_PLATFORM)
1159 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1160     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1163 # Set defaults, if not set by platform
1164 test "${test_cups+set}" = set || test_cups="$using_x11"
1165 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1166 test "${test_gen+set}" = set || test_gen="$using_x11"
1167 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1168 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1169 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1170 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1171 test "${test_kf6+set}" = set || test_kf6="$using_x11"
1172 # don't handle test_qt5, so it can disable test_kf5 later
1173 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1174 test "${test_randr+set}" = set || test_randr="$using_x11"
1175 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1176 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1178 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1179 # Make sure fontconfig and freetype test both either system or not
1180 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1181 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1183 # convenience / platform overriding "fixes"
1184 # Don't sort!
1185 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1186 test "$test_kf5" = yes && test_qt5=yes
1187 test "$test_gtk3" != yes && enable_gtk3=no
1188 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1189 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1190 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1192 # Keep in sync with the above $using_x11 depending test default list
1193 disable_x11_tests()
1195     test_cups=no
1196     test_dbus=no
1197     test_gen=no
1198     test_gstreamer_1_0=no
1199     test_gtk3_kde5=no
1200     test_gtk3=no
1201     test_gtk4=no
1202     test_kf5=no
1203     test_kf6=no
1204     test_qt5=no
1205     test_qt6=no
1206     test_randr=no
1207     test_xrender=no
1210 test "$using_x11" = yes && USING_X11=TRUE
1212 if test "$using_freetype_fontconfig" = yes; then
1213     AC_DEFINE(USE_HEADLESS_CODE)
1214     USE_HEADLESS_CODE=TRUE
1215     if test "$using_headless_plugin" = yes; then
1216         AC_DEFINE(ENABLE_HEADLESS)
1217         ENABLE_HEADLESS=TRUE
1218     fi
1219 else
1220     test_fontconfig=no
1221     test_freetype=no
1224 AC_SUBST(ENABLE_HEADLESS)
1225 AC_SUBST(USE_HEADLESS_CODE)
1227 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1228 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1229 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1230 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1232 # ===================================================================
1234 # End initial platform setup
1236 # ===================================================================
1238 if test "$_os" = "Android" ; then
1239     # Verify that the NDK and SDK options are proper
1240     if test -z "$with_android_ndk"; then
1241         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1242     elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1243         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1244     fi
1246     if test -z "$ANDROID_SDK_DIR"; then
1247         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1248     elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1249         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1250     fi
1253 AC_SUBST(SDKDIRNAME)
1255 AC_SUBST(PTHREAD_CFLAGS)
1256 AC_SUBST(PTHREAD_LIBS)
1258 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1259 # By default use the ones specified by our build system,
1260 # but explicit override is possible.
1261 AC_MSG_CHECKING(for explicit AFLAGS)
1262 if test -n "$AFLAGS"; then
1263     AC_MSG_RESULT([$AFLAGS])
1264     x_AFLAGS=
1265 else
1266     AC_MSG_RESULT(no)
1267     x_AFLAGS=[\#]
1269 AC_MSG_CHECKING(for explicit CFLAGS)
1270 if test -n "$CFLAGS"; then
1271     AC_MSG_RESULT([$CFLAGS])
1272     x_CFLAGS=
1273 else
1274     AC_MSG_RESULT(no)
1275     x_CFLAGS=[\#]
1277 AC_MSG_CHECKING(for explicit CXXFLAGS)
1278 if test -n "$CXXFLAGS"; then
1279     AC_MSG_RESULT([$CXXFLAGS])
1280     x_CXXFLAGS=
1281 else
1282     AC_MSG_RESULT(no)
1283     x_CXXFLAGS=[\#]
1285 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1286 if test -n "$OBJCFLAGS"; then
1287     AC_MSG_RESULT([$OBJCFLAGS])
1288     x_OBJCFLAGS=
1289 else
1290     AC_MSG_RESULT(no)
1291     x_OBJCFLAGS=[\#]
1293 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1294 if test -n "$OBJCXXFLAGS"; then
1295     AC_MSG_RESULT([$OBJCXXFLAGS])
1296     x_OBJCXXFLAGS=
1297 else
1298     AC_MSG_RESULT(no)
1299     x_OBJCXXFLAGS=[\#]
1301 AC_MSG_CHECKING(for explicit LDFLAGS)
1302 if test -n "$LDFLAGS"; then
1303     AC_MSG_RESULT([$LDFLAGS])
1304     x_LDFLAGS=
1305 else
1306     AC_MSG_RESULT(no)
1307     x_LDFLAGS=[\#]
1309 AC_SUBST(AFLAGS)
1310 AC_SUBST(CFLAGS)
1311 AC_SUBST(CXXFLAGS)
1312 AC_SUBST(OBJCFLAGS)
1313 AC_SUBST(OBJCXXFLAGS)
1314 AC_SUBST(LDFLAGS)
1315 AC_SUBST(x_AFLAGS)
1316 AC_SUBST(x_CFLAGS)
1317 AC_SUBST(x_CXXFLAGS)
1318 AC_SUBST(x_OBJCFLAGS)
1319 AC_SUBST(x_OBJCXXFLAGS)
1320 AC_SUBST(x_LDFLAGS)
1322 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1323 my_original_CFLAGS=$CFLAGS
1324 my_original_CXXFLAGS=$CXXFLAGS
1325 my_original_CPPFLAGS=$CPPFLAGS
1327 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1328 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1329 dnl AC_PROG_CC internally.
1330 if test "$_os" != "WINNT"; then
1331     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1332     save_CFLAGS=$CFLAGS
1333     AC_PROG_CC
1334     CFLAGS=$save_CFLAGS
1335     if test -z "$CC_BASE"; then
1336         CC_BASE=`first_arg_basename "$CC"`
1337     fi
1340 if test "$_os" != "WINNT"; then
1341     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1342 else
1343     ENDIANNESS=little
1345 AC_SUBST(ENDIANNESS)
1347 if test "$usable_dlapi" != no; then
1348     AC_DEFINE([HAVE_DLAPI])
1349     if test "$test_unix_dlapi" != no; then
1350         save_LIBS="$LIBS"
1351         AC_SEARCH_LIBS([dlsym], [dl],
1352             [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1353             [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1354         LIBS="$save_LIBS"
1355         AC_DEFINE([HAVE_UNIX_DLAPI])
1356     fi
1358 AC_SUBST(UNIX_DLAPI_LIBS)
1360 # Check for a (GNU) backtrace implementation
1361 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1362 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1363 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1364     save_LIBS="$LIBS"
1365     AC_SEARCH_LIBS([backtrace], [libexecinfo],
1366         [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1367         [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1368     LIBS="$save_LIBS"
1370 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1371     AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1374 dnl ===================================================================
1375 dnl Sanity checks for Emscripten SDK setup
1376 dnl ===================================================================
1378 EMSCRIPTEN_MIN_MAJOR=2
1379 EMSCRIPTEN_MIN_MINOR=0
1380 EMSCRIPTEN_MIN_TINY=31
1381 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1383 if test "$_os" = "Emscripten"; then
1384     AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1385     if test -z "$EMSCRIPTEN_VERSION_H"; then
1386         AS_IF([test -z "$EMSDK"],
1387               [AC_MSG_ERROR([No \$EMSDK environment variable.])])
1388         EMSCRIPTEN_VERSION_H=$EMSDK/upstream/emscripten/cache/sysroot/include/emscripten/version.h
1389     fi
1390     if test -f "$EMSCRIPTEN_VERSION_H"; then
1391         EMSCRIPTEN_MAJOR=$($GREP __EMSCRIPTEN_major__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1392         EMSCRIPTEN_MINOR=$($GREP __EMSCRIPTEN_minor__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1393         EMSCRIPTEN_TINY=$($GREP __EMSCRIPTEN_tiny__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1394     else
1395         EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1396         EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1397         EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1398         EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1399     fi
1401     EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1403     check_semantic_version_three_prefixed EMSCRIPTEN MIN
1404     if test $? -eq 0; then
1405         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1406     else
1407         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1408     fi
1410     EMSCRIPTEN_ERROR=0
1411     if ! command -v emconfigure >/dev/null 2>&1; then
1412         AC_MSG_WARN([emconfigure must be in your \$PATH])
1413         EMSCRIPTEN_ERROR=1
1414     fi
1415     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1416         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1417         EMSCRIPTEN_ERROR=1
1418     fi
1419     EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1420     if ! test -x "$EMSDK_FILE_PACKAGER"; then
1421         AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1422         EMSCRIPTEN_ERROR=1
1423     fi
1424     if test $EMSCRIPTEN_ERROR -ne 0; then
1425         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1426     fi
1428     dnl Some build-side things are conditional on "EMSCRIPTEN in BUILD_TYPE_FOR_HOST":
1429     BUILD_TYPE="$BUILD_TYPE EMSCRIPTEN"
1431 AC_SUBST(EMSDK_FILE_PACKAGER)
1433 ###############################################################################
1434 # Extensions switches --enable/--disable
1435 ###############################################################################
1436 # By default these should be enabled unless having extra dependencies.
1437 # If there is extra dependency over configure options then the enable should
1438 # be automagic based on whether the requiring feature is enabled or not.
1439 # All this options change anything only with --enable-extension-integration.
1441 # The name of this option and its help string makes it sound as if
1442 # extensions are built anyway, just not integrated in the installer,
1443 # if you use --disable-extension-integration. Is that really the
1444 # case?
1446 AC_ARG_ENABLE(ios-simulator,
1447     AS_HELP_STRING([--enable-ios-simulator],
1448         [build for iOS simulator])
1451 libo_FUZZ_ARG_ENABLE(extension-integration,
1452     AS_HELP_STRING([--disable-extension-integration],
1453         [Disable integration of the built extensions in the installer of the
1454          product. Use this switch to disable the integration.])
1457 AC_ARG_ENABLE(avmedia,
1458     AS_HELP_STRING([--disable-avmedia],
1459         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1460 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1462 AC_ARG_ENABLE(database-connectivity,
1463     AS_HELP_STRING([--disable-database-connectivity],
1464         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1467 # This doesn't mean not building (or "integrating") extensions
1468 # (although it probably should; i.e. it should imply
1469 # --disable-extension-integration I guess), it means not supporting
1470 # any extension mechanism at all
1471 libo_FUZZ_ARG_ENABLE(extensions,
1472     AS_HELP_STRING([--disable-extensions],
1473         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1476 AC_ARG_ENABLE(scripting,
1477     AS_HELP_STRING([--disable-scripting],
1478         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1479 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1481 # This is mainly for Android and iOS, but could potentially be used in some
1482 # special case otherwise, too, so factored out as a separate setting
1484 AC_ARG_ENABLE(dynamic-loading,
1485     AS_HELP_STRING([--disable-dynamic-loading],
1486         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1489 libo_FUZZ_ARG_ENABLE(report-builder,
1490     AS_HELP_STRING([--disable-report-builder],
1491         [Disable the Report Builder.])
1494 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1495     AS_HELP_STRING([--enable-ext-wiki-publisher],
1496         [Enable the Wiki Publisher extension.])
1499 libo_FUZZ_ARG_ENABLE(lpsolve,
1500     AS_HELP_STRING([--disable-lpsolve],
1501         [Disable compilation of the lp solve solver ])
1503 libo_FUZZ_ARG_ENABLE(coinmp,
1504     AS_HELP_STRING([--disable-coinmp],
1505         [Disable compilation of the CoinMP solver ])
1508 libo_FUZZ_ARG_ENABLE(pdfimport,
1509     AS_HELP_STRING([--disable-pdfimport],
1510         [Disable building the PDF import feature.])
1513 libo_FUZZ_ARG_ENABLE(pdfium,
1514     AS_HELP_STRING([--disable-pdfium],
1515         [Disable building PDFium. Results in insecure PDF signature verification.])
1518 libo_FUZZ_ARG_ENABLE(skia,
1519     AS_HELP_STRING([--disable-skia],
1520         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1523 ###############################################################################
1525 dnl ---------- *** ----------
1527 libo_FUZZ_ARG_ENABLE(mergelibs,
1528     AS_HELP_STRING([--enable-mergelibs=yes/no/more],
1529         [Merge several of the smaller libraries into one big "merged" library.
1530          The "more" option will link even more of the smaller libraries.
1531          "more" not appropriate for distros which split up LibreOffice into multiple packages.
1532          It is only appropriate for situations where all of LO is delivered in a single install/package. ])
1535 libo_FUZZ_ARG_ENABLE(breakpad,
1536     AS_HELP_STRING([--enable-breakpad],
1537         [Enables breakpad for crash reporting.])
1540 libo_FUZZ_ARG_ENABLE(crashdump,
1541     AS_HELP_STRING([--disable-crashdump],
1542         [Disable dump.ini and dump-file, when --enable-breakpad])
1545 AC_ARG_ENABLE(fetch-external,
1546     AS_HELP_STRING([--disable-fetch-external],
1547         [Disables fetching external tarballs from web sources.])
1550 AC_ARG_ENABLE(fuzzers,
1551     AS_HELP_STRING([--enable-fuzzers],
1552         [Enables building libfuzzer targets for fuzz testing.])
1555 libo_FUZZ_ARG_ENABLE(pch,
1556     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1557         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1558          Using 'system' will include only external headers, 'base' will add also headers
1559          from base modules, 'normal' will also add all headers except from the module built,
1560          'full' will use all suitable headers even from a module itself.])
1563 libo_FUZZ_ARG_ENABLE(epm,
1564     AS_HELP_STRING([--enable-epm],
1565         [LibreOffice includes self-packaging code, that requires epm, however epm is
1566          useless for large scale package building.])
1569 libo_FUZZ_ARG_ENABLE(odk,
1570     AS_HELP_STRING([--enable-odk],
1571         [Enable building the Office Development Kit, the part that extensions need to build against])
1574 AC_ARG_ENABLE(mpl-subset,
1575     AS_HELP_STRING([--enable-mpl-subset],
1576         [Don't compile any pieces which are not MPL or more liberally licensed])
1579 libo_FUZZ_ARG_ENABLE(evolution2,
1580     AS_HELP_STRING([--enable-evolution2],
1581         [Allows the built-in evolution 2 addressbook connectivity build to be
1582          enabled.])
1585 AC_ARG_ENABLE(avahi,
1586     AS_HELP_STRING([--enable-avahi],
1587         [Determines whether to use Avahi to advertise Impress to remote controls.])
1590 libo_FUZZ_ARG_ENABLE(werror,
1591     AS_HELP_STRING([--enable-werror],
1592         [Turn warnings to errors. (Has no effect in modules where the treating
1593          of warnings as errors is disabled explicitly.)]),
1596 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1597     AS_HELP_STRING([--enable-assert-always-abort],
1598         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1601 libo_FUZZ_ARG_ENABLE(dbgutil,
1602     AS_HELP_STRING([--enable-dbgutil],
1603         [Provide debugging support from --enable-debug and include additional debugging
1604          utilities such as object counting or more expensive checks.
1605          This is the recommended option for developers.
1606          Note that this makes the build ABI incompatible, it is not possible to mix object
1607          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1609 libo_FUZZ_ARG_ENABLE(debug,
1610     AS_HELP_STRING([--enable-debug],
1611         [Include debugging information, disable compiler optimization and inlining plus
1612          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1614 libo_FUZZ_ARG_ENABLE(split-debug,
1615     AS_HELP_STRING([--disable-split-debug],
1616         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1617          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1619 libo_FUZZ_ARG_ENABLE(gdb-index,
1620     AS_HELP_STRING([--disable-gdb-index],
1621         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1622          The feature requires a linker that supports the --gdb-index option.]))
1624 libo_FUZZ_ARG_ENABLE(sal-log,
1625     AS_HELP_STRING([--enable-sal-log],
1626         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1628 libo_FUZZ_ARG_ENABLE(symbols,
1629     AS_HELP_STRING([--enable-symbols],
1630         [Generate debug information.
1631          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1632          otherwise. It is possible to explicitly specify gbuild build targets
1633          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1634          everything in the directory; there is no ordering, more specific overrides
1635          more general, and disabling takes precedence).
1636          Example: --enable-symbols="all -sw/ -Library_sc".]))
1638 libo_FUZZ_ARG_ENABLE(optimized,
1639     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1640         [Whether to compile with optimization flags.
1641          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1642          otherwise. Using 'debug' will try to use only optimizations that should
1643          not interfere with debugging. For Emscripten we default to optimized (-O1)
1644          debug build, as otherwise binaries become too large.]))
1646 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1647     AS_HELP_STRING([--disable-runtime-optimizations],
1648         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1649          JVM JIT) that are known to interact badly with certain dynamic analysis
1650          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1651          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1652          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1654 AC_ARG_WITH(valgrind,
1655     AS_HELP_STRING([--with-valgrind],
1656         [Make availability of Valgrind headers a hard requirement.]))
1658 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1659     AS_HELP_STRING([--enable-compiler-plugins],
1660         [Enable compiler plugins that will perform additional checks during
1661          building. Enabled automatically by --enable-dbgutil.
1662          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1663 COMPILER_PLUGINS_DEBUG=
1664 if test "$enable_compiler_plugins" = debug; then
1665     enable_compiler_plugins=yes
1666     COMPILER_PLUGINS_DEBUG=TRUE
1669 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1670     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1671         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1672          relevant in the --disable-compiler-plugins case.]))
1674 libo_FUZZ_ARG_ENABLE(ooenv,
1675     AS_HELP_STRING([--enable-ooenv],
1676         [Enable ooenv for the instdir installation.]))
1678 AC_ARG_ENABLE(lto,
1679     AS_HELP_STRING([--enable-lto],
1680         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1681          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1682          linker.)]))
1684 AC_ARG_ENABLE(python,
1685     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1686         [Enables or disables Python support at run-time.
1687          Also specifies what Python to use at build-time.
1688          'fully-internal' even forces the internal version for uses of Python
1689          during the build.
1690          On macOS the only choices are
1691          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1692          ]))
1694 libo_FUZZ_ARG_ENABLE(gtk3,
1695     AS_HELP_STRING([--disable-gtk3],
1696         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1697 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1699 AC_ARG_ENABLE(gtk4,
1700     AS_HELP_STRING([--enable-gtk4],
1701         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1703 AC_ARG_ENABLE(atspi-tests,
1704     AS_HELP_STRING([--disable-atspi-tests],
1705         [Determines whether to enable AT-SPI2 tests for the GTK3 vclplug.]))
1707 AC_ARG_ENABLE(introspection,
1708     AS_HELP_STRING([--enable-introspection],
1709         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1710          Linux distributions.)]))
1712 AC_ARG_ENABLE(split-app-modules,
1713     AS_HELP_STRING([--enable-split-app-modules],
1714         [Split file lists for app modules, e.g. base, calc.
1715          Has effect only with make distro-pack-install]),
1718 AC_ARG_ENABLE(split-opt-features,
1719     AS_HELP_STRING([--enable-split-opt-features],
1720         [Split file lists for some optional features, e.g. pyuno, testtool.
1721          Has effect only with make distro-pack-install]),
1724 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1725     AS_HELP_STRING([--disable-cairo-canvas],
1726         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1729 libo_FUZZ_ARG_ENABLE(dbus,
1730     AS_HELP_STRING([--disable-dbus],
1731         [Determines whether to enable features that depend on dbus.
1732          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1733 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1735 libo_FUZZ_ARG_ENABLE(sdremote,
1736     AS_HELP_STRING([--disable-sdremote],
1737         [Determines whether to enable Impress remote control (i.e. the server component).]),
1738 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1740 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1741     AS_HELP_STRING([--disable-sdremote-bluetooth],
1742         [Determines whether to build sdremote with bluetooth support.
1743          Requires dbus on Linux.]))
1745 libo_FUZZ_ARG_ENABLE(gio,
1746     AS_HELP_STRING([--disable-gio],
1747         [Determines whether to use the GIO support.]),
1748 ,test "${enable_gio+set}" = set || enable_gio=yes)
1750 AC_ARG_ENABLE(qt5,
1751     AS_HELP_STRING([--enable-qt5],
1752         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1753          available.]),
1756 AC_ARG_ENABLE(qt6,
1757     AS_HELP_STRING([--enable-qt6],
1758         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1759          available.]),
1762 AC_ARG_ENABLE(kf5,
1763     AS_HELP_STRING([--enable-kf5],
1764         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1765          KF5 are available.]),
1768 AC_ARG_ENABLE(kf6,
1769     AS_HELP_STRING([--enable-kf6],
1770         [Determines whether to use KF6 vclplug on platforms where Qt6 and
1771          KF6 are available.]),
1775 AC_ARG_ENABLE(gtk3_kde5,
1776     AS_HELP_STRING([--enable-gtk3-kde5],
1777         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1778          platforms where Gtk3, Qt5 and Plasma is available.]),
1781 AC_ARG_ENABLE(gen,
1782     AS_HELP_STRING([--enable-gen],
1783         [To select the gen backend in case of --disable-dynamic-loading.
1784          Per default auto-enabled when X11 is used.]),
1785 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1787 AC_ARG_ENABLE(gui,
1788     AS_HELP_STRING([--disable-gui],
1789         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1790 ,enable_gui=yes)
1792 libo_FUZZ_ARG_ENABLE(randr,
1793     AS_HELP_STRING([--disable-randr],
1794         [Disable RandR support in the vcl project.]),
1795 ,test "${enable_randr+set}" = set || enable_randr=yes)
1797 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1798     AS_HELP_STRING([--disable-gstreamer-1-0],
1799         [Disable building with the gstreamer 1.0 avmedia backend.]),
1800 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1802 libo_FUZZ_ARG_ENABLE([eot],
1803     [AS_HELP_STRING([--enable-eot],
1804         [Enable support for Embedded OpenType fonts.])],
1805 ,test "${enable_eot+set}" = set || enable_eot=no)
1807 libo_FUZZ_ARG_ENABLE(cve-tests,
1808     AS_HELP_STRING([--disable-cve-tests],
1809         [Prevent CVE tests to be executed]),
1812 AC_ARG_ENABLE(build-opensymbol,
1813     AS_HELP_STRING([--enable-build-opensymbol],
1814         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1815          fontforge installed.]),
1818 AC_ARG_ENABLE(dependency-tracking,
1819     AS_HELP_STRING([--enable-dependency-tracking],
1820         [Do not reject slow dependency extractors.])[
1821   --disable-dependency-tracking
1822                           Disables generation of dependency information.
1823                           Speed up one-time builds.],
1826 AC_ARG_ENABLE(icecream,
1827     AS_HELP_STRING([--enable-icecream],
1828         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1829          It defaults to /opt/icecream for the location of the icecream gcc/g++
1830          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1833 AC_ARG_ENABLE(ld,
1834     AS_HELP_STRING([--enable-ld=<linker>],
1835         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1836          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1837          If <linker> contains any ':', the part before the first ':' is used as the value of
1838          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1839          needed for Clang 12).]),
1842 libo_FUZZ_ARG_ENABLE(cups,
1843     AS_HELP_STRING([--disable-cups],
1844         [Do not build cups support.])
1847 AC_ARG_ENABLE(ccache,
1848     AS_HELP_STRING([--disable-ccache],
1849         [Do not try to use ccache automatically.
1850          By default we will try to detect if ccache is available; in that case if
1851          CC/CXX are not yet set, and --enable-icecream is not given, we
1852          attempt to use ccache. --disable-ccache disables ccache completely.
1853          Additionally ccache's depend mode is enabled if possible,
1854          use --enable-ccache=nodepend to enable ccache without depend mode.
1858 AC_ARG_ENABLE(z7-debug,
1859     AS_HELP_STRING([--enable-z7-debug],
1860         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1861          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1862          Enabled by default if ccache is detected.]))
1864 libo_FUZZ_ARG_ENABLE(online-update,
1865     AS_HELP_STRING([--enable-online-update],
1866         [Enable the online update service that will check for new versions of
1867          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.]),
1870 libo_FUZZ_ARG_ENABLE(online-update-mar,
1871     AS_HELP_STRING([--enable-online-update-mar],
1872         [Enable the experimental Mozilla-like online update service that will
1873          check for new versions of LibreOffice. Disabled by default.]),
1876 libo_FUZZ_ARG_WITH(online-update-mar-baseurl,
1877     AS_HELP_STRING([--with-online-update-mar-baseurl=...],
1878         [Set the base URL value for --enable-online-update-mar.
1879          (Can be left off for debug purposes, even if that may render the feature
1880          non-functional.)]),
1883 libo_FUZZ_ARG_WITH(online-update-mar-certificateder,
1884     AS_HELP_STRING([--with-online-update-mar-certificateder=...],
1885         [Set the certificate DER value for --enable-online-update-mar.
1886          (Can be left off for debug purposes, even if that may render the feature
1887          non-functional.)]),
1890 libo_FUZZ_ARG_WITH(online-update-mar-certificatename,
1891     AS_HELP_STRING([--with-online-update-mar-certificatename=...],
1892         [Set the certificate name value for --enable-online-update-mar.
1893          (Can be left off for debug purposes, even if that may render the feature
1894          non-functional.)]),
1897 libo_FUZZ_ARG_WITH(online-update-mar-certificatepath,
1898     AS_HELP_STRING([--with-online-update-mar-certificatepath=...],
1899         [Set the certificate path value for --enable-online-update-mar.
1900          (Can be left off for debug purposes, even if that may render the feature
1901          non-functional.)]),
1904 libo_FUZZ_ARG_ENABLE(extension-update,
1905     AS_HELP_STRING([--disable-extension-update],
1906         [Disable possibility to update installed extensions.]),
1909 libo_FUZZ_ARG_ENABLE(release-build,
1910     AS_HELP_STRING([--enable-release-build],
1911         [Enable release build. Note that the "release build" choice is orthogonal to
1912          whether symbols are present, debug info is generated, or optimization
1913          is done.
1914          See https://wiki.documentfoundation.org/Development/DevBuild]),
1917 AC_ARG_ENABLE(windows-build-signing,
1918     AS_HELP_STRING([--enable-windows-build-signing],
1919         [Enable signing of windows binaries (*.exe, *.dll)]),
1922 AC_ARG_ENABLE(silent-msi,
1923     AS_HELP_STRING([--enable-silent-msi],
1924         [Enable MSI with LIMITUI=1 (silent install).]),
1927 AC_ARG_ENABLE(wix,
1928     AS_HELP_STRING([--enable-wix],
1929         [Build Windows installer using WiX.]),
1932 AC_ARG_ENABLE(macosx-code-signing,
1933     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1934         [Sign executables, dylibs, frameworks and the app bundle. If you
1935          don't provide an identity the first suitable certificate
1936          in your keychain is used.]),
1939 AC_ARG_ENABLE(macosx-package-signing,
1940     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1941         [Create a .pkg suitable for uploading to the Mac App Store and sign
1942          it. If you don't provide an identity the first suitable certificate
1943          in your keychain is used.]),
1946 AC_ARG_ENABLE(macosx-sandbox,
1947     AS_HELP_STRING([--enable-macosx-sandbox],
1948         [Make the app bundle run in a sandbox. Requires code signing.
1949          Is required by apps distributed in the Mac App Store, and implies
1950          adherence to App Store rules.]),
1953 AC_ARG_WITH(macosx-bundle-identifier,
1954     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1955         [Define the macOS bundle identifier. Default is the somewhat weird
1956          org.libreoffice.script ("script", huh?).]),
1957 ,with_macosx_bundle_identifier=org.libreoffice.script)
1959 AC_ARG_WITH(macosx-provisioning-profile,
1960     AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1961         [Specify the path to a provisioning profile to use]),
1964 AC_ARG_WITH(product-name,
1965     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1966         [Define the product name. Default is AC_PACKAGE_NAME.]),
1967 ,with_product_name=$PRODUCTNAME)
1969 libo_FUZZ_ARG_ENABLE(community-flavor,
1970     AS_HELP_STRING([--disable-community-flavor],
1971         [Disable the Community branding.]),
1974 AC_ARG_WITH(package-version,
1975     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1976         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1979 libo_FUZZ_ARG_ENABLE(readonly-installset,
1980     AS_HELP_STRING([--enable-readonly-installset],
1981         [Prevents any attempts by LibreOffice to write into its installation. That means
1982          at least that no "system-wide" extensions can be added. Partly experimental work in
1983          progress, probably not fully implemented. Always enabled for macOS.]),
1986 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1987     AS_HELP_STRING([--disable-mariadb-sdbc],
1988         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1991 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1992     AS_HELP_STRING([--disable-postgresql-sdbc],
1993         [Disable the build of the PostgreSQL-SDBC driver.])
1996 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1997     AS_HELP_STRING([--disable-lotuswordpro],
1998         [Disable the build of the Lotus Word Pro filter.]),
1999 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
2001 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
2002     AS_HELP_STRING([--disable-firebird-sdbc],
2003         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
2004 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
2006 AC_ARG_ENABLE(bogus-pkg-config,
2007     AS_HELP_STRING([--enable-bogus-pkg-config],
2008         [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.]),
2011 AC_ARG_ENABLE(openssl,
2012     AS_HELP_STRING([--disable-openssl],
2013         [Disable using libssl/libcrypto from OpenSSL. If disabled,
2014          components will use NSS. Work in progress,
2015          use only if you are hacking on it.]),
2016 ,enable_openssl=yes)
2018 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
2019     AS_HELP_STRING([--enable-cipher-openssl-backend],
2020         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
2021          Requires --enable-openssl.]))
2023 AC_ARG_ENABLE(nss,
2024     AS_HELP_STRING([--disable-nss],
2025         [Disable using NSS. If disabled,
2026          components will use openssl. Work in progress,
2027          use only if you are hacking on it.]),
2028 ,enable_nss=yes)
2030 AC_ARG_ENABLE(library-bin-tar,
2031     AS_HELP_STRING([--enable-library-bin-tar],
2032         [Enable the building and reused of tarball of binary build for some 'external' libraries.
2033         Some libraries can save their build result in a tarball
2034         stored in TARFILE_LOCATION. That binary tarball is
2035         uniquely identified by the source tarball,
2036         the content of the config_host.mk file and the content
2037         of the top-level directory in core for that library
2038         If this option is enabled, then if such a tarfile exist, it will be untarred
2039         instead of the source tarfile, and the build step will be skipped for that
2040         library.
2041         If a proper tarfile does not exist, then the normal source-based
2042         build is done for that library and a proper binary tarfile is created
2043         for the next time.]),
2046 AC_ARG_ENABLE(dconf,
2047     AS_HELP_STRING([--disable-dconf],
2048         [Disable the dconf configuration backend (enabled by default where
2049          available).]))
2051 libo_FUZZ_ARG_ENABLE(formula-logger,
2052     AS_HELP_STRING(
2053         [--enable-formula-logger],
2054         [Enable formula logger for logging formula calculation flow in Calc.]
2055     )
2058 AC_ARG_ENABLE(ldap,
2059     AS_HELP_STRING([--disable-ldap],
2060         [Disable LDAP support.]),
2061 ,enable_ldap=yes)
2063 AC_ARG_ENABLE(opencl,
2064     AS_HELP_STRING([--disable-opencl],
2065         [Disable OpenCL support.]),
2066 ,enable_opencl=yes)
2068 libo_FUZZ_ARG_ENABLE(librelogo,
2069     AS_HELP_STRING([--disable-librelogo],
2070         [Do not build LibreLogo.]),
2071 ,enable_librelogo=yes)
2073 AC_ARG_ENABLE(wasm-strip,
2074     AS_HELP_STRING([--enable-wasm-strip],
2075         [Strip the static build like for WASM/emscripten platform.]),
2078 AC_ARG_WITH(main-module,
2079     AS_HELP_STRING([--with-main-module=<writer/calc>],
2080         [Specify which main module to build for wasm.
2081         Default value is 'writer'.]),
2084 AC_ARG_ENABLE(wasm-exceptions,
2085     AS_HELP_STRING([--enable-wasm-exceptions],
2086         [Build with native WASM exceptions (AKA -fwasm-exceptions),
2087         matter of fact, this is currently not finished by any implementation)
2088         (see https://webassembly.org/roadmap/ for the current state]),
2091 AC_ARG_ENABLE(xmlhelp,
2092     AS_HELP_STRING([--disable-xmlhelp],
2093         [Disable XML help support]),
2094 ,enable_xmlhelp=yes)
2096 AC_ARG_ENABLE(customtarget-components,
2097     AS_HELP_STRING([--enable-customtarget-components],
2098         [Generates the static UNO object constructor mapping from the build.]))
2100 dnl ===================================================================
2101 dnl Optional Packages (--with/without-)
2102 dnl ===================================================================
2104 AC_ARG_WITH(gcc-home,
2105     AS_HELP_STRING([--with-gcc-home],
2106         [Specify the location of gcc/g++ manually. This can be used in conjunction
2107          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2108          non-default path.]),
2111 AC_ARG_WITH(gnu-patch,
2112     AS_HELP_STRING([--with-gnu-patch],
2113         [Specify location of GNU patch on Solaris or FreeBSD.]),
2116 AC_ARG_WITH(build-platform-configure-options,
2117     AS_HELP_STRING([--with-build-platform-configure-options],
2118         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2121 AC_ARG_WITH(gnu-cp,
2122     AS_HELP_STRING([--with-gnu-cp],
2123         [Specify location of GNU cp on Solaris or FreeBSD.]),
2126 AC_ARG_WITH(external-tar,
2127     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2128         [Specify an absolute path of where to find (and store) tarfiles.]),
2129     TARFILE_LOCATION=$withval ,
2132 AC_ARG_WITH(referenced-git,
2133     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2134         [Specify another checkout directory to reference. This makes use of
2135                  git submodule update --reference, and saves a lot of diskspace
2136                  when having multiple trees side-by-side.]),
2137     GIT_REFERENCE_SRC=$withval ,
2140 AC_ARG_WITH(linked-git,
2141     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2142         [Specify a directory where the repositories of submodules are located.
2143          This uses a method similar to git-new-workdir to get submodules.]),
2144     GIT_LINK_SRC=$withval ,
2147 AC_ARG_WITH(galleries,
2148     AS_HELP_STRING([--with-galleries],
2149         [Specify how galleries should be built. It is possible either to
2150          build these internally from source ("build"),
2151          or to disable them ("no")]),
2154 AC_ARG_WITH(templates,
2155     AS_HELP_STRING([--with-templates],
2156         [Specify we build with or without template files. It is possible either to
2157          build with templates ("yes"),
2158          or to disable them ("no")]),
2161 AC_ARG_WITH(theme,
2162     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2163         [Choose which themes to include. By default those themes with an '*' are included.
2164          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2165          *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2166          *elementary, *elementary_svg,
2167          *karasa_jaga, *karasa_jaga_svg,
2168          *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2169          *sukapura, *sukapura_dark, *sukapura_dark_svg, *sukapura_svg.]),
2172 libo_FUZZ_ARG_WITH(helppack-integration,
2173     AS_HELP_STRING([--without-helppack-integration],
2174         [It will not integrate the helppacks to the installer
2175          of the product. Please use this switch to use the online help
2176          or separate help packages.]),
2179 libo_FUZZ_ARG_WITH(fonts,
2180     AS_HELP_STRING([--without-fonts],
2181         [LibreOffice includes some third-party fonts to provide a reliable basis for
2182          help content, templates, samples, etc. When these fonts are already
2183          known to be available on the system then you should use this option.]),
2186 AC_ARG_WITH(epm,
2187     AS_HELP_STRING([--with-epm],
2188         [Decides which epm to use. Default is to use the one from the system if
2189          one is built. When either this is not there or you say =internal epm
2190          will be built.]),
2193 AC_ARG_WITH(package-format,
2194     AS_HELP_STRING([--with-package-format],
2195         [Specify package format(s) for LibreOffice installation sets. The
2196          implicit --without-package-format leads to no installation sets being
2197          generated. Possible values: archive, bsd, deb, dmg,
2198          installed, msi, pkg, and rpm.
2199          Example: --with-package-format='deb rpm']),
2202 AC_ARG_WITH(tls,
2203     AS_HELP_STRING([--with-tls],
2204         [Decides which TLS/SSL and cryptographic implementations to use for
2205          LibreOffice's code. Default is to use NSS although OpenSSL is also
2206          possible. Notice that selecting NSS restricts the usage of OpenSSL
2207          in LO's code but selecting OpenSSL doesn't restrict by now the
2208          usage of NSS in LO's code. Possible values: openssl, nss.
2209          Example: --with-tls="nss"]),
2212 AC_ARG_WITH(system-libs,
2213     AS_HELP_STRING([--with-system-libs],
2214         [Use libraries already on system -- enables all --with-system-* flags.]),
2217 AC_ARG_WITH(system-bzip2,
2218     AS_HELP_STRING([--with-system-bzip2],
2219         [Use bzip2 already on system. Used when --enable-online-update-mar
2220         or --enable-python=internal]),,
2221     [with_system_bzip2="$with_system_libs"])
2223 AC_ARG_WITH(system-headers,
2224     AS_HELP_STRING([--with-system-headers],
2225         [Use headers already on system -- enables all --with-system-* flags for
2226          external packages whose headers are the only entities used i.e.
2227          boost/odbc/sane-header(s).]),,
2228     [with_system_headers="$with_system_libs"])
2230 AC_ARG_WITH(system-jars,
2231     AS_HELP_STRING([--without-system-jars],
2232         [When building with --with-system-libs, also the needed jars are expected
2233          on the system. Use this to disable that]),,
2234     [with_system_jars="$with_system_libs"])
2236 AC_ARG_WITH(system-cairo,
2237     AS_HELP_STRING([--with-system-cairo],
2238         [Use cairo libraries already on system.  Happens automatically for
2239          (implicit) --enable-gtk3.]))
2241 AC_ARG_WITH(system-epoxy,
2242     AS_HELP_STRING([--with-system-epoxy],
2243         [Use epoxy libraries already on system.  Happens automatically for
2244          (implicit) --enable-gtk3.]),,
2245        [with_system_epoxy="$with_system_libs"])
2247 AC_ARG_WITH(myspell-dicts,
2248     AS_HELP_STRING([--with-myspell-dicts],
2249         [Adds myspell dictionaries to the LibreOffice installation set]),
2252 AC_ARG_WITH(system-dicts,
2253     AS_HELP_STRING([--without-system-dicts],
2254         [Do not use dictionaries from system paths.]),
2257 AC_ARG_WITH(external-dict-dir,
2258     AS_HELP_STRING([--with-external-dict-dir],
2259         [Specify external dictionary dir.]),
2262 AC_ARG_WITH(external-hyph-dir,
2263     AS_HELP_STRING([--with-external-hyph-dir],
2264         [Specify external hyphenation pattern dir.]),
2267 AC_ARG_WITH(external-thes-dir,
2268     AS_HELP_STRING([--with-external-thes-dir],
2269         [Specify external thesaurus dir.]),
2272 AC_ARG_WITH(system-zlib,
2273     AS_HELP_STRING([--with-system-zlib],
2274         [Use zlib already on system.]),,
2275     [with_system_zlib=auto])
2277 AC_ARG_WITH(system-jpeg,
2278     AS_HELP_STRING([--with-system-jpeg],
2279         [Use jpeg already on system.]),,
2280     [with_system_jpeg="$with_system_libs"])
2282 AC_ARG_WITH(system-expat,
2283     AS_HELP_STRING([--with-system-expat],
2284         [Use expat already on system.]),,
2285     [with_system_expat="$with_system_libs"])
2287 AC_ARG_WITH(system-libxml,
2288     AS_HELP_STRING([--with-system-libxml],
2289         [Use libxml/libxslt already on system.]),,
2290     [with_system_libxml=auto])
2292 AC_ARG_WITH(system-openldap,
2293     AS_HELP_STRING([--with-system-openldap],
2294         [Use the OpenLDAP LDAP SDK already on system.]),,
2295     [with_system_openldap="$with_system_libs"])
2297 libo_FUZZ_ARG_ENABLE(poppler,
2298     AS_HELP_STRING([--disable-poppler],
2299         [Disable building Poppler.])
2302 AC_ARG_WITH(system-poppler,
2303     AS_HELP_STRING([--with-system-poppler],
2304         [Use system poppler (only needed for PDF import).]),,
2305     [with_system_poppler="$with_system_libs"])
2307 AC_ARG_WITH(system-abseil,
2308     AS_HELP_STRING([--with-system-abseil],
2309         [Use the abseil libraries already on system.]),,
2310     [with_system_abseil="$with_system_libs"])
2312 AC_ARG_WITH(system-openjpeg,
2313     AS_HELP_STRING([--with-system-openjpeg],
2314         [Use the OpenJPEG library already on system.]),,
2315     [with_system_openjpeg="$with_system_libs"])
2317 libo_FUZZ_ARG_ENABLE(gpgmepp,
2318     AS_HELP_STRING([--disable-gpgmepp],
2319         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2322 AC_ARG_WITH(system-gpgmepp,
2323     AS_HELP_STRING([--with-system-gpgmepp],
2324         [Use gpgmepp already on system]),,
2325     [with_system_gpgmepp="$with_system_libs"])
2327 AC_ARG_WITH(system-mariadb,
2328     AS_HELP_STRING([--with-system-mariadb],
2329         [Use MariaDB/MySQL libraries already on system.]),,
2330     [with_system_mariadb="$with_system_libs"])
2332 AC_ARG_ENABLE(bundle-mariadb,
2333     AS_HELP_STRING([--enable-bundle-mariadb],
2334         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2337 AC_ARG_WITH(system-postgresql,
2338     AS_HELP_STRING([--with-system-postgresql],
2339         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2340          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2341     [with_system_postgresql="$with_system_libs"])
2343 AC_ARG_WITH(libpq-path,
2344     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2345         [Use this PostgreSQL C interface (libpq) installation for building
2346          the PostgreSQL-SDBC extension.]),
2349 AC_ARG_WITH(system-firebird,
2350     AS_HELP_STRING([--with-system-firebird],
2351         [Use Firebird libraries already on system, for building the Firebird-SDBC
2352          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2353     [with_system_firebird="$with_system_libs"])
2355 AC_ARG_WITH(system-libtommath,
2356             AS_HELP_STRING([--with-system-libtommath],
2357                            [Use libtommath already on system]),,
2358             [with_system_libtommath="$with_system_libs"])
2360 AC_ARG_WITH(system-hsqldb,
2361     AS_HELP_STRING([--with-system-hsqldb],
2362         [Use hsqldb already on system.]))
2364 AC_ARG_WITH(hsqldb-jar,
2365     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2366         [Specify path to jarfile manually.]),
2367     HSQLDB_JAR=$withval)
2369 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2370     AS_HELP_STRING([--disable-scripting-beanshell],
2371         [Disable support for scripts in BeanShell.]),
2375 AC_ARG_WITH(system-beanshell,
2376     AS_HELP_STRING([--with-system-beanshell],
2377         [Use beanshell already on system.]),,
2378     [with_system_beanshell="$with_system_jars"])
2380 AC_ARG_WITH(beanshell-jar,
2381     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2382         [Specify path to jarfile manually.]),
2383     BSH_JAR=$withval)
2385 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2386     AS_HELP_STRING([--disable-scripting-javascript],
2387         [Disable support for scripts in JavaScript.]),
2391 AC_ARG_WITH(system-rhino,
2392     AS_HELP_STRING([--with-system-rhino],
2393         [Use rhino already on system.]),,)
2394 #    [with_system_rhino="$with_system_jars"])
2395 # Above is not used as we have different debug interface
2396 # patched into internal rhino. This code needs to be fixed
2397 # before we can enable it by default.
2399 AC_ARG_WITH(rhino-jar,
2400     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2401         [Specify path to jarfile manually.]),
2402     RHINO_JAR=$withval)
2404 AC_ARG_WITH(system-jfreereport,
2405     AS_HELP_STRING([--with-system-jfreereport],
2406         [Use JFreeReport already on system.]),,
2407     [with_system_jfreereport="$with_system_jars"])
2409 AC_ARG_WITH(sac-jar,
2410     AS_HELP_STRING([--with-sac-jar=JARFILE],
2411         [Specify path to jarfile manually.]),
2412     SAC_JAR=$withval)
2414 AC_ARG_WITH(libxml-jar,
2415     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2416         [Specify path to jarfile manually.]),
2417     LIBXML_JAR=$withval)
2419 AC_ARG_WITH(flute-jar,
2420     AS_HELP_STRING([--with-flute-jar=JARFILE],
2421         [Specify path to jarfile manually.]),
2422     FLUTE_JAR=$withval)
2424 AC_ARG_WITH(jfreereport-jar,
2425     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2426         [Specify path to jarfile manually.]),
2427     JFREEREPORT_JAR=$withval)
2429 AC_ARG_WITH(liblayout-jar,
2430     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2431         [Specify path to jarfile manually.]),
2432     LIBLAYOUT_JAR=$withval)
2434 AC_ARG_WITH(libloader-jar,
2435     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2436         [Specify path to jarfile manually.]),
2437     LIBLOADER_JAR=$withval)
2439 AC_ARG_WITH(libformula-jar,
2440     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2441         [Specify path to jarfile manually.]),
2442     LIBFORMULA_JAR=$withval)
2444 AC_ARG_WITH(librepository-jar,
2445     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2446         [Specify path to jarfile manually.]),
2447     LIBREPOSITORY_JAR=$withval)
2449 AC_ARG_WITH(libfonts-jar,
2450     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2451         [Specify path to jarfile manually.]),
2452     LIBFONTS_JAR=$withval)
2454 AC_ARG_WITH(libserializer-jar,
2455     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2456         [Specify path to jarfile manually.]),
2457     LIBSERIALIZER_JAR=$withval)
2459 AC_ARG_WITH(libbase-jar,
2460     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2461         [Specify path to jarfile manually.]),
2462     LIBBASE_JAR=$withval)
2464 AC_ARG_WITH(system-odbc,
2465     AS_HELP_STRING([--with-system-odbc],
2466         [Use the odbc headers already on system.]),,
2467     [with_system_odbc="auto"])
2469 AC_ARG_WITH(system-sane,
2470     AS_HELP_STRING([--with-system-sane],
2471         [Use sane.h already on system.]),,
2472     [with_system_sane="$with_system_headers"])
2474 AC_ARG_WITH(system-bluez,
2475     AS_HELP_STRING([--with-system-bluez],
2476         [Use bluetooth.h already on system.]),,
2477     [with_system_bluez="$with_system_headers"])
2479 AC_ARG_WITH(system-boost,
2480     AS_HELP_STRING([--with-system-boost],
2481         [Use boost already on system.]),,
2482     [with_system_boost="$with_system_headers"])
2484 AC_ARG_WITH(system-dragonbox,
2485     AS_HELP_STRING([--with-system-dragonbox],
2486         [Use dragonbox already on system.]),,
2487     [with_system_dragonbox="$with_system_headers"])
2489 AC_ARG_WITH(system-frozen,
2490     AS_HELP_STRING([--with-system-frozen],
2491         [Use frozen already on system.]),,
2492     [with_system_frozen="$with_system_headers"])
2494 AC_ARG_WITH(system-libfixmath,
2495     AS_HELP_STRING([--with-system-libfixmath],
2496         [Use libfixmath already on system.]),,
2497     [with_system_libfixmath="$with_system_libs"])
2499 AC_ARG_WITH(system-glm,
2500     AS_HELP_STRING([--with-system-glm],
2501         [Use glm already on system.]),,
2502     [with_system_glm="$with_system_headers"])
2504 AC_ARG_WITH(system-hunspell,
2505     AS_HELP_STRING([--with-system-hunspell],
2506         [Use libhunspell already on system.]),,
2507     [with_system_hunspell="$with_system_libs"])
2509 libo_FUZZ_ARG_ENABLE(cairo-rgba,
2510     AS_HELP_STRING([--enable-cairo-rgba],
2511         [Use RGBA order, instead of default BRGA. Not possible with --with-system-cairo]))
2513 libo_FUZZ_ARG_ENABLE(zxing,
2514     AS_HELP_STRING([--disable-zxing],
2515        [Disable use of zxing external library.]))
2517 AC_ARG_WITH(system-zxing,
2518     AS_HELP_STRING([--with-system-zxing],
2519         [Use libzxing already on system.]),,
2520     [with_system_zxing="$with_system_libs"])
2522 AC_ARG_WITH(system-zxcvbn,
2523     AS_HELP_STRING([--with-system-zxcvbn],
2524         [Use libzxcvbn already on system.]),,
2525     [with_system_zxcvbn="$with_system_libs"])
2527 AC_ARG_WITH(system-box2d,
2528     AS_HELP_STRING([--with-system-box2d],
2529         [Use box2d already on system.]),,
2530     [with_system_box2d="$with_system_libs"])
2532 AC_ARG_WITH(system-mythes,
2533     AS_HELP_STRING([--with-system-mythes],
2534         [Use mythes already on system.]),,
2535     [with_system_mythes="$with_system_libs"])
2537 AC_ARG_WITH(system-altlinuxhyph,
2538     AS_HELP_STRING([--with-system-altlinuxhyph],
2539         [Use ALTLinuxhyph already on system.]),,
2540     [with_system_altlinuxhyph="$with_system_libs"])
2542 AC_ARG_WITH(system-lpsolve,
2543     AS_HELP_STRING([--with-system-lpsolve],
2544         [Use lpsolve already on system.]),,
2545     [with_system_lpsolve="$with_system_libs"])
2547 AC_ARG_WITH(system-coinmp,
2548     AS_HELP_STRING([--with-system-coinmp],
2549         [Use CoinMP already on system.]),,
2550     [with_system_coinmp="$with_system_libs"])
2552 AC_ARG_WITH(system-liblangtag,
2553     AS_HELP_STRING([--with-system-liblangtag],
2554         [Use liblangtag library already on system.]),,
2555     [with_system_liblangtag="$with_system_libs"])
2557 AC_ARG_WITH(system-lockfile,
2558     AS_HELP_STRING([--with-system-lockfile[=file]],
2559         [Detect a system lockfile program or use the \$file argument.]))
2561 AC_ARG_WITH(webdav,
2562     AS_HELP_STRING([--without-webdav],
2563         [Disable WebDAV support in the UCB.]))
2565 AC_ARG_WITH(linker-hash-style,
2566     AS_HELP_STRING([--with-linker-hash-style],
2567         [Use linker with --hash-style=<style> when linking shared objects.
2568          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2569          if supported on the build system, and "sysv" otherwise.]))
2571 AC_ARG_WITH(jdk-home,
2572     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2573         [If you have installed JDK 8 or later on your system please supply the
2574          path here. Note that this is not the location of the java command but the
2575          location of the entire distribution. In case of cross-compiling, this
2576          is the JDK of the host os. Use --with-build-platform-configure-options
2577          to point to a different build platform JDK.]),
2580 AC_ARG_WITH(help,
2581     AS_HELP_STRING([--with-help],
2582         [Enable the build of help. There is a special parameter "common" that
2583          can be used to bundle only the common part, .e.g help-specific icons.
2584          This is useful when you build the helpcontent separately.])
2585     [
2586                           Usage:     --with-help    build the old local help
2587                                  --without-help     no local help (default)
2588                                  --with-help=html   build the new HTML local help
2589                                  --with-help=online build the new HTML online help
2590     ],
2593 AC_ARG_WITH(omindex,
2594    AS_HELP_STRING([--with-omindex],
2595         [Enable the support of xapian-omega index for online help.])
2596    [
2597                          Usage: --with-omindex=server prepare the pages for omindex
2598                                 but let xapian-omega be built in server.
2599                                 --with-omindex=noxap do not prepare online pages
2600                                 for xapian-omega
2601   ],
2604 libo_FUZZ_ARG_WITH(java,
2605     AS_HELP_STRING([--with-java=<java command>],
2606         [Specify the name of the Java interpreter command. Typically "java"
2607          which is the default.
2609          To build without support for Java components, applets, accessibility
2610          or the XML filters written in Java, use --without-java or --with-java=no.]),
2611     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2612     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2615 AC_ARG_WITH(jvm-path,
2616     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2617         [Use a specific JVM search path at runtime.
2618          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2621 AC_ARG_WITH(ant-home,
2622     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2623         [If you have installed Apache Ant on your system, please supply the path here.
2624          Note that this is not the location of the Ant binary but the location
2625          of the entire distribution.]),
2628 AC_ARG_WITH(symbol-config,
2629     AS_HELP_STRING([--with-symbol-config],
2630         [Configuration for the crashreport symbol upload]),
2631         [],
2632         [with_symbol_config=no])
2634 AC_ARG_WITH(export-validation,
2635     AS_HELP_STRING([--without-export-validation],
2636         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2637 ,with_export_validation=auto)
2639 AC_ARG_WITH(bffvalidator,
2640     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2641         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2642          Requires installed Microsoft Office Binary File Format Validator.
2643          Note: export-validation (--with-export-validation) is required to be turned on.
2644          See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2645 ,with_bffvalidator=no)
2647 libo_FUZZ_ARG_WITH(junit,
2648     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2649         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2650          --without-junit disables those tests. Not relevant in the --without-java case.]),
2651 ,with_junit=yes)
2653 AC_ARG_WITH(hamcrest,
2654     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2655         [Specifies the hamcrest jar file to use for JUnit-based tests.
2656          --without-junit disables those tests. Not relevant in the --without-java case.]),
2657 ,with_hamcrest=yes)
2659 AC_ARG_WITH(perl-home,
2660     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2661         [If you have installed Perl 5 Distribution, on your system, please
2662          supply the path here. Note that this is not the location of the Perl
2663          binary but the location of the entire distribution.]),
2666 libo_FUZZ_ARG_WITH(doxygen,
2667     AS_HELP_STRING(
2668         [--with-doxygen=<absolute path to doxygen executable>],
2669         [Specifies the doxygen executable to use when generating ODK C/C++
2670          documentation. --without-doxygen disables generation of ODK C/C++
2671          documentation. Not relevant in the --disable-odk case.]),
2672 ,with_doxygen=yes)
2674 AC_ARG_WITH(visual-studio,
2675     AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2676         [Specify which Visual Studio version to use in case several are
2677          installed. Currently 2019 (default) and 2022 are supported.]),
2680 AC_ARG_WITH(windows-sdk,
2681     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2682         [Specify which Windows SDK, or "Windows Kit", version to use
2683          in case the one that came with the selected Visual Studio
2684          is not what you want for some reason. Note that not all compiler/SDK
2685          combinations are supported. The intent is that this option should not
2686          be needed.]),
2689 AC_ARG_WITH(lang,
2690     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2691         [Use this option to build LibreOffice with additional UI language support.
2692          English (US) is always included by default.
2693          Separate multiple languages with space.
2694          For all languages, use --with-lang=ALL.]),
2697 AC_ARG_WITH(locales,
2698     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2699         [Use this option to limit the locale information built in.
2700          Separate multiple locales with space.
2701          Very experimental and might well break stuff.
2702          Just a desperate measure to shrink code and data size.
2703          By default all the locales available is included.
2704          Just works with --disable-dynloading. Defaults to "ALL".
2705          This option is completely unrelated to --with-lang.])
2706     [
2707                           Affects also our character encoding conversion
2708                           tables for encodings mainly targeted for a
2709                           particular locale, like EUC-CN and EUC-TW for
2710                           zh, ISO-2022-JP for ja.
2712                           Affects also our add-on break iterator data for
2713                           some languages.
2715                           For the default, all locales, don't use this switch at all.
2716                           Specifying just the language part of a locale means all matching
2717                           locales will be included.
2718     ],
2721 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2722 libo_FUZZ_ARG_WITH(krb5,
2723     AS_HELP_STRING([--with-krb5],
2724         [Enable MIT Kerberos 5 support in modules that support it.
2725          By default automatically enabled on platforms
2726          where a good system Kerberos 5 is available.]),
2729 libo_FUZZ_ARG_WITH(gssapi,
2730     AS_HELP_STRING([--with-gssapi],
2731         [Enable GSSAPI support in modules that support it.
2732          By default automatically enabled on platforms
2733          where a good system GSSAPI is available.]),
2736 libo_FUZZ_ARG_WITH(lxml,
2737     AS_HELP_STRING([--without-lxml],
2738         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2739          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2740          report widget classes and ids.]),
2743 libo_FUZZ_ARG_WITH(latest-c++,
2744     AS_HELP_STRING([--with-latest-c++],
2745         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2746          published standard.  This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2747         [with_latest_c__=no])
2749 AC_ARG_WITH(gtk3-build,
2750     AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2751         [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2752          to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2754 dnl ===================================================================
2755 dnl Branding
2756 dnl ===================================================================
2758 AC_ARG_WITH(branding,
2759     AS_HELP_STRING([--with-branding=/path/to/images],
2760         [Use given path to retrieve branding images set.])
2761     [
2762                           Search for intro.png about.svg and logo.svg.
2763                           If any is missing, default ones will be used instead.
2765                           Search also progress.conf for progress
2766                           settings on intro screen :
2768                           PROGRESSBARCOLOR="255,255,255" Set color of
2769                           progress bar. Comma separated RGB decimal values.
2770                           PROGRESSSIZE="407,6" Set size of progress bar.
2771                           Comma separated decimal values (width, height).
2772                           PROGRESSPOSITION="61,317" Set position of progress
2773                           bar from left,top. Comma separated decimal values.
2774                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2775                           bar frame. Comma separated RGB decimal values.
2776                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2777                           bar text. Comma separated RGB decimal values.
2778                           PROGRESSTEXTBASELINE="287" Set vertical position of
2779                           progress bar text from top. Decimal value.
2781                           Default values will be used if not found.
2782     ],
2786 AC_ARG_WITH(extra-buildid,
2787     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2788         [Show addition build identification in about dialog.]),
2792 AC_ARG_WITH(vendor,
2793     AS_HELP_STRING([--with-vendor="John the Builder"],
2794         [Set vendor of the build.]),
2797 AC_ARG_WITH(privacy-policy-url,
2798     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2799         [The URL to your privacy policy (needed when
2800          enabling online-update or crashreporting via breakpad)]),
2801         [if test "x$with_privacy_policy_url" = "xyes"; then
2802             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2803          elif test "x$with_privacy_policy_url" = "xno"; then
2804             with_privacy_policy_url="undefined"
2805          fi]
2806 ,[with_privacy_policy_url="undefined"])
2808 AC_ARG_WITH(android-package-name,
2809     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2810         [Set Android package name of the build.]),
2813 AC_ARG_WITH(compat-oowrappers,
2814     AS_HELP_STRING([--with-compat-oowrappers],
2815         [Install oo* wrappers in parallel with
2816          lo* ones to keep backward compatibility.
2817          Has effect only with make distro-pack-install]),
2820 AC_ARG_WITH(os-version,
2821     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2822         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2825 AC_ARG_WITH(parallelism,
2826     AS_HELP_STRING([--with-parallelism],
2827         [Number of jobs to run simultaneously during build. Parallel builds can
2828         save a lot of time on multi-cpu machines. Defaults to the number of
2829         CPUs on the machine, unless you configure --enable-icecream - then to
2830         40.]),
2833 AC_ARG_WITH(all-tarballs,
2834     AS_HELP_STRING([--with-all-tarballs],
2835         [Download all external tarballs unconditionally]))
2837 AC_ARG_WITH(gdrive-client-id,
2838     AS_HELP_STRING([--with-gdrive-client-id],
2839         [Provides the client id of the application for OAuth2 authentication
2840         on Google Drive. If either this or --with-gdrive-client-secret is
2841         empty, the feature will be disabled]),
2844 AC_ARG_WITH(gdrive-client-secret,
2845     AS_HELP_STRING([--with-gdrive-client-secret],
2846         [Provides the client secret of the application for OAuth2
2847         authentication on Google Drive. If either this or
2848         --with-gdrive-client-id is empty, the feature will be disabled]),
2851 AC_ARG_WITH(alfresco-cloud-client-id,
2852     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2853         [Provides the client id of the application for OAuth2 authentication
2854         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2855         empty, the feature will be disabled]),
2858 AC_ARG_WITH(alfresco-cloud-client-secret,
2859     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2860         [Provides the client secret of the application for OAuth2
2861         authentication on Alfresco Cloud. If either this or
2862         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2865 AC_ARG_WITH(onedrive-client-id,
2866     AS_HELP_STRING([--with-onedrive-client-id],
2867         [Provides the client id of the application for OAuth2 authentication
2868         on OneDrive. If either this or --with-onedrive-client-secret is
2869         empty, the feature will be disabled]),
2872 AC_ARG_WITH(onedrive-client-secret,
2873     AS_HELP_STRING([--with-onedrive-client-secret],
2874         [Provides the client secret of the application for OAuth2
2875         authentication on OneDrive. If either this or
2876         --with-onedrive-client-id is empty, the feature will be disabled]),
2879 dnl Check for coredumpctl support to present information about crashing test processes:
2880 AC_ARG_WITH(coredumpctl,
2881     AS_HELP_STRING([--with-coredumpctl],
2882         [Use coredumpctl (together with systemd-run) to retrieve core dumps of crashing test
2883         processes.]))
2885 AC_ARG_WITH(buildconfig-recorded,
2886     AS_HELP_STRING([--with-buildconfig-recorded],
2887         [Put build config into version info reported by LOK. Incompatible with reproducible builds.]),
2890 AC_MSG_CHECKING([whether to record build config])
2891 if test -z "$with_buildconfig_recorded"; then
2892     with_buildconfig_recorded=no
2894 if test "$with_buildconfig_recorded" = no; then
2895     AC_MSG_RESULT([no])
2896 else
2897     AC_MSG_RESULT([yes])
2898     # replace backslashes, to get a valid c++ string
2899     config_args=$(echo $ac_configure_args | tr '\\' '/')
2900     AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
2901     AC_DEFINE([BUILDCONFIG_RECORDED],[1],[Options passed to configure script])
2904 dnl ===================================================================
2905 dnl Do we want to use pre-build binary tarball for recompile
2906 dnl ===================================================================
2908 if test "$enable_library_bin_tar" = "yes" ; then
2909     USE_LIBRARY_BIN_TAR=TRUE
2910 else
2911     USE_LIBRARY_BIN_TAR=
2913 AC_SUBST(USE_LIBRARY_BIN_TAR)
2915 dnl ===================================================================
2916 dnl Test whether build target is Release Build
2917 dnl ===================================================================
2918 AC_MSG_CHECKING([whether build target is Release Build])
2919 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2920     AC_MSG_RESULT([no])
2921     ENABLE_RELEASE_BUILD=
2922     dnl Pu the value on one line as make (at least on macOS) seems to ignore
2923     dnl the newlines and then complains about spaces.
2924     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/>'
2925 else
2926     AC_MSG_RESULT([yes])
2927     ENABLE_RELEASE_BUILD=TRUE
2928     GET_TASK_ALLOW_ENTITLEMENT=
2930 AC_SUBST(ENABLE_RELEASE_BUILD)
2931 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2933 AC_MSG_CHECKING([whether to build a Community flavor])
2934 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2935     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2936     AC_MSG_RESULT([yes])
2937 else
2938     AC_MSG_RESULT([no])
2941 dnl ===================================================================
2942 dnl Test whether to sign Windows Build
2943 dnl ===================================================================
2944 AC_MSG_CHECKING([whether to sign windows build])
2945 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2946     AC_MSG_RESULT([yes])
2947     WINDOWS_BUILD_SIGNING="TRUE"
2948 else
2949     AC_MSG_RESULT([no])
2950     WINDOWS_BUILD_SIGNING="FALSE"
2952 AC_SUBST(WINDOWS_BUILD_SIGNING)
2954 dnl ===================================================================
2955 dnl MacOSX build and runtime environment options
2956 dnl ===================================================================
2958 AC_ARG_WITH(macosx-version-min-required,
2959     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2960         [set the minimum OS version needed to run the built LibreOffice])
2961     [
2962                           e. g.: --with-macosx-version-min-required=10.15
2963     ],
2966 dnl ===================================================================
2967 dnl Check for incompatible options set by fuzzing, and reset those
2968 dnl automatically to working combinations
2969 dnl ===================================================================
2971 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2972         "$enable_dbus" != "$enable_avahi"; then
2973     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2974     enable_avahi=$enable_dbus
2977 add_lopath_after ()
2979     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2980         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2981     fi
2984 add_lopath_before ()
2986     local IFS=${P_SEP}
2987     local path_cleanup
2988     local dir
2989     for dir in $LO_PATH ; do
2990         if test "$dir" != "$1" ; then
2991             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2992         fi
2993     done
2994     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2997 dnl ===================================================================
2998 dnl check for required programs (grep, awk, sed, bash)
2999 dnl ===================================================================
3001 pathmunge ()
3003     local new_path
3004     if test -n "$1"; then
3005         if test "$build_os" = "cygwin"; then
3006             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3007                 PathFormat "$1"
3008                 new_path=`cygpath -sm "$formatted_path"`
3009             else
3010                 PathFormat "$1"
3011                 new_path=`cygpath -u "$formatted_path"`
3012             fi
3013         else
3014             new_path="$1"
3015         fi
3016         if test "$2" = "after"; then
3017             add_lopath_after "$new_path"
3018         else
3019             add_lopath_before "$new_path"
3020         fi
3021     fi
3024 AC_PROG_AWK
3025 AC_PATH_PROG( AWK, $AWK)
3026 if test -z "$AWK"; then
3027     AC_MSG_ERROR([install awk to run this script])
3030 AC_PATH_PROG(BASH, bash)
3031 if test -z "$BASH"; then
3032     AC_MSG_ERROR([bash not found in \$PATH])
3034 AC_SUBST(BASH)
3036 # prefer parallel compression tools, if available
3037 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
3038 if test -z "$COMPRESSIONTOOL"; then
3039     AC_PATH_PROG(COMPRESSIONTOOL, gzip)
3040     if test -z "$COMPRESSIONTOOL"; then
3041         AC_MSG_ERROR([gzip not found in \$PATH])
3042     fi
3044 AC_SUBST(COMPRESSIONTOOL)
3046 AC_MSG_CHECKING([for GNU or BSD tar])
3047 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
3048     $a --version 2> /dev/null | grep -E "GNU|bsdtar"  2>&1 > /dev/null
3049     if test $? -eq 0;  then
3050         GNUTAR=$a
3051         break
3052     fi
3053 done
3054 AC_MSG_RESULT($GNUTAR)
3055 if test -z "$GNUTAR"; then
3056     AC_MSG_ERROR([not found. install GNU or BSD tar.])
3058 AC_SUBST(GNUTAR)
3060 AC_MSG_CHECKING([for tar's option to strip components])
3061 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
3062 if test $? -eq 0; then
3063     STRIP_COMPONENTS="--strip-components"
3064 else
3065     $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3066     if test $? -eq 0; then
3067         STRIP_COMPONENTS="--strip-path"
3068     else
3069         STRIP_COMPONENTS="unsupported"
3070     fi
3072 AC_MSG_RESULT($STRIP_COMPONENTS)
3073 if test x$STRIP_COMPONENTS = xunsupported; then
3074     AC_MSG_ERROR([you need a tar that is able to strip components.])
3076 AC_SUBST(STRIP_COMPONENTS)
3078 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3079 dnl desktop OSes from "mobile" ones.
3081 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3082 dnl In other words, that when building for an OS that is not a
3083 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3085 dnl Note the direction of the implication; there is no assumption that
3086 dnl cross-compiling would imply a non-desktop OS.
3088 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3089     BUILD_TYPE="$BUILD_TYPE DESKTOP"
3090     AC_DEFINE(HAVE_FEATURE_DESKTOP)
3091     if test "$_os" != Emscripten; then
3092         AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3093     fi
3096 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3097 # also work with the default gtk3 plugin.
3098 if test "$enable_wasm_strip" = "yes"; then
3099     enable_avmedia=no
3100     enable_libcmis=no
3101     enable_coinmp=no
3102     enable_cups=no
3103     test "$_os" = Emscripten && enable_curl=no
3104     enable_database_connectivity=no
3105     enable_dbus=no
3106     enable_dconf=no
3107     test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3108     enable_extension_integration=no
3109     enable_extensions=no
3110     enable_extension_update=no
3111     enable_gio=no
3112     enable_gpgmepp=no
3113     enable_ldap=no
3114     enable_lotuswordpro=no
3115     enable_lpsolve=no
3116     enable_nss=no
3117     enable_odk=no
3118     enable_online_update=no
3119     enable_opencl=no
3120     enable_pdfimport=no
3121     enable_randr=no
3122     enable_report_builder=no
3123     enable_scripting=no
3124     enable_sdremote_bluetooth=no
3125     enable_skia=no
3126     enable_xmlhelp=no
3127     enable_zxing=no
3128     test_libepubgen=no
3129     test_libcdr=no
3130     test_libcmis=no
3131     test_libetonyek=no
3132     test_libfreehand=no
3133     test_libmspub=no
3134     test_libpagemaker=no
3135     test_libqxp=no
3136     test_libvisio=no
3137     test_libzmf=no
3138     test_webdav=no
3139     with_galleries=no
3140     with_templates=no
3141     with_webdav=no
3142     with_x=no
3144     test "${with_fonts+set}" = set || with_fonts=yes
3145     test "${with_locales+set}" = set || with_locales=en
3147     AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3148     AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3149     AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3150     AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3151 #    AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3152     AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3153     AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3154     AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3155     AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3156 #    AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3157     AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3158     AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3159     AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3160     AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3161     AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3162     AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3163     AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3164     AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3167 EMSCRIPTEN_NEH_MAJOR=3
3168 EMSCRIPTEN_NEH_MINOR=1
3169 EMSCRIPTEN_NEH_TINY=3
3170 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3172 if test "$enable_wasm_exceptions" = yes; then
3173     AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3174     check_semantic_version_three_prefixed EMSCRIPTEN NEH
3175     if test $? -ne 0; then
3176         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3177     else
3178         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3179     fi
3180     ENABLE_WASM_EXCEPTIONS=TRUE
3182 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3184 # Whether to build "avmedia" functionality or not.
3186 if test "$enable_avmedia" = yes; then
3187     BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3188     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3189 else
3190     test_gstreamer_1_0=no
3193 # Decide whether to build database connectivity stuff (including Base) or not.
3194 if test "$enable_database_connectivity" != no; then
3195     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3196     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3197 else
3198     if test "$_os" = iOS; then
3199         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3200     fi
3201     disable_database_connectivity_dependencies
3204 if test -z "$enable_extensions"; then
3205     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3206     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3207         enable_extensions=yes
3208     fi
3211 DISABLE_SCRIPTING=''
3212 if test "$enable_scripting" = yes; then
3213     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3214     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3215 else
3216     DISABLE_SCRIPTING='TRUE'
3217     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3220 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3221     # Disable dynamic_loading always for iOS and Android
3222     enable_dynamic_loading=no
3223 elif test -z "$enable_dynamic_loading"; then
3224     # Otherwise enable it unless specifically disabled
3225     enable_dynamic_loading=yes
3228 DISABLE_DYNLOADING=''
3229 if test "$enable_dynamic_loading" = yes; then
3230     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3231 else
3232     DISABLE_DYNLOADING='TRUE'
3233     if test $_os != iOS -a $_os != Android; then
3234         enable_database_connectivity=no
3235         enable_nss=no
3236         enable_odk=no
3237         enable_python=no
3238         enable_skia=no
3239         with_java=no
3240     fi
3242 AC_SUBST(DISABLE_DYNLOADING)
3244 ENABLE_CUSTOMTARGET_COMPONENTS=
3245 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3246     ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3247     if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3248         AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3249     fi
3251 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3253 if test "$enable_extensions" = yes; then
3254     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3255     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3256 else
3257     enable_extension_integration=no
3258     enable_extension_update=no
3261 # remember SYSBASE value
3262 AC_SUBST(SYSBASE)
3264 dnl ===================================================================
3265 dnl  Sort out various gallery compilation options
3266 dnl ===================================================================
3267 WITH_GALLERY_BUILD=TRUE
3268 AC_MSG_CHECKING([how to build and package galleries])
3269 if test -n "${with_galleries}"; then
3270     if test "$with_galleries" = "build"; then
3271         if test "$enable_database_connectivity" = no; then
3272             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3273         fi
3274         AC_MSG_RESULT([build from source images internally])
3275     elif test "$with_galleries" = "no"; then
3276         WITH_GALLERY_BUILD=
3277         AC_MSG_RESULT([disable non-internal gallery build])
3278     else
3279         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3280     fi
3281 else
3282     if test $_os != iOS -a $_os != Android; then
3283         AC_MSG_RESULT([internal src images for desktop])
3284     else
3285         WITH_GALLERY_BUILD=
3286         AC_MSG_RESULT([disable src image build])
3287     fi
3289 AC_SUBST(WITH_GALLERY_BUILD)
3291 dnl ===================================================================
3292 dnl  Sort out various templates compilation options
3293 dnl ===================================================================
3294 WITH_TEMPLATES=TRUE
3295 AC_MSG_CHECKING([build with or without template files])
3296 if test -n "${with_templates}"; then
3297     if test "$with_templates" = "yes"; then
3298         AC_MSG_RESULT([enable all templates])
3299     elif test "$with_templates" = "no"; then
3300         WITH_TEMPLATES=
3301         AC_MSG_RESULT([disable non-internal templates])
3302     else
3303         AC_MSG_ERROR([unknown value --with-templates=$with_templates])
3304     fi
3305 else
3306     if test $_os != iOS -a $_os != Android -a $_os != Emscripten; then
3307         AC_MSG_RESULT([enable all templates])
3308     else
3309         WITH_TEMPLATES=
3310         AC_MSG_RESULT([disable non-internal templates])
3311     fi
3313 AC_SUBST(WITH_TEMPLATES)
3315 dnl ===================================================================
3316 dnl  Checks if ccache is available
3317 dnl ===================================================================
3318 CCACHE_DEPEND_MODE=
3319 if test "$enable_ccache" = "no"; then
3320     CCACHE=""
3321 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3322     case "%$CC%$CXX%" in
3323     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3324     # assume that's good then
3325     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3326         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3327         CCACHE_DEPEND_MODE=1
3328         ;;
3329     *)
3330         # try to use our own ccache if it is available and CCACHE was not already defined
3331         if test -z "$CCACHE"; then
3332             if test "$_os" = "WINNT"; then
3333                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3334             fi
3335             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3336                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3337             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3338                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3339             fi
3340         fi
3341         AC_PATH_PROG([CCACHE],[ccache],[not found])
3342         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3343             CCACHE=`win_short_path_for_make "$CCACHE"`
3344             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3345             rm -f conftest.txt
3346             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3347             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3348             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3349                 AC_MSG_RESULT(yes)
3350             else
3351                 AC_MSG_RESULT(no)
3352                 CCACHE="not found"
3353             fi
3354             rm -f conftest.txt
3355         fi
3356         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3357             # on windows/VC perhaps sccache is around?
3358             case "%$CC%$CXX%" in
3359             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3360             # assume that's good then
3361             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3362                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3363                 CCACHE_DEPEND_MODE=1
3364                 SCCACHE=1
3365                 ;;
3366             *)
3367                 # for sharing code below, reuse CCACHE env var
3368                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3369                 if test "$CCACHE" != "not found"; then
3370                     CCACHE=`win_short_path_for_make "$CCACHE"`
3371                     SCCACHE=1
3372                     CCACHE_DEPEND_MODE=1
3373                 fi
3374                 ;;
3375             esac
3376         fi
3377         if test "$CCACHE" = "not found"; then
3378             CCACHE=""
3379         fi
3380         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3381             CCACHE_DEPEND_MODE=1
3382             # Need to check for ccache version: otherwise prevents
3383             # caching of the results (like "-x objective-c++" for Mac)
3384             if test $_os = Darwin -o $_os = iOS; then
3385                 # Check ccache version
3386                 AC_MSG_CHECKING([whether version of ccache is suitable])
3387                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3388                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3389                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3390                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3391                 else
3392                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3393                     CCACHE=""
3394                     CCACHE_DEPEND_MODE=
3395                 fi
3396             fi
3397         fi
3398         if test "$enable_ccache" = yes && test -z "$CCACHE"; then
3399             AC_MSG_ERROR([No suitable ccache found])
3400         fi
3401         ;;
3402     esac
3403 else
3404     CCACHE=""
3406 if test "$enable_ccache" = "nodepend"; then
3407     CCACHE_DEPEND_MODE=""
3409 AC_SUBST(CCACHE_DEPEND_MODE)
3411 # sccache defaults are good enough
3412 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3413     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3414     # or (...) max_size = 20.0 G
3415     # -p works with both 4.2 and 4.4
3416     ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 $5 }' | sed -e 's/\.[0-9]*//'])
3417     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3418     if test "$ccache_size" = ""; then
3419         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3420         if test "$ccache_size" = ""; then
3421             ccache_size=0
3422         fi
3423         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3424         if test $ccache_size -lt 1024; then
3425             CCACHE=""
3426             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3427             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3428         else
3429             # warn that ccache may be too small for debug build
3430             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3431             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3432         fi
3433     else
3434         if test $ccache_size -lt 5; then
3435             #warn that ccache may be too small for debug build
3436             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3437             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3438         fi
3439     fi
3442 ENABLE_Z7_DEBUG=
3443 if test "$enable_z7_debug" != no; then
3444     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3445         ENABLE_Z7_DEBUG=TRUE
3446     fi
3447 else
3448     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3449     add_warning "ccache will not work with --disable-z7-debug"
3451 AC_SUBST(ENABLE_Z7_DEBUG)
3453 dnl ===================================================================
3454 dnl  Checks for C compiler,
3455 dnl  The check for the C++ compiler is later on.
3456 dnl ===================================================================
3457 if test "$_os" != "WINNT"; then
3458     GCC_HOME_SET="true"
3459     AC_MSG_CHECKING([gcc home])
3460     if test -z "$with_gcc_home"; then
3461         if test "$enable_icecream" = "yes"; then
3462             if test -d "/usr/lib/icecc/bin"; then
3463                 GCC_HOME="/usr/lib/icecc/"
3464             elif test -d "/usr/libexec/icecc/bin"; then
3465                 GCC_HOME="/usr/libexec/icecc/"
3466             elif test -d "/opt/icecream/bin"; then
3467                 GCC_HOME="/opt/icecream/"
3468             else
3469                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3471             fi
3472         else
3473             GCC_HOME=`command -v gcc | $SED -e s,/bin/gcc,,`
3474             GCC_HOME_SET="false"
3475         fi
3476     else
3477         GCC_HOME="$with_gcc_home"
3478     fi
3479     AC_MSG_RESULT($GCC_HOME)
3480     AC_SUBST(GCC_HOME)
3482     if test "$GCC_HOME_SET" = "true"; then
3483         if test -z "$CC"; then
3484             CC="$GCC_HOME/bin/gcc"
3485             CC_BASE="gcc"
3486         fi
3487         if test -z "$CXX"; then
3488             CXX="$GCC_HOME/bin/g++"
3489             CXX_BASE="g++"
3490         fi
3491     fi
3494 COMPATH=`dirname "$CC"`
3495 if test "$COMPATH" = "."; then
3496     AC_PATH_PROGS(COMPATH, $CC)
3497     dnl double square bracket to get single because of M4 quote...
3498     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3500 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3502 dnl ===================================================================
3503 dnl Java support
3504 dnl ===================================================================
3505 AC_MSG_CHECKING([whether to build with Java support])
3506 if test "$with_java" != "no"; then
3507     if test "$DISABLE_SCRIPTING" = TRUE; then
3508         AC_MSG_RESULT([no, overridden by --disable-scripting])
3509         ENABLE_JAVA=""
3510         with_java=no
3511     else
3512         AC_MSG_RESULT([yes])
3513         ENABLE_JAVA="TRUE"
3514         AC_DEFINE(HAVE_FEATURE_JAVA)
3515     fi
3516 else
3517     AC_MSG_RESULT([no])
3518     ENABLE_JAVA=""
3521 AC_SUBST(ENABLE_JAVA)
3523 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3525 dnl ENABLE_JAVA="" indicate no Java support at all
3527 dnl ===================================================================
3528 dnl Check macOS SDK and compiler
3529 dnl ===================================================================
3531 if test $_os = Darwin; then
3533     # The SDK in the currently selected Xcode should be found.
3535     AC_MSG_CHECKING([what macOS SDK to use])
3536     # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3537     # really supported anymore, instead you'd use different copies of Xcode, each with their own
3538     # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3539     # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3540     # problems that existed in the PPC days with target versions not being respected or random
3541     # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3542     # SDK version is enough, no need to do both...
3543     MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3544     if test ! -d "$MACOSX_SDK_PATH"; then
3545         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3546     fi
3547     macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3548     MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3549     # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3550     # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3551     # 10.10.2 is 101002
3552     # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3553     # correct version in case such an old SDK is specified, it will be rejected later anyway
3554     MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3555     if test $MACOSX_SDK_VERSION -lt 101500; then
3556         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.15])
3557     fi
3558     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3559         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3560     fi
3561     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3563     AC_MSG_CHECKING([what minimum version of macOS to require])
3564     if test "$with_macosx_version_min_required" = "" ; then
3565         if test "$host_cpu" = x86_64; then
3566             with_macosx_version_min_required="10.15";
3567         else
3568             with_macosx_version_min_required="11.0";
3569         fi
3570     fi
3571     # see same notes about MACOSX_SDK_VERSION above
3572     MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3573     if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101500; then
3574         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.15])
3575     fi
3576     AC_MSG_RESULT([$with_macosx_version_min_required])
3578     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3579     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3580         AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3581     else
3582         AC_MSG_RESULT([yes])
3583     fi
3585     # export this so that "xcrun" invocations later return matching values
3586     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3587     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3588     export DEVELOPER_DIR
3589     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3590     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3592     AC_MSG_CHECKING([whether Xcode is new enough])
3593     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3594     my_xcode_ver2=${my_xcode_ver1#Xcode }
3595     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3596     if test "$my_xcode_ver3" -ge 1205; then
3597         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3598         if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 120000; then
3599             if test "$my_xcode_ver3" -ge 1600; then
3600                 dnl the Xcode 15 relnotes state that the classic linker will disappear in the next version, but nothing about
3601                 dnl fixing the problem with weak symbols/macOS 11 compatibility, so assume for now that Xcode 16 will break it...
3602                 AC_MSG_ERROR([Check that Xcode 16 still supports the old linker/that it doesn't break macOS 11 compatibility, then remove this check]);
3603             fi
3604             if test "$my_xcode_ver3" -ge 1500; then
3605                 AC_MSG_WARN([Xcode 15 has a new linker that causes runtime crashes on macOS 11])
3606                 add_warning "Xcode 15 has a new linker that causes runtime crashes on macOS 11, forcing the old linker."
3607                 add_warning "see https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Linking"
3608                 LDFLAGS="$LDFLAGS -Wl,-ld_classic"
3609                 # if LDFLAGS weren't set already, a check above sets x_LDFLAGS=[#] to comment-out the export LDFLAGS line in config_host.mk
3610                 x_LDFLAGS=
3611             fi
3612         fi
3613     else
3614         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3615     fi
3617     my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3618     MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3620     LIBTOOL=/usr/bin/libtool
3621     INSTALL_NAME_TOOL=install_name_tool
3622     if test -z "$save_CC"; then
3623         stdlib=-stdlib=libc++
3625         AC_MSG_CHECKING([what C compiler to use])
3626         CC="`xcrun -find clang`"
3627         CC_BASE=`first_arg_basename "$CC"`
3628         if test "$host_cpu" = x86_64; then
3629             CC+=" -target x86_64-apple-macos"
3630         else
3631             CC+=" -target arm64-apple-macos"
3632         fi
3633         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3634         AC_MSG_RESULT([$CC])
3636         AC_MSG_CHECKING([what C++ compiler to use])
3637         CXX="`xcrun -find clang++`"
3638         CXX_BASE=`first_arg_basename "$CXX"`
3639         if test "$host_cpu" = x86_64; then
3640             CXX+=" -target x86_64-apple-macos"
3641         else
3642             CXX+=" -target arm64-apple-macos"
3643         fi
3644         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3645         AC_MSG_RESULT([$CXX])
3647         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3648         AR=`xcrun -find ar`
3649         NM=`xcrun -find nm`
3650         STRIP=`xcrun -find strip`
3651         LIBTOOL=`xcrun -find libtool`
3652         RANLIB=`xcrun -find ranlib`
3653     fi
3655     AC_MSG_CHECKING([whether to do code signing])
3657     if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3658         AC_MSG_RESULT([no])
3659     else
3660         if test "$enable_macosx_code_signing" = yes; then
3661             # By default use the first suitable certificate (?).
3663             # https://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3664             # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3665             # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3666             # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3667             # "Developer ID Application" one.
3668             identity="Developer ID Application:"
3669         else
3670             identity=$enable_macosx_code_signing
3671         fi
3672         identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3673         if test -n "$identity"; then
3674             MACOSX_CODESIGNING_IDENTITY=$identity
3675             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3676             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3677         else
3678             AC_MSG_ERROR([cannot determine identity to use])
3679         fi
3680     fi
3682     AC_MSG_CHECKING([whether to create a Mac App Store package])
3684     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3685         AC_MSG_RESULT([no])
3686     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3687         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3688     else
3689         if test "$enable_macosx_package_signing" = yes; then
3690             # By default use the first suitable certificate.
3691             # It should be a "3rd Party Mac Developer Installer" one
3692             identity="3rd Party Mac Developer Installer:"
3693         else
3694             identity=$enable_macosx_package_signing
3695         fi
3696         identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3697         if test -n "$identity"; then
3698             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3699             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3700             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3701         else
3702             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3703         fi
3704     fi
3706     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3707         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3708     fi
3710     AC_MSG_CHECKING([whether to sandbox the application])
3712     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3713         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3714     elif test "$enable_macosx_sandbox" = yes; then
3715         ENABLE_MACOSX_SANDBOX=TRUE
3716         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3717         AC_MSG_RESULT([yes])
3718     else
3719         AC_MSG_RESULT([no])
3720     fi
3722     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3723     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3724     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3726     if test -n "$with_macosx_provisioning_profile" ; then
3727         if test ! -f "$with_macosx_provisioning_profile"; then
3728             AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3729         else
3730             MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3731             MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3732                 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3733                     | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3734                 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3735         fi
3736     fi
3738 AC_SUBST(MACOSX_SDK_PATH)
3739 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3740 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3741 AC_SUBST(INSTALL_NAME_TOOL)
3742 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3743 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3744 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3745 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3746 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3747 AC_SUBST(MACOSX_PROVISIONING_INFO)
3748 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3749 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3750 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3752 dnl ===================================================================
3753 dnl Check iOS SDK and compiler
3754 dnl ===================================================================
3756 if test $_os = iOS; then
3757     AC_MSG_CHECKING([what iOS SDK to use])
3759     if test "$enable_ios_simulator" = "yes"; then
3760         platformlc=iphonesimulator
3761         versionmin=-mios-simulator-version-min=14.5
3762     else
3763         platformlc=iphoneos
3764         versionmin=-miphoneos-version-min=14.5
3765     fi
3767     sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3769     if ! test -d "$sysroot"; then
3770         AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3771     fi
3773     AC_MSG_RESULT($sysroot)
3775     stdlib="-stdlib=libc++"
3777     AC_MSG_CHECKING([what C compiler to use])
3778     CC="`xcrun -find clang`"
3779     CC_BASE=`first_arg_basename "$CC"`
3780     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3781     AC_MSG_RESULT([$CC])
3783     AC_MSG_CHECKING([what C++ compiler to use])
3784     CXX="`xcrun -find clang++`"
3785     CXX_BASE=`first_arg_basename "$CXX"`
3786     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3787     AC_MSG_RESULT([$CXX])
3789     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3790     AR=`xcrun -find ar`
3791     NM=`xcrun -find nm`
3792     STRIP=`xcrun -find strip`
3793     LIBTOOL=`xcrun -find libtool`
3794     RANLIB=`xcrun -find ranlib`
3797 AC_MSG_CHECKING([whether to treat the installation as read-only])
3799 if test $_os = Darwin; then
3800     enable_readonly_installset=yes
3801 elif test "$enable_extensions" != yes; then
3802     enable_readonly_installset=yes
3804 if test "$enable_readonly_installset" = yes; then
3805     AC_MSG_RESULT([yes])
3806     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3807 else
3808     AC_MSG_RESULT([no])
3811 dnl ===================================================================
3812 dnl Structure of install set
3813 dnl ===================================================================
3815 if test $_os = Darwin; then
3816     LIBO_BIN_FOLDER=MacOS
3817     LIBO_ETC_FOLDER=Resources
3818     LIBO_LIBEXEC_FOLDER=MacOS
3819     LIBO_LIB_FOLDER=Frameworks
3820     LIBO_LIB_PYUNO_FOLDER=Resources
3821     LIBO_SHARE_FOLDER=Resources
3822     LIBO_SHARE_HELP_FOLDER=Resources/help
3823     LIBO_SHARE_JAVA_FOLDER=Resources/java
3824     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3825     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3826     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3827     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3828     LIBO_URE_BIN_FOLDER=MacOS
3829     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3830     LIBO_URE_LIB_FOLDER=Frameworks
3831     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3832     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3833 elif test $_os = WINNT; then
3834     LIBO_BIN_FOLDER=program
3835     LIBO_ETC_FOLDER=program
3836     LIBO_LIBEXEC_FOLDER=program
3837     LIBO_LIB_FOLDER=program
3838     LIBO_LIB_PYUNO_FOLDER=program
3839     LIBO_SHARE_FOLDER=share
3840     LIBO_SHARE_HELP_FOLDER=help
3841     LIBO_SHARE_JAVA_FOLDER=program/classes
3842     LIBO_SHARE_PRESETS_FOLDER=presets
3843     LIBO_SHARE_READMES_FOLDER=readmes
3844     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3845     LIBO_SHARE_SHELL_FOLDER=program/shell
3846     LIBO_URE_BIN_FOLDER=program
3847     LIBO_URE_ETC_FOLDER=program
3848     LIBO_URE_LIB_FOLDER=program
3849     LIBO_URE_MISC_FOLDER=program
3850     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3851 else
3852     LIBO_BIN_FOLDER=program
3853     LIBO_ETC_FOLDER=program
3854     LIBO_LIBEXEC_FOLDER=program
3855     LIBO_LIB_FOLDER=program
3856     LIBO_LIB_PYUNO_FOLDER=program
3857     LIBO_SHARE_FOLDER=share
3858     LIBO_SHARE_HELP_FOLDER=help
3859     LIBO_SHARE_JAVA_FOLDER=program/classes
3860     LIBO_SHARE_PRESETS_FOLDER=presets
3861     LIBO_SHARE_READMES_FOLDER=readmes
3862     if test "$enable_fuzzers" != yes; then
3863         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3864     else
3865         LIBO_SHARE_RESOURCE_FOLDER=resource
3866     fi
3867     LIBO_SHARE_SHELL_FOLDER=program/shell
3868     LIBO_URE_BIN_FOLDER=program
3869     LIBO_URE_ETC_FOLDER=program
3870     LIBO_URE_LIB_FOLDER=program
3871     LIBO_URE_MISC_FOLDER=program
3872     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3874 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3875 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3876 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3877 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3878 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3879 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3880 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3881 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3882 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3883 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3884 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3885 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3886 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3887 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3888 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3889 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3891 # Not all of them needed in config_host.mk, add more if need arises
3892 AC_SUBST(LIBO_BIN_FOLDER)
3893 AC_SUBST(LIBO_ETC_FOLDER)
3894 AC_SUBST(LIBO_LIB_FOLDER)
3895 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3896 AC_SUBST(LIBO_SHARE_FOLDER)
3897 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3898 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3899 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3900 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3901 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3902 AC_SUBST(LIBO_URE_BIN_FOLDER)
3903 AC_SUBST(LIBO_URE_ETC_FOLDER)
3904 AC_SUBST(LIBO_URE_LIB_FOLDER)
3905 AC_SUBST(LIBO_URE_MISC_FOLDER)
3906 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3908 dnl ===================================================================
3909 dnl Windows specific tests and stuff
3910 dnl ===================================================================
3912 reg_get_value()
3914     # Return value: $regvalue
3915     unset regvalue
3917     if test "$build_os" = "wsl"; then
3918         regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3919         return
3920     fi
3922     local _regentry="/proc/registry${1}/${2}"
3923     if test -f "$_regentry"; then
3924         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3925         # Registry keys read via /proc/registry* are always \0 terminated!
3926         local _regvalue=$(tr -d '\0' < "$_regentry")
3927         if test $? -eq 0; then
3928             regvalue=$_regvalue
3929         fi
3930     fi
3933 # Get a value from the 32-bit side of the Registry
3934 reg_get_value_32()
3936     reg_get_value "32" "$1"
3939 # Get a value from the 64-bit side of the Registry
3940 reg_get_value_64()
3942     reg_get_value "64" "$1"
3945 reg_list_values()
3947     # Return value: $reglist
3948     unset reglist
3950     if test "$build_os" = "wsl"; then
3951         reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3952         return
3953     fi
3955     reglist=$(ls "/proc/registry${1}/${2}")
3958 # List values from the 32-bit side of the Registry
3959 reg_list_values_32()
3961     reg_list_values "32" "$1"
3964 # List values from the 64-bit side of the Registry
3965 reg_list_values_64()
3967     reg_list_values "64" "$1"
3970 case "$host_os" in
3971 cygwin*|wsl*)
3972     COM=MSC
3973     OS=WNT
3974     RTL_OS=Windows
3975     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3976         P_SEP=";"
3977     else
3978         P_SEP=:
3979     fi
3980     case "$host_cpu" in
3981     x86_64)
3982         CPUNAME=X86_64
3983         RTL_ARCH=X86_64
3984         PLATFORMID=windows_x86_64
3985         WINDOWS_X64=1
3986         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3987         WIN_HOST_ARCH="x64"
3988         WIN_MULTI_ARCH="x86"
3989         WIN_HOST_BITS=64
3990         ;;
3991     i*86)
3992         CPUNAME=INTEL
3993         RTL_ARCH=x86
3994         PLATFORMID=windows_x86
3995         WIN_HOST_ARCH="x86"
3996         WIN_HOST_BITS=32
3997         WIN_OTHER_ARCH="x64"
3998         ;;
3999     aarch64)
4000         CPUNAME=AARCH64
4001         RTL_ARCH=AARCH64
4002         PLATFORMID=windows_aarch64
4003         WINDOWS_X64=1
4004         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
4005         WIN_HOST_ARCH="arm64"
4006         WIN_HOST_BITS=64
4007         with_ucrt_dir=no
4008         ;;
4009     *)
4010         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4011         ;;
4012     esac
4014     case "$build_cpu" in
4015     x86_64) WIN_BUILD_ARCH="x64" ;;
4016     i*86) WIN_BUILD_ARCH="x86" ;;
4017     aarch64) WIN_BUILD_ARCH="arm64" ;;
4018     *)
4019         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
4020         ;;
4021     esac
4023     SCPDEFS="$SCPDEFS -D_MSC_VER"
4024     ;;
4025 esac
4027 # multi-arch is an arch, which can execute on the host (x86 on x64), while
4028 # other-arch won't, but wouldn't break the build (x64 on x86).
4029 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
4030     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
4034 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
4035     # To allow building Windows multi-arch releases without cross-tooling
4036     if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
4037         cross_compiling="yes"
4038     fi
4041 if test "$cross_compiling" = "yes"; then
4042     export CROSS_COMPILING=TRUE
4043     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
4044         ENABLE_WASM_STRIP=TRUE
4045     fi
4046     if test "$_os" = "Emscripten"; then
4047         if test "$with_main_module" = "calc"; then
4048             ENABLE_WASM_STRIP_WRITER=TRUE
4049         elif test "$with_main_module" = "writer"; then
4050             ENABLE_WASM_STRIP_CALC=TRUE
4051         fi
4052     fi
4053 else
4054     CROSS_COMPILING=
4055     BUILD_TYPE="$BUILD_TYPE NATIVE"
4057 AC_SUBST(CROSS_COMPILING)
4058 AC_SUBST(ENABLE_WASM_STRIP)
4059 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
4060 AC_SUBST(ENABLE_WASM_STRIP_CALC)
4062 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
4063 # NOTE: must _not_ be used for bundled external libraries!
4064 ISYSTEM=
4065 if test "$GCC" = "yes"; then
4066     AC_MSG_CHECKING( for -isystem )
4067     save_CFLAGS=$CFLAGS
4068     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
4069     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
4070     CFLAGS=$save_CFLAGS
4071     if test -n "$ISYSTEM"; then
4072         AC_MSG_RESULT(yes)
4073     else
4074         AC_MSG_RESULT(no)
4075     fi
4077 if test -z "$ISYSTEM"; then
4078     # fall back to using -I
4079     ISYSTEM=-I
4081 AC_SUBST(ISYSTEM)
4083 dnl ===================================================================
4084 dnl  Check which Visual Studio compiler is used
4085 dnl ===================================================================
4087 map_vs_year_to_version()
4089     # Return value: $vsversion
4091     unset vsversion
4093     case $1 in
4094     2019)
4095         vsversion=16;;
4096     2022)
4097         vsversion=17;;
4098     2022preview)
4099         vsversion=17.10;;
4100     *)
4101         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4102     esac
4105 vs_versions_to_check()
4107     # Args: $1 (optional) : versions to check, in the order of preference
4108     # Return value: $vsversions
4110     unset vsversions
4112     if test -n "$1"; then
4113         map_vs_year_to_version "$1"
4114         vsversions=$vsversion
4115     else
4116         # Default version is 2019
4117         vsversions="16"
4118     fi
4121 win_get_env_from_vsdevcmdbat()
4123     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4124     printf '@set VSCMD_SKIP_SENDTELEMETRY=1\r\n' > $WRAPPERBATCHFILEPATH
4125     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" >> $WRAPPERBATCHFILEPATH
4126     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4127     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4128     local result
4129     if test "$build_os" = "wsl"; then
4130         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4131     else
4132         chmod +x $WRAPPERBATCHFILEPATH
4133         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4134     fi
4135     rm -f $WRAPPERBATCHFILEPATH
4136     printf '%s' "$result"
4139 find_ucrt()
4141     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4142     if test -n "$regvalue"; then
4143         PathFormat "$regvalue"
4144         UCRTSDKDIR=$formatted_path_unix
4145         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4146         UCRTVERSION=$regvalue
4147         # Rest if not exist
4148         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4149           UCRTSDKDIR=
4150         fi
4151     fi
4152     if test -z "$UCRTSDKDIR"; then
4153         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4154         ide_env_file="${ide_env_dir}VsDevCmd.bat"
4155         if test -f "$ide_env_file"; then
4156             PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
4157             UCRTSDKDIR=$formatted_path
4158             UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)
4159             dnl Hack needed at least by tml:
4160             if test "$UCRTVERSION" = 10.0.15063.0 \
4161                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4162                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4163             then
4164                 UCRTVERSION=10.0.14393.0
4165             fi
4166         else
4167           AC_MSG_ERROR([No UCRT found])
4168         fi
4169     fi
4172 find_msvc()
4174     # Find Visual C++
4175     # Args: $1 (optional) : The VS version year
4176     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4178     unset vctest vctoolset vcnumwithdot vcbuildnumber
4180     vs_versions_to_check "$1"
4181     if test "$build_os" = wsl; then
4182         vswhere="$PROGRAMFILESX86"
4183         if test -z "$vswhere"; then
4184             vswhere="c:\\Program Files (x86)"
4185         fi
4186     else
4187         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4188     fi
4189     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4190     PathFormat "$vswhere"
4191     vswhere=$formatted_path_unix
4192     for ver in $vsversions; do
4193         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4194         if test -z "$vswhereoutput"; then
4195             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4196         fi
4197         # Fall back to all MS products (this includes VC++ Build Tools)
4198         if ! test -n "$vswhereoutput"; then
4199             AC_MSG_CHECKING([VC++ Build Tools and similar])
4200             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4201         fi
4202         if test -n "$vswhereoutput"; then
4203             PathFormat "$vswhereoutput"
4204             vctest=$formatted_path_unix
4205             break
4206         fi
4207     done
4209     if test -n "$vctest"; then
4210         vcnumwithdot="$ver"
4211         if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4212             vcnumwithdot=$vcnumwithdot.0
4213         fi
4214         case "$vcnumwithdot" in
4215         16.0)
4216             vcyear=2019
4217             vctoolset=v142
4218             ;;
4219         17.0 | 17.10)
4220             vcyear=2022
4221             vctoolset=v143
4222             ;;
4223         esac
4224         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4226     fi
4229 test_cl_exe()
4231     AC_MSG_CHECKING([$1 compiler])
4233     CL_EXE_PATH="$2/cl.exe"
4235     if test ! -f "$CL_EXE_PATH"; then
4236         if test "$1" = "multi-arch"; then
4237             AC_MSG_WARN([no compiler (cl.exe) in $2])
4238             return 1
4239         else
4240             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4241         fi
4242     fi
4244     dnl ===========================================================
4245     dnl  Check for the corresponding mspdb*.dll
4246     dnl ===========================================================
4248     # MSVC 15.0 has libraries from 14.0?
4249     mspdbnum="140"
4251     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4252         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4253     fi
4255     # The compiles has to find its shared libraries
4256     OLD_PATH="$PATH"
4257     TEMP_PATH=`cygpath -d "$2"`
4258     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4260     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4261         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4262     fi
4264     PATH="$OLD_PATH"
4266     AC_MSG_RESULT([$CL_EXE_PATH])
4269 SOLARINC=
4270 MSBUILD_PATH=
4271 DEVENV=
4272 if test "$_os" = "WINNT"; then
4273     AC_MSG_CHECKING([Visual C++])
4274     find_msvc "$with_visual_studio"
4275     if test -z "$vctest"; then
4276         if test -n "$with_visual_studio"; then
4277             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4278         else
4279             AC_MSG_ERROR([no Visual Studio installation found])
4280         fi
4281     fi
4282     AC_MSG_RESULT([])
4284     VC_PRODUCT_DIR="$vctest/VC"
4285     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4287     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4288     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4289         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4290         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4291         if test $? -ne 0; then
4292             WIN_MULTI_ARCH=""
4293             WIN_OTHER_ARCH=""
4294         fi
4295     fi
4297     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4298         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4299         test_cl_exe "build" "$MSVC_BUILD_PATH"
4300     fi
4302     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4303         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4304         test_cl_exe "host" "$MSVC_HOST_PATH"
4305     else
4306         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4307     fi
4309     AC_MSG_CHECKING([for short pathname of VC product directory])
4310     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4311     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4313     UCRTSDKDIR=
4314     UCRTVERSION=
4316     AC_MSG_CHECKING([for UCRT location])
4317     find_ucrt
4318     # find_ucrt errors out if it doesn't find it
4319     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4320     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4321     ucrtincpath_formatted=$formatted_path
4322     # SOLARINC is used for external modules and must be set too.
4323     # And no, it's not sufficient to set SOLARINC only, as configure
4324     # itself doesn't honour it.
4325     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4326     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4327     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4328     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4330     AC_SUBST(UCRTSDKDIR)
4331     AC_SUBST(UCRTVERSION)
4333     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4334     # Find the proper version of MSBuild.exe to use based on the VS version
4335     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4336     if test -z "$regvalue" ; then
4337         if test "$WIN_BUILD_ARCH" != "x64"; then
4338             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4339         else
4340             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4341         fi
4342     fi
4343     if test -d "$regvalue" ; then
4344         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4345         AC_MSG_RESULT([$regvalue])
4346     else
4347         AC_MSG_ERROR([MSBuild.exe location not found])
4348     fi
4350     # Find the version of devenv.exe
4351     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4352     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4353     DEVENV_unix=$(cygpath -u "$DEVENV")
4354     if test ! -e "$DEVENV_unix"; then
4355         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4356     fi
4358     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4359     dnl needed when building CLR code:
4360     if test -z "$MSVC_CXX"; then
4361         # This gives us a posix path with 8.3 filename restrictions
4362         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4363     fi
4365     if test -z "$CC"; then
4366         CC=$MSVC_CXX
4367         CC_BASE=`first_arg_basename "$CC"`
4368     fi
4369     if test -z "$CXX"; then
4370         CXX=$MSVC_CXX
4371         CXX_BASE=`first_arg_basename "$CXX"`
4372     fi
4374     if test -n "$CC"; then
4375         # Remove /cl.exe from CC case insensitive
4376         AC_MSG_NOTICE([found Visual C++ $vcyear])
4378         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4379         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4381         PathFormat "$COMPATH"
4382         COMPATH=`win_short_path_for_make "$formatted_path"`
4384         VCVER=$vcnumwithdot
4385         VCTOOLSET=$vctoolset
4387         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4388         # are always "better", we list them in reverse chronological order.
4390         case "$vcnumwithdot" in
4391         16.0 | 17.0 | 17.10)
4392             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4393             ;;
4394         esac
4396         # The expectation is that --with-windows-sdk should not need to be used
4397         if test -n "$with_windows_sdk"; then
4398             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4399             *" "$with_windows_sdk" "*)
4400                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4401                 ;;
4402             *)
4403                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4404                 ;;
4405             esac
4406         fi
4408         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4409         ac_objext=obj
4410         ac_exeext=exe
4412     else
4413         AC_MSG_ERROR([Visual C++ not found after all, huh])
4414     fi
4416     # ERROR if VS version < 16.5
4417     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4418     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4419         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4420         // between Visual Studio versions and _MSC_VER:
4421         #if _MSC_VER < 1925
4422         #error
4423         #endif
4424     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4426     # WARN if VS version < 16.10
4427     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4428     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4429         #if _MSC_VER < 1929
4430         #error
4431         #endif
4432     ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4434     if test $vs2019_recommended_version = yes; then
4435         AC_MSG_RESULT([yes])
4436     else
4437         AC_MSG_WARN([no])
4438         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."
4439     fi
4441     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4442     # version of the Explorer extension (and maybe other small
4443     # bits, too) needed when installing a 32-bit LibreOffice on a
4444     # 64-bit OS. The 64-bit Explorer extension is a feature that
4445     # has been present since long in OOo. Don't confuse it with
4446     # building LibreOffice itself as 64-bit code.
4448     BUILD_X64=
4449     CXX_X64_BINARY=
4451     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4452         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4453         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4454              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4455         then
4456             BUILD_X64=TRUE
4457             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4458             AC_MSG_RESULT([found])
4459         else
4460             AC_MSG_RESULT([not found])
4461             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4462         fi
4463     elif test "$WIN_HOST_ARCH" = "x64"; then
4464         CXX_X64_BINARY=$CXX
4465     fi
4466     AC_SUBST(BUILD_X64)
4468     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4469     AC_SUBST(CXX_X64_BINARY)
4471     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4472     # needed to support TWAIN scan on both 32- and 64-bit systems
4474     case "$WIN_HOST_ARCH" in
4475     x64)
4476         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4477         if test -n "$CXX_X86_BINARY"; then
4478             BUILD_X86=TRUE
4479             AC_MSG_RESULT([preset])
4480         elif test -n "$WIN_MULTI_ARCH"; then
4481             BUILD_X86=TRUE
4482             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4483             AC_MSG_RESULT([found])
4484         else
4485             AC_MSG_RESULT([not found])
4486             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4487         fi
4488         ;;
4489     x86)
4490         BUILD_X86=TRUE
4491         CXX_X86_BINARY=$MSVC_CXX
4492         ;;
4493     esac
4494     AC_SUBST(BUILD_X86)
4495     AC_SUBST(CXX_X86_BINARY)
4497 AC_SUBST(VCVER)
4498 AC_SUBST(VCTOOLSET)
4499 AC_SUBST(DEVENV)
4500 AC_SUBST(MSVC_CXX)
4502 COM_IS_CLANG=
4503 AC_MSG_CHECKING([whether the compiler is actually Clang])
4504 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4505     #ifndef __clang__
4506     you lose
4507     #endif
4508     int foo=42;
4509     ]])],
4510     [AC_MSG_RESULT([yes])
4511      COM_IS_CLANG=TRUE],
4512     [AC_MSG_RESULT([no])])
4513 AC_SUBST(COM_IS_CLANG)
4515 CLANGVER=
4516 if test "$COM_IS_CLANG" = TRUE; then
4517     AC_MSG_CHECKING([whether Clang is new enough])
4518     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4519         #if !defined __apple_build_version__
4520         #error
4521         #endif
4522         ]])],
4523         [my_apple_clang=yes],[my_apple_clang=])
4524     if test "$my_apple_clang" = yes; then
4525         AC_MSG_RESULT([assumed yes (Apple Clang)])
4526     elif test "$_os" = Emscripten; then
4527         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4528     else
4529         if test "$_os" = WINNT; then
4530             dnl In which case, assume clang-cl:
4531             my_args="/EP /TC"
4532         else
4533             my_args="-E -P"
4534         fi
4535         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4536         CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4537         CLANGVER=`echo $clang_version \
4538             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4539         if test "$CLANGVER" -ge 120000; then
4540             AC_MSG_RESULT([yes ($clang_version)])
4541         else
4542             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 12])
4543         fi
4544         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4545         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4546     fi
4549 SHOWINCLUDES_PREFIX=
4550 if test "$_os" = WINNT; then
4551     dnl We need to guess the prefix of the -showIncludes output, it can be
4552     dnl localized
4553     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4554     echo "#include <stdlib.h>" > conftest.c
4555     SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4556         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4557     rm -f conftest.c conftest.obj
4558     if test -z "$SHOWINCLUDES_PREFIX"; then
4559         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4560     else
4561         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4562     fi
4564 AC_SUBST(SHOWINCLUDES_PREFIX)
4567 # prefix C with ccache if needed
4569 if test "$CCACHE" != ""; then
4570     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4572     AC_LANG_PUSH([C])
4573     save_CFLAGS=$CFLAGS
4574     CFLAGS="$CFLAGS --ccache-skip -O2"
4575     # msvc does not fail on unknown options, check stdout
4576     if test "$COM" = MSC; then
4577         CFLAGS="$CFLAGS -nologo"
4578     fi
4579     save_ac_c_werror_flag=$ac_c_werror_flag
4580     ac_c_werror_flag=yes
4581     dnl an empty program will do, we're checking the compiler flags
4582     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4583                       [use_ccache=yes], [use_ccache=no])
4584     CFLAGS=$save_CFLAGS
4585     ac_c_werror_flag=$save_ac_c_werror_flag
4586     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4587         AC_MSG_RESULT([yes])
4588     else
4589         CC="$CCACHE $CC"
4590         CC_BASE="ccache $CC_BASE"
4591         AC_MSG_RESULT([no])
4592     fi
4593     AC_LANG_POP([C])
4596 # ===================================================================
4597 # check various GCC options that Clang does not support now but maybe
4598 # will somewhen in the future, check them even for GCC, so that the
4599 # flags are set
4600 # ===================================================================
4602 HAVE_GCC_GGDB2=
4603 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4604     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4605     save_CFLAGS=$CFLAGS
4606     CFLAGS="$CFLAGS -Werror -ggdb2"
4607     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4608     CFLAGS=$save_CFLAGS
4609     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4610         AC_MSG_RESULT([yes])
4611     else
4612         AC_MSG_RESULT([no])
4613     fi
4615     if test "$host_cpu" = "m68k"; then
4616         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4617         save_CFLAGS=$CFLAGS
4618         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4619         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4620         CFLAGS=$save_CFLAGS
4621         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4622             AC_MSG_RESULT([yes])
4623         else
4624             AC_MSG_ERROR([no])
4625         fi
4626     fi
4628 AC_SUBST(HAVE_GCC_GGDB2)
4630 dnl ===================================================================
4631 dnl  Test the gcc version
4632 dnl ===================================================================
4633 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4634     AC_MSG_CHECKING([the GCC version])
4635     _gcc_version=`$CC -dumpfullversion`
4636     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4637         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4638     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4640     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4642     if test "$gcc_full_version" -lt 120000; then
4643         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 12])
4644     fi
4645 else
4646     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4647     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4648     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4649     # (which reports itself as GCC 4.2.1).
4650     GCC_VERSION=
4652 AC_SUBST(GCC_VERSION)
4654 dnl Set the ENABLE_DBGUTIL variable
4655 dnl ===================================================================
4656 AC_MSG_CHECKING([whether to build with additional debug utilities])
4657 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4658     ENABLE_DBGUTIL="TRUE"
4659     # this is an extra var so it can have different default on different MSVC
4660     # versions (in case there are version specific problems with it)
4661     MSVC_USE_DEBUG_RUNTIME="TRUE"
4663     AC_MSG_RESULT([yes])
4664     # cppunit and graphite expose STL in public headers
4665     if test "$with_system_cppunit" = "yes"; then
4666         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4667     else
4668         with_system_cppunit=no
4669     fi
4670     if test "$with_system_graphite" = "yes"; then
4671         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4672     else
4673         with_system_graphite=no
4674     fi
4675     if test "$with_system_orcus" = "yes"; then
4676         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4677     else
4678         with_system_orcus=no
4679     fi
4680     if test "$with_system_libcmis" = "yes"; then
4681         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4682     else
4683         with_system_libcmis=no
4684     fi
4685     if test "$with_system_hunspell" = "yes"; then
4686         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4687     else
4688         with_system_hunspell=no
4689     fi
4690     if test "$with_system_gpgmepp" = "yes"; then
4691         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4692     else
4693         with_system_gpgmepp=no
4694     fi
4695     if test "$with_system_zxing" = "yes"; then
4696         AC_MSG_ERROR([--with-system-zxing conflicts with --enable-dbgutil])
4697     else
4698         with_system_zxing=no
4699     fi
4700     if test "$with_system_poppler" = "yes"; then
4701         AC_MSG_ERROR([--with-system-poppler conflicts with --enable-dbgutil])
4702     else
4703         with_system_poppler=no
4704     fi
4705     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4706     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4707     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4708     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4709     # of those two is using the system variant:
4710     if test "$with_system_libnumbertext" = "yes"; then
4711         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4712     else
4713         with_system_libnumbertext=no
4714     fi
4715     if test "$with_system_libwps" = "yes"; then
4716         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4717     else
4718         with_system_libwps=no
4719     fi
4720 else
4721     ENABLE_DBGUTIL=""
4722     MSVC_USE_DEBUG_RUNTIME=""
4723     AC_MSG_RESULT([no])
4725 AC_SUBST(ENABLE_DBGUTIL)
4726 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4728 dnl Set the ENABLE_DEBUG variable.
4729 dnl ===================================================================
4730 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4731     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4733 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4734     if test -z "$libo_fuzzed_enable_debug"; then
4735         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4736     else
4737         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4738         enable_debug=yes
4739     fi
4742 AC_MSG_CHECKING([whether to do a debug build])
4743 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4744     ENABLE_DEBUG="TRUE"
4745     if test -n "$ENABLE_DBGUTIL" ; then
4746         AC_MSG_RESULT([yes (dbgutil)])
4747     else
4748         AC_MSG_RESULT([yes])
4749     fi
4750 else
4751     ENABLE_DEBUG=""
4752     AC_MSG_RESULT([no])
4754 AC_SUBST(ENABLE_DEBUG)
4756 dnl ===================================================================
4757 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4758 dnl This is done only after compiler checks (need to know if Clang is
4759 dnl used, for different defaults) and after checking if a debug build
4760 dnl is wanted (non-debug builds get the default linker if not explicitly
4761 dnl specified otherwise).
4762 dnl All checks for linker features/options should come after this.
4763 dnl ===================================================================
4764 check_use_ld()
4766     use_ld=-fuse-ld=${1%%:*}
4767     use_ld_path=${1#*:}
4768     if test "$use_ld_path" != "$1"; then
4769         if test "$COM_IS_CLANG" = TRUE; then
4770             if test "$CLANGVER" -ge 120000; then
4771                 use_ld="${use_ld} --ld-path=${use_ld_path}"
4772             else
4773                 use_ld="-fuse-ld=${use_ld_path}"
4774             fi
4775         else
4776             # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4777             # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4778             # pickup the alternative linker, when called by libtool for linking.
4779             # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4780             AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4781         fi
4782     fi
4783     use_ld_fail_if_error=$2
4784     use_ld_ok=
4785     AC_MSG_CHECKING([for $use_ld linker support])
4786     use_ld_ldflags_save="$LDFLAGS"
4787     LDFLAGS="$LDFLAGS $use_ld"
4788     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4789 #include <stdio.h>
4790         ],[
4791 printf ("hello world\n");
4792         ])], USE_LD=$use_ld, [])
4793     if test -n "$USE_LD"; then
4794         AC_MSG_RESULT( yes )
4795         use_ld_ok=yes
4796     else
4797         if test -n "$use_ld_fail_if_error"; then
4798             AC_MSG_ERROR( no )
4799         else
4800             AC_MSG_RESULT( no )
4801         fi
4802     fi
4803     if test -n "$use_ld_ok"; then
4804         dnl keep the value of LDFLAGS
4805         return 0
4806     fi
4807     LDFLAGS="$use_ld_ldflags_save"
4808     return 1
4810 USE_LD=
4811 if test "$enable_ld" != "no"; then
4812     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4813         if test -n "$enable_ld"; then
4814             check_use_ld "$enable_ld" fail_if_error
4815         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4816             dnl non-debug builds default to the default linker
4817             true
4818         elif test -n "$COM_IS_CLANG"; then
4819             check_use_ld lld
4820             if test $? -ne 0; then
4821                 check_use_ld gold
4822                 if test $? -ne 0; then
4823                     check_use_ld mold
4824                 fi
4825             fi
4826         else
4827             # For gcc first try gold, new versions also support lld/mold.
4828             check_use_ld gold
4829             if test $? -ne 0; then
4830                 check_use_ld lld
4831                 if test $? -ne 0; then
4832                     check_use_ld mold
4833                 fi
4834             fi
4835         fi
4836         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4837         rm conftest.out
4838         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4839         if test -z "$ld_used"; then
4840             ld_used="unknown"
4841         fi
4842         AC_MSG_CHECKING([for linker that is used])
4843         AC_MSG_RESULT([$ld_used])
4844         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4845             if echo "$ld_used" | grep -q "^GNU ld"; then
4846                 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4847                 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4848             fi
4849         fi
4850     else
4851         if test "$enable_ld" = "yes"; then
4852             AC_MSG_ERROR([--enable-ld not supported])
4853         fi
4854     fi
4856 AC_SUBST(USE_LD)
4857 AC_SUBST(LD)
4859 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4860 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4861     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4862     bsymbolic_functions_ldflags_save=$LDFLAGS
4863     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4864     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4865 #include <stdio.h>
4866         ],[
4867 printf ("hello world\n");
4868         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4869     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4870         AC_MSG_RESULT( found )
4871     else
4872         AC_MSG_RESULT( not found )
4873     fi
4874     LDFLAGS=$bsymbolic_functions_ldflags_save
4876 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4878 LD_GC_SECTIONS=
4879 if test "$GCC" = "yes"; then
4880     for flag in "--gc-sections" "-dead_strip"; do
4881         AC_MSG_CHECKING([for $flag linker support])
4882         ldflags_save=$LDFLAGS
4883         LDFLAGS="$LDFLAGS -Wl,$flag"
4884         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4885 #include <stdio.h>
4886             ],[
4887 printf ("hello world\n");
4888             ])],[
4889             LD_GC_SECTIONS="-Wl,$flag"
4890             AC_MSG_RESULT( found )
4891             ], [
4892             AC_MSG_RESULT( not found )
4893             ])
4894         LDFLAGS=$ldflags_save
4895         if test -n "$LD_GC_SECTIONS"; then
4896             break
4897         fi
4898     done
4900 AC_SUBST(LD_GC_SECTIONS)
4902 HAVE_EXTERNAL_DWARF=
4903 if test "$enable_split_debug" != no; then
4904     use_split_debug=
4905     if test -n "$ENABLE_LTO"; then
4906         : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4907     elif test "$enable_split_debug" = yes; then
4908         use_split_debug=1
4909     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4910     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4911         use_split_debug=1
4912     fi
4913     if test -n "$use_split_debug"; then
4914         if test "$_os" = "Emscripten"; then
4915             TEST_CC_FLAG=-gseparate-dwarf
4916         else
4917             TEST_CC_FLAG=-gsplit-dwarf
4918         fi
4919         AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4920         save_CFLAGS=$CFLAGS
4921         CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4922         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4923         CFLAGS=$save_CFLAGS
4924         if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4925             AC_MSG_RESULT([yes])
4926         else
4927             if test "$enable_split_debug" = yes; then
4928                 AC_MSG_ERROR([no])
4929             else
4930                 AC_MSG_RESULT([no])
4931             fi
4932         fi
4933     fi
4934     if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4935         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4936         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4937     fi
4939 AC_SUBST(HAVE_EXTERNAL_DWARF)
4941 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4942 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4943 save_CFLAGS=$CFLAGS
4944 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4945 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4946 CFLAGS=$save_CFLAGS
4947 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4948     AC_MSG_RESULT([yes])
4949 else
4950     AC_MSG_RESULT([no])
4952 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4954 ENABLE_GDB_INDEX=
4955 if test "$enable_gdb_index" != "no"; then
4956     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4957     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4958         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4959         save_CFLAGS=$CFLAGS
4960         CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4961         have_ggnu_pubnames=
4962         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4963         if test "$have_ggnu_pubnames" != "TRUE"; then
4964             if test "$enable_gdb_index" = "yes"; then
4965                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4966             else
4967                 AC_MSG_RESULT( no )
4968             fi
4969         else
4970             AC_MSG_RESULT( yes )
4971             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4972             ldflags_save=$LDFLAGS
4973             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4974             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4975 #include <stdio.h>
4976                 ],[
4977 printf ("hello world\n");
4978                 ])], ENABLE_GDB_INDEX=TRUE, [])
4979             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4980                 AC_MSG_RESULT( yes )
4981             else
4982                 if test "$enable_gdb_index" = "yes"; then
4983                     AC_MSG_ERROR( no )
4984                 else
4985                     AC_MSG_RESULT( no )
4986                 fi
4987             fi
4988             LDFLAGS=$ldflags_save
4989         fi
4990         CFLAGS=$save_CFLAGS
4991         fi
4992     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4993         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4994         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4995     fi
4997 AC_SUBST(ENABLE_GDB_INDEX)
4999 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
5000     enable_sal_log=yes
5002 if test "$enable_sal_log" = yes; then
5003     ENABLE_SAL_LOG=TRUE
5005 AC_SUBST(ENABLE_SAL_LOG)
5007 dnl Check for enable symbols option
5008 dnl ===================================================================
5009 AC_MSG_CHECKING([whether to generate debug information])
5010 if test -z "$enable_symbols"; then
5011     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5012         enable_symbols=yes
5013     else
5014         enable_symbols=no
5015     fi
5017 if test "$enable_symbols" = yes; then
5018     ENABLE_SYMBOLS_FOR=all
5019     AC_MSG_RESULT([yes])
5020 elif test "$enable_symbols" = no; then
5021     ENABLE_SYMBOLS_FOR=
5022     AC_MSG_RESULT([no])
5023 else
5024     # Selective debuginfo.
5025     ENABLE_SYMBOLS_FOR="$enable_symbols"
5026     AC_MSG_RESULT([for "$enable_symbols"])
5028 AC_SUBST(ENABLE_SYMBOLS_FOR)
5030 if test -n "$with_android_ndk" -a \( -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_SYMBOLS_FOR" = "all"; then
5031     # Building on Android with full symbols: without enough memory the linker never finishes currently.
5032     AC_MSG_CHECKING([whether enough memory is available for linking])
5033     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
5034     # Check for 15GB, as Linux reports a bit less than the physical memory size.
5035     if test -n "$mem_size" -a $mem_size -lt 15728640; then
5036         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
5037     else
5038         AC_MSG_RESULT([yes])
5039     fi
5042 ENABLE_OPTIMIZED=
5043 ENABLE_OPTIMIZED_DEBUG=
5044 AC_MSG_CHECKING([whether to compile with optimization flags])
5045 if test -z "$enable_optimized"; then
5046     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5047         enable_optimized=no
5048     else
5049         enable_optimized=yes
5050     fi
5052 if test "$enable_optimized" = yes; then
5053     ENABLE_OPTIMIZED=TRUE
5054     AC_MSG_RESULT([yes])
5055 elif test "$enable_optimized" = debug; then
5056     ENABLE_OPTIMIZED_DEBUG=TRUE
5057     AC_MSG_RESULT([yes (debug)])
5058     HAVE_GCC_OG=
5059     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
5060         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
5061         save_CFLAGS=$CFLAGS
5062         CFLAGS="$CFLAGS -Werror -Og"
5063         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
5064         CFLAGS=$save_CFLAGS
5065         if test "$HAVE_GCC_OG" = "TRUE"; then
5066             AC_MSG_RESULT([yes])
5067         else
5068             AC_MSG_RESULT([no])
5069         fi
5070     fi
5071     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
5072         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
5073     fi
5074 else
5075     AC_MSG_RESULT([no])
5077 AC_SUBST(ENABLE_OPTIMIZED)
5078 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
5081 # determine CPUNAME, OS, ...
5083 case "$host_os" in
5085 cygwin*|wsl*)
5086     # Already handled
5087     ;;
5089 darwin*)
5090     COM=GCC
5091     OS=MACOSX
5092     RTL_OS=MacOSX
5093     P_SEP=:
5095     case "$host_cpu" in
5096     aarch64|arm64)
5097         if test "$enable_ios_simulator" = "yes"; then
5098             OS=iOS
5099         else
5100             CPUNAME=AARCH64
5101             RTL_ARCH=AARCH64
5102             PLATFORMID=macosx_aarch64
5103         fi
5104         ;;
5105     x86_64)
5106         if test "$enable_ios_simulator" = "yes"; then
5107             OS=iOS
5108         fi
5109         CPUNAME=X86_64
5110         RTL_ARCH=X86_64
5111         PLATFORMID=macosx_x86_64
5112         ;;
5113     *)
5114         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5115         ;;
5116     esac
5117     ;;
5119 ios*)
5120     COM=GCC
5121     OS=iOS
5122     RTL_OS=iOS
5123     P_SEP=:
5125     case "$host_cpu" in
5126     aarch64|arm64)
5127         if test "$enable_ios_simulator" = "yes"; then
5128             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5129         fi
5130         ;;
5131     *)
5132         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5133         ;;
5134     esac
5135     CPUNAME=AARCH64
5136     RTL_ARCH=AARCH64
5137     PLATFORMID=ios_arm64
5138     ;;
5140 dragonfly*)
5141     COM=GCC
5142     OS=DRAGONFLY
5143     RTL_OS=DragonFly
5144     P_SEP=:
5146     case "$host_cpu" in
5147     i*86)
5148         CPUNAME=INTEL
5149         RTL_ARCH=x86
5150         PLATFORMID=dragonfly_x86
5151         ;;
5152     x86_64)
5153         CPUNAME=X86_64
5154         RTL_ARCH=X86_64
5155         PLATFORMID=dragonfly_x86_64
5156         ;;
5157     *)
5158         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5159         ;;
5160     esac
5161     ;;
5163 freebsd*)
5164     COM=GCC
5165     RTL_OS=FreeBSD
5166     OS=FREEBSD
5167     P_SEP=:
5169     case "$host_cpu" in
5170     aarch64)
5171         CPUNAME=AARCH64
5172         PLATFORMID=freebsd_aarch64
5173         RTL_ARCH=AARCH64
5174         ;;
5175     i*86)
5176         CPUNAME=INTEL
5177         RTL_ARCH=x86
5178         PLATFORMID=freebsd_x86
5179         ;;
5180     x86_64|amd64)
5181         CPUNAME=X86_64
5182         RTL_ARCH=X86_64
5183         PLATFORMID=freebsd_x86_64
5184         ;;
5185     powerpc64)
5186         CPUNAME=POWERPC64
5187         RTL_ARCH=PowerPC_64
5188         PLATFORMID=freebsd_powerpc64
5189         ;;
5190     powerpc|powerpcspe)
5191         CPUNAME=POWERPC
5192         RTL_ARCH=PowerPC
5193         PLATFORMID=freebsd_powerpc
5194         ;;
5195     *)
5196         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5197         ;;
5198     esac
5199     ;;
5201 haiku*)
5202     COM=GCC
5203     GUIBASE=haiku
5204     RTL_OS=Haiku
5205     OS=HAIKU
5206     P_SEP=:
5208     case "$host_cpu" in
5209     i*86)
5210         CPUNAME=INTEL
5211         RTL_ARCH=x86
5212         PLATFORMID=haiku_x86
5213         ;;
5214     x86_64|amd64)
5215         CPUNAME=X86_64
5216         RTL_ARCH=X86_64
5217         PLATFORMID=haiku_x86_64
5218         ;;
5219     *)
5220         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5221         ;;
5222     esac
5223     ;;
5225 kfreebsd*)
5226     COM=GCC
5227     OS=LINUX
5228     RTL_OS=kFreeBSD
5229     P_SEP=:
5231     case "$host_cpu" in
5233     i*86)
5234         CPUNAME=INTEL
5235         RTL_ARCH=x86
5236         PLATFORMID=kfreebsd_x86
5237         ;;
5238     x86_64)
5239         CPUNAME=X86_64
5240         RTL_ARCH=X86_64
5241         PLATFORMID=kfreebsd_x86_64
5242         ;;
5243     *)
5244         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5245         ;;
5246     esac
5247     ;;
5249 linux-gnu*|linux-musl*)
5250     COM=GCC
5251     OS=LINUX
5252     RTL_OS=Linux
5253     P_SEP=:
5255     case "$host_cpu" in
5257     aarch64)
5258         CPUNAME=AARCH64
5259         PLATFORMID=linux_aarch64
5260         RTL_ARCH=AARCH64
5261         EPM_FLAGS="-a arm64"
5262         ;;
5263     alpha)
5264         CPUNAME=AXP
5265         RTL_ARCH=ALPHA
5266         PLATFORMID=linux_alpha
5267         ;;
5268     arm*)
5269         CPUNAME=ARM
5270         EPM_FLAGS="-a arm"
5271         RTL_ARCH=ARM_EABI
5272         PLATFORMID=linux_arm_eabi
5273         case "$host_cpu" in
5274         arm*-linux)
5275             RTL_ARCH=ARM_OABI
5276             PLATFORMID=linux_arm_oabi
5277             ;;
5278         esac
5279         ;;
5280     hppa)
5281         CPUNAME=HPPA
5282         RTL_ARCH=HPPA
5283         EPM_FLAGS="-a hppa"
5284         PLATFORMID=linux_hppa
5285         ;;
5286     i*86)
5287         CPUNAME=INTEL
5288         RTL_ARCH=x86
5289         PLATFORMID=linux_x86
5290         ;;
5291     ia64)
5292         CPUNAME=IA64
5293         RTL_ARCH=IA64
5294         PLATFORMID=linux_ia64
5295         ;;
5296     mips)
5297         CPUNAME=MIPS
5298         RTL_ARCH=MIPS_EB
5299         EPM_FLAGS="-a mips"
5300         PLATFORMID=linux_mips_eb
5301         ;;
5302     mips64)
5303         CPUNAME=MIPS64
5304         RTL_ARCH=MIPS64_EB
5305         EPM_FLAGS="-a mips64"
5306         PLATFORMID=linux_mips64_eb
5307         ;;
5308     mips64el)
5309         CPUNAME=MIPS64
5310         RTL_ARCH=MIPS64_EL
5311         EPM_FLAGS="-a mips64el"
5312         PLATFORMID=linux_mips64_el
5313         ;;
5314     mipsel)
5315         CPUNAME=MIPS
5316         RTL_ARCH=MIPS_EL
5317         EPM_FLAGS="-a mipsel"
5318         PLATFORMID=linux_mips_el
5319         ;;
5320     riscv64)
5321         CPUNAME=RISCV64
5322         RTL_ARCH=RISCV64
5323         EPM_FLAGS="-a riscv64"
5324         PLATFORMID=linux_riscv64
5325         ;;
5326     m68k)
5327         CPUNAME=M68K
5328         RTL_ARCH=M68K
5329         PLATFORMID=linux_m68k
5330         ;;
5331     powerpc)
5332         CPUNAME=POWERPC
5333         RTL_ARCH=PowerPC
5334         PLATFORMID=linux_powerpc
5335         ;;
5336     powerpc64)
5337         CPUNAME=POWERPC64
5338         RTL_ARCH=PowerPC_64
5339         PLATFORMID=linux_powerpc64
5340         ;;
5341     powerpc64le)
5342         CPUNAME=POWERPC64
5343         RTL_ARCH=PowerPC_64_LE
5344         PLATFORMID=linux_powerpc64_le
5345         ;;
5346     sparc)
5347         CPUNAME=SPARC
5348         RTL_ARCH=SPARC
5349         PLATFORMID=linux_sparc
5350         ;;
5351     sparc64)
5352         CPUNAME=SPARC64
5353         RTL_ARCH=SPARC64
5354         PLATFORMID=linux_sparc64
5355         ;;
5356     s390x)
5357         CPUNAME=S390X
5358         RTL_ARCH=S390x
5359         PLATFORMID=linux_s390x
5360         ;;
5361     x86_64)
5362         CPUNAME=X86_64
5363         RTL_ARCH=X86_64
5364         PLATFORMID=linux_x86_64
5365         ;;
5366     loongarch64)
5367         CPUNAME=LOONGARCH64
5368         RTL_ARCH=LOONGARCH64
5369         PLATFORMID=linux_loongarch64
5370         ;;
5371     *)
5372         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5373         ;;
5374     esac
5375     ;;
5377 linux-android*)
5378     COM=GCC
5379     OS=ANDROID
5380     RTL_OS=Android
5381     P_SEP=:
5383     case "$host_cpu" in
5385     arm|armel)
5386         CPUNAME=ARM
5387         RTL_ARCH=ARM_EABI
5388         PLATFORMID=android_arm_eabi
5389         ;;
5390     aarch64)
5391         CPUNAME=AARCH64
5392         RTL_ARCH=AARCH64
5393         PLATFORMID=android_aarch64
5394         ;;
5395     i*86)
5396         CPUNAME=INTEL
5397         RTL_ARCH=x86
5398         PLATFORMID=android_x86
5399         ;;
5400     x86_64)
5401         CPUNAME=X86_64
5402         RTL_ARCH=X86_64
5403         PLATFORMID=android_x86_64
5404         ;;
5405     *)
5406         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5407         ;;
5408     esac
5409     ;;
5411 *netbsd*)
5412     COM=GCC
5413     OS=NETBSD
5414     RTL_OS=NetBSD
5415     P_SEP=:
5417     case "$host_cpu" in
5418     i*86)
5419         CPUNAME=INTEL
5420         RTL_ARCH=x86
5421         PLATFORMID=netbsd_x86
5422         ;;
5423     powerpc)
5424         CPUNAME=POWERPC
5425         RTL_ARCH=PowerPC
5426         PLATFORMID=netbsd_powerpc
5427         ;;
5428     sparc)
5429         CPUNAME=SPARC
5430         RTL_ARCH=SPARC
5431         PLATFORMID=netbsd_sparc
5432         ;;
5433     x86_64)
5434         CPUNAME=X86_64
5435         RTL_ARCH=X86_64
5436         PLATFORMID=netbsd_x86_64
5437         ;;
5438     *)
5439         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5440         ;;
5441     esac
5442     ;;
5444 openbsd*)
5445     COM=GCC
5446     OS=OPENBSD
5447     RTL_OS=OpenBSD
5448     P_SEP=:
5450     case "$host_cpu" in
5451     i*86)
5452         CPUNAME=INTEL
5453         RTL_ARCH=x86
5454         PLATFORMID=openbsd_x86
5455         ;;
5456     x86_64)
5457         CPUNAME=X86_64
5458         RTL_ARCH=X86_64
5459         PLATFORMID=openbsd_x86_64
5460         ;;
5461     *)
5462         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5463         ;;
5464     esac
5465     SOLARINC="$SOLARINC -I/usr/local/include"
5466     ;;
5468 solaris*)
5469     COM=GCC
5470     OS=SOLARIS
5471     RTL_OS=Solaris
5472     P_SEP=:
5474     case "$host_cpu" in
5475     i*86)
5476         CPUNAME=INTEL
5477         RTL_ARCH=x86
5478         PLATFORMID=solaris_x86
5479         ;;
5480     sparc)
5481         CPUNAME=SPARC
5482         RTL_ARCH=SPARC
5483         PLATFORMID=solaris_sparc
5484         ;;
5485     sparc64)
5486         CPUNAME=SPARC64
5487         RTL_ARCH=SPARC64
5488         PLATFORMID=solaris_sparc64
5489         ;;
5490     *)
5491         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5492         ;;
5493     esac
5494     SOLARINC="$SOLARINC -I/usr/local/include"
5495     ;;
5497 emscripten*)
5498     COM=GCC
5499     OS=EMSCRIPTEN
5500     RTL_OS=Emscripten
5501     P_SEP=:
5503     case "$host_cpu" in
5504     wasm32|wasm64)
5505         ;;
5506     *)
5507         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5508         ;;
5509     esac
5510     CPUNAME=INTEL
5511     RTL_ARCH=x86
5512     PLATFORMID=linux_x86
5513     ;;
5516     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5517     ;;
5518 esac
5520 DISABLE_GUI=""
5521 if test "$enable_gui" = "no"; then
5522     if test "$using_x11" != yes; then
5523         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5524     fi
5525     USING_X11=
5526     DISABLE_GUI=TRUE
5527     test_epoxy=no
5528 else
5529     AC_DEFINE(HAVE_FEATURE_UI)
5531 AC_SUBST(DISABLE_GUI)
5533 if test "$with_x" = "no"; then
5534     USING_X11=
5537 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5538     AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5541 if test "$using_x11" = yes; then
5542     if test "$USING_X11" = TRUE; then
5543         AC_DEFINE(USING_X11)
5544     else
5545         disable_x11_tests
5546         if test "$DISABLE_DYNLOADING" = TRUE; then
5547             test_qt5=yes
5548             test_qt6=yes
5549         fi
5550     fi
5551 else
5552     if test "$USING_X11" = TRUE; then
5553         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5554     fi
5557 WORKDIR="${BUILDDIR}/workdir"
5558 INSTDIR="${BUILDDIR}/instdir"
5559 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5560 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5561 AC_SUBST(COM)
5562 AC_SUBST(CPUNAME)
5563 AC_SUBST(RTL_OS)
5564 AC_SUBST(RTL_ARCH)
5565 AC_SUBST(EPM_FLAGS)
5566 AC_SUBST(USING_X11)
5567 AC_SUBST([INSTDIR])
5568 AC_SUBST([INSTROOT])
5569 AC_SUBST([INSTROOTBASE])
5570 AC_SUBST(OS)
5571 AC_SUBST(P_SEP)
5572 AC_SUBST(WORKDIR)
5573 AC_SUBST(PLATFORMID)
5574 AC_SUBST(WINDOWS_X64)
5575 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5576 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5578 if test "$OS" = WNT -a "$COM" = MSC; then
5579     case "$CPUNAME" in
5580     INTEL) CPPU_ENV=msci ;;
5581     X86_64) CPPU_ENV=mscx ;;
5582     AARCH64) CPPU_ENV=msca ;;
5583     *)
5584         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5585         ;;
5586     esac
5587 else
5588     CPPU_ENV=gcc3
5590 AC_SUBST(CPPU_ENV)
5592 dnl ===================================================================
5593 dnl Test which package format to use
5594 dnl ===================================================================
5595 AC_MSG_CHECKING([which package format to use])
5596 if test -n "$with_package_format" -a "$with_package_format" != no; then
5597     for i in $with_package_format; do
5598         case "$i" in
5599         bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5600             ;;
5601         *)
5602             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5603 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5604 deb - Debian software distribution
5605 pkg - Solaris software distribution
5606 rpm - RedHat software distribution
5608 LibreOffice additionally supports:
5609 archive - .tar.gz or .zip
5610 dmg - macOS .dmg
5611 installed - installation tree
5612 msi - Windows .msi
5613         ])
5614             ;;
5615         esac
5616     done
5617     # fakeroot is needed to ensure correct file ownerships/permissions
5618     # inside deb packages and tar archives created on Linux and Solaris.
5619     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5620         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5621         if test "$FAKEROOT" = "no"; then
5622             AC_MSG_ERROR(
5623                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5624         fi
5625     fi
5626     PKGFORMAT="$with_package_format"
5627     AC_MSG_RESULT([$PKGFORMAT])
5628 else
5629     PKGFORMAT=
5630     AC_MSG_RESULT([none])
5632 AC_SUBST(PKGFORMAT)
5634 dnl ===================================================================
5635 dnl handle help related options
5637 dnl If you change help related options, please update README.help
5638 dnl ===================================================================
5640 ENABLE_HTMLHELP=
5641 HELP_OMINDEX_PAGE=
5642 HELP_ONLINE=
5643 WITH_HELPPACKS=
5645 AC_MSG_CHECKING([which help to build])
5646 if test -n "$with_help" -a "$with_help" != "no"; then
5647     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5648     BUILD_TYPE="$BUILD_TYPE HELP"
5649     case "$with_help" in
5650     "html")
5651         ENABLE_HTMLHELP=TRUE
5652         WITH_HELPPACKS=TRUE
5653         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5654         AC_MSG_RESULT([HTML (local)])
5655         ;;
5656     "online")
5657         ENABLE_HTMLHELP=TRUE
5658         HELP_ONLINE=TRUE
5659         AC_MSG_RESULT([HTML (online)])
5660         ;;
5661     yes)
5662         WITH_HELPPACKS=TRUE
5663         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5664         AC_MSG_RESULT([XML (local)])
5665         ;;
5666     *)
5667         AC_MSG_ERROR([Unknown --with-help=$with_help])
5668         ;;
5669     esac
5670 else
5671     AC_MSG_RESULT([no])
5674 AC_MSG_CHECKING([if we need to build the help index tooling])
5675 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5676     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5677     test_clucene=yes
5678     AC_MSG_RESULT([yes])
5679 else
5680     AC_MSG_RESULT([no])
5683 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5684 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5685     if test "$HELP_ONLINE" != TRUE; then
5686         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5687     fi
5688     case "$with_omindex" in
5689     "server")
5690         HELP_OMINDEX_PAGE=TRUE
5691         AC_MSG_RESULT([SERVER])
5692         ;;
5693     "noxap")
5694         AC_MSG_RESULT([NOXAP])
5695         ;;
5696     *)
5697         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5698         ;;
5699     esac
5700 else
5701     AC_MSG_RESULT([no])
5704 AC_MSG_CHECKING([whether to include the XML-help support])
5705 if test "$enable_xmlhelp" = yes; then
5706     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5707     test_clucene=yes
5708     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5709     AC_MSG_RESULT([yes])
5710 else
5711     if test "$with_help" = yes; then
5712         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5713     fi
5714     AC_MSG_RESULT([no])
5717 dnl Test whether to integrate helppacks into the product's installer
5718 AC_MSG_CHECKING([for helppack integration])
5719 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5720     AC_MSG_RESULT([no integration])
5721 else
5722     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5723     AC_MSG_RESULT([integration])
5726 AC_SUBST([ENABLE_HTMLHELP])
5727 AC_SUBST([HELP_OMINDEX_PAGE])
5728 AC_SUBST([HELP_ONLINE])
5729 # WITH_HELPPACKS is used only in configure
5731 dnl ===================================================================
5732 dnl Set up a different compiler to produce tools to run on the build
5733 dnl machine when doing cross-compilation
5734 dnl ===================================================================
5736 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5737 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5738 if test "$cross_compiling" = "yes"; then
5739     AC_MSG_CHECKING([for BUILD platform configuration])
5740     echo
5741     rm -rf CONF-FOR-BUILD config_build.mk
5742     mkdir CONF-FOR-BUILD
5743     # Here must be listed all files needed when running the configure script. In particular, also
5744     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5745     # keep them in the same order as there.
5746     (cd $SRC_ROOT && tar cf - \
5747         config.guess \
5748         bin/get_config_variables \
5749         solenv/bin/getcompver.awk \
5750         solenv/inc/langlist.mk \
5751         download.lst \
5752         config_host.mk.in \
5753         config_host_lang.mk.in \
5754         Makefile.in \
5755         bin/bffvalidator.sh.in \
5756         bin/odfvalidator.sh.in \
5757         bin/officeotron.sh.in \
5758         instsetoo_native/util/openoffice.lst.in \
5759         config_host/*.in \
5760         sysui/desktop/macosx/Info.plist.in \
5761         sysui/desktop/macosx/hardened_runtime.xcent.in \
5762         sysui/desktop/macosx/lo.xcent.in \
5763         .vscode/vs-code-template.code-workspace.in \
5764         solenv/lockfile/autoconf.h.in \
5765         ) \
5766     | (cd CONF-FOR-BUILD && tar xf -)
5767     cp configure CONF-FOR-BUILD
5768     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5769     (
5770     unset COM USING_X11 OS CPUNAME
5771     unset CC CXX SYSBASE CFLAGS
5772     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5773     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5774     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5775     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5776     if test -n "$CC_FOR_BUILD"; then
5777         export CC="$CC_FOR_BUILD"
5778         CC_BASE=`first_arg_basename "$CC"`
5779     fi
5780     if test -n "$CXX_FOR_BUILD"; then
5781         export CXX="$CXX_FOR_BUILD"
5782         CXX_BASE=`first_arg_basename "$CXX"`
5783     fi
5784     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5785     cd CONF-FOR-BUILD
5787     # Handle host configuration, which affects the cross-toolset too
5788     sub_conf_opts=""
5789     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5790     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5791     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5792     # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5793     if test -n "$ENABLE_JAVA"; then
5794         case "$_os" in
5795         Android)
5796             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5797             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5798             ;;
5799         *)
5800             if test -z "$with_jdk_home"; then
5801                 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.])
5802             fi
5803             ;;
5804         esac
5805     else
5806         sub_conf_opts="$sub_conf_opts --without-java"
5807     fi
5808     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5809     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5810     test "$with_templates" = "no" -o -z "$WITH_TEMPLATES" && sub_conf_opts="$sub_conf_opts --with-templates=no"
5811     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5812     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5813     test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5814     test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5815     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5816     test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5817     test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5818     if test "$_os" = "Emscripten"; then
5819         sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5820         if test "${with_main_module+set}" = set; then
5821             sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5822         else
5823             sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5824         fi
5825     fi
5826     # windows uses full-internal python and that in turn relies on openssl, so also enable openssl
5827     # when cross-compiling for aarch64, overriding the defaults below
5828     test "${PLATFORMID}" = "windows_aarch64" && sub_conf_opts="$sub_conf_opts --enable-openssl --with-tls=openssl"
5830     # Don't bother having configure look for stuff not needed for the build platform anyway
5831     # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5832     sub_conf_defaults=" \
5833         --build="$build_alias" \
5834         --disable-cairo-canvas \
5835         --disable-cups \
5836         --disable-customtarget-components \
5837         --disable-firebird-sdbc \
5838         --disable-gpgmepp \
5839         --disable-gstreamer-1-0 \
5840         --disable-gtk3 \
5841         --disable-gtk4 \
5842         --disable-libcmis \
5843         --disable-mariadb-sdbc \
5844         --disable-nss \
5845         --disable-online-update \
5846         --disable-opencl \
5847         --disable-openssl \
5848         --disable-pdfimport \
5849         --disable-postgresql-sdbc \
5850         --disable-skia \
5851         --disable-xmlhelp \
5852         --enable-dynamic-loading \
5853         --enable-icecream="$enable_icecream" \
5854         --without-doxygen \
5855         --without-tls \
5856         --without-webdav \
5857         --without-x \
5859     # single quotes added for better readability in case of spaces
5860     echo "    Running CONF-FOR-BUILD/configure" \
5861         $sub_conf_defaults \
5862         --with-parallelism="'$with_parallelism'" \
5863         --with-theme="'$with_theme'" \
5864         --with-vendor="'$with_vendor'" \
5865         $sub_conf_opts \
5866         $with_build_platform_configure_options \
5867         --srcdir=$srcdir
5869     ./configure \
5870         $sub_conf_defaults \
5871         --with-parallelism="$with_parallelism" \
5872         --with-theme="$with_theme" \
5873         "--with-vendor=$with_vendor" \
5874         $sub_conf_opts \
5875         $with_build_platform_configure_options \
5876         --srcdir=$srcdir \
5877         2>&1 | sed -e 's/^/    /'
5878     if test [${PIPESTATUS[0]}] -ne 0; then
5879         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5880     fi
5882     # filter permitted build targets
5883     PERMITTED_BUILD_TARGETS="
5884         ARGON2
5885         AVMEDIA
5886         BOOST
5887         BZIP2
5888         CAIRO
5889         CLUCENE
5890         CURL
5891         DBCONNECTIVITY
5892         DESKTOP
5893         DRAGONBOX
5894         DYNLOADING
5895         EPOXY
5896         EXPAT
5897         FROZEN
5898         GLM
5899         GRAPHITE
5900         HARFBUZZ
5901         HELPTOOLS
5902         ICU
5903         LCMS2
5904         LIBJPEG_TURBO
5905         LIBLANGTAG
5906         LibO
5907         LIBFFI
5908         LIBPN
5909         LIBTIFF
5910         LIBWEBP
5911         LIBXML2
5912         LIBXSLT
5913         MDDS
5914         NATIVE
5915         OPENSSL
5916         ORCUS
5917         PYTHON
5918         REPORTBUILDER
5919         SCRIPTING
5920         ZLIB
5921         ZXCVBN
5923     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5924     # newlined lists, to use grep as a filter
5925     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5926     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5927     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5928     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5930     cp config_host.mk ../config_build.mk
5931     cp config_host_lang.mk ../config_build_lang.mk
5932     mv config.log ../config.Build.log
5933     mkdir -p ../config_build
5934     mv config_host/*.h ../config_build
5935     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5937     # all these will get a _FOR_BUILD postfix
5938     DIRECT_FOR_BUILD_SETTINGS="
5939         CC
5940         CPPU_ENV
5941         CXX
5942         ILIB
5943         JAVA_HOME
5944         JAVAIFLAGS
5945         JDK
5946         JDK_SECURITYMANAGER_DISALLOWED
5947         LIBO_BIN_FOLDER
5948         LIBO_LIB_FOLDER
5949         LIBO_URE_LIB_FOLDER
5950         LIBO_URE_MISC_FOLDER
5951         OS
5952         SDKDIRNAME
5953         SYSTEM_LIBXML
5954         SYSTEM_LIBXSLT
5956     # these overwrite host config with build config
5957     OVERWRITING_SETTINGS="
5958         ANT
5959         ANT_HOME
5960         ANT_LIB
5961         JAVA_SOURCE_VER
5962         JAVA_TARGET_VER
5963         JAVACFLAGS
5964         JAVACOMPILER
5965         JAVADOC
5966         JAVADOCISGJDOC
5967         LOCKFILE
5968         SYSTEM_GENBRK
5969         SYSTEM_GENCCODE
5970         SYSTEM_GENCMN
5972     # these need some special handling
5973     EXTRA_HANDLED_SETTINGS="
5974         INSTDIR
5975         INSTROOT
5976         PATH
5977         WORKDIR
5979     OLD_PATH=$PATH
5980     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5981     BUILD_PATH=$PATH
5982     PATH=$OLD_PATH
5984     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5985     echo "$line" >>build-config
5987     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5988         VV='$'$V
5989         VV=`eval "echo $VV"`
5990         if test -n "$VV"; then
5991             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5992             echo "$line" >>build-config
5993         fi
5994     done
5996     for V in $OVERWRITING_SETTINGS; do
5997         VV='$'$V
5998         VV=`eval "echo $VV"`
5999         if test -n "$VV"; then
6000             line=${V}='${'${V}:-$VV'}'
6001             echo "$line" >>build-config
6002         fi
6003     done
6005     for V in INSTDIR INSTROOT WORKDIR; do
6006         VV='$'$V
6007         VV=`eval "echo $VV"`
6008         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
6009         if test -n "$VV"; then
6010             line="${V}_FOR_BUILD='$VV'"
6011             echo "$line" >>build-config
6012         fi
6013     done
6015     )
6016     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
6017     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])
6018     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
6019              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
6021     eval `cat CONF-FOR-BUILD/build-config`
6023     AC_MSG_RESULT([checking for BUILD platform configuration... done])
6025     rm -rf CONF-FOR-BUILD
6026 else
6027     OS_FOR_BUILD="$OS"
6028     CC_FOR_BUILD="$CC"
6029     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
6030     CXX_FOR_BUILD="$CXX"
6031     INSTDIR_FOR_BUILD="$INSTDIR"
6032     INSTROOT_FOR_BUILD="$INSTROOT"
6033     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
6034     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
6035     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
6036     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
6037     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
6038     WORKDIR_FOR_BUILD="$WORKDIR"
6040 AC_SUBST(OS_FOR_BUILD)
6041 AC_SUBST(INSTDIR_FOR_BUILD)
6042 AC_SUBST(INSTROOT_FOR_BUILD)
6043 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
6044 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
6045 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
6046 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
6047 AC_SUBST(SDKDIRNAME_FOR_BUILD)
6048 AC_SUBST(WORKDIR_FOR_BUILD)
6049 AC_SUBST(CC_FOR_BUILD)
6050 AC_SUBST(CXX_FOR_BUILD)
6051 AC_SUBST(CPPU_ENV_FOR_BUILD)
6053 dnl ===================================================================
6054 dnl Check for lockfile deps
6055 dnl ===================================================================
6056 if test -z "$CROSS_COMPILING"; then
6057     test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
6058     test "${with_system_lockfile+set}" = set || with_system_lockfile=no
6059     AC_MSG_CHECKING([which lockfile binary to use])
6060     case "$with_system_lockfile" in
6061     yes)
6062         AC_MSG_RESULT([external])
6063         AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
6064         ;;
6065     no)
6066         AC_MSG_RESULT([internal])
6067         ;;
6068     *)
6069         if test -x "$with_system_lockfile"; then
6070             LOCKFILE="$with_system_lockfile"
6071         else
6072             AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
6073         fi
6074         AC_MSG_RESULT([$with_system_lockfile])
6075         ;;
6076     esac
6079 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
6080     add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
6083 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
6084 AC_CHECK_FUNCS([utime utimes])
6085 AC_SUBST(LOCKFILE)
6087 dnl ===================================================================
6088 dnl Check for syslog header
6089 dnl ===================================================================
6090 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
6092 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6093 dnl ===================================================================
6094 AC_MSG_CHECKING([whether to turn warnings to errors])
6095 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6096     ENABLE_WERROR="TRUE"
6097     PYTHONWARNINGS="error"
6098     AC_MSG_RESULT([yes])
6099 else
6100     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6101         ENABLE_WERROR="TRUE"
6102         PYTHONWARNINGS="error"
6103         AC_MSG_RESULT([yes])
6104     else
6105         AC_MSG_RESULT([no])
6106     fi
6108 AC_SUBST(ENABLE_WERROR)
6109 AC_SUBST(PYTHONWARNINGS)
6111 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6112 dnl ===================================================================
6113 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6114 if test -z "$enable_assert_always_abort"; then
6115    if test "$ENABLE_DEBUG" = TRUE; then
6116        enable_assert_always_abort=yes
6117    else
6118        enable_assert_always_abort=no
6119    fi
6121 if test "$enable_assert_always_abort" = "yes"; then
6122     ASSERT_ALWAYS_ABORT="TRUE"
6123     AC_MSG_RESULT([yes])
6124 else
6125     ASSERT_ALWAYS_ABORT="FALSE"
6126     AC_MSG_RESULT([no])
6128 AC_SUBST(ASSERT_ALWAYS_ABORT)
6130 # Determine whether to use ooenv for the instdir installation
6131 # ===================================================================
6132 if test $_os != "WINNT" -a $_os != "Darwin"; then
6133     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6134     if test -z "$enable_ooenv"; then
6135         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6136             enable_ooenv=yes
6137         else
6138             enable_ooenv=no
6139         fi
6140     fi
6141     if test "$enable_ooenv" = "no"; then
6142         AC_MSG_RESULT([no])
6143     else
6144         ENABLE_OOENV="TRUE"
6145         AC_MSG_RESULT([yes])
6146     fi
6148 AC_SUBST(ENABLE_OOENV)
6150 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6151     if test "$enable_qt5" = "no"; then
6152         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6153     else
6154         enable_qt5=yes
6155     fi
6158 if test "$test_kf6" = "yes" -a "$enable_kf6" = "yes"; then
6159     if test "$enable_qt6" = "no"; then
6160         AC_MSG_ERROR([KF6 support depends on QT6, so it conflicts with --disable-qt6])
6161     else
6162         enable_qt6=yes
6163     fi
6167 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6168 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6169     AC_MSG_RESULT([yes])
6170     ENABLE_PAGEIN=TRUE
6171     AC_DEFINE(HAVE_FEATURE_PAGEIN)
6172 else
6173     AC_MSG_RESULT([no])
6175 AC_SUBST(ENABLE_PAGEIN)
6177 dnl ===================================================================
6178 dnl check for cups support
6179 dnl ===================================================================
6181 AC_MSG_CHECKING([whether to enable CUPS support])
6182 if test "$test_cups" = yes -a "$enable_cups" != no; then
6183     ENABLE_CUPS=TRUE
6184     AC_MSG_RESULT([yes])
6186     AC_MSG_CHECKING([whether cups support is present])
6187     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6188     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6189     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6190         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6191     fi
6192 else
6193     AC_MSG_RESULT([no])
6196 AC_SUBST(ENABLE_CUPS)
6198 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.12.0],,system,TRUE)
6200 dnl whether to find & fetch external tarballs?
6201 dnl ===================================================================
6202 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6203    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6204        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6205    else
6206        TARFILE_LOCATION="$LODE_HOME/ext_tar"
6207    fi
6209 if test -z "$TARFILE_LOCATION"; then
6210     if test -d "$SRC_ROOT/src" ; then
6211         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6212         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6213     fi
6214     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6215 else
6216     AbsolutePath "$TARFILE_LOCATION"
6217     PathFormat "${absolute_path}"
6218     TARFILE_LOCATION="${formatted_path_unix}"
6220 AC_SUBST(TARFILE_LOCATION)
6222 AC_MSG_CHECKING([whether we want to fetch tarballs])
6223 if test "$enable_fetch_external" != "no"; then
6224     if test "$with_all_tarballs" = "yes"; then
6225         AC_MSG_RESULT([yes, all of them])
6226         DO_FETCH_TARBALLS="ALL"
6227     else
6228         AC_MSG_RESULT([yes, if we use them])
6229         DO_FETCH_TARBALLS="TRUE"
6230     fi
6231 else
6232     AC_MSG_RESULT([no])
6233     DO_FETCH_TARBALLS=
6235 AC_SUBST(DO_FETCH_TARBALLS)
6237 dnl Test whether to include MySpell dictionaries
6238 dnl ===================================================================
6239 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6240 if test "$with_myspell_dicts" = "yes"; then
6241     AC_MSG_RESULT([yes])
6242     WITH_MYSPELL_DICTS=TRUE
6243     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6244     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6245 else
6246     AC_MSG_RESULT([no])
6247     WITH_MYSPELL_DICTS=
6249 AC_SUBST(WITH_MYSPELL_DICTS)
6251 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6252 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6253     if test "$with_system_dicts" = yes; then
6254         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6255     fi
6256     with_system_dicts=no
6259 AC_MSG_CHECKING([whether to use dicts from external paths])
6260 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6261     AC_MSG_RESULT([yes])
6262     SYSTEM_DICTS=TRUE
6263     AC_MSG_CHECKING([for spelling dictionary directory])
6264     if test -n "$with_external_dict_dir"; then
6265         DICT_SYSTEM_DIR=file://$with_external_dict_dir
6266     else
6267         DICT_SYSTEM_DIR=file:///usr/share/hunspell
6268         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6269             DICT_SYSTEM_DIR=file:///usr/share/myspell
6270         fi
6271     fi
6272     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6273     AC_MSG_CHECKING([for hyphenation patterns directory])
6274     if test -n "$with_external_hyph_dir"; then
6275         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6276     else
6277         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6278     fi
6279     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6280     AC_MSG_CHECKING([for thesaurus directory])
6281     if test -n "$with_external_thes_dir"; then
6282         THES_SYSTEM_DIR=file://$with_external_thes_dir
6283     else
6284         THES_SYSTEM_DIR=file:///usr/share/mythes
6285     fi
6286     AC_MSG_RESULT([$THES_SYSTEM_DIR])
6287 else
6288     AC_MSG_RESULT([no])
6289     SYSTEM_DICTS=
6291 AC_SUBST(SYSTEM_DICTS)
6292 AC_SUBST(DICT_SYSTEM_DIR)
6293 AC_SUBST(HYPH_SYSTEM_DIR)
6294 AC_SUBST(THES_SYSTEM_DIR)
6296 dnl ===================================================================
6297 dnl Precompiled headers.
6298 ENABLE_PCH=""
6299 AC_MSG_CHECKING([whether to enable pch feature])
6300 if test -z "$enable_pch"; then
6301     if test "$_os" = "WINNT"; then
6302         # Enabled by default on Windows.
6303         enable_pch=yes
6304         # never use sccache on auto-enabled PCH builds, except if requested explicitly
6305         if test -z "$enable_ccache" -a "$SCCACHE"; then
6306             CCACHE=""
6307         fi
6308     else
6309         enable_pch=no
6310     fi
6312 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6313     AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6315 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6316     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6318 if test "$enable_pch" = "system"; then
6319     ENABLE_PCH="1"
6320     AC_MSG_RESULT([yes (system headers)])
6321 elif test "$enable_pch" = "base"; then
6322     ENABLE_PCH="2"
6323     AC_MSG_RESULT([yes (system and base headers)])
6324 elif test "$enable_pch" = "normal"; then
6325     ENABLE_PCH="3"
6326     AC_MSG_RESULT([yes (normal)])
6327 elif test "$enable_pch" = "full"; then
6328     ENABLE_PCH="4"
6329     AC_MSG_RESULT([yes (full)])
6330 elif test "$enable_pch" = "yes"; then
6331     # Pick a suitable default.
6332     if test "$GCC" = "yes"; then
6333         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6334         # while making the PCHs larger and rebuilds more likely.
6335         ENABLE_PCH="2"
6336         AC_MSG_RESULT([yes (system and base headers)])
6337     else
6338         # With MSVC the highest level makes a significant difference,
6339         # and it was the default when there used to be no PCH levels.
6340         ENABLE_PCH="4"
6341         AC_MSG_RESULT([yes (full)])
6342     fi
6343 elif test "$enable_pch" = "no"; then
6344     AC_MSG_RESULT([no])
6345 else
6346     AC_MSG_ERROR([Unknown value for --enable-pch])
6348 AC_SUBST(ENABLE_PCH)
6349 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6350 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6351     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6352     if test "$CCACHE_BIN" != "not found"; then
6353         AC_MSG_CHECKING([ccache version])
6354         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6355         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6356         AC_MSG_RESULT([$CCACHE_VERSION])
6357         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6358         if test "$CCACHE_NUMVER" -gt "030701"; then
6359             AC_MSG_RESULT([yes])
6360         else
6361             AC_MSG_RESULT([no (not newer than 3.7.1)])
6362             CCACHE_DEPEND_MODE=
6363         fi
6364     fi
6367 PCH_INSTANTIATE_TEMPLATES=
6368 if test -n "$ENABLE_PCH"; then
6369     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6370     save_CFLAGS=$CFLAGS
6371     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6372     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6373     CFLAGS=$save_CFLAGS
6374     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6375         AC_MSG_RESULT(yes)
6376     else
6377         AC_MSG_RESULT(no)
6378     fi
6380 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6382 BUILDING_PCH_WITH_OBJ=
6383 if test -n "$ENABLE_PCH"; then
6384     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6385     save_CFLAGS=$CFLAGS
6386     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6387     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6388     CFLAGS=$save_CFLAGS
6389     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6390         AC_MSG_RESULT(yes)
6391     else
6392         AC_MSG_RESULT(no)
6393     fi
6395 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6397 PCH_CODEGEN=
6398 PCH_NO_CODEGEN=
6399 fpch_prefix=
6400 if test "$COM" = MSC; then
6401     fpch_prefix="-Xclang "
6403 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6404     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6405     save_CFLAGS=$CFLAGS
6406     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6407     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6408         [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6409     CFLAGS=$save_CFLAGS
6410     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6411     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6412         [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6413     CFLAGS=$save_CFLAGS
6414     if test -n "$PCH_CODEGEN"; then
6415         AC_MSG_RESULT(yes)
6416     else
6417         AC_MSG_RESULT(no)
6418     fi
6420 AC_SUBST(PCH_CODEGEN)
6421 AC_SUBST(PCH_NO_CODEGEN)
6422 PCH_DEBUGINFO=
6423 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6424     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6425     save_CFLAGS=$CFLAGS
6426     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6427     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6428     CFLAGS=$save_CFLAGS
6429     if test -n "$PCH_DEBUGINFO"; then
6430         AC_MSG_RESULT(yes)
6431     else
6432         AC_MSG_RESULT(no)
6433     fi
6435 AC_SUBST(PCH_DEBUGINFO)
6437 TAB=`printf '\t'`
6439 AC_MSG_CHECKING([the GNU Make version])
6440 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6441 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6442 if test "$_make_longver" -ge "040000"; then
6443     AC_MSG_RESULT([$GNUMAKE $_make_version])
6444 else
6445     AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6448 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6449 STALE_MAKE=
6450 if test "$_make_ver_check" = ""; then
6451    STALE_MAKE=TRUE
6454 HAVE_LD_HASH_STYLE=FALSE
6455 WITH_LINKER_HASH_STYLE=
6456 AC_MSG_CHECKING([for --hash-style gcc linker support])
6457 if test "$GCC" = "yes"; then
6458     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6459         hash_styles="gnu sysv"
6460     elif test "$with_linker_hash_style" = "no"; then
6461         hash_styles=
6462     else
6463         hash_styles="$with_linker_hash_style"
6464     fi
6466     for hash_style in $hash_styles; do
6467         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6468         hash_style_ldflags_save=$LDFLAGS
6469         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6471         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6472             [
6473 #include <stdio.h>
6474             ],[
6475 printf ("");
6476             ])],
6477             [
6478                   HAVE_LD_HASH_STYLE=TRUE
6479                   WITH_LINKER_HASH_STYLE=$hash_style
6480             ],
6481             [HAVE_LD_HASH_STYLE=FALSE],
6482             [HAVE_LD_HASH_STYLE=FALSE])
6483         LDFLAGS=$hash_style_ldflags_save
6484     done
6486     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6487         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6488     else
6489         AC_MSG_RESULT( no )
6490     fi
6491     LDFLAGS=$hash_style_ldflags_save
6492 else
6493     AC_MSG_RESULT( no )
6495 AC_SUBST(HAVE_LD_HASH_STYLE)
6496 AC_SUBST(WITH_LINKER_HASH_STYLE)
6498 dnl ===================================================================
6499 dnl Check whether there's a Perl version available.
6500 dnl ===================================================================
6501 if test -z "$with_perl_home"; then
6502     AC_PATH_PROG(PERL, perl)
6503 else
6504     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6505     _perl_path="$with_perl_home/bin/perl"
6506     if test -x "$_perl_path"; then
6507         PERL=$_perl_path
6508     else
6509         AC_MSG_ERROR([$_perl_path not found])
6510     fi
6513 dnl ===================================================================
6514 dnl Testing for Perl version 5 or greater.
6515 dnl $] is the Perl version variable, it is returned as an integer
6516 dnl ===================================================================
6517 if test "$PERL"; then
6518     AC_MSG_CHECKING([the Perl version])
6519     ${PERL} -e "exit($]);"
6520     _perl_version=$?
6521     if test "$_perl_version" -lt 5; then
6522         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6523     fi
6524     AC_MSG_RESULT([Perl $_perl_version])
6525 else
6526     AC_MSG_ERROR([Perl not found, install Perl 5])
6529 dnl ===================================================================
6530 dnl Testing for required Perl modules
6531 dnl ===================================================================
6533 AC_MSG_CHECKING([for required Perl modules])
6534 perl_use_string="use Cwd ; use Digest::MD5"
6535 if test "$_os" = "WINNT"; then
6536     if test -n "$PKGFORMAT"; then
6537         for i in $PKGFORMAT; do
6538             case "$i" in
6539             msi)
6540                 # for getting fonts versions to use in MSI
6541                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6542                 ;;
6543             esac
6544         done
6545     fi
6547 if test "$with_system_hsqldb" = "yes"; then
6548     perl_use_string="$perl_use_string ; use Archive::Zip"
6550 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6551     # OpenSSL needs that to build
6552     perl_use_string="$perl_use_string ; use FindBin"
6554 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6555     AC_MSG_RESULT([all modules found])
6556 else
6557     AC_MSG_RESULT([failed to find some modules])
6558     # Find out which modules are missing.
6559     for i in $perl_use_string; do
6560         if test "$i" != "use" -a "$i" != ";"; then
6561             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6562                 missing_perl_modules="$missing_perl_modules $i"
6563             fi
6564         fi
6565     done
6566     AC_MSG_ERROR([
6567     The missing Perl modules are: $missing_perl_modules
6568     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6571 dnl ===================================================================
6572 dnl Check for pkg-config
6573 dnl ===================================================================
6574 if test "$_os" != "WINNT"; then
6575     PKG_PROG_PKG_CONFIG
6577 AC_SUBST(PKG_CONFIG)
6578 AC_SUBST(PKG_CONFIG_PATH)
6579 AC_SUBST(PKG_CONFIG_LIBDIR)
6581 if test "$_os" != "WINNT"; then
6583     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6584     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6585     # explicitly. Or put /path/to/compiler in PATH yourself.
6587     toolprefix=gcc
6588     if test "$COM_IS_CLANG" = "TRUE"; then
6589         toolprefix=llvm
6590     fi
6591     AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6592     AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6593     AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6594     AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6595     AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6596     AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6598 AC_SUBST(AR)
6599 AC_SUBST(NM)
6600 AC_SUBST(OBJDUMP)
6601 AC_SUBST(RANLIB)
6602 AC_SUBST(READELF)
6603 AC_SUBST(STRIP)
6605 dnl ===================================================================
6606 dnl pkg-config checks on macOS
6607 dnl ===================================================================
6609 if test $_os = Darwin; then
6610     AC_MSG_CHECKING([for bogus pkg-config])
6611     if test -n "$PKG_CONFIG"; then
6612         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6613             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6614         else
6615             if test "$enable_bogus_pkg_config" = "yes"; then
6616                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6617             else
6618                 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.])
6619             fi
6620         fi
6621     else
6622         AC_MSG_RESULT([no, good])
6623     fi
6626 find_csc()
6628     # Return value: $csctest
6630     unset csctest
6632     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6633     if test -n "$regvalue"; then
6634         csctest=$regvalue
6635         return
6636     fi
6639 find_al()
6641     # Return value: $altest
6643     unset altest
6645     # We need this check to detect 4.6.1 or above.
6646     for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6647         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6648         PathFormat "$regvalue"
6649         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6650             altest=$regvalue
6651             return
6652         fi
6653     done
6655     reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6656     for x in $reglist; do
6657         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6658         PathFormat "$regvalue"
6659         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6660             altest=$regvalue
6661             return
6662         fi
6663     done
6666 find_dotnetsdk()
6668     unset frametest
6670     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
6671         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6672         if test -n "$regvalue"; then
6673             frametest=$regvalue
6674             return
6675         fi
6676     done
6677     AC_MSG_ERROR([The Windows NET SDK (minimum 4.6) not found, check the installation])
6680 find_winsdk_version()
6682     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6683     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6685     unset winsdktest winsdkbinsubdir winsdklibsubdir
6687     case "$1" in
6688     8.0|8.0A)
6689         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6690         if test -n "$regvalue"; then
6691             winsdktest=$regvalue
6692             winsdklibsubdir=win8
6693             return
6694         fi
6695         ;;
6696     8.1|8.1A)
6697         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6698         if test -n "$regvalue"; then
6699             winsdktest=$regvalue
6700             winsdklibsubdir=winv6.3
6701             return
6702         fi
6703         ;;
6704     10.0)
6705         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6706         if test -n "$regvalue"; then
6707             winsdktest=$regvalue
6708             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6709             if test -n "$regvalue"; then
6710                 winsdkbinsubdir="$regvalue".0
6711                 winsdklibsubdir=$winsdkbinsubdir
6712                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6713                 local tmppath_unix=$(cygpath -u "$tmppath")
6714                 # test exist the SDK path
6715                 if test -d "$tmppath_unix"; then
6716                    # when path is convertible to a short path then path is okay
6717                    cygpath -d "$tmppath" >/dev/null 2>&1
6718                    if test $? -ne 0; then
6719                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6720                    fi
6721                 else
6722                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6723                 fi
6724             fi
6725             return
6726         fi
6727         ;;
6728     esac
6731 find_winsdk()
6733     # Return value: From find_winsdk_version
6735     unset winsdktest
6737     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6738         find_winsdk_version $ver
6739         if test -n "$winsdktest"; then
6740             return
6741         fi
6742     done
6745 find_msms()
6747     # Return value: $msmdir
6748     local version="$1"
6750     AC_MSG_CHECKING([for MSVC $version merge modules directory])
6751     local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6752     local my_msm_dir
6754     echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6756     msmdir=
6757     case "$VCVER" in
6758     16.0 | 17.0 | 17.10)
6759         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6760             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6761             echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6762             if test -e "$my_msm_dir${my_msm_file}"; then
6763                 msmdir=$my_msm_dir
6764             fi
6765         done
6766         ;;
6767     esac
6769     if test -n "$msmdir"; then
6770         msmdir=`cygpath -m "$msmdir"`
6771         AC_MSG_RESULT([$msmdir])
6772     else
6773         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6774             AC_MSG_FAILURE([not found])
6775         else
6776             AC_MSG_WARN([not found (check config.log)])
6777             add_warning "MSM ${my_msm_file} not found"
6778         fi
6779     fi
6782 find_msvc_x64_dlls()
6784     # Return value: $msvcdllpath, $msvcdlls
6786     AC_MSG_CHECKING([for MSVC x64 DLL path])
6788     dnl Order crtver in increasing order. Then check the directories returned by
6789     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6790     dnl the result will be the highest CRT version found in the highest directory.
6792     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6793     case "$VCVER" in
6794     16.0 | 17.0 | 17.10)
6795         for crtver in 141 142 143; do
6796             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6797                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6798                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6799                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6800                 fi
6801             done
6802         done
6803         ;;
6804     esac
6805     AC_MSG_RESULT([$msvcdllpath])
6806     AC_MSG_CHECKING([for MSVC x64 DLLs])
6807     msvcdlls="msvcp140.dll vcruntime140.dll"
6808     for dll in $msvcdlls; do
6809         if ! test -f "$msvcdllpath/$dll"; then
6810             AC_MSG_FAILURE([missing $dll])
6811         fi
6812     done
6813     AC_MSG_RESULT([found all ($msvcdlls)])
6816 dnl =========================================
6817 dnl Check for the Windows  SDK.
6818 dnl =========================================
6819 if test "$_os" = "WINNT"; then
6820     AC_MSG_CHECKING([for Windows SDK])
6821     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6822         find_winsdk
6823         WINDOWS_SDK_HOME=$winsdktest
6825         # normalize if found
6826         if test -n "$WINDOWS_SDK_HOME"; then
6827             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6828             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6829         fi
6831         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6832         # The variable also contains the Windows SDK version
6833         echo $WINDOWS_SDK_LIB_SUBDIR
6834         IFS='.' read -r SDK_v1 SDK_v2 SDK_v3 SDK_v4 <<< "$WINDOWS_SDK_LIB_SUBDIR"
6835         # Assuming maximum of 5 digits for each part and ignoring last part
6836         SDK_NORMALIZED_VER=$((SDK_v1 * 10000000000 + SDK_v2 * 100000 + SDK_v3))
6837         # 10.0.20348.0 is the minimum required version
6838         if test "$SDK_NORMALIZED_VER" -lt 100000020348; then
6839             AC_MSG_ERROR([You need Windows SDK greater than or equal 10.0.20348.0])
6840         fi
6841     fi
6843     if test -n "$WINDOWS_SDK_HOME"; then
6844         # Remove a possible trailing backslash
6845         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6847         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6848              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6849              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6850             have_windows_sdk_headers=yes
6851         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6852              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6853              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6854             have_windows_sdk_headers=yes
6855         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6856              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6857              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6858             have_windows_sdk_headers=yes
6859         else
6860             have_windows_sdk_headers=no
6861         fi
6863         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6864             have_windows_sdk_libs=yes
6865         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6866             have_windows_sdk_libs=yes
6867         else
6868             have_windows_sdk_libs=no
6869         fi
6871         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6872             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6873 the  Windows SDK are installed.])
6874         fi
6875     fi
6877     if test -z "$WINDOWS_SDK_HOME"; then
6878         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6879     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6880         WINDOWS_SDK_VERSION=80
6881         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6882     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6883         WINDOWS_SDK_VERSION=81
6884         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6885     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6886         WINDOWS_SDK_VERSION=10
6887         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6888     else
6889         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6890     fi
6891     PathFormat "$WINDOWS_SDK_HOME"
6892     WINDOWS_SDK_HOME="$formatted_path"
6893     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6894     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6895         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6896         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6897             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6898         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6899             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6900         fi
6901     fi
6903     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6904     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6905     dnl but not in v8.0), so allow this to be overridden with a
6906     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6907     dnl and configuration error if no WiLangId.vbs is found would arguably be
6908     dnl better, but I do not know under which conditions exactly it is needed by
6909     dnl msiglobal.pm:
6910     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6911         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6912         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6913         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6914             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6915             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6916         fi
6917         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6918             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6919             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6920         fi
6921         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6922             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6923             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6924         fi
6925     fi
6926     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6927         if test -n "$with_package_format" -a "$with_package_format" != no; then
6928             for i in "$with_package_format"; do
6929                 if test "$i" = "msi"; then
6930                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6931                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6932                     fi
6933                 fi
6934             done
6935         fi
6936     fi
6938 AC_SUBST(WINDOWS_SDK_HOME)
6939 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6940 AC_SUBST(WINDOWS_SDK_VERSION)
6941 AC_SUBST(WINDOWS_SDK_WILANGID)
6943 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6944     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6945     dnl dir, it also determines that dir's path w/o an arch segment if any,
6946     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6947     AC_MSG_CHECKING([for midl.exe])
6949     find_winsdk
6950     PathFormat "$winsdktest"
6951     winsdktest_unix="$formatted_path_unix"
6953     if test -n "$winsdkbinsubdir" \
6954         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6955     then
6956         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6957         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6958     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6959         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6960         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6961     elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6962         MIDL_PATH=$winsdktest/Bin
6963         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6964     fi
6965     PathFormat "$MIDL_PATH"
6966     if test ! -f "$formatted_path_unix/midl.exe"; then
6967         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6968     else
6969         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6970     fi
6972     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6973     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6975     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6976          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6977          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6978          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6979     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6980          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6981          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6982          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6983     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6984          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6985          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6986          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6987     else
6988         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6989     fi
6991     dnl Check csc.exe
6992     AC_MSG_CHECKING([for csc.exe])
6993     find_csc
6994     PathFormat "$csctest"
6995     csctest_unix="$formatted_path_unix"
6996     if test -f "$csctest_unix/csc.exe"; then
6997         CSC_PATH="$csctest"
6998     fi
6999     if test ! -f "$csctest_unix/csc.exe"; then
7000         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
7001     else
7002         AC_MSG_RESULT([$CSC_PATH/csc.exe])
7003     fi
7005     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
7007     dnl Check al.exe
7008     AC_MSG_CHECKING([for al.exe])
7009     if test -n "$winsdkbinsubdir" \
7010         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
7011     then
7012         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
7013     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
7014         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
7015     elif test -f "$winsdktest_unix/Bin/al.exe"; then
7016         AL_PATH="$winsdktest/Bin"
7017     fi
7019     if test -z "$AL_PATH"; then
7020         find_al
7021         PathFormat "$altest"
7022         altest_unix="$formatted_path_unix"
7023         if test -f "$altest_unix/bin/al.exe"; then
7024             AL_PATH="$altest/bin"
7025         elif test -f "$altest_unix/al.exe"; then
7026             AL_PATH="$altest"
7027         fi
7028     fi
7029     PathFormat "$AL_PATH"
7030     if test ! -f "$formatted_path_unix/al.exe"; then
7031         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
7032     else
7033         AC_MSG_RESULT([$AL_PATH/al.exe])
7034     fi
7036     AL_PATH=`win_short_path_for_make "$AL_PATH"`
7038     dnl Check mscoree.lib / .NET Framework dir
7039     AC_MSG_CHECKING(.NET Framework)
7040     find_dotnetsdk
7041     PathFormat "$frametest"
7042     frametest="$formatted_path_unix"
7043     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7044         DOTNET_FRAMEWORK_HOME="$frametest"
7045     else
7046         if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
7047             DOTNET_FRAMEWORK_HOME="$winsdktest"
7048         fi
7049     fi
7050     PathFormat "$DOTNET_FRAMEWORK_HOME"
7051     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
7052         AC_MSG_ERROR([mscoree.lib not found])
7053     fi
7054     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
7056     PathFormat "$MIDL_PATH"
7057     MIDL_PATH="$formatted_path"
7059     PathFormat "$AL_PATH"
7060     AL_PATH="$formatted_path"
7062     PathFormat "$DOTNET_FRAMEWORK_HOME"
7063     DOTNET_FRAMEWORK_HOME="$formatted_path"
7065     PathFormat "$CSC_PATH"
7066     CSC_PATH="$formatted_path"
7069 dnl ===================================================================
7070 dnl Testing for C++ compiler and version...
7071 dnl ===================================================================
7073 if test "$_os" != "WINNT"; then
7074     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
7075     save_CXXFLAGS=$CXXFLAGS
7076     AC_PROG_CXX
7077     CXXFLAGS=$save_CXXFLAGS
7078     if test -z "$CXX_BASE"; then
7079         CXX_BASE=`first_arg_basename "$CXX"`
7080     fi
7083 dnl check for GNU C++ compiler version
7084 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
7085     AC_MSG_CHECKING([the GNU C++ compiler version])
7087     _gpp_version=`$CXX -dumpversion`
7088     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
7090     if test "$_gpp_majmin" -lt "700"; then
7091         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
7092     else
7093         AC_MSG_RESULT([ok (g++ $_gpp_version)])
7094     fi
7096     dnl see https://issuetracker.google.com/issues/36962819
7097         glibcxx_threads=no
7098         AC_LANG_PUSH([C++])
7099         AC_REQUIRE_CPP
7100         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
7101         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7102             #include <bits/c++config.h>]],[[
7103             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7104             && !defined(_GLIBCXX__PTHREADS) \
7105             && !defined(_GLIBCXX_HAS_GTHREADS)
7106             choke me
7107             #endif
7108         ]])],[AC_MSG_RESULT([yes])
7109         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7110         AC_LANG_POP([C++])
7111         if test $glibcxx_threads = yes; then
7112             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7113         fi
7115 AC_SUBST(BOOST_CXXFLAGS)
7118 # prefx CXX with ccache if needed
7120 if test "$CCACHE" != ""; then
7121     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7122     AC_LANG_PUSH([C++])
7123     save_CXXFLAGS=$CXXFLAGS
7124     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7125     # msvc does not fail on unknown options, check stdout
7126     if test "$COM" = MSC; then
7127         CXXFLAGS="$CXXFLAGS -nologo"
7128     fi
7129     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7130     ac_cxx_werror_flag=yes
7131     dnl an empty program will do, we're checking the compiler flags
7132     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7133                       [use_ccache=yes], [use_ccache=no])
7134     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7135         AC_MSG_RESULT([yes])
7136     else
7137         CXX="$CCACHE $CXX"
7138         CXX_BASE="ccache $CXX_BASE"
7139         AC_MSG_RESULT([no])
7140     fi
7141     CXXFLAGS=$save_CXXFLAGS
7142     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7143     AC_LANG_POP([C++])
7146 dnl ===================================================================
7147 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7148 dnl ===================================================================
7150 if test "$_os" != "WINNT"; then
7151     AC_PROG_CXXCPP
7153     dnl Check whether there's a C pre-processor.
7154     AC_PROG_CPP
7158 dnl ===================================================================
7159 dnl Find integral type sizes and alignments
7160 dnl ===================================================================
7162 if test "$_os" != "WINNT"; then
7164     AC_CHECK_SIZEOF(long)
7165     AC_CHECK_SIZEOF(short)
7166     AC_CHECK_SIZEOF(int)
7167     AC_CHECK_SIZEOF(long long)
7168     AC_CHECK_SIZEOF(double)
7169     AC_CHECK_SIZEOF(void*)
7170     AC_CHECK_SIZEOF(size_t)
7172     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7173     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7174     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7175     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7176     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7177     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7179     dnl Allow build without AC_CHECK_ALIGNOF, grrr
7180     m4_pattern_allow([AC_CHECK_ALIGNOF])
7181     m4_ifdef([AC_CHECK_ALIGNOF],
7182         [
7183             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7184             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7185             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7186             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7187         ],
7188         [
7189             case "$_os-$host_cpu" in
7190             Linux-i686)
7191                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7192                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7193                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7194                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7195                 ;;
7196             Linux-x86_64)
7197                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7198                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7199                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7200                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7201                 ;;
7202             *)
7203                 if test -z "$ac_cv_alignof_short" -o \
7204                         -z "$ac_cv_alignof_int" -o \
7205                         -z "$ac_cv_alignof_long" -o \
7206                         -z "$ac_cv_alignof_double"; then
7207                    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.])
7208                 fi
7209                 ;;
7210             esac
7211         ])
7213     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7214     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7215     if test $ac_cv_sizeof_long -eq 8; then
7216         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7217     elif test $ac_cv_sizeof_double -eq 8; then
7218         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7219     else
7220         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7221     fi
7223     dnl Check for large file support
7224     AC_SYS_LARGEFILE
7225     if test -n "$ac_cv_sys_largefile_opts"  -a "$ac_cv_sys_largefile_opts" != "none needed" -a "$ac_cv_sys_largefile_opts" != "support not detected"; then
7226         LFS_CFLAGS="$ac_cv_sys_largefile_opts"
7227     elif test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7228         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7229     fi
7230     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7231         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7232     fi
7233 else
7234     # Hardcode for MSVC
7235     SAL_TYPES_SIZEOFSHORT=2
7236     SAL_TYPES_SIZEOFINT=4
7237     SAL_TYPES_SIZEOFLONG=4
7238     SAL_TYPES_SIZEOFLONGLONG=8
7239     if test $WIN_HOST_BITS -eq 32; then
7240         SAL_TYPES_SIZEOFPOINTER=4
7241         SIZEOF_SIZE_T=4
7242     else
7243         SAL_TYPES_SIZEOFPOINTER=8
7244         SIZEOF_SIZE_T=8
7245     fi
7246     SAL_TYPES_ALIGNMENT2=2
7247     SAL_TYPES_ALIGNMENT4=4
7248     SAL_TYPES_ALIGNMENT8=8
7249     LFS_CFLAGS=''
7251 AC_SUBST(LFS_CFLAGS)
7252 AC_SUBST(SIZEOF_SIZE_T)
7254 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7255 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7256 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7257 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7258 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7259 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7260 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7261 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7263 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7264 AC_MSG_CHECKING([whether jumbo sheets are supported])
7265 if test "$_os" != "WINNT"; then
7266     if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7267         AC_MSG_RESULT([yes])
7268         ENABLE_JUMBO_SHEETS=TRUE
7269         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7270     else
7271         AC_MSG_RESULT([no])
7272     fi
7273 else
7274     if test $WIN_HOST_BITS -gt 32; then
7275         # 64bit windows is special-cased for tools::Long because long is 32bit
7276         AC_MSG_RESULT([yes])
7277         ENABLE_JUMBO_SHEETS=TRUE
7278         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7279     else
7280         AC_MSG_RESULT([no])
7281     fi
7283 AC_SUBST(ENABLE_JUMBO_SHEETS)
7285 dnl ===================================================================
7286 dnl Check whether to enable runtime optimizations
7287 dnl ===================================================================
7288 ENABLE_RUNTIME_OPTIMIZATIONS=
7289 AC_MSG_CHECKING([whether to enable runtime optimizations])
7290 if test -z "$enable_runtime_optimizations"; then
7291     for i in $CC; do
7292         case $i in
7293         -fsanitize=*)
7294             enable_runtime_optimizations=no
7295             break
7296             ;;
7297         esac
7298     done
7300 if test "$enable_runtime_optimizations" != no; then
7301     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7302     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7303     AC_MSG_RESULT([yes])
7304 else
7305     AC_MSG_RESULT([no])
7307 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7309 dnl ===================================================================
7310 dnl Check if valgrind headers are available
7311 dnl ===================================================================
7312 ENABLE_VALGRIND=
7313 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7314     prev_cppflags=$CPPFLAGS
7315     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7316     # or where does it come from?
7317     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7318     AC_CHECK_HEADER([valgrind/valgrind.h],
7319         [ENABLE_VALGRIND=TRUE])
7320     CPPFLAGS=$prev_cppflags
7322 AC_SUBST([ENABLE_VALGRIND])
7323 if test -z "$ENABLE_VALGRIND"; then
7324     if test "$with_valgrind" = yes; then
7325         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7326     fi
7327     VALGRIND_CFLAGS=
7329 AC_SUBST([VALGRIND_CFLAGS])
7332 dnl ===================================================================
7333 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7334 dnl ===================================================================
7336 # We need at least the sys/sdt.h include header.
7337 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7338 if test "$SDT_H_FOUND" = "TRUE"; then
7339     # Found sys/sdt.h header, now make sure the c++ compiler works.
7340     # Old g++ versions had problems with probes in constructors/destructors.
7341     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7342     AC_LANG_PUSH([C++])
7343     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7344     #include <sys/sdt.h>
7345     class ProbeClass
7346     {
7347     private:
7348       int& ref;
7349       const char *name;
7351     public:
7352       ProbeClass(int& v, const char *n) : ref(v), name(n)
7353       {
7354         DTRACE_PROBE2(_test_, cons, name, ref);
7355       }
7357       void method(int min)
7358       {
7359         DTRACE_PROBE3(_test_, meth, name, ref, min);
7360         ref -= min;
7361       }
7363       ~ProbeClass()
7364       {
7365         DTRACE_PROBE2(_test_, dest, name, ref);
7366       }
7367     };
7368     ]],[[
7369     int i = 64;
7370     DTRACE_PROBE1(_test_, call, i);
7371     ProbeClass inst = ProbeClass(i, "call");
7372     inst.method(24);
7373     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7374           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7375     AC_LANG_POP([C++])
7377 AC_CONFIG_HEADERS([config_host/config_probes.h])
7379 dnl ===================================================================
7380 dnl GCC features
7381 dnl ===================================================================
7382 HAVE_GCC_STACK_CLASH_PROTECTION=
7383 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7384     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7385     save_CFLAGS=$CFLAGS
7386     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7387     AC_LINK_IFELSE(
7388         [AC_LANG_PROGRAM(, [[return 0;]])],
7389         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7390         [AC_MSG_RESULT([no])])
7391     CFLAGS=$save_CFLAGS
7393     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7394     save_CFLAGS=$CFLAGS
7395     CFLAGS="$CFLAGS -Werror -mno-avx"
7396     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7397     CFLAGS=$save_CFLAGS
7398     if test "$HAVE_GCC_AVX" = "TRUE"; then
7399         AC_MSG_RESULT([yes])
7400     else
7401         AC_MSG_RESULT([no])
7402     fi
7404     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7405     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7406     int v = 0;
7407     if (__sync_add_and_fetch(&v, 1) != 1 ||
7408         __sync_sub_and_fetch(&v, 1) != 0)
7409         return 1;
7410     __sync_synchronize();
7411     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7412         v != 1)
7413         return 1;
7414     return 0;
7415 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7416     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7417         AC_MSG_RESULT([yes])
7418         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7419     else
7420         AC_MSG_RESULT([no])
7421     fi
7423     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7424     AC_LANG_PUSH([C++])
7425     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7426             #include <cstddef>
7427             #include <cxxabi.h>
7428             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7429         ])], [
7430             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7431             AC_MSG_RESULT([yes])
7432         ], [AC_MSG_RESULT([no])])
7433     AC_LANG_POP([C++])
7435     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7436     AC_LANG_PUSH([C++])
7437     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7438             #include <cstddef>
7439             #include <cxxabi.h>
7440             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7441         ])], [
7442             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7443             AC_MSG_RESULT([yes])
7444         ], [AC_MSG_RESULT([no])])
7445     AC_LANG_POP([C++])
7447     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7448     AC_LANG_PUSH([C++])
7449     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7450             #include <cxxabi.h>
7451             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7452         ])], [
7453             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7454             AC_MSG_RESULT([yes])
7455         ], [AC_MSG_RESULT([no])])
7456     AC_LANG_POP([C++])
7458     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7459     AC_LANG_PUSH([C++])
7460     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7461             #include <cstddef>
7462             #include <cxxabi.h>
7463             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7464         ])], [
7465             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7466             AC_MSG_RESULT([yes])
7467         ], [AC_MSG_RESULT([no])])
7468     AC_LANG_POP([C++])
7470     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7471     AC_LANG_PUSH([C++])
7472     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7473             #include <cstddef>
7474             #include <cxxabi.h>
7475             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7476         ])], [
7477             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7478             AC_MSG_RESULT([yes])
7479         ], [AC_MSG_RESULT([no])])
7480     AC_LANG_POP([C++])
7482     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7483     AC_LANG_PUSH([C++])
7484     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7485             #include <cxxabi.h>
7486             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7487         ])], [
7488             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7489             AC_MSG_RESULT([yes])
7490         ], [AC_MSG_RESULT([no])])
7491     AC_LANG_POP([C++])
7493     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7494     AC_LANG_PUSH([C++])
7495     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7496             #include <cxxabi.h>
7497             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7498         ])], [
7499             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7500             AC_MSG_RESULT([yes])
7501         ], [AC_MSG_RESULT([no])])
7502     AC_LANG_POP([C++])
7504     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7505     AC_LANG_PUSH([C++])
7506     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7507             #include <cxxabi.h>
7508             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7509         ])], [
7510             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7511             AC_MSG_RESULT([yes])
7512         ], [AC_MSG_RESULT([no])])
7513     AC_LANG_POP([C++])
7515     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7516     AC_LANG_PUSH([C++])
7517     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7518             #include <cstddef>
7519             #include <cxxabi.h>
7520             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7521         ])], [
7522             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7523             AC_MSG_RESULT([yes])
7524         ], [AC_MSG_RESULT([no])])
7525     AC_LANG_POP([C++])
7527     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7528     AC_LANG_PUSH([C++])
7529     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7530             #include <cstddef>
7531             #include <cxxabi.h>
7532             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7533         ])], [
7534             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7535             AC_MSG_RESULT([yes])
7536         ], [AC_MSG_RESULT([no])])
7537     AC_LANG_POP([C++])
7540 AC_SUBST(HAVE_GCC_AVX)
7541 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7542 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7544 dnl ===================================================================
7545 dnl Identify the C++ library
7546 dnl ===================================================================
7548 AC_MSG_CHECKING([what the C++ library is])
7549 HAVE_LIBSTDCPP=
7550 HAVE_LIBCPP=
7551 AC_LANG_PUSH([C++])
7552 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7553 #include <utility>
7554 #ifndef __GLIBCXX__
7555 foo bar
7556 #endif
7557 ]])],
7558     [CPP_LIBRARY=GLIBCXX
7559      cpp_library_name="GNU libstdc++"
7560      HAVE_LIBSTDCPP=TRUE
7561     ],
7562     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7563 #include <utility>
7564 #ifndef _LIBCPP_VERSION
7565 foo bar
7566 #endif
7567 ]])],
7568     [CPP_LIBRARY=LIBCPP
7569      cpp_library_name="LLVM libc++"
7570      AC_DEFINE([HAVE_LIBCPP])
7571      HAVE_LIBCPP=TRUE
7572     ],
7573     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7574 #include <utility>
7575 #ifndef _MSC_VER
7576 foo bar
7577 #endif
7578 ]])],
7579     [CPP_LIBRARY=MSVCRT
7580      cpp_library_name="Microsoft"
7581     ],
7582     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7583 AC_MSG_RESULT([$cpp_library_name])
7584 AC_LANG_POP([C++])
7585 AC_SUBST([HAVE_LIBSTDCPP])
7586 AC_SUBST([HAVE_LIBCPP])
7588 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7589 then
7590     # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7591     # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7592     # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7593     # although there will be backwards compatibility).
7594     # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7595     # and there would be undefined references to debug functions.
7596     # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7597     # So check if debug mode can be used and disable or downgrade it to assertions
7598     # if needed.
7599     AC_MSG_CHECKING([if libc++ has a usable debug mode])
7600     AC_LANG_PUSH([C++])
7601     libcpp_debug_links=
7602     AC_LINK_IFELSE([AC_LANG_SOURCE([[
7603 #define _LIBCPP_DEBUG 0 // only assertions
7604 #include <vector>
7605 int main()
7607     std::vector<int> v;
7608     v.push_back( 1 );
7609     return v[ 3 ];
7611 ]])], [libcpp_debug_links=1])
7612     if test -n "$libcpp_debug_links"; then
7613         # we can use at least assertions, check if debug mode works
7614         AC_RUN_IFELSE([AC_LANG_SOURCE([[
7615 #define _LIBCPP_DEBUG 1 // debug mode
7616 #include <string>
7617 #include <vector>
7618 int foo(const std::vector<int>& v) { return *v.begin(); }
7619 int main()
7621     std::vector<int> v;
7622     v.push_back( 1 );
7623     std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7624     return (foo(v) + s.size()) != 0 ? 0 : 1;
7626 ]])],
7627         [AC_MSG_RESULT(yes)
7628          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7629         ],
7630         [AC_MSG_RESULT(no, using only assertions)
7631          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7632         ]
7633         )
7634     else
7635         AC_MSG_RESULT(no)
7636     fi
7637     AC_LANG_POP([C++])
7639 AC_SUBST([LIBCPP_DEBUG])
7641 dnl ===================================================================
7642 dnl Check for gperf
7643 dnl ===================================================================
7644 AC_PATH_PROG(GPERF, gperf)
7645 if test -z "$GPERF"; then
7646     AC_MSG_ERROR([gperf not found but needed. Install it.])
7648 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7649     GPERF=`cygpath -m $GPERF`
7651 AC_MSG_CHECKING([whether gperf is new enough])
7652 my_gperf_ver1=$($GPERF --version | head -n 1)
7653 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7654 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7655 if test "$my_gperf_ver3" -ge 301; then
7656     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7657 else
7658     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7660 AC_SUBST(GPERF)
7662 dnl ===================================================================
7663 dnl Check for system libcmis
7664 dnl ===================================================================
7665 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.6 >= 0.6.1],enabled)
7667 dnl ===================================================================
7668 dnl C++11
7669 dnl ===================================================================
7671 if test -z "${CXXFLAGS_CXX11+x}"; then
7672     AC_MSG_CHECKING([whether $CXX_BASE supports C++20])
7673     if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7674         if test "$with_latest_c__" = yes; then
7675             CXXFLAGS_CXX11=-std:c++latest
7676         else
7677             CXXFLAGS_CXX11=-std:c++20
7678         fi
7679         CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus,preprocessor"
7680     elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7681         my_flags='-std=c++20 -std=c++2a'
7682         if test "$with_latest_c__" = yes; then
7683             my_flags="-std=c++26 -std=c++2c -std=c++23 -std=c++2b $my_flags"
7684         fi
7685         for flag in $my_flags; do
7686             if test "$COM" = MSC; then
7687                 flag="-Xclang $flag"
7688             fi
7689             save_CXXFLAGS=$CXXFLAGS
7690             CXXFLAGS="$CXXFLAGS $flag -Werror"
7691             AC_LANG_PUSH([C++])
7692             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7693                 #include <algorithm>
7694                 #include <functional>
7695                 #include <vector>
7697                 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7698                     std::sort(v.begin(), v.end(), fn);
7699                 }
7700                 ]])],[CXXFLAGS_CXX11=$flag])
7701             AC_LANG_POP([C++])
7702             CXXFLAGS=$save_CXXFLAGS
7703             if test -n "$CXXFLAGS_CXX11"; then
7704                 break
7705             fi
7706         done
7707     fi
7708     if test -n "$CXXFLAGS_CXX11"; then
7709         AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7710     else
7711         AC_MSG_ERROR(no)
7712     fi
7714 AC_SUBST(CXXFLAGS_CXX11)
7716 if test "$GCC" = "yes"; then
7717     save_CXXFLAGS=$CXXFLAGS
7718     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7719     CHECK_L_ATOMIC
7720     CXXFLAGS=$save_CXXFLAGS
7721     AC_SUBST(ATOMIC_LIB)
7724 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7725 save_CXXFLAGS=$CXXFLAGS
7726 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7727 AC_LANG_PUSH([C++])
7729 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7730 #include <stddef.h>
7732 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7734 namespace
7736         struct b
7737         {
7738                 int i;
7739                 int j;
7740         };
7742 ]], [[
7743 struct a
7745         int i;
7746         int j;
7748 a thinga[]={{0,0}, {1,1}};
7749 b thingb[]={{0,0}, {1,1}};
7750 size_t i = sizeof(sal_n_array_size(thinga));
7751 size_t j = sizeof(sal_n_array_size(thingb));
7752 return !(i != 0 && j != 0);
7754     ], [ AC_MSG_RESULT(yes) ],
7755     [ AC_MSG_ERROR(no)])
7756 AC_LANG_POP([C++])
7757 CXXFLAGS=$save_CXXFLAGS
7759 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7760 if test "$GCC" = yes; then
7761     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7762     AC_LANG_PUSH([C++])
7763     save_CXXFLAGS=$CXXFLAGS
7764     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7765     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7766     CXXFLAGS=$save_CXXFLAGS
7767     AC_LANG_POP([C++])
7768     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7769         AC_MSG_RESULT([yes])
7770     else
7771         AC_MSG_RESULT([no])
7772     fi
7774 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7776 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7777 AC_LANG_PUSH([C++])
7778 save_CXXFLAGS=$CXXFLAGS
7779 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7780 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7781         #include <algorithm>
7782         #include <initializer_list>
7783         #include <vector>
7784         template<typename T> class S {
7785         private:
7786             std::vector<T> v_;
7787         public:
7788             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7789         };
7790         constinit S<int> s{3, 2, 1};
7791     ])], [
7792         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7793         AC_MSG_RESULT([yes])
7794     ], [AC_MSG_RESULT([no])])
7795 CXXFLAGS=$save_CXXFLAGS
7796 AC_LANG_POP([C++])
7798 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7799 AC_LANG_PUSH([C++])
7800 save_CXXFLAGS=$CXXFLAGS
7801 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7802 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7803         struct S1 { S1(S1 &&); };
7804         struct S2: S1 {};
7805         S1 f(S2 s) { return s; }
7806     ])], [
7807         AC_DEFINE([HAVE_P1155R3],[1])
7808         AC_MSG_RESULT([yes])
7809     ], [AC_MSG_RESULT([no])])
7810 CXXFLAGS=$save_CXXFLAGS
7811 AC_LANG_POP([C++])
7813 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7814 HAVE_CXX20_ATOMIC_REF=
7815 AC_LANG_PUSH([C++])
7816 save_CXXFLAGS=$CXXFLAGS
7817 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7818 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7819         #include <atomic>
7820         int x;
7821         std::atomic_ref<int> y(x);
7822     ])], [
7823         HAVE_CXX20_ATOMIC_REF=TRUE
7824         AC_MSG_RESULT([yes])
7825     ], [AC_MSG_RESULT([no])])
7826 CXXFLAGS=$save_CXXFLAGS
7827 AC_LANG_POP([C++])
7828 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7830 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7831 dnl which is included in -Wextra anyway):
7832 HAVE_WDEPRECATED_COPY_DTOR=
7833 if test "$GCC" = yes; then
7834     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7835     AC_LANG_PUSH([C++])
7836     save_CXXFLAGS=$CXXFLAGS
7837     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7838     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7839             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7840             AC_MSG_RESULT([yes])
7841         ], [AC_MSG_RESULT([no])])
7842     CXXFLAGS=$save_CXXFLAGS
7843     AC_LANG_POP([C++])
7845 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7847 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7848 dnl uninitialized warning for code like
7850 dnl   OString f();
7851 dnl   boost::optional<OString> * g(bool b) {
7852 dnl       boost::optional<OString> o;
7853 dnl       if (b) o = f();
7854 dnl       return new boost::optional<OString>(o);
7855 dnl   }
7857 dnl (as is e.g. present, in a slightly more elaborate form, in
7858 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7859 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7860 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7861 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7862     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7863     AC_LANG_PUSH([C++])
7864     save_CXXFLAGS=$CXXFLAGS
7865     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7866     if test "$ENABLE_OPTIMIZED" = TRUE; then
7867         CXXFLAGS="$CXXFLAGS -O2"
7868     else
7869         CXXFLAGS="$CXXFLAGS -O0"
7870     fi
7871     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7872             #include <new>
7873             void f1(int);
7874             struct S1 {
7875                 ~S1() { f1(n); }
7876                 int n = 0;
7877             };
7878             struct S2 {
7879                 S2() {}
7880                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7881                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7882                 void set(S1 s) {
7883                     new (stg) S1(s);
7884                     init = true;
7885                 }
7886                 bool init = false;
7887                 char stg[sizeof (S1)];
7888             } ;
7889             S1 f2();
7890             S2 * f3(bool b) {
7891                 S2 o;
7892                 if (b) o.set(f2());
7893                 return new S2(o);
7894             }
7895         ]])], [AC_MSG_RESULT([no])], [
7896             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7897             AC_MSG_RESULT([yes])
7898         ])
7899     CXXFLAGS=$save_CXXFLAGS
7900     AC_LANG_POP([C++])
7902 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7904 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7905 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7906 dnl hits us e.g. with GCC 10 and --enable-optimized at
7908 dnl   In file included from include/rtl/string.hxx:49,
7909 dnl                    from include/rtl/ustring.hxx:43,
7910 dnl                    from include/osl/file.hxx:35,
7911 dnl                    from include/codemaker/global.hxx:28,
7912 dnl                    from include/codemaker/options.hxx:23,
7913 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7914 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7915 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,
7916 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,
7917 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,
7918 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7919 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7920 dnl      78 |         memcpy( buffer, data, length );
7921 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7922 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7923 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7924     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7925     AC_LANG_PUSH([C++])
7926     save_CXXFLAGS=$CXXFLAGS
7927     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7928     if test "$ENABLE_OPTIMIZED" = TRUE; then
7929         CXXFLAGS="$CXXFLAGS -O2"
7930     else
7931         CXXFLAGS="$CXXFLAGS -O0"
7932     fi
7933     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7934     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7935             void fill(char const * begin, char const * end, char c);
7936             struct q {
7937                 char ids[4];
7938                 char username[6];
7939             };
7940             void test(q & c) {
7941                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7942                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7943             }
7944         ]])], [AC_MSG_RESULT([no])], [
7945             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7946             AC_MSG_RESULT([yes])
7947         ])
7948     CXXFLAGS=$save_CXXFLAGS
7949     AC_LANG_POP([C++])
7951 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7953 HAVE_DLLEXPORTINLINES=
7954 if test "$_os" = "WINNT"; then
7955     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7956     AC_LANG_PUSH([C++])
7957     save_CXXFLAGS=$CXXFLAGS
7958     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7959     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7960             HAVE_DLLEXPORTINLINES=TRUE
7961             AC_MSG_RESULT([yes])
7962         ], [AC_MSG_RESULT([no])])
7963     CXXFLAGS=$save_CXXFLAGS
7964     AC_LANG_POP([C++])
7966 AC_SUBST([HAVE_DLLEXPORTINLINES])
7968 dnl ===================================================================
7969 dnl CPU Intrinsics support - SSE, AVX
7970 dnl ===================================================================
7972 CXXFLAGS_INTRINSICS_SSE2=
7973 CXXFLAGS_INTRINSICS_SSSE3=
7974 CXXFLAGS_INTRINSICS_SSE41=
7975 CXXFLAGS_INTRINSICS_SSE42=
7976 CXXFLAGS_INTRINSICS_AVX=
7977 CXXFLAGS_INTRINSICS_AVX2=
7978 CXXFLAGS_INTRINSICS_AVX512=
7979 CXXFLAGS_INTRINSICS_AVX512F=
7980 CXXFLAGS_INTRINSICS_F16C=
7981 CXXFLAGS_INTRINSICS_FMA=
7983 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7984     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7985     flag_sse2=-msse2
7986     flag_ssse3=-mssse3
7987     flag_sse41=-msse4.1
7988     flag_sse42=-msse4.2
7989     flag_avx=-mavx
7990     flag_avx2=-mavx2
7991     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7992     flag_avx512f=-mavx512f
7993     flag_f16c=-mf16c
7994     flag_fma=-mfma
7995 else
7996     # With MSVC using -arch is in fact not necessary for being able
7997     # to use CPU intrinsics, code using AVX512F intrinsics will compile
7998     # even if compiled with -arch:AVX, the -arch option really only affects
7999     # instructions generated for C/C++ code.
8000     # So use the matching same (or lower) -arch options, but only in order
8001     # to generate the best matching instructions for the C++ code surrounding
8002     # the intrinsics.
8003     # SSE2 is the default for x86/x64, so no need to specify the option.
8004     flag_sse2=
8005     # No specific options for these, use the next lower.
8006     flag_ssse3="$flag_sse2"
8007     flag_sse41="$flag_sse2"
8008     flag_sse42="$flag_sse2"
8009     flag_avx=-arch:AVX
8010     flag_avx2=-arch:AVX2
8011     flag_avx512=-arch:AVX512
8012     # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
8013     flag_avx512f=-arch:AVX2
8014     # No MSVC options for these.
8015     flag_f16c="$flag_sse2"
8016     flag_fma="$flag_sse2"
8019 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
8020 AC_LANG_PUSH([C++])
8021 save_CXXFLAGS=$CXXFLAGS
8022 CXXFLAGS="$CXXFLAGS $flag_sse2"
8023 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8024     #include <emmintrin.h>
8025     int main () {
8026         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8027         c = _mm_xor_si128 (a, b);
8028         return 0;
8029     }
8030     ])],
8031     [can_compile_sse2=yes],
8032     [can_compile_sse2=no])
8033 AC_LANG_POP([C++])
8034 CXXFLAGS=$save_CXXFLAGS
8035 AC_MSG_RESULT([${can_compile_sse2}])
8036 if test "${can_compile_sse2}" = "yes" ; then
8037     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
8040 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
8041 AC_LANG_PUSH([C++])
8042 save_CXXFLAGS=$CXXFLAGS
8043 CXXFLAGS="$CXXFLAGS $flag_ssse3"
8044 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8045     #include <tmmintrin.h>
8046     int main () {
8047         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8048         c = _mm_maddubs_epi16 (a, b);
8049         return 0;
8050     }
8051     ])],
8052     [can_compile_ssse3=yes],
8053     [can_compile_ssse3=no])
8054 AC_LANG_POP([C++])
8055 CXXFLAGS=$save_CXXFLAGS
8056 AC_MSG_RESULT([${can_compile_ssse3}])
8057 if test "${can_compile_ssse3}" = "yes" ; then
8058     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
8061 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
8062 AC_LANG_PUSH([C++])
8063 save_CXXFLAGS=$CXXFLAGS
8064 CXXFLAGS="$CXXFLAGS $flag_sse41"
8065 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8066     #include <smmintrin.h>
8067     int main () {
8068         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8069         c = _mm_cmpeq_epi64 (a, b);
8070         return 0;
8071     }
8072     ])],
8073     [can_compile_sse41=yes],
8074     [can_compile_sse41=no])
8075 AC_LANG_POP([C++])
8076 CXXFLAGS=$save_CXXFLAGS
8077 AC_MSG_RESULT([${can_compile_sse41}])
8078 if test "${can_compile_sse41}" = "yes" ; then
8079     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8082 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8083 AC_LANG_PUSH([C++])
8084 save_CXXFLAGS=$CXXFLAGS
8085 CXXFLAGS="$CXXFLAGS $flag_sse42"
8086 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8087     #include <nmmintrin.h>
8088     int main () {
8089         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8090         c = _mm_cmpgt_epi64 (a, b);
8091         return 0;
8092     }
8093     ])],
8094     [can_compile_sse42=yes],
8095     [can_compile_sse42=no])
8096 AC_LANG_POP([C++])
8097 CXXFLAGS=$save_CXXFLAGS
8098 AC_MSG_RESULT([${can_compile_sse42}])
8099 if test "${can_compile_sse42}" = "yes" ; then
8100     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8103 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8104 AC_LANG_PUSH([C++])
8105 save_CXXFLAGS=$CXXFLAGS
8106 CXXFLAGS="$CXXFLAGS $flag_avx"
8107 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8108     #include <immintrin.h>
8109     int main () {
8110         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8111         c = _mm256_xor_ps(a, b);
8112         return 0;
8113     }
8114     ])],
8115     [can_compile_avx=yes],
8116     [can_compile_avx=no])
8117 AC_LANG_POP([C++])
8118 CXXFLAGS=$save_CXXFLAGS
8119 AC_MSG_RESULT([${can_compile_avx}])
8120 if test "${can_compile_avx}" = "yes" ; then
8121     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8124 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8125 AC_LANG_PUSH([C++])
8126 save_CXXFLAGS=$CXXFLAGS
8127 CXXFLAGS="$CXXFLAGS $flag_avx2"
8128 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8129     #include <immintrin.h>
8130     int main () {
8131         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8132         c = _mm256_maddubs_epi16(a, b);
8133         return 0;
8134     }
8135     ])],
8136     [can_compile_avx2=yes],
8137     [can_compile_avx2=no])
8138 AC_LANG_POP([C++])
8139 CXXFLAGS=$save_CXXFLAGS
8140 AC_MSG_RESULT([${can_compile_avx2}])
8141 if test "${can_compile_avx2}" = "yes" ; then
8142     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8145 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8146 AC_LANG_PUSH([C++])
8147 save_CXXFLAGS=$CXXFLAGS
8148 CXXFLAGS="$CXXFLAGS $flag_avx512"
8149 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8150     #include <immintrin.h>
8151     int main () {
8152         __m512i a = _mm512_loadu_si512(0);
8153         __m512d v1 = _mm512_load_pd(0);
8154         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8155         __m512d v2 = _mm512_abs_pd(v1);
8156         return 0;
8157     }
8158     ])],
8159     [can_compile_avx512=yes],
8160     [can_compile_avx512=no])
8161 AC_LANG_POP([C++])
8162 CXXFLAGS=$save_CXXFLAGS
8163 AC_MSG_RESULT([${can_compile_avx512}])
8164 if test "${can_compile_avx512}" = "yes" ; then
8165     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8166     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8169 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8170 AC_LANG_PUSH([C++])
8171 save_CXXFLAGS=$CXXFLAGS
8172 CXXFLAGS="$CXXFLAGS $flag_f16c"
8173 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8174     #include <immintrin.h>
8175     int main () {
8176         __m128i a = _mm_set1_epi32 (0);
8177         __m128 c;
8178         c = _mm_cvtph_ps(a);
8179         return 0;
8180     }
8181     ])],
8182     [can_compile_f16c=yes],
8183     [can_compile_f16c=no])
8184 AC_LANG_POP([C++])
8185 CXXFLAGS=$save_CXXFLAGS
8186 AC_MSG_RESULT([${can_compile_f16c}])
8187 if test "${can_compile_f16c}" = "yes" ; then
8188     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8191 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8192 AC_LANG_PUSH([C++])
8193 save_CXXFLAGS=$CXXFLAGS
8194 CXXFLAGS="$CXXFLAGS $flag_fma"
8195 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8196     #include <immintrin.h>
8197     int main () {
8198         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8199         d = _mm256_fmadd_ps(a, b, c);
8200         return 0;
8201     }
8202     ])],
8203     [can_compile_fma=yes],
8204     [can_compile_fma=no])
8205 AC_LANG_POP([C++])
8206 CXXFLAGS=$save_CXXFLAGS
8207 AC_MSG_RESULT([${can_compile_fma}])
8208 if test "${can_compile_fma}" = "yes" ; then
8209     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8212 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8213 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8214 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8215 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8216 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8217 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8218 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8219 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8220 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8221 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8223 dnl ===================================================================
8224 dnl system stl sanity tests
8225 dnl ===================================================================
8226 if test "$_os" != "WINNT"; then
8228     AC_LANG_PUSH([C++])
8230     save_CPPFLAGS="$CPPFLAGS"
8231     if test -n "$MACOSX_SDK_PATH"; then
8232         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8233     fi
8235     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8236     # only.
8237     if test "$CPP_LIBRARY" = GLIBCXX; then
8238         dnl gcc#19664, gcc#22482, rhbz#162935
8239         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8240         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8241         AC_MSG_RESULT([$stlvisok])
8242         if test "$stlvisok" = "no"; then
8243             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8244         fi
8245     fi
8247     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8248     # when we don't make any dynamic libraries?
8249     if test "$DISABLE_DYNLOADING" = ""; then
8250         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8251         cat > conftestlib1.cc <<_ACEOF
8252 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8253 struct S2: S1<int> { virtual ~S2(); };
8254 S2::~S2() {}
8255 _ACEOF
8256         cat > conftestlib2.cc <<_ACEOF
8257 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8258 struct S2: S1<int> { virtual ~S2(); };
8259 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8260 _ACEOF
8261         gccvisinlineshiddenok=yes
8262         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8263             gccvisinlineshiddenok=no
8264         else
8265             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8266             dnl known to not work with -z defs (unsetting which makes the test
8267             dnl moot, though):
8268             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8269             if test "$COM_IS_CLANG" = TRUE; then
8270                 for i in $CXX $CXXFLAGS; do
8271                     case $i in
8272                     -fsanitize=*)
8273                         my_linkflagsnoundefs=
8274                         break
8275                         ;;
8276                     esac
8277                 done
8278             fi
8279             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8280                 gccvisinlineshiddenok=no
8281             fi
8282         fi
8284         rm -fr libconftest*
8285         AC_MSG_RESULT([$gccvisinlineshiddenok])
8286         if test "$gccvisinlineshiddenok" = "no"; then
8287             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8288         fi
8289     fi
8291    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8292     cat >visibility.cxx <<_ACEOF
8293 #pragma GCC visibility push(hidden)
8294 struct __attribute__ ((visibility ("default"))) TestStruct {
8295   static void Init();
8297 __attribute__ ((visibility ("default"))) void TestFunc() {
8298   TestStruct::Init();
8300 _ACEOF
8301     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8302         gccvisbroken=yes
8303     else
8304         case "$host_cpu" in
8305         i?86|x86_64)
8306             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8307                 gccvisbroken=no
8308             else
8309                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8310                     gccvisbroken=no
8311                 else
8312                     gccvisbroken=yes
8313                 fi
8314             fi
8315             ;;
8316         *)
8317             gccvisbroken=no
8318             ;;
8319         esac
8320     fi
8321     rm -f visibility.s visibility.cxx
8323     AC_MSG_RESULT([$gccvisbroken])
8324     if test "$gccvisbroken" = "yes"; then
8325         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8326     fi
8328     CPPFLAGS="$save_CPPFLAGS"
8330     AC_MSG_CHECKING([if CET endbranch is recognized])
8331 cat > endbr.s <<_ACEOF
8332 endbr32
8333 _ACEOF
8334     HAVE_ASM_END_BRANCH_INS_SUPPORT=
8335     if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8336         AC_MSG_RESULT([yes])
8337         HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8338     else
8339         AC_MSG_RESULT([no])
8340     fi
8341     rm -f endbr.s endbr.o
8342     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8344     AC_LANG_POP([C++])
8347 dnl ===================================================================
8348 dnl  Clang++ tests
8349 dnl ===================================================================
8351 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8352 if test "$GCC" = "yes"; then
8353     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8354     AC_LANG_PUSH([C++])
8355     save_CXXFLAGS=$CXXFLAGS
8356     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8357     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8358     CXXFLAGS=$save_CXXFLAGS
8359     AC_LANG_POP([C++])
8360     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8361         AC_MSG_RESULT([yes])
8362     else
8363         AC_MSG_RESULT([no])
8364     fi
8366 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8368 dnl ===================================================================
8369 dnl Compiler plugins
8370 dnl ===================================================================
8372 COMPILER_PLUGINS=
8373 # currently only Clang
8375 if test "$COM_IS_CLANG" != "TRUE"; then
8376     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8377         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8378         enable_compiler_plugins=no
8379     fi
8382 COMPILER_PLUGINS_COM_IS_CLANG=
8383 if test "$COM_IS_CLANG" = "TRUE"; then
8384     if test -n "$enable_compiler_plugins"; then
8385         compiler_plugins="$enable_compiler_plugins"
8386     elif test -n "$ENABLE_DBGUTIL"; then
8387         compiler_plugins=test
8388     else
8389         compiler_plugins=no
8390     fi
8391     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8392         if test "$CLANGVER" -lt 120001; then
8393             if test "$compiler_plugins" = yes; then
8394                 AC_MSG_ERROR(
8395                     [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8396             else
8397                 compiler_plugins=no
8398             fi
8399         fi
8400     fi
8401     if test "$compiler_plugins" != "no"; then
8402         dnl The prefix where Clang resides, override to where Clang resides if
8403         dnl using a source build:
8404         if test -z "$CLANGDIR"; then
8405             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8406         fi
8407         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8408         if test -z "$COMPILER_PLUGINS_CXX"; then
8409             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8410         fi
8411         clangbindir=$CLANGDIR/bin
8412         if test "$build_os" = "cygwin"; then
8413             clangbindir=$(cygpath -u "$clangbindir")
8414         fi
8415         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8416         if test -n "$LLVM_CONFIG"; then
8417             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8418             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8419             if test -z "$CLANGLIBDIR"; then
8420                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8421             fi
8422             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8423             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8424             if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8425                 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8426                 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8427                     COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8428                 fi
8429             fi
8430             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8431             clangobjdir=$($LLVM_CONFIG --obj-root)
8432             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8433                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8434             fi
8435         fi
8436         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8437         AC_LANG_PUSH([C++])
8438         save_CXX=$CXX
8439         save_CXXCPP=$CXXCPP
8440         save_CPPFLAGS=$CPPFLAGS
8441         save_CXXFLAGS=$CXXFLAGS
8442         save_LDFLAGS=$LDFLAGS
8443         save_LIBS=$LIBS
8444         CXX=$COMPILER_PLUGINS_CXX
8445         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8446         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8447         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8448         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8449             [COMPILER_PLUGINS=TRUE],
8450             [
8451             if test "$compiler_plugins" = "yes"; then
8452                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8453             else
8454                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8455                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8456             fi
8457             ])
8458         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8459         dnl comment in compilerplugins/Makefile-clang.mk:
8460         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8461             LDFLAGS=""
8462             AC_MSG_CHECKING([for clang libraries to use])
8463             if test -z "$CLANGTOOLLIBS"; then
8464                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8465                 AC_LINK_IFELSE([
8466                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8467                         [[ clang::FullSourceLoc().dump(); ]])
8468                 ],[CLANGTOOLLIBS="$LIBS"],[])
8469             fi
8470             dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8471             dnl list of individual -lclang* (but note that that list can become outdated over time,
8472             dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8473             dnl needs to include -lclangSupport now"):
8474             if test -z "$CLANGTOOLLIBS"; then
8475                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8476  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8477                 AC_LINK_IFELSE([
8478                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8479                         [[ clang::FullSourceLoc().dump(); ]])
8480                 ],[CLANGTOOLLIBS="$LIBS"],[])
8481             fi
8482             AC_MSG_RESULT([$CLANGTOOLLIBS])
8483             if test -z "$CLANGTOOLLIBS"; then
8484                 if test "$compiler_plugins" = "yes"; then
8485                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8486                 else
8487                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8488                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8489                 fi
8490                 COMPILER_PLUGINS=
8491             fi
8492             if test -n "$COMPILER_PLUGINS"; then
8493                 if test -z "$CLANGSYSINCLUDE"; then
8494                     if test -n "$LLVM_CONFIG"; then
8495                         # Path to the clang system headers (no idea if there's a better way to get it).
8496                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8497                     fi
8498                 fi
8499             fi
8500         fi
8501         CXX=$save_CXX
8502         CXXCPP=$save_CXXCPP
8503         CPPFLAGS=$save_CPPFLAGS
8504         CXXFLAGS=$save_CXXFLAGS
8505         LDFLAGS=$save_LDFLAGS
8506         LIBS="$save_LIBS"
8507         AC_LANG_POP([C++])
8509         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8510         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8511             #ifndef __clang__
8512             you lose
8513             #endif
8514             int foo=42;
8515             ]])],
8516             [AC_MSG_RESULT([yes])
8517              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8518             [AC_MSG_RESULT([no])])
8519         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8520     fi
8521 else
8522     if test "$enable_compiler_plugins" = "yes"; then
8523         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8524     fi
8526 COMPILER_PLUGINS_ANALYZER_PCH=
8527 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8528     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8530 AC_SUBST(COMPILER_PLUGINS)
8531 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8532 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8533 AC_SUBST(COMPILER_PLUGINS_CXX)
8534 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8535 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8536 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8537 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8538 AC_SUBST(CLANGDIR)
8539 AC_SUBST(CLANGLIBDIR)
8540 AC_SUBST(CLANGTOOLLIBS)
8541 AC_SUBST(CLANGSYSINCLUDE)
8543 # Plugin to help linker.
8544 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8545 # This makes --enable-lto build with clang work.
8546 AC_SUBST(LD_PLUGIN)
8548 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8549 AC_SUBST(HAVE_POSIX_FALLOCATE)
8551 JITC_PROCESSOR_TYPE=""
8552 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8553     # IBMs JDK needs this...
8554     JITC_PROCESSOR_TYPE=6
8555     export JITC_PROCESSOR_TYPE
8557 AC_SUBST([JITC_PROCESSOR_TYPE])
8559 # Misc Windows Stuff
8560 AC_ARG_WITH(ucrt-dir,
8561     AS_HELP_STRING([--with-ucrt-dir],
8562         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8563         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8564         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8565             Windows6.1-KB2999226-x64.msu
8566             Windows6.1-KB2999226-x86.msu
8567             Windows8.1-KB2999226-x64.msu
8568             Windows8.1-KB2999226-x86.msu
8569             Windows8-RT-KB2999226-x64.msu
8570             Windows8-RT-KB2999226-x86.msu
8571         A zip archive including those files is available from Microsoft site:
8572         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8575 UCRT_REDISTDIR="$with_ucrt_dir"
8576 if test $_os = "WINNT"; then
8577     find_msvc_x64_dlls
8578     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8579     MSVC_DLLS="$msvcdlls"
8580     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8581         with_redist=143
8582     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8583         with_redist=142
8584     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8585         with_redist=141
8586     fi
8587     for i in $PKGFORMAT; do
8588         if test "$i" = msi; then
8589             find_msms "$with_redist"
8590             if test -n "$msmdir"; then
8591                 MSM_PATH=`win_short_path_for_make "$msmdir"`
8592                 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8593             fi
8594             break
8595         fi
8596     done
8598     if test "$UCRT_REDISTDIR" = "no"; then
8599         dnl explicitly disabled
8600         UCRT_REDISTDIR=""
8601     else
8602         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8603                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8604                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8605                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8606                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8607                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8608             UCRT_REDISTDIR=""
8609             if test -n "$PKGFORMAT"; then
8610                for i in $PKGFORMAT; do
8611                    case "$i" in
8612                    msi)
8613                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8614                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8615                        ;;
8616                    esac
8617                done
8618             fi
8619         fi
8620     fi
8623 AC_SUBST(UCRT_REDISTDIR)
8624 AC_SUBST(MSVC_DLL_PATH)
8625 AC_SUBST(MSVC_DLLS)
8626 AC_SUBST(MSM_PATH)
8629 dnl ===================================================================
8630 dnl Checks for Java
8631 dnl ===================================================================
8632 if test "$ENABLE_JAVA" != ""; then
8634     # Windows-specific tests
8635     if test "$build_os" = "cygwin"; then
8636         if test -z "$with_jdk_home"; then
8637             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8638             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8639             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8640             if test -n "$regvalue"; then
8641                 ver=$regvalue
8642                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8643                 with_jdk_home=$regvalue
8644             fi
8645             howfound="found automatically"
8646         else
8647             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8648             howfound="you passed"
8649         fi
8651         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8652             AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option (or fix the path) pointing to a $WIN_HOST_BITS-bit JDK >= 8])
8653         fi
8654     fi
8656     # 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.
8657     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8658     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8659         with_jdk_home=`/usr/libexec/java_home`
8660     fi
8662     JAVA_HOME=; export JAVA_HOME
8663     if test -z "$with_jdk_home"; then
8664         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8665     else
8666         _java_path="$with_jdk_home/bin/$with_java"
8667         dnl Check if there is a Java interpreter at all.
8668         if test -x "$_java_path"; then
8669             JAVAINTERPRETER=$_java_path
8670         else
8671             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8672         fi
8673     fi
8675     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8676     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8677     dnl loaded by java to run JunitTests:
8678     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8679         shortjdkhome=`cygpath -d "$with_jdk_home"`
8680         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
8681             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8682             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8683         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
8684             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8685             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8686         fi
8688         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8689             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8690         fi
8691         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8692     elif test "$cross_compiling" != "yes"; then
8693         case $CPUNAME in
8694             AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64|LOONGARCH64)
8695                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8696                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8697                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8698                 fi
8699                 ;;
8700             *) # assumption: everything else 32-bit
8701                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8702                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8703                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8704                 fi
8705                 ;;
8706         esac
8707     fi
8710 dnl ===================================================================
8711 dnl Checks for JDK.
8712 dnl ===================================================================
8714 # Whether all the complexity here actually is needed any more or not, no idea.
8716 JDK_SECURITYMANAGER_DISALLOWED=
8717 MODULAR_JAVA=
8718 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8719     _gij_longver=0
8720     AC_MSG_CHECKING([the installed JDK])
8721     if test -n "$JAVAINTERPRETER"; then
8722         dnl java -version sends output to stderr!
8723         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8724             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8725         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8726             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8727         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8728             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8729         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8730             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8731         else
8732             JDK=sun
8734             dnl Sun JDK specific tests
8735             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8736             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8738             if test "$_jdk_ver" -lt 10800; then
8739                 AC_MSG_ERROR([JDK is too old, you need at least 8 ($_jdk_ver < 10800)])
8740             fi
8741             dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8742             dnl completely removed in some Java version > 18 (see
8743             dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8744             if test "$_jdk_ver" -ge 180000; then
8745                 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8746             fi
8748             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8749             if test "$_os" = "WINNT"; then
8750                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8751             fi
8752             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8754             dnl Check whether the build Java supports modules
8755             if test "$_jdk_ver" -ge 90000; then
8756                 MODULAR_JAVA=TRUE
8757             else
8758                 AC_MSG_WARN([Modular jars will not be built. They need at least Java 9 ($_jdk_ver < 90000)])
8759                 add_warning "Modular jars will not be built. They need at least Java 9 ($_jdk_ver < 90000)"
8760             fi
8762             # set to limit VM usage for JunitTests
8763             JAVAIFLAGS=-Xmx64M
8764             # set to limit VM usage for javac
8765             JAVACFLAGS=-J-Xmx128M
8766         fi
8767     else
8768         AC_MSG_ERROR([Java not found. You need at least JDK 8])
8769     fi
8770 else
8771     if test -z "$ENABLE_JAVA"; then
8772         dnl Java disabled
8773         JAVA_HOME=
8774         export JAVA_HOME
8775     elif test "$cross_compiling" = "yes"; then
8776         # Just assume compatibility of build and host JDK
8777         JDK=$JDK_FOR_BUILD
8778         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8779     fi
8782 dnl ===================================================================
8783 dnl Checks for javac
8784 dnl ===================================================================
8785 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8786     javacompiler="javac"
8787     : ${JAVA_SOURCE_VER=8}
8788     : ${JAVA_TARGET_VER=8}
8789     if test -z "$with_jdk_home"; then
8790         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8791     else
8792         _javac_path="$with_jdk_home/bin/$javacompiler"
8793         dnl Check if there is a Java compiler at all.
8794         if test -x "$_javac_path"; then
8795             JAVACOMPILER=$_javac_path
8796         fi
8797     fi
8798     if test -z "$JAVACOMPILER"; then
8799         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8800     fi
8801     if test "$build_os" = "cygwin"; then
8802         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8803             JAVACOMPILER="${JAVACOMPILER}.exe"
8804         fi
8805         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8806     fi
8809 dnl ===================================================================
8810 dnl Checks for javadoc
8811 dnl ===================================================================
8812 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8813     if test -z "$with_jdk_home"; then
8814         AC_PATH_PROG(JAVADOC, javadoc)
8815     else
8816         _javadoc_path="$with_jdk_home/bin/javadoc"
8817         dnl Check if there is a javadoc at all.
8818         if test -x "$_javadoc_path"; then
8819             JAVADOC=$_javadoc_path
8820         else
8821             AC_PATH_PROG(JAVADOC, javadoc)
8822         fi
8823     fi
8824     if test -z "$JAVADOC"; then
8825         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8826     fi
8827     if test "$build_os" = "cygwin"; then
8828         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8829             JAVADOC="${JAVADOC}.exe"
8830         fi
8831         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8832     fi
8834     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8835     JAVADOCISGJDOC="yes"
8836     fi
8838 AC_SUBST(JAVADOC)
8839 AC_SUBST(JAVADOCISGJDOC)
8841 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8842     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8843     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8844         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8845            # try to recover first by looking whether we have an alternative
8846            # system as in Debian or newer SuSEs where following /usr/bin/javac
8847            # over /etc/alternatives/javac leads to the right bindir where we
8848            # just need to strip a bit away to get a valid JAVA_HOME
8849            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8850         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8851             # maybe only one level of symlink (e.g. on Mac)
8852             JAVA_HOME=$(readlink $JAVACOMPILER)
8853             if test "$(dirname $JAVA_HOME)" = "."; then
8854                 # we've got no path to trim back
8855                 JAVA_HOME=""
8856             fi
8857         else
8858             # else warn
8859             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8860             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8861             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8862             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8863         fi
8864         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8865         if test "$JAVA_HOME" != "/usr"; then
8866             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8867                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8868                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8869                 dnl Tiger already returns a JDK path...
8870                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8871             else
8872                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8873                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8874                 dnl that checks which version to run
8875                 if test -f "$JAVA_HOME"; then
8876                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8877                 fi
8878             fi
8879         fi
8880     fi
8881     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8883     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8884     if test -z "$JAVA_HOME"; then
8885         if test "x$with_jdk_home" = "x"; then
8886             cat > findhome.java <<_ACEOF
8887 [import java.io.File;
8889 class findhome
8891     public static void main(String args[])
8892     {
8893         String jrelocation = System.getProperty("java.home");
8894         File jre = new File(jrelocation);
8895         System.out.println(jre.getParent());
8896     }
8898 _ACEOF
8899             AC_MSG_CHECKING([if javac works])
8900             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8901             AC_TRY_EVAL(javac_cmd)
8902             if test $? = 0 -a -f ./findhome.class; then
8903                 AC_MSG_RESULT([javac works])
8904             else
8905                 echo "configure: javac test failed" >&5
8906                 cat findhome.java >&5
8907                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8908             fi
8909             AC_MSG_CHECKING([if gij knows its java.home])
8910             JAVA_HOME=`$JAVAINTERPRETER findhome`
8911             if test $? = 0 -a "$JAVA_HOME" != ""; then
8912                 AC_MSG_RESULT([$JAVA_HOME])
8913             else
8914                 echo "configure: java test failed" >&5
8915                 cat findhome.java >&5
8916                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8917             fi
8918             # clean-up after ourselves
8919             rm -f ./findhome.java ./findhome.class
8920         else
8921             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8922         fi
8923     fi
8925     # now check if $JAVA_HOME is really valid
8926     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8927         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8928             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8929             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8930             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8931             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8932             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8933             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8934         fi
8935     fi
8936     PathFormat "$JAVA_HOME"
8937     JAVA_HOME="$formatted_path"
8940 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8941     "$_os" != Darwin
8942 then
8943     AC_MSG_CHECKING([for JAWT lib])
8944     if test "$_os" = WINNT; then
8945         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8946         JAWTLIB=jawt.lib
8947     else
8948         case "$host_cpu" in
8949         arm*)
8950             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8951             JAVA_ARCH=$my_java_arch
8952             ;;
8953         i*86)
8954             my_java_arch=i386
8955             ;;
8956         m68k)
8957             my_java_arch=m68k
8958             ;;
8959         powerpc)
8960             my_java_arch=ppc
8961             ;;
8962         powerpc64)
8963             my_java_arch=ppc64
8964             ;;
8965         powerpc64le)
8966             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8967             JAVA_ARCH=$my_java_arch
8968             ;;
8969         sparc64)
8970             my_java_arch=sparcv9
8971             ;;
8972         x86_64)
8973             my_java_arch=amd64
8974             ;;
8975         *)
8976             my_java_arch=$host_cpu
8977             ;;
8978         esac
8979         # This is where JDK9 puts the library
8980         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8981             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8982         else
8983             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8984         fi
8985         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8986     fi
8987     AC_MSG_RESULT([$JAWTLIB])
8989 AC_SUBST(JAWTLIB)
8991 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8992     case "$host_os" in
8994     cygwin*|wsl*)
8995         JAVAINC="-I$JAVA_HOME/include/win32"
8996         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8997         ;;
8999     darwin*)
9000         if test -d "$JAVA_HOME/include/darwin"; then
9001             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
9002         else
9003             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
9004         fi
9005         ;;
9007     dragonfly*)
9008         JAVAINC="-I$JAVA_HOME/include"
9009         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9010         ;;
9012     freebsd*)
9013         JAVAINC="-I$JAVA_HOME/include"
9014         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
9015         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
9016         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9017         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9018         ;;
9020     k*bsd*-gnu*)
9021         JAVAINC="-I$JAVA_HOME/include"
9022         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9023         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9024         ;;
9026     linux-gnu*)
9027         JAVAINC="-I$JAVA_HOME/include"
9028         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9029         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9030         ;;
9032     *netbsd*)
9033         JAVAINC="-I$JAVA_HOME/include"
9034         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
9035         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9036        ;;
9038     openbsd*)
9039         JAVAINC="-I$JAVA_HOME/include"
9040         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
9041         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9042         ;;
9044     solaris*)
9045         JAVAINC="-I$JAVA_HOME/include"
9046         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
9047         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9048         ;;
9049     esac
9051 SOLARINC="$SOLARINC $JAVAINC"
9053 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
9054     JAVA_HOME_FOR_BUILD=$JAVA_HOME
9055     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
9056     JDK_FOR_BUILD=$JDK
9057     JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
9060 AC_SUBST(JAVACFLAGS)
9061 AC_SUBST(JAVACOMPILER)
9062 AC_SUBST(JAVAINTERPRETER)
9063 AC_SUBST(JAVAIFLAGS)
9064 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
9065 AC_SUBST(JAVA_HOME)
9066 AC_SUBST(JAVA_HOME_FOR_BUILD)
9067 AC_SUBST(JDK)
9068 AC_SUBST(JDK_FOR_BUILD)
9069 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
9070 AC_SUBST(JAVA_SOURCE_VER)
9071 AC_SUBST(JAVA_TARGET_VER)
9072 AC_SUBST(MODULAR_JAVA)
9075 dnl ===================================================================
9076 dnl Export file validation
9077 dnl ===================================================================
9078 AC_MSG_CHECKING([whether to enable export file validation])
9079 if test "$with_export_validation" != "no"; then
9080     if test -z "$ENABLE_JAVA"; then
9081         if test "$with_export_validation" = "yes"; then
9082             AC_MSG_ERROR([requested, but Java is disabled])
9083         else
9084             AC_MSG_RESULT([no, as Java is disabled])
9085         fi
9086     elif ! test -d "${SRC_ROOT}/schema"; then
9087         if test "$with_export_validation" = "yes"; then
9088             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9089         else
9090             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9091         fi
9092     else
9093         AC_MSG_RESULT([yes])
9094         AC_DEFINE(HAVE_EXPORT_VALIDATION)
9096         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9097         if test -z "$ODFVALIDATOR"; then
9098             # remember to download the ODF toolkit with validator later
9099             AC_MSG_NOTICE([no odfvalidator found, will download it])
9100             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9101             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9103             # and fetch name of odfvalidator jar name from download.lst
9104             ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9105             AC_SUBST(ODFVALIDATOR_JAR)
9107             if test -z "$ODFVALIDATOR_JAR"; then
9108                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9109             fi
9110         fi
9111         if test "$build_os" = "cygwin"; then
9112             # In case of Cygwin it will be executed from Windows,
9113             # so we need to run bash and absolute path to validator
9114             # so instead of "odfvalidator" it will be
9115             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9116             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9117         else
9118             ODFVALIDATOR="sh $ODFVALIDATOR"
9119         fi
9120         AC_SUBST(ODFVALIDATOR)
9123         AC_PATH_PROGS(OFFICEOTRON, officeotron)
9124         if test -z "$OFFICEOTRON"; then
9125             # remember to download the officeotron with validator later
9126             AC_MSG_NOTICE([no officeotron found, will download it])
9127             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9128             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9130             # and fetch name of officeotron jar name from download.lst
9131             OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9132             AC_SUBST(OFFICEOTRON_JAR)
9134             if test -z "$OFFICEOTRON_JAR"; then
9135                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9136             fi
9137         else
9138             # check version of existing officeotron
9139             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9140             if test 0"$OFFICEOTRON_VER" -lt 704; then
9141                 AC_MSG_ERROR([officeotron too old])
9142             fi
9143         fi
9144         if test "$build_os" = "cygwin"; then
9145             # In case of Cygwin it will be executed from Windows,
9146             # so we need to run bash and absolute path to validator
9147             # so instead of "odfvalidator" it will be
9148             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9149             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9150         else
9151             OFFICEOTRON="sh $OFFICEOTRON"
9152         fi
9153     fi
9154     AC_SUBST(OFFICEOTRON)
9155 else
9156     AC_MSG_RESULT([no])
9159 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9160 if test "$with_bffvalidator" != "no"; then
9161     AC_DEFINE(HAVE_BFFVALIDATOR)
9163     if test "$with_export_validation" = "no"; then
9164         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9165     fi
9167     if test "$with_bffvalidator" = "yes"; then
9168         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9169     else
9170         BFFVALIDATOR="$with_bffvalidator"
9171     fi
9173     if test "$build_os" = "cygwin"; then
9174         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9175             AC_MSG_RESULT($BFFVALIDATOR)
9176         else
9177             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9178         fi
9179     elif test -n "$BFFVALIDATOR"; then
9180         # We are not in Cygwin but need to run Windows binary with wine
9181         AC_PATH_PROGS(WINE, wine)
9183         # so swap in a shell wrapper that converts paths transparently
9184         BFFVALIDATOR_EXE="$BFFVALIDATOR"
9185         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9186         AC_SUBST(BFFVALIDATOR_EXE)
9187         AC_MSG_RESULT($BFFVALIDATOR)
9188     else
9189         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9190     fi
9191     AC_SUBST(BFFVALIDATOR)
9192 else
9193     AC_MSG_RESULT([no])
9196 dnl ===================================================================
9197 dnl Check for epm (not needed for Windows)
9198 dnl ===================================================================
9199 AC_MSG_CHECKING([whether to enable EPM for packing])
9200 if test "$enable_epm" = "yes"; then
9201     AC_MSG_RESULT([yes])
9202     if test "$_os" != "WINNT"; then
9203         if test $_os = Darwin; then
9204             EPM=internal
9205         elif test -n "$with_epm"; then
9206             EPM=$with_epm
9207         else
9208             AC_PATH_PROG(EPM, epm, no)
9209         fi
9210         if test "$EPM" = "no" -o "$EPM" = "internal"; then
9211             AC_MSG_NOTICE([EPM will be built.])
9212             BUILD_TYPE="$BUILD_TYPE EPM"
9213             EPM=${WORKDIR}/UnpackedTarball/epm/epm
9214         else
9215             # Gentoo has some epm which is something different...
9216             AC_MSG_CHECKING([whether the found epm is the right epm])
9217             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9218                 AC_MSG_RESULT([yes])
9219             else
9220                 AC_MSG_ERROR([no. Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9221             fi
9222             AC_MSG_CHECKING([epm version])
9223             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9224             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9225                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9226                 AC_MSG_RESULT([OK, >= 3.7])
9227             else
9228                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9229                 AC_MSG_ERROR([Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9230             fi
9231         fi
9232     fi
9234     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9235         AC_MSG_CHECKING([for rpm])
9236         for a in "$RPM" rpmbuild rpm; do
9237             $a --usage >/dev/null 2> /dev/null
9238             if test $? -eq 0; then
9239                 RPM=$a
9240                 break
9241             else
9242                 $a --version >/dev/null 2> /dev/null
9243                 if test $? -eq 0; then
9244                     RPM=$a
9245                     break
9246                 fi
9247             fi
9248         done
9249         if test -z "$RPM"; then
9250             AC_MSG_ERROR([not found])
9251         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9252             RPM_PATH=`command -v $RPM`
9253             AC_MSG_RESULT([$RPM_PATH])
9254             SCPDEFS="$SCPDEFS -DWITH_RPM"
9255         else
9256             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9257         fi
9258     fi
9259     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9260         AC_PATH_PROG(DPKG, dpkg, no)
9261         if test "$DPKG" = "no"; then
9262             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9263         fi
9264     fi
9265     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9266        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9267         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9268             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9269                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9270                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9271                     AC_MSG_RESULT([yes])
9272                 else
9273                     AC_MSG_RESULT([no])
9274                     if echo "$PKGFORMAT" | $GREP -q rpm; then
9275                         _pt="rpm"
9276                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9277                         add_warning "the rpms will need to be installed with --nodeps"
9278                     else
9279                         _pt="pkg"
9280                     fi
9281                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
9282                     add_warning "the ${_pt}s will not be relocatable"
9283                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
9284                                  relocation will work, you need to patch your epm with the
9285                                  patch in epm/epm-3.7.patch or build with
9286                                  --with-epm=internal which will build a suitable epm])
9287                 fi
9288             fi
9289         fi
9290     fi
9291     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9292         AC_PATH_PROG(PKGMK, pkgmk, no)
9293         if test "$PKGMK" = "no"; then
9294             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9295         fi
9296     fi
9297     AC_SUBST(RPM)
9298     AC_SUBST(DPKG)
9299     AC_SUBST(PKGMK)
9300 else
9301     for i in $PKGFORMAT; do
9302         case "$i" in
9303         bsd | deb | pkg | rpm | native | portable)
9304             AC_MSG_ERROR(
9305                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9306             ;;
9307         esac
9308     done
9309     AC_MSG_RESULT([no])
9310     EPM=NO
9312 AC_SUBST(EPM)
9314 ENABLE_LWP=
9315 if test "$enable_lotuswordpro" = "yes"; then
9316     ENABLE_LWP="TRUE"
9318 AC_SUBST(ENABLE_LWP)
9320 dnl ===================================================================
9321 dnl Check for building ODK
9322 dnl ===================================================================
9323 AC_MSG_CHECKING([whether to build the ODK])
9324 if test "$enable_odk" = yes; then
9325     if test "$DISABLE_DYNLOADING" = TRUE; then
9326         AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9327     fi
9328     AC_MSG_RESULT([yes])
9329     BUILD_TYPE="$BUILD_TYPE ODK"
9330 else
9331     AC_MSG_RESULT([no])
9334 if test "$enable_odk" != yes; then
9335     unset DOXYGEN
9336 else
9337     if test "$with_doxygen" = no; then
9338         AC_MSG_CHECKING([for doxygen])
9339         unset DOXYGEN
9340         AC_MSG_RESULT([no])
9341     else
9342         if test "$with_doxygen" = yes; then
9343             AC_PATH_PROG([DOXYGEN], [doxygen])
9344             if test -z "$DOXYGEN"; then
9345                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9346             fi
9347             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9348                 if ! dot -V 2>/dev/null; then
9349                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9350                 fi
9351             fi
9352         else
9353             AC_MSG_CHECKING([for doxygen])
9354             DOXYGEN=$with_doxygen
9355             AC_MSG_RESULT([$DOXYGEN])
9356         fi
9357         if test -n "$DOXYGEN"; then
9358             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9359             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9360             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9361                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9362             fi
9363         fi
9364     fi
9366 AC_SUBST([DOXYGEN])
9368 dnl ==================================================================
9369 dnl libfuzzer
9370 dnl ==================================================================
9371 AC_MSG_CHECKING([whether to enable fuzzers])
9372 if test "$enable_fuzzers" != yes; then
9373     AC_MSG_RESULT([no])
9374 else
9375     if test -z $LIB_FUZZING_ENGINE; then
9376       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9377     fi
9378     AC_MSG_RESULT([yes])
9379     ENABLE_FUZZERS="TRUE"
9380     AC_DEFINE([ENABLE_FUZZERS],1)
9381     BUILD_TYPE="$BUILD_TYPE FUZZERS"
9383 AC_SUBST(LIB_FUZZING_ENGINE)
9385 dnl ===================================================================
9386 dnl Check for system zlib
9387 dnl ===================================================================
9388 if test "$with_system_zlib" = "auto"; then
9389     case "$_os" in
9390     WINNT)
9391         with_system_zlib="$with_system_libs"
9392         ;;
9393     *)
9394         if test "$enable_fuzzers" != "yes"; then
9395             with_system_zlib=yes
9396         else
9397             with_system_zlib=no
9398         fi
9399         ;;
9400     esac
9403 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9404 dnl and has no pkg-config for it at least on some tinderboxes,
9405 dnl so leaving that out for now
9406 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9407 AC_MSG_CHECKING([which zlib to use])
9408 if test "$with_system_zlib" = "yes"; then
9409     AC_MSG_RESULT([external])
9410     SYSTEM_ZLIB=TRUE
9411     AC_CHECK_HEADER(zlib.h, [],
9412         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9413     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9414         [AC_MSG_ERROR(zlib not found or functional)], [])
9415 else
9416     AC_MSG_RESULT([internal])
9417     SYSTEM_ZLIB=
9418     BUILD_TYPE="$BUILD_TYPE ZLIB"
9419     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9420     if test "$COM" = "MSC"; then
9421         ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9422     else
9423         ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9424     fi
9426 AC_SUBST(ZLIB_CFLAGS)
9427 AC_SUBST(ZLIB_LIBS)
9428 AC_SUBST(SYSTEM_ZLIB)
9430 dnl ===================================================================
9431 dnl Check for system jpeg
9432 dnl ===================================================================
9433 AC_MSG_CHECKING([which libjpeg to use])
9434 if test "$with_system_jpeg" = "yes"; then
9435     AC_MSG_RESULT([external])
9436     SYSTEM_LIBJPEG=TRUE
9437     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9438         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9439     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9440         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9441 else
9442     SYSTEM_LIBJPEG=
9443     AC_MSG_RESULT([internal, libjpeg-turbo])
9444     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9446     case "$host_cpu" in
9447     x86_64 | amd64 | i*86 | x86 | ia32)
9448         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9449         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9450             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9451                 NASM="$LODE_HOME/opt/bin/nasm"
9452             elif test -x "/opt/lo/bin/nasm"; then
9453                 NASM="/opt/lo/bin/nasm"
9454             fi
9455         fi
9457         if test -n "$NASM"; then
9458             AC_MSG_CHECKING([for object file format of host system])
9459             case "$host_os" in
9460               cygwin* | mingw* | pw32* | wsl*)
9461                 case "$host_cpu" in
9462                   x86_64)
9463                     objfmt='Win64-COFF'
9464                     ;;
9465                   *)
9466                     objfmt='Win32-COFF'
9467                     ;;
9468                 esac
9469               ;;
9470               msdosdjgpp* | go32*)
9471                 objfmt='COFF'
9472               ;;
9473               os2-emx*) # not tested
9474                 objfmt='MSOMF' # obj
9475               ;;
9476               linux*coff* | linux*oldld*)
9477                 objfmt='COFF' # ???
9478               ;;
9479               linux*aout*)
9480                 objfmt='a.out'
9481               ;;
9482               linux*)
9483                 case "$host_cpu" in
9484                   x86_64)
9485                     objfmt='ELF64'
9486                     ;;
9487                   *)
9488                     objfmt='ELF'
9489                     ;;
9490                 esac
9491               ;;
9492               kfreebsd* | freebsd* | netbsd* | openbsd*)
9493                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9494                   objfmt='BSD-a.out'
9495                 else
9496                   case "$host_cpu" in
9497                     x86_64 | amd64)
9498                       objfmt='ELF64'
9499                       ;;
9500                     *)
9501                       objfmt='ELF'
9502                       ;;
9503                   esac
9504                 fi
9505               ;;
9506               solaris* | sunos* | sysv* | sco*)
9507                 case "$host_cpu" in
9508                   x86_64)
9509                     objfmt='ELF64'
9510                     ;;
9511                   *)
9512                     objfmt='ELF'
9513                     ;;
9514                 esac
9515               ;;
9516               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9517                 case "$host_cpu" in
9518                   x86_64)
9519                     objfmt='Mach-O64'
9520                     ;;
9521                   *)
9522                     objfmt='Mach-O'
9523                     ;;
9524                 esac
9525               ;;
9526               *)
9527                 objfmt='ELF ?'
9528               ;;
9529             esac
9531             AC_MSG_RESULT([$objfmt])
9532             if test "$objfmt" = 'ELF ?'; then
9533               objfmt='ELF'
9534               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9535             fi
9537             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9538             case "$objfmt" in
9539               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9540               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9541               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9542               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9543               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9544               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9545               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9546               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9547               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9548               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9549               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9550             esac
9551             AC_MSG_RESULT([$NAFLAGS])
9553             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9554             cat > conftest.asm << EOF
9555             [%line __oline__ "configure"
9556                     section .text
9557                     global  _main,main
9558             _main:
9559             main:   xor     eax,eax
9560                     ret
9561             ]
9563             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9564             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9565               AC_MSG_RESULT(yes)
9566             else
9567               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9568               cat conftest.asm >&AS_MESSAGE_LOG_FD
9569               rm -rf conftest*
9570               AC_MSG_RESULT(no)
9571               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9572               NASM=""
9573             fi
9575         fi
9577         if test -z "$NASM"; then
9578 cat << _EOS
9579 ****************************************************************************
9580 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9581 To get one please:
9583 _EOS
9584             if test "$build_os" = "cygwin"; then
9585 cat << _EOS
9586 install a pre-compiled binary for Win32
9588 mkdir -p /opt/lo/bin
9589 cd /opt/lo/bin
9590 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9591 chmod +x nasm
9593 or get and install one from https://www.nasm.us/
9595 Then re-run autogen.sh
9597 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9598 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`command -v nasm\` finds it.
9600 _EOS
9601             else
9602 cat << _EOS
9603 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md
9605 _EOS
9606             fi
9607             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9608             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9609         fi
9610       ;;
9611     esac
9614 AC_SUBST(NASM)
9615 AC_SUBST(NAFLAGS)
9616 AC_SUBST(LIBJPEG_CFLAGS)
9617 AC_SUBST(LIBJPEG_LIBS)
9618 AC_SUBST(SYSTEM_LIBJPEG)
9620 dnl ===================================================================
9621 dnl Check for system clucene
9622 dnl ===================================================================
9623 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9624 if test "$SYSTEM_CLUCENE" = TRUE; then
9625     AC_LANG_PUSH([C++])
9626     save_CXXFLAGS=$CXXFLAGS
9627     save_CPPFLAGS=$CPPFLAGS
9628     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9629     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9630     dnl https://sourceforge.net/p/clucene/bugs/200/
9631     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9632     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9633                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9634     CXXFLAGS=$save_CXXFLAGS
9635     CPPFLAGS=$save_CPPFLAGS
9636     AC_LANG_POP([C++])
9637     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9640 dnl ===================================================================
9641 dnl Check for system expat
9642 dnl ===================================================================
9643 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9645 dnl ===================================================================
9646 dnl Check for system xmlsec
9647 dnl ===================================================================
9648 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9650 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9651 if test "$enable_eot" = "yes"; then
9652     ENABLE_EOT="TRUE"
9653     AC_DEFINE([ENABLE_EOT])
9654     AC_MSG_RESULT([yes])
9656     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9657 else
9658     ENABLE_EOT=
9659     AC_MSG_RESULT([no])
9661 AC_SUBST([ENABLE_EOT])
9663 dnl ===================================================================
9664 dnl Check for DLP libs
9665 dnl ===================================================================
9666 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9667 AS_IF([test "$COM" = "MSC"],
9668       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9669       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9671 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9672 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9674 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9676 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9678 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9679 AS_IF([test "$COM" = "MSC"],
9680       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9681       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9683 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9684 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9686 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9688 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9689 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.14])
9691 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9693 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9695 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9697 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9698 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9700 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9701 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9703 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9705 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9706 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9708 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9710 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9712 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9714 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9716 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9717 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9719 dnl ===================================================================
9720 dnl Check for system lcms2
9721 dnl ===================================================================
9722 if test "$with_system_lcms2" != "yes"; then
9723     SYSTEM_LCMS2=
9725 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9726 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9727 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9728 if test "$GCC" = "yes"; then
9729     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9731 if test "$COM" = "MSC"; then # override the above
9732     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9735 dnl ===================================================================
9736 dnl Check for system cppunit
9737 dnl ===================================================================
9738 if test "$_os" != "Android" ; then
9739     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9742 dnl ===================================================================
9743 dnl Check whether freetype is available
9745 dnl FreeType has 3 different kinds of versions
9746 dnl * release, like 2.4.10
9747 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9748 dnl * soname
9749 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9751 dnl 9.9.3 is 2.2.0
9752 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9753 dnl ===================================================================
9754 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9755 if test "x$ac_config_site_64bit_host" = xYES; then
9756     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9757 else
9758     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9760 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9762 # ===================================================================
9763 # Check for system libxslt
9764 # to prevent incompatibilities between internal libxml2 and external libxslt,
9765 # or vice versa, use with_system_libxml here
9766 # ===================================================================
9767 if test "$with_system_libxml" = "auto"; then
9768     case "$_os" in
9769     WINNT|iOS|Android)
9770         with_system_libxml="$with_system_libs"
9771         ;;
9772     Emscripten)
9773         with_system_libxml=no
9774         ;;
9775     *)
9776         if test "$enable_fuzzers" != "yes"; then
9777             with_system_libxml=yes
9778         else
9779             with_system_libxml=no
9780         fi
9781         ;;
9782     esac
9785 AC_MSG_CHECKING([which libxslt to use])
9786 if test "$with_system_libxml" = "yes"; then
9787     AC_MSG_RESULT([external])
9788     SYSTEM_LIBXSLT=TRUE
9789     if test "$_os" = "Darwin"; then
9790         dnl make sure to use SDK path
9791         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9792         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9793         dnl omit -L/usr/lib
9794         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9795         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9796     else
9797         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9798         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9799         FilterLibs "${LIBXSLT_LIBS}"
9800         LIBXSLT_LIBS="${filteredlibs}"
9801         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9802         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9803         FilterLibs "${LIBEXSLT_LIBS}"
9804         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9805     fi
9807     dnl Check for xsltproc
9808     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9809     if test "$XSLTPROC" = "no"; then
9810         AC_MSG_ERROR([xsltproc is required])
9811     fi
9812 else
9813     AC_MSG_RESULT([internal])
9814     SYSTEM_LIBXSLT=
9815     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9817 AC_SUBST(SYSTEM_LIBXSLT)
9818 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9819     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9821 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9823 AC_SUBST(LIBEXSLT_CFLAGS)
9824 AC_SUBST(LIBEXSLT_LIBS)
9825 AC_SUBST(LIBXSLT_CFLAGS)
9826 AC_SUBST(LIBXSLT_LIBS)
9827 AC_SUBST(XSLTPROC)
9829 # ===================================================================
9830 # Check for system libxml
9831 # ===================================================================
9832 AC_MSG_CHECKING([which libxml to use])
9833 if test "$with_system_libxml" = "yes"; then
9834     AC_MSG_RESULT([external])
9835     SYSTEM_LIBXML=TRUE
9836     if test "$_os" = "Darwin"; then
9837         dnl make sure to use SDK path
9838         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9839         dnl omit -L/usr/lib
9840         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9841     elif test $_os = iOS; then
9842         dnl make sure to use SDK path
9843         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9844         LIBXML_CFLAGS="-I$usr/include/libxml2"
9845         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9846     else
9847         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9848         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9849         FilterLibs "${LIBXML_LIBS}"
9850         LIBXML_LIBS="${filteredlibs}"
9851     fi
9853     dnl Check for xmllint
9854     AC_PATH_PROG(XMLLINT, xmllint, no)
9855     if test "$XMLLINT" = "no"; then
9856         AC_MSG_ERROR([xmllint is required])
9857     fi
9858 else
9859     AC_MSG_RESULT([internal])
9860     SYSTEM_LIBXML=
9861     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9862     if test "$COM" = "MSC"; then
9863         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9864     fi
9865     if test "$COM" = "MSC"; then
9866         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9867     else
9868         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9869         if test "$DISABLE_DYNLOADING" = TRUE; then
9870             LIBXML_LIBS="$LIBXML_LIBS -lm"
9871         fi
9872     fi
9873     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9875 AC_SUBST(SYSTEM_LIBXML)
9876 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9877     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9879 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9880 AC_SUBST(LIBXML_CFLAGS)
9881 AC_SUBST(LIBXML_LIBS)
9882 AC_SUBST(XMLLINT)
9884 # =====================================================================
9885 # Checking for a Python interpreter with version >= 3.3.
9886 # Optionally user can pass an option to configure, i. e.
9887 # ./configure PYTHON=/usr/bin/python
9888 # =====================================================================
9889 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9890     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9891     # unless PYTHON is defined as above which allows 'system'
9892     enable_python=internal
9894 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9895     if test -n "$PYTHON"; then
9896         PYTHON_FOR_BUILD=$PYTHON
9897     else
9898         # This allows a lack of system python with no error, we use internal one in that case.
9899         AM_PATH_PYTHON([3.3],, [:])
9900         # Clean PYTHON_VERSION checked below if cross-compiling
9901         PYTHON_VERSION=""
9902         if test "$PYTHON" != ":"; then
9903             PYTHON_FOR_BUILD=$PYTHON
9904         fi
9905     fi
9908 # Checks for Python to use for Pyuno
9909 AC_MSG_CHECKING([which Python to use for Pyuno])
9910 case "$enable_python" in
9911 no|disable)
9912     if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9913         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9914         # requirement from the choice whether to include Python stuff in the installer, but why
9915         # bother?
9916         AC_MSG_ERROR([Python is required at build time.])
9917     fi
9918     enable_python=no
9919     AC_MSG_RESULT([none])
9920     ;;
9921 ""|yes|auto)
9922     if test "$DISABLE_SCRIPTING" = TRUE; then
9923         if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9924             AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9925         fi
9926         AC_MSG_RESULT([none, overridden by --disable-scripting])
9927         enable_python=no
9928     elif test $build_os = cygwin -o $build_os = wsl; then
9929         dnl When building on Windows we don't attempt to use any installed
9930         dnl "system"  Python.
9931         AC_MSG_RESULT([fully internal])
9932         enable_python=internal
9933     elif test "$cross_compiling" = yes; then
9934         AC_MSG_RESULT([system])
9935         enable_python=system
9936     else
9937         # Unset variables set by the above AM_PATH_PYTHON so that
9938         # we actually do check anew.
9939         AC_MSG_RESULT([])
9940         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
9941         AM_PATH_PYTHON([3.3],, [:])
9942         AC_MSG_CHECKING([which Python to use for Pyuno])
9943         if test "$PYTHON" = ":"; then
9944             if test -z "$PYTHON_FOR_BUILD"; then
9945                 AC_MSG_RESULT([fully internal])
9946             else
9947                 AC_MSG_RESULT([internal])
9948             fi
9949             enable_python=internal
9950         else
9951             AC_MSG_RESULT([system])
9952             enable_python=system
9953         fi
9954     fi
9955     ;;
9956 internal)
9957     AC_MSG_RESULT([internal])
9958     ;;
9959 fully-internal)
9960     AC_MSG_RESULT([fully internal])
9961     enable_python=internal
9962     ;;
9963 system)
9964     AC_MSG_RESULT([system])
9965     if test "$_os" = Darwin -a -z "$PYTHON"; then
9966         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9967     fi
9968     ;;
9970     AC_MSG_ERROR([Incorrect --enable-python option])
9971     ;;
9972 esac
9974 if test $enable_python != no; then
9975     BUILD_TYPE="$BUILD_TYPE PYUNO"
9978 if test $enable_python = system; then
9979     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9980         # Fallback: Accept these in the environment, or as set above
9981         # for MacOSX.
9982         :
9983     elif test "$cross_compiling" != yes; then
9984         # Unset variables set by the above AM_PATH_PYTHON so that
9985         # we actually do check anew.
9986         unset PYTHON am_cv_pathless_PYTHON ac_cv_path_PYTHON am_cv_python_version am_cv_python_platform am_cv_python_pythondir am_cv_python_pyexecdir
9987         # This causes an error if no python command is found
9988         AM_PATH_PYTHON([3.3])
9989         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9990         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9991         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9992         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9993         if test -z "$PKG_CONFIG"; then
9994             PYTHON_CFLAGS="-I$python_include"
9995             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9996         elif $PKG_CONFIG --exists python-$python_version-embed; then
9997             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9998             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9999         elif $PKG_CONFIG --exists python-$python_version; then
10000             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
10001             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
10002         else
10003             PYTHON_CFLAGS="-I$python_include"
10004             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
10005         fi
10006         FilterLibs "${PYTHON_LIBS}"
10007         PYTHON_LIBS="${filteredlibs}"
10008     else
10009         dnl How to find out the cross-compilation Python installation path?
10010         AC_MSG_CHECKING([for python version])
10011         AS_IF([test -n "$PYTHON_VERSION"],
10012               [AC_MSG_RESULT([$PYTHON_VERSION])],
10013               [AC_MSG_RESULT([not found])
10014                AC_MSG_ERROR([no usable python found])])
10015         test -n "$PYTHON_CFLAGS" && break
10016     fi
10018     dnl Check if the headers really work
10019     save_CPPFLAGS="$CPPFLAGS"
10020     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
10021     AC_CHECK_HEADER(Python.h)
10022     CPPFLAGS="$save_CPPFLAGS"
10024     # let the PYTHON_FOR_BUILD match the same python installation that
10025     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
10026     # better for PythonTests.
10027     PYTHON_FOR_BUILD=$PYTHON
10030 if test "$with_lxml" != no; then
10031     if test -z "$PYTHON_FOR_BUILD"; then
10032         case $build_os in
10033             cygwin)
10034                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
10035                 ;;
10036             *)
10037                 if test "$cross_compiling" != yes ; then
10038                     BUILD_TYPE="$BUILD_TYPE LXML"
10039                 fi
10040                 ;;
10041         esac
10042     else
10043         AC_MSG_CHECKING([for python lxml])
10044         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
10045             AC_MSG_RESULT([yes])
10046         else
10047             case $build_os in
10048                 cygwin)
10049                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
10050                     ;;
10051                 *)
10052                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
10053                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
10054                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
10055                         else
10056                             BUILD_TYPE="$BUILD_TYPE LXML"
10057                             AC_MSG_RESULT([no, using internal lxml])
10058                         fi
10059                     else
10060                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
10061                     fi
10062                     ;;
10063             esac
10064         fi
10065     fi
10068 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10069     SYSTEM_PYTHON=
10070     PYTHON_VERSION_MAJOR=3
10071     PYTHON_VERSION_MINOR=8
10072     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.19
10073     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
10074         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
10075     fi
10076     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10078     # Embedded Python dies without Home set
10079     if test "$HOME" = ""; then
10080         export HOME=""
10081     fi
10084 dnl By now enable_python should be "system", "internal" or "no"
10085 case $enable_python in
10086 system)
10087     SYSTEM_PYTHON=TRUE
10089     if test "x$ac_cv_header_Python_h" != "xyes"; then
10090        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10091     fi
10093     AC_LANG_PUSH(C)
10094     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10095     AC_MSG_CHECKING([for correct python library version])
10096        AC_RUN_IFELSE([AC_LANG_SOURCE([[
10097 #include <Python.h>
10099 int main(int argc, char **argv) {
10100    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10101    else return 1;
10103        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10104     AC_LANG_POP(C)
10106     dnl FIXME Check if the Python library can be linked with, too?
10107     ;;
10109 internal)
10110     BUILD_TYPE="$BUILD_TYPE PYTHON"
10111     if test "$OS" = LINUX -o "$OS" = WNT ; then
10112         BUILD_TYPE="$BUILD_TYPE LIBFFI"
10113     fi
10114     ;;
10116     DISABLE_PYTHON=TRUE
10117     SYSTEM_PYTHON=
10118     ;;
10120     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10121     ;;
10122 esac
10124 AC_SUBST(DISABLE_PYTHON)
10125 AC_SUBST(SYSTEM_PYTHON)
10126 AC_SUBST(PYTHON_CFLAGS)
10127 AC_SUBST(PYTHON_FOR_BUILD)
10128 AC_SUBST(PYTHON_LIBS)
10129 AC_SUBST(PYTHON_VERSION)
10130 AC_SUBST(PYTHON_VERSION_MAJOR)
10131 AC_SUBST(PYTHON_VERSION_MINOR)
10133 AC_MSG_CHECKING([whether to build LibreLogo])
10134 case "$enable_python" in
10135 no|disable)
10136     AC_MSG_RESULT([no; Python disabled])
10137     ;;
10139     if test "${enable_librelogo}" = "no"; then
10140         AC_MSG_RESULT([no])
10141     else
10142         AC_MSG_RESULT([yes])
10143         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10144         AC_DEFINE([ENABLE_LIBRELOGO],1)
10145     fi
10146     ;;
10147 esac
10148 AC_SUBST(ENABLE_LIBRELOGO)
10150 ENABLE_MARIADBC=
10151 MARIADBC_MAJOR=1
10152 MARIADBC_MINOR=0
10153 MARIADBC_MICRO=2
10154 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10155 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10156     ENABLE_MARIADBC=TRUE
10157     AC_MSG_RESULT([yes])
10158     BUILD_TYPE="$BUILD_TYPE MARIADBC"
10159 else
10160     AC_MSG_RESULT([no])
10162 AC_SUBST(ENABLE_MARIADBC)
10163 AC_SUBST(MARIADBC_MAJOR)
10164 AC_SUBST(MARIADBC_MINOR)
10165 AC_SUBST(MARIADBC_MICRO)
10167 if test "$ENABLE_MARIADBC" = "TRUE"; then
10168     dnl ===================================================================
10169     dnl Check for system MariaDB
10170     dnl ===================================================================
10171     AC_MSG_CHECKING([which MariaDB to use])
10172     if test "$with_system_mariadb" = "yes"; then
10173         AC_MSG_RESULT([external])
10174         SYSTEM_MARIADB_CONNECTOR_C=TRUE
10175         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10176         if test -z "$MARIADBCONFIG"; then
10177             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10178             if test -z "$MARIADBCONFIG"; then
10179                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10180                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10181             fi
10182         fi
10183         AC_MSG_CHECKING([MariaDB version])
10184         MARIADB_VERSION=`$MARIADBCONFIG --version`
10185         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10186         if test "$MARIADB_MAJOR" -ge "5"; then
10187             AC_MSG_RESULT([OK])
10188         else
10189             AC_MSG_ERROR([too old, use 5.0.x or later])
10190         fi
10191         AC_MSG_CHECKING([for MariaDB Client library])
10192         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10193         if test "$COM_IS_CLANG" = TRUE; then
10194             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10195         fi
10196         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10197         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10198         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10199         dnl linux32:
10200         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10201             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10202             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10203                 | sed -e 's|/lib64/|/lib/|')
10204         fi
10205         FilterLibs "${MARIADB_LIBS}"
10206         MARIADB_LIBS="${filteredlibs}"
10207         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10208         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10209         if test "$enable_bundle_mariadb" = "yes"; then
10210             AC_MSG_RESULT([yes])
10211             BUNDLE_MARIADB_CONNECTOR_C=TRUE
10212             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10214 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10216 /g' | grep -E '(mysqlclient|mariadb)')
10217             if test "$_os" = "Darwin"; then
10218                 LIBMARIADB=${LIBMARIADB}.dylib
10219             elif test "$_os" = "WINNT"; then
10220                 LIBMARIADB=${LIBMARIADB}.dll
10221             else
10222                 LIBMARIADB=${LIBMARIADB}.so
10223             fi
10224             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10225             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10226             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10227                 AC_MSG_RESULT([found.])
10228                 PathFormat "$LIBMARIADB_PATH"
10229                 LIBMARIADB_PATH="$formatted_path"
10230             else
10231                 AC_MSG_ERROR([not found.])
10232             fi
10233         else
10234             AC_MSG_RESULT([no])
10235             BUNDLE_MARIADB_CONNECTOR_C=
10236         fi
10237     else
10238         AC_MSG_RESULT([internal])
10239         SYSTEM_MARIADB_CONNECTOR_C=
10240         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10241         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10242         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10243     fi
10245     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10246     AC_SUBST(MARIADB_CFLAGS)
10247     AC_SUBST(MARIADB_LIBS)
10248     AC_SUBST(LIBMARIADB)
10249     AC_SUBST(LIBMARIADB_PATH)
10250     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10253 dnl ===================================================================
10254 dnl Check for system hsqldb
10255 dnl ===================================================================
10256 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10257     AC_MSG_CHECKING([which hsqldb to use])
10258     if test "$with_system_hsqldb" = "yes"; then
10259         AC_MSG_RESULT([external])
10260         SYSTEM_HSQLDB=TRUE
10261         if test -z $HSQLDB_JAR; then
10262             HSQLDB_JAR=/usr/share/java/hsqldb.jar
10263         fi
10264         if ! test -f $HSQLDB_JAR; then
10265                AC_MSG_ERROR(hsqldb.jar not found.)
10266         fi
10267         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10268         export HSQLDB_JAR
10269         if $PERL -e \
10270            'use Archive::Zip;
10271             my $file = "$ENV{'HSQLDB_JAR'}";
10272             my $zip = Archive::Zip->new( $file );
10273             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10274             if ( $mf =~ m/Specification-Version: 1.8.*/ )
10275             {
10276                 push @l, split(/\n/, $mf);
10277                 foreach my $line (@l)
10278                 {
10279                     if ($line =~ m/Specification-Version:/)
10280                     {
10281                         ($t, $version) = split (/:/,$line);
10282                         $version =~ s/^\s//;
10283                         ($a, $b, $c, $d) = split (/\./,$version);
10284                         if ($c == "0" && $d > "8")
10285                         {
10286                             exit 0;
10287                         }
10288                         else
10289                         {
10290                             exit 1;
10291                         }
10292                     }
10293                 }
10294             }
10295             else
10296             {
10297                 exit 1;
10298             }'; then
10299             AC_MSG_RESULT([yes])
10300         else
10301             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10302         fi
10303     else
10304         AC_MSG_RESULT([internal])
10305         SYSTEM_HSQLDB=
10306         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10307         NEED_ANT=TRUE
10308     fi
10309 else
10310     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10311         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10312     fi
10314 AC_SUBST(SYSTEM_HSQLDB)
10315 AC_SUBST(HSQLDB_JAR)
10317 dnl ===================================================================
10318 dnl Check for PostgreSQL stuff
10319 dnl ===================================================================
10320 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10321 if test "x$enable_postgresql_sdbc" != "xno"; then
10322     AC_MSG_RESULT([yes])
10323     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10325     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10326         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10327     fi
10328     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10329         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10330     fi
10332     postgres_interface=""
10333     if test "$with_system_postgresql" = "yes"; then
10334         postgres_interface="external PostgreSQL"
10335         SYSTEM_POSTGRESQL=TRUE
10336         if test "$_os" = Darwin; then
10337             supp_path=''
10338             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10339                 pg_supp_path="$P_SEP$d$pg_supp_path"
10340             done
10341         fi
10342         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10343         if test -n "$PGCONFIG"; then
10344             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10345             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10346         else
10347             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10348               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10349               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10350             ],[
10351               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10352             ])
10353         fi
10354         FilterLibs "${POSTGRESQL_LIB}"
10355         POSTGRESQL_LIB="${filteredlibs}"
10356     else
10357         # if/when anything else than PostgreSQL uses Kerberos,
10358         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10359         WITH_KRB5=
10360         WITH_GSSAPI=
10361         case "$_os" in
10362         Darwin)
10363             # macOS has system MIT Kerberos 5 since 10.4
10364             if test "$with_krb5" != "no"; then
10365                 WITH_KRB5=TRUE
10366                 save_LIBS=$LIBS
10367                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10368                 # that the libraries where these functions are located on macOS will change, is it?
10369                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10370                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10371                 KRB5_LIBS=$LIBS
10372                 LIBS=$save_LIBS
10373                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10374                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10375                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10376                 LIBS=$save_LIBS
10377             fi
10378             if test "$with_gssapi" != "no"; then
10379                 WITH_GSSAPI=TRUE
10380                 save_LIBS=$LIBS
10381                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10382                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10383                 GSSAPI_LIBS=$LIBS
10384                 LIBS=$save_LIBS
10385             fi
10386             ;;
10387         WINNT)
10388             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10389                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10390             fi
10391             ;;
10392         Linux|GNU|*BSD|DragonFly)
10393             if test "$with_krb5" != "no"; then
10394                 WITH_KRB5=TRUE
10395                 save_LIBS=$LIBS
10396                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10397                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10398                 KRB5_LIBS=$LIBS
10399                 LIBS=$save_LIBS
10400                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10401                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10402                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10403                 LIBS=$save_LIBS
10404             fi
10405             if test "$with_gssapi" != "no"; then
10406                 WITH_GSSAPI=TRUE
10407                 save_LIBS=$LIBS
10408                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10409                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10410                 GSSAPI_LIBS=$LIBS
10411                 LIBS=$save_LIBS
10412             fi
10413             ;;
10414         *)
10415             if test "$with_krb5" = "yes"; then
10416                 WITH_KRB5=TRUE
10417                 save_LIBS=$LIBS
10418                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10419                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10420                 KRB5_LIBS=$LIBS
10421                 LIBS=$save_LIBS
10422                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10423                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10424                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10425                 LIBS=$save_LIBS
10426             fi
10427             if test "$with_gssapi" = "yes"; then
10428                 WITH_GSSAPI=TRUE
10429                 save_LIBS=$LIBS
10430                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10431                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10432                 LIBS=$save_LIBS
10433                 GSSAPI_LIBS=$LIBS
10434             fi
10435         esac
10437         if test -n "$with_libpq_path"; then
10438             SYSTEM_POSTGRESQL=TRUE
10439             postgres_interface="external libpq"
10440             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10441             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10442         else
10443             SYSTEM_POSTGRESQL=
10444             postgres_interface="internal"
10445             POSTGRESQL_LIB=""
10446             POSTGRESQL_INC="%OVERRIDE_ME%"
10447             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10448         fi
10449     fi
10451     AC_MSG_CHECKING([PostgreSQL C interface])
10452     AC_MSG_RESULT([$postgres_interface])
10454     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10455         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10456         save_CFLAGS=$CFLAGS
10457         save_CPPFLAGS=$CPPFLAGS
10458         save_LIBS=$LIBS
10459         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10460         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10461         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10462         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10463             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10464         CFLAGS=$save_CFLAGS
10465         CPPFLAGS=$save_CPPFLAGS
10466         LIBS=$save_LIBS
10467     fi
10468     BUILD_POSTGRESQL_SDBC=TRUE
10469 else
10470     AC_MSG_RESULT([no])
10472 AC_SUBST(WITH_KRB5)
10473 AC_SUBST(WITH_GSSAPI)
10474 AC_SUBST(GSSAPI_LIBS)
10475 AC_SUBST(KRB5_LIBS)
10476 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10477 AC_SUBST(SYSTEM_POSTGRESQL)
10478 AC_SUBST(POSTGRESQL_INC)
10479 AC_SUBST(POSTGRESQL_LIB)
10481 dnl ===================================================================
10482 dnl Check for Firebird stuff
10483 dnl ===================================================================
10484 ENABLE_FIREBIRD_SDBC=
10485 if test "$enable_firebird_sdbc" = "yes" ; then
10486     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10488     dnl ===================================================================
10489     dnl Check for system Firebird
10490     dnl ===================================================================
10491     AC_MSG_CHECKING([which Firebird to use])
10492     if test "$with_system_firebird" = "yes"; then
10493         AC_MSG_RESULT([external])
10494         SYSTEM_FIREBIRD=TRUE
10495         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10496         if test -z "$FIREBIRDCONFIG"; then
10497             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10498             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10499                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10500             ])
10501             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10502         else
10503             AC_MSG_NOTICE([fb_config found])
10504             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10505             AC_MSG_CHECKING([for Firebird Client library])
10506             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10507             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10508             FilterLibs "${FIREBIRD_LIBS}"
10509             FIREBIRD_LIBS="${filteredlibs}"
10510         fi
10511         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10512         AC_MSG_CHECKING([Firebird version])
10513         if test -n "${FIREBIRD_VERSION}"; then
10514             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10515             if test "$FIREBIRD_MAJOR" -ge "3"; then
10516                 AC_MSG_RESULT([OK])
10517             else
10518                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10519             fi
10520         else
10521             save_CFLAGS="${CFLAGS}"
10522             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10523             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10524 #if defined(FB_API_VER) && FB_API_VER == 30
10525 int fb_api_is_30(void) { return 0; }
10526 #else
10527 #error "Wrong Firebird API version"
10528 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10529             CFLAGS="$save_CFLAGS"
10530         fi
10531         ENABLE_FIREBIRD_SDBC=TRUE
10532         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10533     elif test "$enable_database_connectivity" = no; then
10534         AC_MSG_RESULT([none])
10535     elif test "$cross_compiling" = "yes"; then
10536         AC_MSG_RESULT([none])
10537     else
10538         dnl Embedded Firebird has version 3.0
10539         dnl We need libatomic_ops for any non X86/X64 system
10540         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10541             dnl ===================================================================
10542             dnl Check for system libatomic_ops
10543             dnl ===================================================================
10544             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10545             if test "$with_system_libatomic_ops" = "yes"; then
10546                 SYSTEM_LIBATOMIC_OPS=TRUE
10547                 AC_CHECK_HEADERS(atomic_ops.h, [],
10548                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10549             else
10550                 SYSTEM_LIBATOMIC_OPS=
10551                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10552                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10553                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10554             fi
10555         fi
10557         AC_MSG_RESULT([internal])
10558         SYSTEM_FIREBIRD=
10559         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10560         FIREBIRD_LIBS="-lfbclient"
10562         if test "$with_system_libtommath" = "yes"; then
10563             SYSTEM_LIBTOMMATH=TRUE
10564             dnl check for tommath presence
10565             save_LIBS=$LIBS
10566             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10567             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10568             LIBS=$save_LIBS
10569         else
10570             SYSTEM_LIBTOMMATH=
10571             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10572             LIBTOMMATH_LIBS="-ltommath"
10573             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10574         fi
10576         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10577         ENABLE_FIREBIRD_SDBC=TRUE
10578         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10579     fi
10581 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10582 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10583 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10584 AC_SUBST(LIBATOMIC_OPS_LIBS)
10585 AC_SUBST(SYSTEM_FIREBIRD)
10586 AC_SUBST(FIREBIRD_CFLAGS)
10587 AC_SUBST(FIREBIRD_LIBS)
10588 AC_SUBST(SYSTEM_LIBTOMMATH)
10589 AC_SUBST(LIBTOMMATH_CFLAGS)
10590 AC_SUBST(LIBTOMMATH_LIBS)
10592 dnl ===================================================================
10593 dnl Check for system curl
10594 dnl ===================================================================
10595 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10597 dnl ===================================================================
10598 dnl Check for system boost
10599 dnl ===================================================================
10600 AC_MSG_CHECKING([which boost to use])
10601 if test "$with_system_boost" = "yes"; then
10602     AC_MSG_RESULT([external])
10603     SYSTEM_BOOST=TRUE
10604     AX_BOOST_BASE([1.69],,[AC_MSG_ERROR([no suitable Boost found])])
10605     AX_BOOST_DATE_TIME
10606     AX_BOOST_FILESYSTEM
10607     AX_BOOST_IOSTREAMS
10608     AX_BOOST_LOCALE
10609     AC_LANG_PUSH([C++])
10610     save_CXXFLAGS=$CXXFLAGS
10611     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10612     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10613        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10614     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10615        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10616     CXXFLAGS=$save_CXXFLAGS
10617     AC_LANG_POP([C++])
10618     # this is in m4/ax_boost_base.m4
10619     FilterLibs "${BOOST_LDFLAGS}"
10620     BOOST_LDFLAGS="${filteredlibs}"
10621 else
10622     AC_MSG_RESULT([internal])
10623     BUILD_TYPE="$BUILD_TYPE BOOST"
10624     SYSTEM_BOOST=
10625     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10626         # use warning-suppressing wrapper headers
10627         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10628     else
10629         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10630     fi
10632 AC_SUBST(SYSTEM_BOOST)
10634 dnl ===================================================================
10635 dnl Check for system mdds
10636 dnl ===================================================================
10637 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10638 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.1 >= 2.1.0])
10640 dnl ===================================================================
10641 dnl Check for system dragonbox
10642 dnl ===================================================================
10643 AC_MSG_CHECKING([which dragonbox to use])
10644 if test "$with_system_dragonbox" = "yes"; then
10645     AC_MSG_RESULT([external])
10646     SYSTEM_DRAGONBOX=TRUE
10647     AC_LANG_PUSH([C++])
10648     save_CPPFLAGS=$CPPFLAGS
10649     # This is where upstream installs to, unfortunately no .pc or so...
10650     DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.1.3
10651     CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10652     AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10653        [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10654     AC_LANG_POP([C++])
10655     CPPFLAGS=$save_CPPFLAGS
10656 else
10657     AC_MSG_RESULT([internal])
10658     BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10659     SYSTEM_DRAGONBOX=
10661 AC_SUBST([SYSTEM_DRAGONBOX])
10662 AC_SUBST([DRAGONBOX_CFLAGS])
10664 dnl ===================================================================
10665 dnl Check for system frozen
10666 dnl ===================================================================
10667 AC_MSG_CHECKING([which frozen to use])
10668 if test "$with_system_frozen" = "yes"; then
10669     AC_MSG_RESULT([external])
10670     SYSTEM_FROZEN=TRUE
10671     AC_LANG_PUSH([C++])
10672     save_CPPFLAGS=$CPPFLAGS
10673     AC_CHECK_HEADER([frozen/unordered_map.h], [],
10674        [AC_MSG_ERROR([frozen/unordered_map.h not found. install frozen headers])], [])
10675     AC_LANG_POP([C++])
10676     CPPFLAGS=$save_CPPFLAGS
10677 else
10678     AC_MSG_RESULT([internal])
10679     BUILD_TYPE="$BUILD_TYPE FROZEN"
10680     SYSTEM_FROZEN=
10682 AC_SUBST([SYSTEM_FROZEN])
10683 AC_SUBST([FROZEN_CFLAGS])
10685 dnl ===================================================================
10686 dnl Check for system libfixmath
10687 dnl ===================================================================
10688 AC_MSG_CHECKING([which libfixmath to use])
10689 if test "$with_system_libfixmath" = "yes"; then
10690     AC_MSG_RESULT([external])
10691     SYSTEM_LIBFIXMATH=TRUE
10692     AC_LANG_PUSH([C++])
10693     AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10694        [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10695     AC_CHECK_LIB([libfixmath], [fix16_mul], [LIBFIXMATH_LIBS=-llibfixmath],
10696                  [AC_CHECK_LIB([fixmath], [fix16_mul], [LIBFIXMATH_LIBS=-lfixmath],
10697                                [AC_MSG_ERROR(libfixmath lib not found or functional)])])
10698     AC_LANG_POP([C++])
10699 else
10700     AC_MSG_RESULT([internal])
10701     SYSTEM_LIBFIXMATH=
10702     LIBFIXMATH_LIBS=
10704 AC_SUBST([SYSTEM_LIBFIXMATH])
10705 AC_SUBST([LIBFIXMATH_LIBS])
10707 dnl ===================================================================
10708 dnl Check for system glm
10709 dnl ===================================================================
10710 AC_MSG_CHECKING([which glm to use])
10711 if test "$with_system_glm" = "yes"; then
10712     AC_MSG_RESULT([external])
10713     SYSTEM_GLM=TRUE
10714     AC_LANG_PUSH([C++])
10715     AC_CHECK_HEADER([glm/glm.hpp], [],
10716        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10717     AC_LANG_POP([C++])
10718 else
10719     AC_MSG_RESULT([internal])
10720     BUILD_TYPE="$BUILD_TYPE GLM"
10721     SYSTEM_GLM=
10722     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10724 AC_SUBST([GLM_CFLAGS])
10725 AC_SUBST([SYSTEM_GLM])
10727 dnl ===================================================================
10728 dnl Check for system odbc
10729 dnl ===================================================================
10730 AC_MSG_CHECKING([which odbc headers to use])
10731 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
10732     AC_MSG_RESULT([external])
10733     SYSTEM_ODBC_HEADERS=TRUE
10735     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10736         save_CPPFLAGS=$CPPFLAGS
10737         find_winsdk
10738         PathFormat "$winsdktest"
10739         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"
10740         AC_CHECK_HEADER(sqlext.h, [],
10741             [AC_MSG_ERROR(odbc not found. install odbc)],
10742             [#include <windows.h>])
10743         CPPFLAGS=$save_CPPFLAGS
10744     else
10745         AC_CHECK_HEADER(sqlext.h, [],
10746             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10747     fi
10748 elif test "$enable_database_connectivity" = no; then
10749     AC_MSG_RESULT([none])
10750 else
10751     AC_MSG_RESULT([internal])
10752     SYSTEM_ODBC_HEADERS=
10754 AC_SUBST(SYSTEM_ODBC_HEADERS)
10756 dnl ===================================================================
10757 dnl Check for system NSS
10758 dnl ===================================================================
10759 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10760     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10761     AC_DEFINE(HAVE_FEATURE_NSS)
10762     ENABLE_NSS=TRUE
10763 elif test $_os != iOS -a "$enable_openssl" != "no"; then
10764     with_tls=openssl
10766 AC_SUBST(ENABLE_NSS)
10768 dnl ===================================================================
10769 dnl Enable LDAP support
10770 dnl ===================================================================
10772 if test "$test_openldap" = yes; then
10773     AC_MSG_CHECKING([whether to enable LDAP support])
10774     if test "$enable_ldap" = yes -a \( "$enable_openssl" = yes -o "$with_system_openldap" = yes \); then
10775         AC_MSG_RESULT([yes])
10776         ENABLE_LDAP=TRUE
10777     else
10778         if test "$enable_ldap" != "yes"; then
10779             AC_MSG_RESULT([no])
10780         else
10781             AC_MSG_RESULT([no (needs OPENSSL or system openldap)])
10782         fi
10783     fi
10785 dnl ===================================================================
10786 dnl Check for system openldap
10787 dnl ===================================================================
10789     if test "$ENABLE_LDAP" = TRUE; then
10790         AC_MSG_CHECKING([which openldap library to use])
10791         if test "$with_system_openldap" = yes; then
10792             AC_MSG_RESULT([external])
10793             SYSTEM_OPENLDAP=TRUE
10794             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10795             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10796             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10797         else
10798             AC_MSG_RESULT([internal])
10799             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10800         fi
10801     fi
10804 AC_SUBST(ENABLE_LDAP)
10805 AC_SUBST(SYSTEM_OPENLDAP)
10807 dnl ===================================================================
10808 dnl Check for TLS/SSL and cryptographic implementation to use
10809 dnl ===================================================================
10810 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10811 if test -n "$with_tls"; then
10812     case $with_tls in
10813     openssl)
10814         AC_DEFINE(USE_TLS_OPENSSL)
10815         TLS=OPENSSL
10816         AC_MSG_RESULT([$TLS])
10818         if test "$enable_openssl" != "yes"; then
10819             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10820         fi
10822         # warn that OpenSSL has been selected but not all TLS code has this option
10823         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10824         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10825         ;;
10826     nss)
10827         AC_DEFINE(USE_TLS_NSS)
10828         TLS=NSS
10829         AC_MSG_RESULT([$TLS])
10830         ;;
10831     no)
10832         AC_MSG_RESULT([none])
10833         AC_MSG_WARN([Skipping TLS/SSL])
10834         ;;
10835     *)
10836         AC_MSG_RESULT([])
10837         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10838 openssl - OpenSSL
10839 nss - Mozilla's Network Security Services (NSS)
10840     ])
10841         ;;
10842     esac
10843 else
10844     # default to using NSS, it results in smaller oox lib
10845     AC_DEFINE(USE_TLS_NSS)
10846     TLS=NSS
10847     AC_MSG_RESULT([$TLS])
10849 AC_SUBST(TLS)
10851 dnl ===================================================================
10852 dnl Check for system sane
10853 dnl ===================================================================
10854 AC_MSG_CHECKING([which sane header to use])
10855 if test "$with_system_sane" = "yes"; then
10856     AC_MSG_RESULT([external])
10857     AC_CHECK_HEADER(sane/sane.h, [],
10858       [AC_MSG_ERROR(sane not found. install sane)], [])
10859 else
10860     AC_MSG_RESULT([internal])
10861     BUILD_TYPE="$BUILD_TYPE SANE"
10864 dnl ===================================================================
10865 dnl Check for system icu
10866 dnl ===================================================================
10867 ICU_MAJOR=73
10868 ICU_MINOR=2
10869 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10870 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10871 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 66])
10872 if test "$SYSTEM_ICU" = TRUE; then
10873     AC_LANG_PUSH([C++])
10874     AC_MSG_CHECKING([for unicode/rbbi.h])
10875     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10876     AC_LANG_POP([C++])
10878     ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10879     ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10880     ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10882     if test "$CROSS_COMPILING" != TRUE; then
10883         # using the system icu tools can lead to version confusion, use the
10884         # ones from the build environment when cross-compiling
10885         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10886         if test -z "$SYSTEM_GENBRK"; then
10887             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10888         fi
10889         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10890         if test -z "$SYSTEM_GENCCODE"; then
10891             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10892         fi
10893         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10894         if test -z "$SYSTEM_GENCMN"; then
10895             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10896         fi
10897     fi
10900 AC_SUBST(SYSTEM_GENBRK)
10901 AC_SUBST(SYSTEM_GENCCODE)
10902 AC_SUBST(SYSTEM_GENCMN)
10903 AC_SUBST(ICU_MAJOR)
10904 AC_SUBST(ICU_MINOR)
10906 dnl ==================================================================
10907 dnl CURL
10908 dnl ==================================================================
10909 if test "$enable_curl" == "yes"; then
10910     AC_DEFINE([HAVE_FEATURE_CURL])
10913 dnl ==================================================================
10914 dnl Breakpad
10915 dnl ==================================================================
10916 DEFAULT_CRASHDUMP_VALUE="true"
10917 AC_MSG_CHECKING([whether to enable breakpad])
10918 if test "$enable_breakpad" != yes; then
10919     AC_MSG_RESULT([no])
10920 else
10921     if test "$enable_curl" != "yes"; then
10922         AC_MSG_ERROR([--disable-breakpad must be used when --disable-curl is used])
10923     fi
10924     AC_MSG_RESULT([yes])
10925     ENABLE_BREAKPAD="TRUE"
10926     AC_DEFINE(ENABLE_BREAKPAD)
10927     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10928     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10930     AC_MSG_CHECKING([for disable crash dump])
10931     if test "$enable_crashdump" = no; then
10932         DEFAULT_CRASHDUMP_VALUE="false"
10933         AC_MSG_RESULT([yes])
10934     else
10935        AC_MSG_RESULT([no])
10936     fi
10938     AC_MSG_CHECKING([for crashreport config])
10939     if test "$with_symbol_config" = "no"; then
10940         BREAKPAD_SYMBOL_CONFIG="invalid"
10941         AC_MSG_RESULT([no])
10942     else
10943         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10944         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10945         AC_MSG_RESULT([yes])
10946     fi
10947     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10949 AC_SUBST(ENABLE_BREAKPAD)
10950 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10952 dnl ==================================================================
10953 dnl libcmis
10954 dnl ==================================================================
10955 if test "$enable_libcmis" == "yes"; then
10956     if test "$enable_curl" != "yes"; then
10957         AC_MSG_ERROR([--disable-libcmis must be used when --disable-curl is used])
10958     fi
10961 dnl ===================================================================
10962 dnl Orcus
10963 dnl ===================================================================
10964 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.18 >= 0.19.1])
10965 if test "$with_system_orcus" != "yes"; then
10966     if test "$SYSTEM_BOOST" = "TRUE"; then
10967         dnl Link with Boost.System
10968         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10969         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10970         dnl in documentation has no effect.
10971         AX_BOOST_SYSTEM
10972     fi
10974 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10975 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10976 AC_SUBST([BOOST_SYSTEM_LIB])
10977 AC_SUBST(SYSTEM_LIBORCUS)
10979 dnl ===================================================================
10980 dnl HarfBuzz
10981 dnl ===================================================================
10982 harfbuzz_required_version=5.1.0
10984 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10985 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10986 case "$_os" in
10987     Linux)
10988         GRAPHITE_LIBS_internal="${WORKDIR}/LinkTarget/StaticLibrary/libgraphite.a"
10989         HARFBUZZ_LIBS_internal="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.a"
10990         ;;
10991     *)
10992         GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10993         HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10994         ;;
10995 esac
10996 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10997 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= $harfbuzz_required_version])
10999 if test "$COM" = "MSC"; then # override the above
11000     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
11001     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
11004 if test "$with_system_harfbuzz" = "yes"; then
11005     if test "$with_system_graphite" = "no"; then
11006         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
11007     fi
11008     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
11009     save_LIBS="$LIBS"
11010     save_CFLAGS="$CFLAGS"
11011     LIBS="$LIBS $HARFBUZZ_LIBS"
11012     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
11013     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
11014     LIBS="$save_LIBS"
11015     CFLAGS="$save_CFLAGS"
11016 else
11017     if test "$with_system_graphite" = "yes"; then
11018         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
11019     fi
11022 if test "$USING_X11" = TRUE; then
11023     AC_PATH_X
11024     AC_PATH_XTRA
11025     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
11027     if test -z "$x_includes"; then
11028         x_includes="default_x_includes"
11029     fi
11030     if test -z "$x_libraries"; then
11031         x_libraries="default_x_libraries"
11032     fi
11033     CFLAGS="$CFLAGS $X_CFLAGS"
11034     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
11035     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
11036 else
11037     x_includes="no_x_includes"
11038     x_libraries="no_x_libraries"
11041 if test "$USING_X11" = TRUE; then
11042     dnl ===================================================================
11043     dnl Check for extension headers
11044     dnl ===================================================================
11045     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
11046      [#include <X11/extensions/shape.h>])
11048     # vcl needs ICE and SM
11049     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
11050     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
11051         [AC_MSG_ERROR(ICE library not found)])
11052     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
11053     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
11054         [AC_MSG_ERROR(SM library not found)])
11057 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
11058     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
11059     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
11062 dnl ===================================================================
11063 dnl Check for system Xrender
11064 dnl ===================================================================
11065 AC_MSG_CHECKING([whether to use Xrender])
11066 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
11067     AC_MSG_RESULT([yes])
11068     PKG_CHECK_MODULES(XRENDER, xrender)
11069     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11070     FilterLibs "${XRENDER_LIBS}"
11071     XRENDER_LIBS="${filteredlibs}"
11072     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
11073       [AC_MSG_ERROR(libXrender not found or functional)], [])
11074     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
11075       [AC_MSG_ERROR(Xrender not found. install X)], [])
11076 else
11077     AC_MSG_RESULT([no])
11079 AC_SUBST(XRENDER_CFLAGS)
11080 AC_SUBST(XRENDER_LIBS)
11082 dnl ===================================================================
11083 dnl Check for XRandr
11084 dnl ===================================================================
11085 AC_MSG_CHECKING([whether to enable RandR support])
11086 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11087     AC_MSG_RESULT([yes])
11088     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11089     if test "$ENABLE_RANDR" != "TRUE"; then
11090         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11091                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11092         XRANDR_CFLAGS=" "
11093         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11094           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11095         XRANDR_LIBS="-lXrandr "
11096         ENABLE_RANDR="TRUE"
11097     fi
11098     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11099     FilterLibs "${XRANDR_LIBS}"
11100     XRANDR_LIBS="${filteredlibs}"
11101 else
11102     ENABLE_RANDR=""
11103     AC_MSG_RESULT([no])
11105 AC_SUBST(XRANDR_CFLAGS)
11106 AC_SUBST(XRANDR_LIBS)
11107 AC_SUBST(ENABLE_RANDR)
11109 if test -z "$with_webdav"; then
11110     with_webdav=$test_webdav
11113 AC_MSG_CHECKING([for WebDAV support])
11114 case "$with_webdav" in
11116     AC_MSG_RESULT([no])
11117     WITH_WEBDAV=""
11118     ;;
11120     AC_MSG_RESULT([yes])
11121     # curl is already mandatory (almost) and checked elsewhere
11122     if test "$enable_curl" = "no"; then
11123         AC_MSG_ERROR(["--without-webdav must be used when --disable-curl is used"])
11124     fi
11125     WITH_WEBDAV=TRUE
11126     ;;
11127 esac
11128 AC_SUBST(WITH_WEBDAV)
11130 dnl ===================================================================
11131 dnl Check for disabling cve_tests
11132 dnl ===================================================================
11133 AC_MSG_CHECKING([whether to execute CVE tests])
11134 if test "$enable_cve_tests" = "no"; then
11135     AC_MSG_RESULT([no])
11136     DISABLE_CVE_TESTS=TRUE
11137     AC_SUBST(DISABLE_CVE_TESTS)
11138 else
11139     AC_MSG_RESULT([yes])
11142 dnl ===================================================================
11143 dnl Check for system openssl
11144 dnl ===================================================================
11145 ENABLE_OPENSSL=
11146 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11147 if test "$enable_openssl" = "yes"; then
11148     AC_MSG_RESULT([no])
11149     ENABLE_OPENSSL=TRUE
11150     if test "$_os" = Darwin ; then
11151         # OpenSSL is deprecated when building for 10.7 or later.
11152         #
11153         # https://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11154         # https://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11156         with_system_openssl=no
11157         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11158     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11159             && test "$with_system_openssl" != "no"; then
11160         with_system_openssl=yes
11161         SYSTEM_OPENSSL=TRUE
11162         OPENSSL_CFLAGS=
11163         OPENSSL_LIBS="-lssl -lcrypto"
11164     else
11165         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11166         if test -n "${SYSTEM_OPENSSL}"; then
11167             AC_DEFINE([SYSTEM_OPENSSL])
11168         fi
11169     fi
11170     if test "$with_system_openssl" = "yes"; then
11171         AC_MSG_CHECKING([whether openssl supports SHA512])
11172         AC_LANG_PUSH([C])
11173         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11174             SHA512_CTX context;
11175 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11176         AC_LANG_POP(C)
11177     fi
11178 else
11179     AC_MSG_RESULT([yes])
11181     # warn that although OpenSSL is disabled, system libraries may depend on it
11182     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11183     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11186 AC_SUBST([ENABLE_OPENSSL])
11188 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11189     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11190         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11191         enable_cipher_openssl_backend=no
11192     else
11193         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11194     fi
11196 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11197 ENABLE_CIPHER_OPENSSL_BACKEND=
11198 if test "$enable_cipher_openssl_backend" = yes; then
11199     AC_MSG_RESULT([yes])
11200     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11201 else
11202     AC_MSG_RESULT([no])
11204 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11206 dnl ===================================================================
11207 dnl Select the crypto backends used by LO
11208 dnl ===================================================================
11210 if test "$build_crypto" = yes; then
11211     if test "$OS" = WNT; then
11212         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11213         AC_DEFINE([USE_CRYPTO_MSCAPI])
11214     elif test "$ENABLE_NSS" = TRUE; then
11215         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11216         AC_DEFINE([USE_CRYPTO_NSS])
11217     fi
11220 ARGON2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/argon2/include"
11221 if test "$COM" = "MSC"; then
11222     ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/vs2015/build/Argon2OptDll.lib"
11223 else
11224     ARGON2_LIBS_internal="${WORKDIR}/UnpackedTarball/argon2/libargon2.a"
11226 libo_CHECK_SYSTEM_MODULE([argon2],[ARGON2],[libargon2])
11228 dnl ===================================================================
11229 dnl Check for system redland
11230 dnl ===================================================================
11231 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11232 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11233 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11234 if test "$with_system_redland" = "yes"; then
11235     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11236             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11237 else
11238     RAPTOR_MAJOR="0"
11239     RASQAL_MAJOR="3"
11240     REDLAND_MAJOR="0"
11242 AC_SUBST(RAPTOR_MAJOR)
11243 AC_SUBST(RASQAL_MAJOR)
11244 AC_SUBST(REDLAND_MAJOR)
11246 dnl ===================================================================
11247 dnl Check for system hunspell
11248 dnl ===================================================================
11249 AC_MSG_CHECKING([which libhunspell to use])
11250 if test "$with_system_hunspell" = "yes"; then
11251     AC_MSG_RESULT([external])
11252     SYSTEM_HUNSPELL=TRUE
11253     AC_LANG_PUSH([C++])
11254     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11255     if test "$HUNSPELL_PC" != "TRUE"; then
11256         AC_CHECK_HEADER(hunspell.hxx, [],
11257             [
11258             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11259             [AC_MSG_ERROR(hunspell headers not found.)], [])
11260             ], [])
11261         AC_CHECK_LIB([hunspell], [main], [:],
11262            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11263         HUNSPELL_LIBS=-lhunspell
11264     fi
11265     AC_LANG_POP([C++])
11266     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11267     FilterLibs "${HUNSPELL_LIBS}"
11268     HUNSPELL_LIBS="${filteredlibs}"
11269 else
11270     AC_MSG_RESULT([internal])
11271     SYSTEM_HUNSPELL=
11272     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11273     if test "$COM" = "MSC"; then
11274         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11275     else
11276         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11277     fi
11278     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11280 AC_SUBST(SYSTEM_HUNSPELL)
11281 AC_SUBST(HUNSPELL_CFLAGS)
11282 AC_SUBST(HUNSPELL_LIBS)
11284 dnl ===================================================================
11285 dnl Check for system zxcvbn
11286 dnl ===================================================================
11287 AC_MSG_CHECKING([which zxcvbn to use])
11288 if test "$with_system_zxcvbn" = "yes"; then
11289     AC_MSG_RESULT([external])
11290     SYSTEM_ZXCVBN=TRUE
11291     AC_CHECK_HEADER(zxcvbn.h, [],
11292        [ AC_MSG_ERROR(zxcvbn headers not found.)], [])
11293     AC_CHECK_LIB(zxcvbn, ZxcvbnMatch, [],
11294         [ AC_MSG_ERROR(zxcvbn library not found.)], [])
11295 else
11296    AC_MSG_RESULT([internal])
11297    BUILD_TYPE="$BUILD_TYPE ZXCVBN"
11298    SYSTEM_ZXCVBN=
11300 AC_SUBST(SYSTEM_ZXCVBN)
11302 dnl ===================================================================
11303 dnl Check for system zxing
11304 dnl ===================================================================
11305 AC_MSG_CHECKING([whether to use zxing])
11306 if test "$enable_zxing" = "no"; then
11307     AC_MSG_RESULT([no])
11308     ENABLE_ZXING=
11309     SYSTEM_ZXING=
11310 else
11311     AC_MSG_RESULT([yes])
11312     ENABLE_ZXING=TRUE
11313     AC_MSG_CHECKING([which libzxing to use])
11314     if test "$with_system_zxing" = "yes"; then
11315         AC_MSG_RESULT([external])
11316         SYSTEM_ZXING=TRUE
11317         ZXING_CFLAGS=
11318         AC_LANG_PUSH([C++])
11319         save_CXXFLAGS=$CXXFLAGS
11320         save_IFS=$IFS
11321         IFS=$P_SEP
11322         for i in $CPLUS_INCLUDE_PATH /usr/include; do
11323             dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11324             dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11325             dnl unsetting follows the advice at <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11326             dnl a=commitdiff;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11327             dnl unsetting IFS."):
11328             IFS=$save_IFS
11329             dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11330             dnl ignore them here:
11331             if test -z "$i"; then
11332                 continue
11333             fi
11334             dnl TODO: White space in $i would cause problems:
11335             CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11336             AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11337                 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11338         done
11339         CXXFLAGS=$save_CXXFLAGS
11340         if test -z "$ZXING_CFLAGS"; then
11341             AC_MSG_ERROR(zxing headers not found.)
11342         fi
11343         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11344             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11345             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11346         AC_LANG_POP([C++])
11347         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11348         FilterLibs "${ZXING_LIBS}"
11349         ZXING_LIBS="${filteredlibs}"
11350     else
11351         AC_MSG_RESULT([internal])
11352         SYSTEM_ZXING=
11353         BUILD_TYPE="$BUILD_TYPE ZXING"
11354         ZXING_CFLAGS="-I${WORKDIR}/UnpackedTarball/zxing/core/src"
11355     fi
11356     if test "$ENABLE_ZXING" = TRUE; then
11357         AC_DEFINE(ENABLE_ZXING)
11358     fi
11359     AC_MSG_CHECKING([whether zxing::tosvg function is available])
11360     AC_LANG_PUSH([C++])
11361     save_CXXFLAGS=$CXXFLAGS
11362     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 $ZXING_CFLAGS"
11363     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11364             #include <BitMatrix.h>
11365             #include <BitMatrixIO.h>
11366             int main(){
11367                 ZXing::BitMatrix matrix(1, 1);
11368                 matrix.set(0, 0, true);
11369                 ZXing::ToSVG(matrix);
11370                 return 0;
11371             }
11372         ])], [
11373             AC_DEFINE([HAVE_ZXING_TOSVG],[1])
11374             AC_MSG_RESULT([yes])
11375         ], [AC_MSG_RESULT([no])])
11376     CXXFLAGS=$save_CXXFLAGS
11377     AC_LANG_POP([C++])
11378     AC_SUBST(HAVE_ZXING_TOSVG)
11380 AC_SUBST(SYSTEM_ZXING)
11381 AC_SUBST(ENABLE_ZXING)
11382 AC_SUBST(ZXING_CFLAGS)
11383 AC_SUBST(ZXING_LIBS)
11385 dnl ===================================================================
11386 dnl Check for system box2d
11387 dnl ===================================================================
11388 AC_MSG_CHECKING([which box2d to use])
11389 if test "$with_system_box2d" = "yes"; then
11390     AC_MSG_RESULT([external])
11391     SYSTEM_BOX2D=TRUE
11392     AC_LANG_PUSH([C++])
11393     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11394         [BOX2D_H_FOUND='FALSE'])
11395     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11396         _BOX2D_LIB=box2d
11397         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11398     else
11399         # fail this. there's no other alternative to check when we are here.
11400         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11401             [AC_MSG_ERROR(box2d headers not found.)])
11402         _BOX2D_LIB=Box2D
11403         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11404     fi
11405     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11406         [ AC_MSG_ERROR(box2d library not found.) ], [])
11407     BOX2D_LIBS=-l$_BOX2D_LIB
11408     AC_LANG_POP([C++])
11409     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11410     FilterLibs "${BOX2D_LIBS}"
11411     BOX2D_LIBS="${filteredlibs}"
11412 else
11413     AC_MSG_RESULT([internal])
11414     SYSTEM_BOX2D=
11415     BUILD_TYPE="$BUILD_TYPE BOX2D"
11417 AC_SUBST(SYSTEM_BOX2D)
11418 AC_SUBST(BOX2D_CFLAGS)
11419 AC_SUBST(BOX2D_LIBS)
11421 dnl ===================================================================
11422 dnl Checking for altlinuxhyph
11423 dnl ===================================================================
11424 AC_MSG_CHECKING([which altlinuxhyph to use])
11425 if test "$with_system_altlinuxhyph" = "yes"; then
11426     AC_MSG_RESULT([external])
11427     SYSTEM_HYPH=TRUE
11428     AC_CHECK_HEADER(hyphen.h, [],
11429        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11430     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11431        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11432        [#include <hyphen.h>])
11433     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11434         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11435     if test -z "$HYPHEN_LIB"; then
11436         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11437            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11438     fi
11439     if test -z "$HYPHEN_LIB"; then
11440         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11441            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11442     fi
11443 else
11444     AC_MSG_RESULT([internal])
11445     SYSTEM_HYPH=
11446     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11447     if test "$COM" = "MSC"; then
11448         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11449     else
11450         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11451     fi
11453 AC_SUBST(SYSTEM_HYPH)
11454 AC_SUBST(HYPHEN_LIB)
11456 dnl ===================================================================
11457 dnl Checking for mythes
11458 dnl ===================================================================
11459 AC_MSG_CHECKING([which mythes to use])
11460 if test "$with_system_mythes" = "yes"; then
11461     AC_MSG_RESULT([external])
11462     SYSTEM_MYTHES=TRUE
11463     AC_LANG_PUSH([C++])
11464     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11465     if test "$MYTHES_PKGCONFIG" = "no"; then
11466         AC_CHECK_HEADER(mythes.hxx, [],
11467             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11468         AC_CHECK_LIB([mythes-1.2], [main], [:],
11469             [ MYTHES_FOUND=no], [])
11470     if test "$MYTHES_FOUND" = "no"; then
11471         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11472                 [ MYTHES_FOUND=no], [])
11473     fi
11474     if test "$MYTHES_FOUND" = "no"; then
11475         AC_MSG_ERROR([mythes library not found!.])
11476     fi
11477     fi
11478     AC_LANG_POP([C++])
11479     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11480     FilterLibs "${MYTHES_LIBS}"
11481     MYTHES_LIBS="${filteredlibs}"
11482 else
11483     AC_MSG_RESULT([internal])
11484     SYSTEM_MYTHES=
11485     BUILD_TYPE="$BUILD_TYPE MYTHES"
11486     if test "$COM" = "MSC"; then
11487         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11488     else
11489         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11490     fi
11492 AC_SUBST(SYSTEM_MYTHES)
11493 AC_SUBST(MYTHES_CFLAGS)
11494 AC_SUBST(MYTHES_LIBS)
11496 dnl ===================================================================
11497 dnl How should we build the linear programming solver ?
11498 dnl ===================================================================
11500 ENABLE_COINMP=
11501 AC_MSG_CHECKING([whether to build with CoinMP])
11502 if test "$enable_coinmp" != "no"; then
11503     ENABLE_COINMP=TRUE
11504     AC_MSG_RESULT([yes])
11505     if test "$with_system_coinmp" = "yes"; then
11506         SYSTEM_COINMP=TRUE
11507         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11508         FilterLibs "${COINMP_LIBS}"
11509         COINMP_LIBS="${filteredlibs}"
11510     else
11511         BUILD_TYPE="$BUILD_TYPE COINMP"
11512     fi
11513 else
11514     AC_MSG_RESULT([no])
11516 AC_SUBST(ENABLE_COINMP)
11517 AC_SUBST(SYSTEM_COINMP)
11518 AC_SUBST(COINMP_CFLAGS)
11519 AC_SUBST(COINMP_LIBS)
11521 ENABLE_LPSOLVE=
11522 AC_MSG_CHECKING([whether to build with lpsolve])
11523 if test "$enable_lpsolve" != "no"; then
11524     ENABLE_LPSOLVE=TRUE
11525     AC_MSG_RESULT([yes])
11526 else
11527     AC_MSG_RESULT([no])
11529 AC_SUBST(ENABLE_LPSOLVE)
11531 if test "$ENABLE_LPSOLVE" = TRUE; then
11532     AC_MSG_CHECKING([which lpsolve to use])
11533     if test "$with_system_lpsolve" = "yes"; then
11534         AC_MSG_RESULT([external])
11535         SYSTEM_LPSOLVE=TRUE
11536         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11537            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11538         save_LIBS=$LIBS
11539         # some systems need this. Like Ubuntu...
11540         AC_CHECK_LIB(m, floor)
11541         AC_CHECK_LIB(dl, dlopen)
11542         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11543             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11544         LIBS=$save_LIBS
11545     else
11546         AC_MSG_RESULT([internal])
11547         SYSTEM_LPSOLVE=
11548         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11549     fi
11551 AC_SUBST(SYSTEM_LPSOLVE)
11553 dnl ===================================================================
11554 dnl Checking for libexttextcat
11555 dnl ===================================================================
11556 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11557 if test "$with_system_libexttextcat" = "yes"; then
11558     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11560 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11562 dnl ===================================================================
11563 dnl Checking for libnumbertext
11564 dnl ===================================================================
11565 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11566 if test "$with_system_libnumbertext" = "yes"; then
11567     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11568     SYSTEM_LIBNUMBERTEXT=YES
11569 else
11570     SYSTEM_LIBNUMBERTEXT=
11572 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11573 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11575 dnl ***************************************
11576 dnl testing libc version for Linux...
11577 dnl ***************************************
11578 if test "$_os" = "Linux"; then
11579     AC_MSG_CHECKING([whether the libc is recent enough])
11580     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11581     #include <features.h>
11582     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11583     #error glibc >= 2.1 is required
11584     #endif
11585     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11588 dnl =========================================
11589 dnl Check for uuidgen
11590 dnl =========================================
11591 if test "$_os" = "WINNT"; then
11592     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11593     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11594     UUIDGEN=uuidgen.exe
11595     AC_SUBST(UUIDGEN)
11596 else
11597     AC_PATH_PROG([UUIDGEN], [uuidgen])
11598     if test -z "$UUIDGEN"; then
11599         AC_MSG_WARN([uuid is needed for building installation sets])
11600     fi
11603 dnl ***************************************
11604 dnl Checking for bison and flex
11605 dnl ***************************************
11606 AC_PATH_PROG(BISON, bison)
11607 if test -z "$BISON"; then
11608     AC_MSG_ERROR([no bison found in \$PATH, install it])
11609 else
11610     AC_MSG_CHECKING([the bison version])
11611     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11612     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11613     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11614     dnl cause
11615     dnl
11616     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]
11617     dnl   typedef union YYSTYPE
11618     dnl           ~~~~~~^~~~~~~
11619     dnl
11620     dnl while at least 3.4.1 is know to be good:
11621     if test "$COMPILER_PLUGINS" = TRUE; then
11622         if test "$_bison_longver" -lt 2004; then
11623             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11624         fi
11625     else
11626         if test "$_bison_longver" -lt 2000; then
11627             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11628         fi
11629     fi
11631 AC_SUBST([BISON])
11633 AC_PATH_PROG(FLEX, flex)
11634 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11635     FLEX=`cygpath -m $FLEX`
11637 if test -z "$FLEX"; then
11638     AC_MSG_ERROR([no flex found in \$PATH, install it])
11639 else
11640     AC_MSG_CHECKING([the flex version])
11641     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11642     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11643         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11644     fi
11646 AC_SUBST([FLEX])
11648 AC_PATH_PROG(DIFF, diff)
11649 if test -z "$DIFF"; then
11650     AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11652 AC_SUBST([DIFF])
11654 AC_PATH_PROG(UNIQ, uniq)
11655 if test -z "$UNIQ"; then
11656     AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11658 AC_SUBST([UNIQ])
11660 dnl ***************************************
11661 dnl Checking for patch
11662 dnl ***************************************
11663 AC_PATH_PROG(PATCH, patch)
11664 if test -z "$PATCH"; then
11665     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11668 dnl On Solaris or macOS, check if --with-gnu-patch was used
11669 if test "$_os" = "SunOS" -o "$_os" = "Darwin" -o "$_os" = "FreeBSD"; then
11670     if test -z "$with_gnu_patch"; then
11671         GNUPATCH=$PATCH
11672     else
11673         if test -x "$with_gnu_patch"; then
11674             GNUPATCH=$with_gnu_patch
11675         else
11676             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11677         fi
11678     fi
11680     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11681     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11682         AC_MSG_RESULT([yes])
11683     else
11684         if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11685             AC_MSG_RESULT([no, but accepted (Apple patch)])
11686             add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11687         else
11688             AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11689         fi
11690     fi
11691 else
11692     GNUPATCH=$PATCH
11695 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11696     GNUPATCH=`cygpath -m $GNUPATCH`
11699 dnl We also need to check for --with-gnu-cp
11701 if test -z "$with_gnu_cp"; then
11702     # check the place where the good stuff is hidden on Solaris...
11703     if test -x /usr/gnu/bin/cp; then
11704         GNUCP=/usr/gnu/bin/cp
11705     else
11706         AC_PATH_PROGS(GNUCP, gnucp cp)
11707     fi
11708     if test -z $GNUCP; then
11709         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11710     fi
11711 else
11712     if test -x "$with_gnu_cp"; then
11713         GNUCP=$with_gnu_cp
11714     else
11715         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11716     fi
11719 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11720     GNUCP=`cygpath -m $GNUCP`
11723 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11724 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11725     AC_MSG_RESULT([yes])
11726 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11727     AC_MSG_RESULT([yes])
11728 else
11729     case "$build_os" in
11730     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*)
11731         x_GNUCP=[\#]
11732         GNUCP=''
11733         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11734         ;;
11735     *)
11736         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11737         ;;
11738     esac
11741 AC_SUBST(GNUPATCH)
11742 AC_SUBST(GNUCP)
11743 AC_SUBST(x_GNUCP)
11745 dnl ***************************************
11746 dnl testing assembler path
11747 dnl ***************************************
11748 ML_EXE=""
11749 if test "$_os" = "WINNT"; then
11750     case "$WIN_HOST_ARCH" in
11751     x86) assembler=ml.exe ;;
11752     x64) assembler=ml64.exe ;;
11753     arm64) assembler=armasm64.exe ;;
11754     esac
11756     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11757     if test -f "$MSVC_HOST_PATH/$assembler"; then
11758         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11759         AC_MSG_RESULT([$ML_EXE])
11760     else
11761         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11762     fi
11765 AC_SUBST(ML_EXE)
11767 dnl ===================================================================
11768 dnl We need zip and unzip
11769 dnl ===================================================================
11770 AC_PATH_PROG(ZIP, zip)
11771 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11772 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11773     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],,)
11776 AC_PATH_PROG(UNZIP, unzip)
11777 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11779 dnl ===================================================================
11780 dnl Zip must be a specific type for different build types.
11781 dnl ===================================================================
11782 if test $build_os = cygwin; then
11783     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11784         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11785     fi
11788 dnl ===================================================================
11789 dnl We need touch with -h option support.
11790 dnl ===================================================================
11791 AC_PATH_PROG(TOUCH, touch)
11792 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11793 touch "$WARNINGS_FILE"
11794 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11795     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],,)
11798 dnl ===================================================================
11799 dnl Check for system epoxy
11800 dnl ===================================================================
11801 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11802 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11804 dnl ===================================================================
11805 dnl Show which vclplugs will be built.
11806 dnl ===================================================================
11807 R=""
11809 libo_ENABLE_VCLPLUG([gen])
11810 libo_ENABLE_VCLPLUG([gtk3])
11811 libo_ENABLE_VCLPLUG([gtk3_kde5])
11812 libo_ENABLE_VCLPLUG([gtk4])
11813 libo_ENABLE_VCLPLUG([kf5])
11814 libo_ENABLE_VCLPLUG([kf6])
11815 libo_ENABLE_VCLPLUG([qt5])
11816 libo_ENABLE_VCLPLUG([qt6])
11818 if test "$_os" = "WINNT"; then
11819     R="$R win"
11820 elif test "$_os" = "Darwin"; then
11821     R="$R osx"
11822 elif test "$_os" = "iOS"; then
11823     R="ios"
11824 elif test "$_os" = Android; then
11825     R="android"
11828 build_vcl_plugins="$R"
11829 if test -z "$build_vcl_plugins"; then
11830     build_vcl_plugins=" none"
11832 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11833 VCL_PLUGIN_INFO=$R
11834 AC_SUBST([VCL_PLUGIN_INFO])
11836 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11837     AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11840 dnl ===================================================================
11841 dnl Check for GTK libraries
11842 dnl ===================================================================
11844 GTK3_CFLAGS=""
11845 GTK3_LIBS=""
11846 ENABLE_GTKTILEDVIEWER=""
11847 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11848     if test "$with_system_cairo" = no; then
11849         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.'
11850     fi
11851     : ${with_system_cairo:=yes}
11852     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)
11853     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11854     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11855     FilterLibs "${GTK3_LIBS}"
11856     GTK3_LIBS="${filteredlibs}"
11858     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11859     if test "$with_system_epoxy" != "yes"; then
11860         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11861         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11862                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11863     fi
11864 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11865     PathFormat "${with_gtk3_build}/lib/pkgconfig"
11866     if test "$build_os" = "cygwin"; then
11867         dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11868         formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11869     fi
11871     PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11872     PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11873     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11874     FilterLibs "${GTK3_LIBS}"
11875     GTK3_LIBS="${filteredlibs}"
11876     ENABLE_GTKTILEDVIEWER="yes"
11878 AC_SUBST(GTK3_LIBS)
11879 AC_SUBST(GTK3_CFLAGS)
11880 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11882 GTK4_CFLAGS=""
11883 GTK4_LIBS=""
11884 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11885     if test "$with_system_cairo" = no; then
11886         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11887     fi
11888     : ${with_system_cairo:=yes}
11889     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11890     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11891     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11892     FilterLibs "${GTK4_LIBS}"
11893     GTK4_LIBS="${filteredlibs}"
11895     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11896     if test "$with_system_epoxy" != "yes"; then
11897         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11898         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11899                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11900     fi
11902 AC_SUBST(GTK4_LIBS)
11903 AC_SUBST(GTK4_CFLAGS)
11905 if test "$enable_introspection" = yes; then
11906     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11907         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11908     else
11909         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11910     fi
11913 # AT-SPI2 tests require gtk3, xvfb-run, dbus-launch and atspi-2
11914 if ! test "$ENABLE_GTK3" = TRUE; then
11915     if test "$enable_atspi_tests" = yes; then
11916         AC_MSG_ERROR([--enable-atspi-tests requires --enable-gtk3])
11917     fi
11918     enable_atspi_tests=no
11920 if ! test "$enable_atspi_tests" = no; then
11921     AC_PATH_PROGS([XVFB_RUN], [xvfb-run], no)
11922     if ! test "$XVFB_RUN" = no; then
11923         dnl make sure the found xvfb-run actually works
11924         AC_MSG_CHECKING([whether $XVFB_RUN works...])
11925         if $XVFB_RUN --auto-servernum true >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
11926             AC_MSG_RESULT([yes])
11927         else
11928             AC_MSG_RESULT([no])
11929             XVFB_RUN=no
11930         fi
11931     fi
11932     if test "$XVFB_RUN" = no; then
11933         if test "$enable_atspi_tests" = yes; then
11934             AC_MSG_ERROR([xvfb-run required by --enable-atspi-tests not found])
11935         fi
11936         enable_atspi_tests=no
11937     fi
11939 if ! test "$enable_atspi_tests" = no; then
11940     AC_PATH_PROGS([DBUS_LAUNCH], [dbus-launch], no)
11941     if test "$DBUS_LAUNCH" = no; then
11942         if test "$enable_atspi_tests" = yes; then
11943             AC_MSG_ERROR([dbus-launch required by --enable-atspi-tests not found])
11944         fi
11945         enable_atspi_tests=no
11946     fi
11948 if ! test "$enable_atspi_tests" = no; then
11949     PKG_CHECK_MODULES([ATSPI2], [atspi-2 gobject-2.0],,
11950                       [if test "$enable_atspi_tests" = yes; then
11951                            AC_MSG_ERROR([$ATSPI2_PKG_ERRORS])
11952                        else
11953                            enable_atspi_tests=no
11954                        fi])
11956 if ! test "x$enable_atspi_tests" = xno; then
11957     PKG_CHECK_MODULES([ATSPI2_2_32], [atspi-2 >= 2.32],
11958                       [have_atspi_scroll_to=1],
11959                       [have_atspi_scroll_to=0])
11960     AC_DEFINE_UNQUOTED([HAVE_ATSPI2_SCROLL_TO], [$have_atspi_scroll_to],
11961                        [Whether AT-SPI2 has the scrollTo API])
11963 ENABLE_ATSPI_TESTS=
11964 test "$enable_atspi_tests" = no || ENABLE_ATSPI_TESTS=TRUE
11965 AC_SUBST([ENABLE_ATSPI_TESTS])
11967 dnl ===================================================================
11968 dnl check for dbus support
11969 dnl ===================================================================
11970 ENABLE_DBUS=""
11971 DBUS_CFLAGS=""
11972 DBUS_LIBS=""
11973 DBUS_GLIB_CFLAGS=""
11974 DBUS_GLIB_LIBS=""
11975 DBUS_HAVE_GLIB=""
11977 if test "$enable_dbus" = "no"; then
11978     test_dbus=no
11981 AC_MSG_CHECKING([whether to enable DBUS support])
11982 if test "$test_dbus" = "yes"; then
11983     ENABLE_DBUS="TRUE"
11984     AC_MSG_RESULT([yes])
11985     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11986     AC_DEFINE(ENABLE_DBUS)
11987     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11988     FilterLibs "${DBUS_LIBS}"
11989     DBUS_LIBS="${filteredlibs}"
11991     # Glib is needed for BluetoothServer
11992     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11993     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11994         [
11995             DBUS_HAVE_GLIB="TRUE"
11996             AC_DEFINE(DBUS_HAVE_GLIB,1)
11997         ],
11998         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11999     )
12000 else
12001     AC_MSG_RESULT([no])
12004 AC_SUBST(ENABLE_DBUS)
12005 AC_SUBST(DBUS_CFLAGS)
12006 AC_SUBST(DBUS_LIBS)
12007 AC_SUBST(DBUS_GLIB_CFLAGS)
12008 AC_SUBST(DBUS_GLIB_LIBS)
12009 AC_SUBST(DBUS_HAVE_GLIB)
12011 AC_MSG_CHECKING([whether to enable Impress remote control])
12012 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
12013     AC_MSG_RESULT([yes])
12014     ENABLE_SDREMOTE=TRUE
12015     SDREMOTE_ENTITLEMENT="      <key>com.apple.security.network.server</key>
12016         <true/>"
12017     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
12019     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
12020         # The Bluetooth code doesn't compile with macOS SDK 10.15
12021         if test "$enable_sdremote_bluetooth" = yes; then
12022             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
12023         fi
12024         add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
12025         enable_sdremote_bluetooth=no
12026     fi
12027     # If not explicitly enabled or disabled, default
12028     if test -z "$enable_sdremote_bluetooth"; then
12029         case "$OS" in
12030         LINUX|MACOSX|WNT)
12031             # Default to yes for these
12032             enable_sdremote_bluetooth=yes
12033             ;;
12034         *)
12035             # otherwise no
12036             enable_sdremote_bluetooth=no
12037             ;;
12038         esac
12039     fi
12040     # $enable_sdremote_bluetooth is guaranteed non-empty now
12042     if test "$enable_sdremote_bluetooth" != "no"; then
12043         if test "$OS" = "LINUX"; then
12044             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
12045                 AC_MSG_RESULT([yes])
12046                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
12047                 dnl ===================================================================
12048                 dnl Check for system bluez
12049                 dnl ===================================================================
12050                 AC_MSG_CHECKING([which Bluetooth header to use])
12051                 if test "$with_system_bluez" = "yes"; then
12052                     AC_MSG_RESULT([external])
12053                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
12054                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
12055                     SYSTEM_BLUEZ=TRUE
12056                 else
12057                     AC_MSG_RESULT([internal])
12058                     SYSTEM_BLUEZ=
12059                 fi
12060             else
12061                 AC_MSG_RESULT([no, dbus disabled])
12062                 ENABLE_SDREMOTE_BLUETOOTH=
12063                 SYSTEM_BLUEZ=
12064             fi
12065         else
12066             AC_MSG_RESULT([yes])
12067             ENABLE_SDREMOTE_BLUETOOTH=TRUE
12068             SYSTEM_BLUEZ=
12069             SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
12070         <key>com.apple.security.device.bluetooth</key>
12071         <true/>"
12072         fi
12073     else
12074         AC_MSG_RESULT([no])
12075         ENABLE_SDREMOTE_BLUETOOTH=
12076         SYSTEM_BLUEZ=
12077     fi
12078 else
12079     ENABLE_SDREMOTE=
12080     SYSTEM_BLUEZ=
12081     AC_MSG_RESULT([no])
12083 AC_SUBST(ENABLE_SDREMOTE)
12084 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
12085 AC_SUBST(SDREMOTE_ENTITLEMENT)
12086 AC_SUBST(SYSTEM_BLUEZ)
12088 dnl ===================================================================
12089 dnl Check whether to enable GIO support
12090 dnl ===================================================================
12091 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
12092     AC_MSG_CHECKING([whether to enable GIO support])
12093     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
12094         dnl Need at least 2.26 for the dbus support.
12095         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
12096                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
12097         if test "$ENABLE_GIO" = "TRUE"; then
12098             AC_DEFINE(ENABLE_GIO)
12099             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12100             FilterLibs "${GIO_LIBS}"
12101             GIO_LIBS="${filteredlibs}"
12102         fi
12103     else
12104         AC_MSG_RESULT([no])
12105     fi
12107 AC_SUBST(ENABLE_GIO)
12108 AC_SUBST(GIO_CFLAGS)
12109 AC_SUBST(GIO_LIBS)
12112 dnl ===================================================================
12114 SPLIT_APP_MODULES=""
12115 if test "$enable_split_app_modules" = "yes"; then
12116     SPLIT_APP_MODULES="TRUE"
12118 AC_SUBST(SPLIT_APP_MODULES)
12120 SPLIT_OPT_FEATURES=""
12121 if test "$enable_split_opt_features" = "yes"; then
12122     SPLIT_OPT_FEATURES="TRUE"
12124 AC_SUBST(SPLIT_OPT_FEATURES)
12126 dnl ===================================================================
12127 dnl Check whether the GStreamer libraries are available.
12128 dnl ===================================================================
12130 ENABLE_GSTREAMER_1_0=""
12132 if test "$test_gstreamer_1_0" = yes; then
12134     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
12135     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
12136         ENABLE_GSTREAMER_1_0="TRUE"
12137         AC_MSG_RESULT([yes])
12138         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
12139         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12140         FilterLibs "${GSTREAMER_1_0_LIBS}"
12141         GSTREAMER_1_0_LIBS="${filteredlibs}"
12142         AC_DEFINE(ENABLE_GSTREAMER_1_0)
12143     else
12144         AC_MSG_RESULT([no])
12145     fi
12147 AC_SUBST(GSTREAMER_1_0_CFLAGS)
12148 AC_SUBST(GSTREAMER_1_0_LIBS)
12149 AC_SUBST(ENABLE_GSTREAMER_1_0)
12151 ENABLE_OPENGL_TRANSITIONS=
12152 ENABLE_OPENGL_CANVAS=
12153 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
12154    : # disable
12155 elif test "$_os" = "Darwin"; then
12156     # We use frameworks on macOS, no need for detail checks
12157     ENABLE_OPENGL_TRANSITIONS=TRUE
12158     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12159     ENABLE_OPENGL_CANVAS=TRUE
12160 elif test $_os = WINNT; then
12161     ENABLE_OPENGL_TRANSITIONS=TRUE
12162     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12163     ENABLE_OPENGL_CANVAS=TRUE
12164 else
12165     if test "$USING_X11" = TRUE; then
12166         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12167         ENABLE_OPENGL_TRANSITIONS=TRUE
12168         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12169         ENABLE_OPENGL_CANVAS=TRUE
12170     fi
12173 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12174 AC_SUBST(ENABLE_OPENGL_CANVAS)
12176 dnl =================================================
12177 dnl Check whether to build with OpenCL support.
12178 dnl =================================================
12180 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12181     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12182     # platform (optional at run-time, used through clew).
12183     BUILD_TYPE="$BUILD_TYPE OPENCL"
12184     AC_DEFINE(HAVE_FEATURE_OPENCL)
12187 dnl =================================================
12188 dnl Check whether to build with dconf support.
12189 dnl =================================================
12191 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12192     PKG_CHECK_MODULES([DCONF], [dconf >= 0.40.0], [], [
12193         if test "$enable_dconf" = yes; then
12194             AC_MSG_ERROR([dconf not found])
12195         else
12196             enable_dconf=no
12197         fi])
12199 AC_MSG_CHECKING([whether to enable dconf])
12200 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12201     DCONF_CFLAGS=
12202     DCONF_LIBS=
12203     ENABLE_DCONF=
12204     AC_MSG_RESULT([no])
12205 else
12206     ENABLE_DCONF=TRUE
12207     AC_DEFINE(ENABLE_DCONF)
12208     AC_MSG_RESULT([yes])
12210 AC_SUBST([DCONF_CFLAGS])
12211 AC_SUBST([DCONF_LIBS])
12212 AC_SUBST([ENABLE_DCONF])
12214 # pdf import?
12215 AC_MSG_CHECKING([whether to build the PDF import feature])
12216 ENABLE_PDFIMPORT=
12217 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12218     AC_MSG_RESULT([yes])
12219     ENABLE_PDFIMPORT=TRUE
12220     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12221 else
12222     AC_MSG_RESULT([no])
12225 # Pdfium?
12226 AC_MSG_CHECKING([whether to build PDFium])
12227 ENABLE_PDFIUM=
12228 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12229     AC_MSG_RESULT([yes])
12230     ENABLE_PDFIUM=TRUE
12231     BUILD_TYPE="$BUILD_TYPE PDFIUM"
12232 else
12233     AC_MSG_RESULT([no])
12235 AC_SUBST(ENABLE_PDFIUM)
12237 if test "$ENABLE_PDFIUM" = "TRUE"; then
12238     AC_MSG_CHECKING([which OpenJPEG library to use])
12239     if test "$with_system_openjpeg" = "yes"; then
12240         SYSTEM_OPENJPEG2=TRUE
12241         AC_MSG_RESULT([external])
12242         PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12243         OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12244         FilterLibs "${OPENJPEG2_LIBS}"
12245         OPENJPEG2_LIBS="${filteredlibs}"
12246     else
12247         SYSTEM_OPENJPEG2=FALSE
12248         AC_MSG_RESULT([internal])
12249     fi
12251     AC_MSG_CHECKING([which Abseil library to use])
12252     if test "$with_system_abseil" = "yes"; then
12253         AC_MSG_RESULT([external])
12254         SYSTEM_ABSEIL=TRUE
12255         AC_LANG_PUSH([C++])
12256         PKG_CHECK_MODULES(ABSEIL, absl_bad_optional_access absl_bad_variant_access absl_inlined_vector )
12257         AC_LANG_POP([C++])
12258         ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12259         FilterLibs "${ABSEIL_LIBS}"
12260         ABSEIL_LIBS="${filteredlibs}"
12261     else
12262         AC_MSG_RESULT([internal])
12263     fi
12265 AC_SUBST(SYSTEM_OPENJPEG2)
12266 AC_SUBST(SYSTEM_ABSEIL)
12267 AC_SUBST(ABSEIL_CFLAGS)
12268 AC_SUBST(ABSEIL_LIBS)
12270 dnl ===================================================================
12271 dnl Check for poppler
12272 dnl ===================================================================
12273 ENABLE_POPPLER=
12274 AC_MSG_CHECKING([whether to build Poppler])
12275 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12276     AC_MSG_RESULT([yes])
12277     ENABLE_POPPLER=TRUE
12278     AC_DEFINE(HAVE_FEATURE_POPPLER)
12279 else
12280     AC_MSG_RESULT([no])
12282 AC_SUBST(ENABLE_POPPLER)
12284 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12285     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12288 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12289     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12292 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12293     dnl ===================================================================
12294     dnl Check for system poppler
12295     dnl ===================================================================
12296     AC_MSG_CHECKING([which PDF import poppler to use])
12297     if test "$with_system_poppler" = "yes"; then
12298         AC_MSG_RESULT([external])
12299         SYSTEM_POPPLER=TRUE
12300         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12301         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12302         FilterLibs "${POPPLER_LIBS}"
12303         POPPLER_LIBS="${filteredlibs}"
12304     else
12305         AC_MSG_RESULT([internal])
12306         SYSTEM_POPPLER=
12307         BUILD_TYPE="$BUILD_TYPE POPPLER"
12308     fi
12309     AC_DEFINE([ENABLE_PDFIMPORT],1)
12311 AC_SUBST(ENABLE_PDFIMPORT)
12312 AC_SUBST(SYSTEM_POPPLER)
12313 AC_SUBST(POPPLER_CFLAGS)
12314 AC_SUBST(POPPLER_LIBS)
12316 # Skia?
12317 ENABLE_SKIA=
12318 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12319     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12320     if test "$SYSTEM_FREETYPE" = TRUE; then
12321         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12322             [skia_freetype_ok=yes],
12323             [skia_freetype_ok=no])
12324     else # internal is ok
12325         skia_freetype_ok=yes
12326     fi
12327     AC_MSG_CHECKING([whether to build Skia])
12328     if test "$skia_freetype_ok" = "yes"; then
12329         if test "$enable_skia" = "debug"; then
12330             AC_MSG_RESULT([yes (debug)])
12331             ENABLE_SKIA_DEBUG=TRUE
12332         else
12333             AC_MSG_RESULT([yes])
12334             ENABLE_SKIA_DEBUG=
12335         fi
12336         ENABLE_SKIA=TRUE
12337         if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12338             AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12339         fi
12341         AC_DEFINE(HAVE_FEATURE_SKIA)
12342         BUILD_TYPE="$BUILD_TYPE SKIA"
12344         if test "$OS" = "MACOSX"; then
12345             AC_DEFINE(SK_GANESH,1)
12346             AC_DEFINE(SK_METAL,1)
12347             SKIA_GPU=METAL
12348             AC_SUBST(SKIA_GPU)
12349         else
12350             AC_DEFINE(SK_GANESH,1)
12351             AC_DEFINE(SK_VULKAN,1)
12352             SKIA_GPU=VULKAN
12353             AC_SUBST(SKIA_GPU)
12354         fi
12355     else
12356         AC_MSG_RESULT([no (freetype too old)])
12357         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12358     fi
12360 else
12361     AC_MSG_CHECKING([whether to build Skia])
12362     AC_MSG_RESULT([no])
12364 AC_SUBST(ENABLE_SKIA)
12365 AC_SUBST(ENABLE_SKIA_DEBUG)
12367 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12368 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12369 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12370 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12371 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12372 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12373 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12374 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12375 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12376 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12377 LO_CLANG_VERSION=
12378 HAVE_LO_CLANG_DLLEXPORTINLINES=
12380 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12381     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12382         AC_MSG_CHECKING([for Clang])
12383         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12384     else
12385         if test "$_os" = "WINNT"; then
12386             AC_MSG_CHECKING([for clang-cl])
12387             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12388                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12389             elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12390                 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12391             elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12392                 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12393             fi
12394             if test -n "$LO_CLANG_CC"; then
12395                 dnl explicitly set -m32/-m64
12396                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12397                 LO_CLANG_CXX="$LO_CLANG_CC"
12398                 AC_MSG_RESULT([$LO_CLANG_CC])
12399             else
12400                 AC_MSG_RESULT([no])
12401             fi
12403             AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12404             echo "#include <stdlib.h>" > conftest.c
12405             LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12406                 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12407             rm -f conftest.c conftest.obj
12408             if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12409                 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12410             else
12411                 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12412             fi
12413         else
12414             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12415             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12416         fi
12417     fi
12418     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12419         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12420         LO_CLANG_VERSION=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12421         if test "$LO_CLANG_VERSION" -lt 50002; then
12422             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12423             LO_CLANG_CC=
12424             LO_CLANG_CXX=
12425         fi
12426     fi
12427     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12428         save_CXX="$CXX"
12429         CXX="$LO_CLANG_CXX"
12430         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12431         AC_LANG_PUSH([C++])
12432         save_CXXFLAGS=$CXXFLAGS
12433         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12434         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12435                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12436                 AC_MSG_RESULT([yes])
12437             ], [AC_MSG_RESULT([no])])
12438         CXXFLAGS=$save_CXXFLAGS
12439         AC_LANG_POP([C++])
12440         CXX="$save_CXX"
12441         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12442             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.])
12443         fi
12444     fi
12445     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12446         # Skia is the default on Windows and Mac, so hard-require Clang.
12447         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12448         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12449             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12450         else
12451             AC_MSG_WARN([Clang compiler not found.])
12452         fi
12453     else
12455         save_CXX="$CXX"
12456         CXX="$LO_CLANG_CXX"
12457         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12458         flag_sse2=-msse2
12459         flag_ssse3=-mssse3
12460         flag_sse41=-msse4.1
12461         flag_sse42=-msse4.2
12462         flag_avx=-mavx
12463         flag_avx2=-mavx2
12464         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12465         flag_avx512f=-mavx512f
12466         flag_f16c=-mf16c
12467         flag_fma=-mfma
12469         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12470         AC_LANG_PUSH([C++])
12471         save_CXXFLAGS=$CXXFLAGS
12472         CXXFLAGS="$CXXFLAGS $flag_sse2"
12473         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12474             #include <emmintrin.h>
12475             int main () {
12476                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12477                 c = _mm_xor_si128 (a, b);
12478                 return 0;
12479             }
12480             ])],
12481             [can_compile_sse2=yes],
12482             [can_compile_sse2=no])
12483         AC_LANG_POP([C++])
12484         CXXFLAGS=$save_CXXFLAGS
12485         AC_MSG_RESULT([${can_compile_sse2}])
12486         if test "${can_compile_sse2}" = "yes" ; then
12487             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12488         fi
12490         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12491         AC_LANG_PUSH([C++])
12492         save_CXXFLAGS=$CXXFLAGS
12493         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12494         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12495             #include <tmmintrin.h>
12496             int main () {
12497                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12498                 c = _mm_maddubs_epi16 (a, b);
12499                 return 0;
12500             }
12501             ])],
12502             [can_compile_ssse3=yes],
12503             [can_compile_ssse3=no])
12504         AC_LANG_POP([C++])
12505         CXXFLAGS=$save_CXXFLAGS
12506         AC_MSG_RESULT([${can_compile_ssse3}])
12507         if test "${can_compile_ssse3}" = "yes" ; then
12508             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12509         fi
12511         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12512         AC_LANG_PUSH([C++])
12513         save_CXXFLAGS=$CXXFLAGS
12514         CXXFLAGS="$CXXFLAGS $flag_sse41"
12515         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12516             #include <smmintrin.h>
12517             int main () {
12518                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12519                 c = _mm_cmpeq_epi64 (a, b);
12520                 return 0;
12521             }
12522             ])],
12523             [can_compile_sse41=yes],
12524             [can_compile_sse41=no])
12525         AC_LANG_POP([C++])
12526         CXXFLAGS=$save_CXXFLAGS
12527         AC_MSG_RESULT([${can_compile_sse41}])
12528         if test "${can_compile_sse41}" = "yes" ; then
12529             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12530         fi
12532         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12533         AC_LANG_PUSH([C++])
12534         save_CXXFLAGS=$CXXFLAGS
12535         CXXFLAGS="$CXXFLAGS $flag_sse42"
12536         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12537             #include <nmmintrin.h>
12538             int main () {
12539                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12540                 c = _mm_cmpgt_epi64 (a, b);
12541                 return 0;
12542             }
12543             ])],
12544             [can_compile_sse42=yes],
12545             [can_compile_sse42=no])
12546         AC_LANG_POP([C++])
12547         CXXFLAGS=$save_CXXFLAGS
12548         AC_MSG_RESULT([${can_compile_sse42}])
12549         if test "${can_compile_sse42}" = "yes" ; then
12550             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12551         fi
12553         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12554         AC_LANG_PUSH([C++])
12555         save_CXXFLAGS=$CXXFLAGS
12556         CXXFLAGS="$CXXFLAGS $flag_avx"
12557         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12558             #include <immintrin.h>
12559             int main () {
12560                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12561                 c = _mm256_xor_ps(a, b);
12562                 return 0;
12563             }
12564             ])],
12565             [can_compile_avx=yes],
12566             [can_compile_avx=no])
12567         AC_LANG_POP([C++])
12568         CXXFLAGS=$save_CXXFLAGS
12569         AC_MSG_RESULT([${can_compile_avx}])
12570         if test "${can_compile_avx}" = "yes" ; then
12571             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12572         fi
12574         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12575         AC_LANG_PUSH([C++])
12576         save_CXXFLAGS=$CXXFLAGS
12577         CXXFLAGS="$CXXFLAGS $flag_avx2"
12578         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12579             #include <immintrin.h>
12580             int main () {
12581                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12582                 c = _mm256_maddubs_epi16(a, b);
12583                 return 0;
12584             }
12585             ])],
12586             [can_compile_avx2=yes],
12587             [can_compile_avx2=no])
12588         AC_LANG_POP([C++])
12589         CXXFLAGS=$save_CXXFLAGS
12590         AC_MSG_RESULT([${can_compile_avx2}])
12591         if test "${can_compile_avx2}" = "yes" ; then
12592             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12593         fi
12595         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12596         AC_LANG_PUSH([C++])
12597         save_CXXFLAGS=$CXXFLAGS
12598         CXXFLAGS="$CXXFLAGS $flag_avx512"
12599         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12600             #include <immintrin.h>
12601             int main () {
12602                 __m512i a = _mm512_loadu_si512(0);
12603                 __m512d v1 = _mm512_load_pd(0);
12604                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12605                 __m512d v2 = _mm512_abs_pd(v1);
12606                 return 0;
12607             }
12608             ])],
12609             [can_compile_avx512=yes],
12610             [can_compile_avx512=no])
12611         AC_LANG_POP([C++])
12612         CXXFLAGS=$save_CXXFLAGS
12613         AC_MSG_RESULT([${can_compile_avx512}])
12614         if test "${can_compile_avx512}" = "yes" ; then
12615             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12616             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12617         fi
12619         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12620         AC_LANG_PUSH([C++])
12621         save_CXXFLAGS=$CXXFLAGS
12622         CXXFLAGS="$CXXFLAGS $flag_f16c"
12623         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12624             #include <immintrin.h>
12625             int main () {
12626                 __m128i a = _mm_set1_epi32 (0);
12627                 __m128 c;
12628                 c = _mm_cvtph_ps(a);
12629                 return 0;
12630             }
12631             ])],
12632             [can_compile_f16c=yes],
12633             [can_compile_f16c=no])
12634         AC_LANG_POP([C++])
12635         CXXFLAGS=$save_CXXFLAGS
12636         AC_MSG_RESULT([${can_compile_f16c}])
12637         if test "${can_compile_f16c}" = "yes" ; then
12638             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12639         fi
12641         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12642         AC_LANG_PUSH([C++])
12643         save_CXXFLAGS=$CXXFLAGS
12644         CXXFLAGS="$CXXFLAGS $flag_fma"
12645         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12646             #include <immintrin.h>
12647             int main () {
12648                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12649                 d = _mm256_fmadd_ps(a, b, c);
12650                 return 0;
12651             }
12652             ])],
12653             [can_compile_fma=yes],
12654             [can_compile_fma=no])
12655         AC_LANG_POP([C++])
12656         CXXFLAGS=$save_CXXFLAGS
12657         AC_MSG_RESULT([${can_compile_fma}])
12658         if test "${can_compile_fma}" = "yes" ; then
12659             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12660         fi
12662         CXX="$save_CXX"
12663     fi
12666 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12668 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12669     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12670     AC_LANG_PUSH([C])
12671     save_CC="$CC"
12672     CC="$LO_CLANG_CC"
12673     save_CFLAGS=$CFLAGS
12674     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12675     dnl an empty program will do, we're checking the compiler flags
12676     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12677                       [use_ccache=yes], [use_ccache=no])
12678     CFLAGS=$save_CFLAGS
12679     CC=$save_CC
12680     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12681         AC_MSG_RESULT([yes])
12682     else
12683         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12684         AC_MSG_RESULT([no])
12685     fi
12686     AC_LANG_POP([C])
12688     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12689     AC_LANG_PUSH([C++])
12690     save_CXX="$CXX"
12691     CXX="$LO_CLANG_CXX"
12692     save_CXXFLAGS=$CXXFLAGS
12693     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12694     dnl an empty program will do, we're checking the compiler flags
12695     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12696                       [use_ccache=yes], [use_ccache=no])
12697     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12698         AC_MSG_RESULT([yes])
12699     else
12700         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12701         AC_MSG_RESULT([no])
12702     fi
12703     CXXFLAGS=$save_CXXFLAGS
12704     CXX=$save_CXX
12705     AC_LANG_POP([C++])
12708 AC_SUBST(LO_CLANG_CC)
12709 AC_SUBST(LO_CLANG_CXX)
12710 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12711 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12712 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12713 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12714 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12715 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12716 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12717 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12718 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12719 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12720 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12721 AC_SUBST(LO_CLANG_VERSION)
12722 AC_SUBST(CLANG_USE_LD)
12723 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12725 SYSTEM_GPGMEPP=
12727 AC_MSG_CHECKING([whether to enable gpgmepp])
12728 if test "$enable_gpgmepp" = no; then
12729     AC_MSG_RESULT([no])
12730 elif test "$enable_mpl_subset" = "yes"; then
12731     AC_MSG_RESULT([no (MPL only)])
12732 elif test "$enable_fuzzers" = "yes"; then
12733     AC_MSG_RESULT([no (oss-fuzz)])
12734 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12735     AC_MSG_RESULT([yes])
12736     dnl ===================================================================
12737     dnl Check for system gpgme
12738     dnl ===================================================================
12739     AC_MSG_CHECKING([which gpgmepp to use])
12740     if test "$with_system_gpgmepp" = "yes"; then
12741         AC_MSG_RESULT([external])
12742         SYSTEM_GPGMEPP=TRUE
12744         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12745         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12746             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12747         AC_CHECK_HEADER(gpgme.h, [],
12748             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12749         AC_CHECK_LIB(gpgmepp, main, [],
12750             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12751         GPGMEPP_LIBS=-lgpgmepp
12752     else
12753         AC_MSG_RESULT([internal])
12754         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12756         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12757         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12758         if test "$_os" != "WINNT"; then
12759             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12760             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12761         fi
12762     fi
12763     ENABLE_GPGMEPP=TRUE
12764     AC_DEFINE([HAVE_FEATURE_GPGME])
12765     AC_PATH_PROG(GPG, gpg)
12766     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12767     # so let's exclude that manually for the moment
12768     if test -n "$GPG" -a "$_os" != "WINNT"; then
12769         # make sure we not only have a working gpgme, but a full working
12770         # gpg installation to run OpenPGP signature verification
12771         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12772     fi
12773     if test "$_os" = "Linux"; then
12774       uid=`id -u`
12775       AC_MSG_CHECKING([for /run/user/$uid])
12776       if test -d /run/user/$uid; then
12777         AC_MSG_RESULT([yes])
12778         AC_PATH_PROG(GPGCONF, gpgconf)
12780         # Older versions of gpgconf are not working as expected, since
12781         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12782         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12783         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12784         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12785         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12786         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12787         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12788           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12789           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12790           if $GPGCONF --dump-options > /dev/null ; then
12791             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12792               AC_MSG_RESULT([yes])
12793               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12794               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12795             else
12796               AC_MSG_RESULT([no])
12797             fi
12798           else
12799             AC_MSG_RESULT([no. missing or broken gpgconf?])
12800           fi
12801         else
12802           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12803         fi
12804       else
12805         AC_MSG_RESULT([no])
12806      fi
12807    fi
12808 else
12809     AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12811 AC_SUBST(ENABLE_GPGMEPP)
12812 AC_SUBST(SYSTEM_GPGMEPP)
12813 AC_SUBST(GPG_ERROR_CFLAGS)
12814 AC_SUBST(GPG_ERROR_LIBS)
12815 AC_SUBST(LIBASSUAN_CFLAGS)
12816 AC_SUBST(LIBASSUAN_LIBS)
12817 AC_SUBST(GPGMEPP_CFLAGS)
12818 AC_SUBST(GPGMEPP_LIBS)
12820 AC_MSG_CHECKING([whether to build Java Websocket for the UNO remote websocket client])
12821 if test "$with_java" != "no"; then
12822     AC_MSG_RESULT([yes])
12823     ENABLE_JAVA_WEBSOCKET=TRUE
12824     BUILD_TYPE="$BUILD_TYPE JAVA_WEBSOCKET"
12825     NEED_ANT=TRUE
12826 else
12827     AC_MSG_RESULT([no])
12828     ENABLE_JAVA_WEBSOCKET=
12830 AC_SUBST(ENABLE_JAVA_WEBSOCKET)
12832 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12833 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12834     AC_MSG_RESULT([yes])
12835     ENABLE_MEDIAWIKI=TRUE
12836     BUILD_TYPE="$BUILD_TYPE XSLTML"
12837     if test  "x$with_java" = "xno"; then
12838         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12839     fi
12840 else
12841     AC_MSG_RESULT([no])
12842     ENABLE_MEDIAWIKI=
12843     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12845 AC_SUBST(ENABLE_MEDIAWIKI)
12847 AC_MSG_CHECKING([whether to build the Report Builder])
12848 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12849     AC_MSG_RESULT([yes])
12850     ENABLE_REPORTBUILDER=TRUE
12851     AC_MSG_CHECKING([which jfreereport libs to use])
12852     if test "$with_system_jfreereport" = "yes"; then
12853         SYSTEM_JFREEREPORT=TRUE
12854         AC_MSG_RESULT([external])
12855         if test -z $SAC_JAR; then
12856             SAC_JAR=/usr/share/java/sac.jar
12857         fi
12858         if ! test -f $SAC_JAR; then
12859              AC_MSG_ERROR(sac.jar not found.)
12860         fi
12862         if test -z $LIBXML_JAR; then
12863             if test -f /usr/share/java/libxml-1.0.0.jar; then
12864                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12865             elif test -f /usr/share/java/libxml.jar; then
12866                 LIBXML_JAR=/usr/share/java/libxml.jar
12867             else
12868                 AC_MSG_ERROR(libxml.jar replacement not found.)
12869             fi
12870         elif ! test -f $LIBXML_JAR; then
12871             AC_MSG_ERROR(libxml.jar not found.)
12872         fi
12874         if test -z $FLUTE_JAR; then
12875             if test -f /usr/share/java/flute-1.3.0.jar; then
12876                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12877             elif test -f /usr/share/java/flute.jar; then
12878                 FLUTE_JAR=/usr/share/java/flute.jar
12879             else
12880                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12881             fi
12882         elif ! test -f $FLUTE_JAR; then
12883             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12884         fi
12886         if test -z $JFREEREPORT_JAR; then
12887             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12888                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12889             elif test -f /usr/share/java/flow-engine.jar; then
12890                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12891             else
12892                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12893             fi
12894         elif ! test -f  $JFREEREPORT_JAR; then
12895                 AC_MSG_ERROR(jfreereport.jar not found.)
12896         fi
12898         if test -z $LIBLAYOUT_JAR; then
12899             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12900                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12901             elif test -f /usr/share/java/liblayout.jar; then
12902                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12903             else
12904                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12905             fi
12906         elif ! test -f $LIBLAYOUT_JAR; then
12907                 AC_MSG_ERROR(liblayout.jar not found.)
12908         fi
12910         if test -z $LIBLOADER_JAR; then
12911             if test -f /usr/share/java/libloader-1.0.0.jar; then
12912                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12913             elif test -f /usr/share/java/libloader.jar; then
12914                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12915             else
12916                 AC_MSG_ERROR(libloader.jar replacement not found.)
12917             fi
12918         elif ! test -f  $LIBLOADER_JAR; then
12919             AC_MSG_ERROR(libloader.jar not found.)
12920         fi
12922         if test -z $LIBFORMULA_JAR; then
12923             if test -f /usr/share/java/libformula-0.2.0.jar; then
12924                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12925             elif test -f /usr/share/java/libformula.jar; then
12926                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12927             else
12928                 AC_MSG_ERROR(libformula.jar replacement not found.)
12929             fi
12930         elif ! test -f $LIBFORMULA_JAR; then
12931                 AC_MSG_ERROR(libformula.jar not found.)
12932         fi
12934         if test -z $LIBREPOSITORY_JAR; then
12935             if test -f /usr/share/java/librepository-1.0.0.jar; then
12936                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12937             elif test -f /usr/share/java/librepository.jar; then
12938                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12939             else
12940                 AC_MSG_ERROR(librepository.jar replacement not found.)
12941             fi
12942         elif ! test -f $LIBREPOSITORY_JAR; then
12943             AC_MSG_ERROR(librepository.jar not found.)
12944         fi
12946         if test -z $LIBFONTS_JAR; then
12947             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12948                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12949             elif test -f /usr/share/java/libfonts.jar; then
12950                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12951             else
12952                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12953             fi
12954         elif ! test -f $LIBFONTS_JAR; then
12955                 AC_MSG_ERROR(libfonts.jar not found.)
12956         fi
12958         if test -z $LIBSERIALIZER_JAR; then
12959             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12960                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12961             elif test -f /usr/share/java/libserializer.jar; then
12962                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12963             else
12964                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12965             fi
12966         elif ! test -f $LIBSERIALIZER_JAR; then
12967                 AC_MSG_ERROR(libserializer.jar not found.)
12968         fi
12970         if test -z $LIBBASE_JAR; then
12971             if test -f /usr/share/java/libbase-1.0.0.jar; then
12972                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12973             elif test -f /usr/share/java/libbase.jar; then
12974                 LIBBASE_JAR=/usr/share/java/libbase.jar
12975             else
12976                 AC_MSG_ERROR(libbase.jar replacement not found.)
12977             fi
12978         elif ! test -f $LIBBASE_JAR; then
12979             AC_MSG_ERROR(libbase.jar not found.)
12980         fi
12982     else
12983         AC_MSG_RESULT([internal])
12984         SYSTEM_JFREEREPORT=
12985         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12986         NEED_ANT=TRUE
12987     fi
12988     BUILD_TYPE="$BUILD_TYPE REPORTBUILDER"
12989 else
12990     AC_MSG_RESULT([no])
12991     ENABLE_REPORTBUILDER=
12992     SYSTEM_JFREEREPORT=
12994 AC_SUBST(ENABLE_REPORTBUILDER)
12995 AC_SUBST(SYSTEM_JFREEREPORT)
12996 AC_SUBST(SAC_JAR)
12997 AC_SUBST(LIBXML_JAR)
12998 AC_SUBST(FLUTE_JAR)
12999 AC_SUBST(JFREEREPORT_JAR)
13000 AC_SUBST(LIBBASE_JAR)
13001 AC_SUBST(LIBLAYOUT_JAR)
13002 AC_SUBST(LIBLOADER_JAR)
13003 AC_SUBST(LIBFORMULA_JAR)
13004 AC_SUBST(LIBREPOSITORY_JAR)
13005 AC_SUBST(LIBFONTS_JAR)
13006 AC_SUBST(LIBSERIALIZER_JAR)
13008 # scripting provider for BeanShell?
13009 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
13010 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
13011     AC_MSG_RESULT([yes])
13012     ENABLE_SCRIPTING_BEANSHELL=TRUE
13014     dnl ===================================================================
13015     dnl Check for system beanshell
13016     dnl ===================================================================
13017     AC_MSG_CHECKING([which beanshell to use])
13018     if test "$with_system_beanshell" = "yes"; then
13019         AC_MSG_RESULT([external])
13020         SYSTEM_BSH=TRUE
13021         if test -z $BSH_JAR; then
13022             BSH_JAR=/usr/share/java/bsh.jar
13023         fi
13024         if ! test -f $BSH_JAR; then
13025             AC_MSG_ERROR(bsh.jar not found.)
13026         fi
13027     else
13028         AC_MSG_RESULT([internal])
13029         SYSTEM_BSH=
13030         BUILD_TYPE="$BUILD_TYPE BSH"
13031     fi
13032 else
13033     AC_MSG_RESULT([no])
13034     ENABLE_SCRIPTING_BEANSHELL=
13035     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
13037 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
13038 AC_SUBST(SYSTEM_BSH)
13039 AC_SUBST(BSH_JAR)
13041 # scripting provider for JavaScript?
13042 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
13043 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
13044     AC_MSG_RESULT([yes])
13045     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
13047     dnl ===================================================================
13048     dnl Check for system rhino
13049     dnl ===================================================================
13050     AC_MSG_CHECKING([which rhino to use])
13051     if test "$with_system_rhino" = "yes"; then
13052         AC_MSG_RESULT([external])
13053         SYSTEM_RHINO=TRUE
13054         if test -z $RHINO_JAR; then
13055             RHINO_JAR=/usr/share/java/js.jar
13056         fi
13057         if ! test -f $RHINO_JAR; then
13058             AC_MSG_ERROR(js.jar not found.)
13059         fi
13060     else
13061         AC_MSG_RESULT([internal])
13062         SYSTEM_RHINO=
13063         BUILD_TYPE="$BUILD_TYPE RHINO"
13064         NEED_ANT=TRUE
13065     fi
13066 else
13067     AC_MSG_RESULT([no])
13068     ENABLE_SCRIPTING_JAVASCRIPT=
13069     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
13071 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
13072 AC_SUBST(SYSTEM_RHINO)
13073 AC_SUBST(RHINO_JAR)
13075 # This is only used in Qt5/Qt6/KF5/KF6 checks to determine if /usr/lib64
13076 # paths should be added to library search path. So lets put all 64-bit
13077 # platforms there.
13078 supports_multilib=
13079 case "$host_cpu" in
13080 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
13081     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
13082         supports_multilib="yes"
13083     fi
13084     ;;
13086     ;;
13087 esac
13089 dnl ===================================================================
13090 dnl QT5 Integration
13091 dnl ===================================================================
13093 QT5_CFLAGS=""
13094 QT5_LIBS=""
13095 QT5_GOBJECT_CFLAGS=""
13096 QT5_GOBJECT_LIBS=""
13097 QT5_HAVE_GOBJECT=""
13098 QT5_PLATFORMS_SRCDIR=""
13099 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13100         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
13101         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13102 then
13103     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
13104     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
13106     if test -n "$supports_multilib"; then
13107         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
13108     fi
13110     qt5_test_include="QtWidgets/qapplication.h"
13111     if test "$_os" = "Emscripten"; then
13112         qt5_test_library="libQt5Widgets.a"
13113     else
13114         qt5_test_library="libQt5Widgets.so"
13115     fi
13117     dnl Check for qmake5
13118     if test -n "$QT5DIR"; then
13119         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
13120     else
13121         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
13122     fi
13123     if test "$QMAKE5" = "no"; then
13124         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13125     else
13126         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
13127         if test -z "$qmake5_test_ver"; then
13128             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13129         fi
13130         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
13131         qt5_minimal_minor="15"
13132         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
13133             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
13134         else
13135             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
13136         fi
13137     fi
13139     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
13140     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
13141     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
13142     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
13144     AC_MSG_CHECKING([for Qt5 headers])
13145     qt5_incdir="no"
13146     for inc_dir in $qt5_incdirs; do
13147         if test -r "$inc_dir/$qt5_test_include"; then
13148             qt5_incdir="$inc_dir"
13149             break
13150         fi
13151     done
13152     AC_MSG_RESULT([$qt5_incdir])
13153     if test "x$qt5_incdir" = "xno"; then
13154         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13155     fi
13156     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
13157     AC_LANG_PUSH([C++])
13158     save_CPPFLAGS=$CPPFLAGS
13159     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
13160     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13161         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13162     CPPFLAGS=$save_CPPFLAGS
13163     AC_LANG_POP([C++])
13165     AC_MSG_CHECKING([for Qt5 libraries])
13166     qt5_libdir="no"
13167     for lib_dir in $qt5_libdirs; do
13168         if test -r "$lib_dir/$qt5_test_library"; then
13169             qt5_libdir="$lib_dir"
13170             break
13171         fi
13172     done
13173     AC_MSG_RESULT([$qt5_libdir])
13174     if test "x$qt5_libdir" = "xno"; then
13175         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13176     fi
13178     if test "$_os" = "Emscripten"; then
13179         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13180             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13181         fi
13182         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13183             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13184         fi
13186         EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13187         if ! test -x "$EMSDK_LLVM_NM"; then
13188             AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13189         fi
13190         if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13191             AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13192         fi
13193         QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13194         if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13195             AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13196         fi
13197         if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13198             AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13199         fi
13200     fi
13202     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13203     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13204     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13205     if test "$_os" = "Emscripten"; then
13206         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13207     fi
13209     if test "$USING_X11" = TRUE; then
13210         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13211         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13212         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13213         QT5_USING_X11=1
13214         AC_DEFINE(QT5_USING_X11)
13215     fi
13217     dnl Check for Meta Object Compiler
13219     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13220     if test "$MOC5" = "no"; then
13221         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13222 the root of your Qt installation by exporting QT5DIR before running "configure".])
13223     fi
13225     if test "$test_gstreamer_1_0" = yes; then
13226         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13227                 QT5_HAVE_GOBJECT=1
13228                 AC_DEFINE(QT5_HAVE_GOBJECT)
13229             ],
13230             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13231         )
13232     fi
13234 AC_SUBST(QT5_CFLAGS)
13235 AC_SUBST(QT5_LIBS)
13236 AC_SUBST(MOC5)
13237 AC_SUBST(QT5_GOBJECT_CFLAGS)
13238 AC_SUBST(QT5_GOBJECT_LIBS)
13239 AC_SUBST(QT5_HAVE_GOBJECT)
13240 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13242 dnl ===================================================================
13243 dnl QT6 Integration
13244 dnl ===================================================================
13246 QT6_CFLAGS=""
13247 QT6_LIBS=""
13248 QT6_PLATFORMS_SRCDIR=""
13249 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \) -o \
13250         \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13251 then
13252     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13253     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13255     if test -n "$supports_multilib"; then
13256         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13257     fi
13259     qt6_test_include="QtWidgets/qapplication.h"
13260     if test "$_os" = "Emscripten"; then
13261         qt6_test_library="libQt6Widgets.a"
13262     else
13263         qt6_test_library="libQt6Widgets.so"
13264     fi
13266     dnl Check for qmake6
13267     if test -n "$QT6DIR"; then
13268         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13269     else
13270         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13271     fi
13272     if test "$QMAKE6" = "no"; then
13273         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13274     else
13275         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13276         if test -z "$qmake6_test_ver"; then
13277             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13278         fi
13279         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13280     fi
13282     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13283     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13284     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13285     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13287     AC_MSG_CHECKING([for Qt6 headers])
13288     qt6_incdir="no"
13289     for inc_dir in $qt6_incdirs; do
13290         if test -r "$inc_dir/$qt6_test_include"; then
13291             qt6_incdir="$inc_dir"
13292             break
13293         fi
13294     done
13295     AC_MSG_RESULT([$qt6_incdir])
13296     if test "x$qt6_incdir" = "xno"; then
13297         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13298     fi
13299     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13300     AC_LANG_PUSH([C++])
13301     save_CPPFLAGS=$CPPFLAGS
13302     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13303     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13304         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13305     CPPFLAGS=$save_CPPFLAGS
13306     AC_LANG_POP([C++])
13308     AC_MSG_CHECKING([for Qt6 libraries])
13309     qt6_libdir="no"
13310     for lib_dir in $qt6_libdirs; do
13311         if test -r "$lib_dir/$qt6_test_library"; then
13312             qt6_libdir="$lib_dir"
13313             break
13314         fi
13315     done
13316     AC_MSG_RESULT([$qt6_libdir])
13317     if test "x$qt6_libdir" = "xno"; then
13318         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13319     fi
13321     if test "$_os" = "Emscripten"; then
13322         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13323             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13324         fi
13325         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13326             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13327         fi
13328     fi
13330     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13331     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13332     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13333     if test "$_os" = "Emscripten"; then
13334         QT6_LIBS="$QT6_LIBS -lQt6BundledPcre2 -lQt6BundledZLIB -L${qt6_platformsdir} -lqwasm -sGL_ENABLE_GET_PROC_ADDRESS"
13335     fi
13337     if test "$USING_X11" = TRUE; then
13338         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13339         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13340         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13341         QT6_USING_X11=1
13342         AC_DEFINE(QT6_USING_X11)
13343     fi
13345     dnl Check for Meta Object Compiler
13347     for lib_dir in $qt6_libdirs; do
13348         if test -z "$qt6_libexec_dirs"; then
13349             qt6_libexec_dirs="$lib_dir/libexec"
13350         else
13351             qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13352         fi
13353     done
13354     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])
13355     if test "$MOC6" = "no"; then
13356         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13357 the root of your Qt installation by exporting QT6DIR before running "configure".])
13358     else
13359         moc6_test_ver="`$MOC6 -v 2>&1 | $SED -n -e 's/^moc \(6.*\)/\1/p'`"
13360         if test -z "$moc6_test_ver"; then
13361             AC_MSG_ERROR([Wrong moc for Qt6 found.])
13362         fi
13363         AC_MSG_NOTICE([Detected moc version: $moc_test_ver])
13364     fi
13366 AC_SUBST(QT6_CFLAGS)
13367 AC_SUBST(QT6_LIBS)
13368 AC_SUBST(MOC6)
13369 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13371 dnl ===================================================================
13372 dnl KF5 Integration
13373 dnl ===================================================================
13375 KF5_CFLAGS=""
13376 KF5_LIBS=""
13377 KF5_CONFIG="kf5-config"
13378 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13379         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13380 then
13381     if test "$OS" = "HAIKU"; then
13382         haiku_arch="`echo $RTL_ARCH | tr X x`"
13383         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13384         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13385     fi
13387     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13388     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13389     if test -n "$supports_multilib"; then
13390         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13391     fi
13393     kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13394     kf5_test_library="libKF5KIOFileWidgets.so"
13395     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13397     dnl kf5 KDE4 support compatibility installed
13398     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13399     if test "$KF5_CONFIG" != "no"; then
13400         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13401         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13402     fi
13404     dnl Check for KF5 headers
13405     AC_MSG_CHECKING([for KF5 headers])
13406     kf5_incdir="no"
13407     for kf5_check in $kf5_incdirs; do
13408         if test -r "$kf5_check/$kf5_test_include"; then
13409             kf5_incdir="$kf5_check/KF5"
13410             break
13411         fi
13412     done
13413     AC_MSG_RESULT([$kf5_incdir])
13414     if test "x$kf5_incdir" = "xno"; then
13415         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13416     fi
13418     dnl Check for KF5 libraries
13419     AC_MSG_CHECKING([for KF5 libraries])
13420     kf5_libdir="no"
13421     for kf5_check in $kf5_libdirs; do
13422         if test -r "$kf5_check/$kf5_test_library"; then
13423             kf5_libdir="$kf5_check"
13424             break
13425         fi
13426     done
13428     AC_MSG_RESULT([$kf5_libdir])
13429     if test "x$kf5_libdir" = "xno"; then
13430         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13431     fi
13433     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"
13434     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13435     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13437     if test "$USING_X11" = TRUE; then
13438         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13439     fi
13441     AC_LANG_PUSH([C++])
13442     save_CXXFLAGS=$CXXFLAGS
13443     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13444     AC_MSG_CHECKING([whether KDE is >= 5.0])
13445        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13446 #include <kcoreaddons_version.h>
13448 int main(int argc, char **argv) {
13449        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13450        else return 1;
13452        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13453     CXXFLAGS=$save_CXXFLAGS
13454     AC_LANG_POP([C++])
13456 AC_SUBST(KF5_CFLAGS)
13457 AC_SUBST(KF5_LIBS)
13459 dnl ===================================================================
13460 dnl KF6 Integration
13461 dnl ===================================================================
13463 KF6_CFLAGS=""
13464 KF6_LIBS=""
13465 if test \( "$test_kf6" = "yes" -a "$ENABLE_KF6" = "TRUE" \)
13466 then
13467     if test "$OS" = "HAIKU"; then
13468         haiku_arch="`echo $RTL_ARCH | tr X x`"
13469         kf6_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13470         kf6_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13471     fi
13473     kf6_incdirs="$KF6INC /usr/include $kf6_haiku_incdirs $x_includes"
13474     kf6_libdirs="$KF6LIB /usr/lib /usr/lib/kf6 /usr/lib/kf6/devel $kf6_haiku_libdirs $x_libraries"
13475     if test -n "$supports_multilib"; then
13476         kf6_libdirs="$kf6_libdirs /usr/lib64 /usr/lib64/kf6 /usr/lib64/kf6/devel"
13477     fi
13479     kf6_test_include="KF6/KIOFileWidgets/KFileWidget"
13480     kf6_test_library="libKF6KIOFileWidgets.so"
13481     kf6_libdirs="$qt6_libdir $kf6_libdirs"
13483     dnl Check for KF6 headers
13484     AC_MSG_CHECKING([for KF6 headers])
13485     kf6_incdir="no"
13486     for kf6_check in $kf6_incdirs; do
13487         if test -r "$kf6_check/$kf6_test_include"; then
13488             kf6_incdir="$kf6_check/KF6"
13489             break
13490         fi
13491     done
13492     AC_MSG_RESULT([$kf6_incdir])
13493     if test "x$kf6_incdir" = "xno"; then
13494         AC_MSG_ERROR([KF6 headers not found.  Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13495     fi
13497     dnl Check for KF6 libraries
13498     AC_MSG_CHECKING([for KF6 libraries])
13499     kf6_libdir="no"
13500     for kf6_check in $kf6_libdirs; do
13501         if test -r "$kf6_check/$kf6_test_library"; then
13502             kf6_libdir="$kf6_check"
13503             break
13504         fi
13505     done
13507     AC_MSG_RESULT([$kf6_libdir])
13508     if test "x$kf6_libdir" = "xno"; then
13509         AC_MSG_ERROR([KF6 libraries not found.  Please specify the root of your KF6 installation by exporting KF6DIR before running "configure".])
13510     fi
13512     KF6_CFLAGS="-I$kf6_incdir -I$kf6_incdir/KCoreAddons -I$kf6_incdir/KI18n -I$kf6_incdir/KConfig -I$kf6_incdir/KConfigCore -I$kf6_incdir/KWindowSystem -I$kf6_incdir/KIO -I$kf6_incdir/KIOCore -I$kf6_incdir/KIOWidgets -I$kf6_incdir/KIOFileWidgets -I$qt6_incdir -I$qt6_incdir/QtCore -I$qt6_incdir/QtGui -I$qt6_incdir/QtWidgets -I$qt6_incdir/QtNetwork -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13513     KF6_LIBS="-L$kf6_libdir -lKF6CoreAddons -lKF6I18n -lKF6ConfigCore -lKF6WindowSystem -lKF6KIOCore -lKF6KIOWidgets -lKF6KIOFileWidgets -L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13514     KF6_CFLAGS=$(printf '%s' "$KF6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13516     AC_LANG_PUSH([C++])
13517     save_CXXFLAGS=$CXXFLAGS
13518     CXXFLAGS="$CXXFLAGS $KF6_CFLAGS"
13519     dnl KF6 development version as of 2023-06 uses version number 5.240
13520     AC_MSG_CHECKING([whether KDE is >= 5.240])
13521        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13522 #include <kcoreaddons_version.h>
13524 int main(int argc, char **argv) {
13525        if (KCOREADDONS_VERSION_MAJOR == 6 || (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 240)) return 0;
13526        else return 1;
13528        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13529     CXXFLAGS=$save_CXXFLAGS
13530     AC_LANG_POP([C++])
13532 AC_SUBST(KF6_CFLAGS)
13533 AC_SUBST(KF6_LIBS)
13535 dnl ===================================================================
13536 dnl Test whether to include Evolution 2 support
13537 dnl ===================================================================
13538 AC_MSG_CHECKING([whether to enable evolution 2 support])
13539 if test "$enable_evolution2" = yes; then
13540     AC_MSG_RESULT([yes])
13541     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13542     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13543     FilterLibs "${GOBJECT_LIBS}"
13544     GOBJECT_LIBS="${filteredlibs}"
13545     ENABLE_EVOAB2="TRUE"
13546 else
13547     AC_MSG_RESULT([no])
13549 AC_SUBST(ENABLE_EVOAB2)
13550 AC_SUBST(GOBJECT_CFLAGS)
13551 AC_SUBST(GOBJECT_LIBS)
13553 dnl ===================================================================
13554 dnl Test which themes to include
13555 dnl ===================================================================
13556 AC_MSG_CHECKING([which themes to include])
13557 # if none given use default subset of available themes
13558 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13559     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"
13562 WITH_THEMES=""
13563 if test "x$with_theme" != "xno"; then
13564     for theme in $with_theme; do
13565         case $theme in
13566         breeze|breeze_dark|breeze_dark_svg|breeze_svg|colibre|colibre_svg|colibre_dark|colibre_dark_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg|sifr|sifr_svg|sifr_dark|sifr_dark_svg|sukapura|sukapura_dark|sukapura_dark_svg|sukapura_svg) WITH_THEMES="${WITH_THEMES:+$WITH_THEMES }$theme" ;;
13567         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13568         esac
13569     done
13571 AC_MSG_RESULT([$WITH_THEMES])
13572 AC_SUBST([WITH_THEMES])
13574 ###############################################################################
13575 # Extensions checking
13576 ###############################################################################
13577 AC_MSG_CHECKING([for extensions integration])
13578 if test "x$enable_extension_integration" != "xno"; then
13579     WITH_EXTENSION_INTEGRATION=TRUE
13580     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13581     AC_MSG_RESULT([yes, use integration])
13582 else
13583     WITH_EXTENSION_INTEGRATION=
13584     AC_MSG_RESULT([no, do not integrate])
13586 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13588 dnl Should any extra extensions be included?
13589 dnl There are standalone tests for each of these below.
13590 WITH_EXTRA_EXTENSIONS=
13591 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13593 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13594 if test "x$with_java" != "xno"; then
13595     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13598 AC_MSG_CHECKING([whether to build opens___.ttf])
13599 if test "$enable_build_opensymbol" = "yes"; then
13600     AC_MSG_RESULT([yes])
13601     AC_PATH_PROG(FONTFORGE, fontforge)
13602     if test -z "$FONTFORGE"; then
13603         AC_MSG_ERROR([fontforge not installed])
13604     fi
13605 else
13606     AC_MSG_RESULT([no])
13607     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13609 AC_SUBST(FONTFORGE)
13611 dnl ===================================================================
13612 dnl Test whether to include fonts
13613 dnl ===================================================================
13614 AC_MSG_CHECKING([whether to include third-party fonts])
13615 if test "$with_fonts" != "no"; then
13616     AC_MSG_RESULT([yes])
13617     WITH_FONTS=TRUE
13618     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13619     AC_DEFINE(HAVE_MORE_FONTS)
13620 else
13621     AC_MSG_RESULT([no])
13622     WITH_FONTS=
13623     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13625 AC_SUBST(WITH_FONTS)
13628 dnl ===================================================================
13629 dnl Test whether to enable online update service
13630 dnl ===================================================================
13631 AC_MSG_CHECKING([whether to enable online update])
13632 ENABLE_ONLINE_UPDATE=
13633 if test "$enable_online_update" = ""; then
13634     AC_MSG_RESULT([no])
13635 else
13636     if test "$enable_online_update" = "mar"; then
13637         AC_MSG_ERROR([--enable-online-update=mar is deprecated, use --enable-online-update-mar instead])
13638     elif test "$enable_online_update" = "yes"; then
13639         if test "$enable_curl" != "yes"; then
13640             AC_MSG_ERROR([--disable-online-update must be used when --disable-curl is used])
13641         fi
13642         AC_MSG_RESULT([yes])
13643         ENABLE_ONLINE_UPDATE="TRUE"
13644     else
13645         AC_MSG_RESULT([no])
13646     fi
13648 AC_SUBST(ENABLE_ONLINE_UPDATE)
13651 dnl ===================================================================
13652 dnl Test whether to enable mar online update service
13653 dnl ===================================================================
13654 AC_MSG_CHECKING([whether to enable mar online update])
13655 ENABLE_ONLINE_UPDATE_MAR=
13656 if test "$enable_online_update_mar" = yes; then
13657     AC_MSG_RESULT([yes])
13658     BUILD_TYPE="$BUILD_TYPE ONLINEUPDATE"
13659     ENABLE_ONLINE_UPDATE_MAR="TRUE"
13660     AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13661 else
13662     AC_MSG_RESULT([no])
13664 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13666 AC_MSG_CHECKING([for mar online update baseurl])
13667 ONLINEUPDATE_MAR_BASEURL=$with_online_update_mar_baseurl
13668 if test -n "$ONLINEUPDATE_MAR_BASEURL"; then
13669     AC_MSG_RESULT([yes])
13670 else
13671     AC_MSG_RESULT([no])
13673 AC_SUBST(ONLINEUPDATE_MAR_BASEURL)
13675 AC_MSG_CHECKING([for mar online update certificateder])
13676 ONLINEUPDATE_MAR_CERTIFICATEDER=$with_online_update_mar_certificateder
13677 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEDER"; then
13678     AC_MSG_RESULT([yes])
13679 else
13680     AC_MSG_RESULT([no])
13682 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEDER)
13684 AC_MSG_CHECKING([for mar online update certificatename])
13685 ONLINEUPDATE_MAR_CERTIFICATENAME=$with_online_update_mar_certificatename
13686 if test -n "$ONLINEUPDATE_MAR_CERTIFICATENAME"; then
13687     AC_MSG_RESULT([yes])
13688 else
13689     AC_MSG_RESULT([no])
13691 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATENAME)
13693 AC_MSG_CHECKING([for mar online update certificatepath])
13694 ONLINEUPDATE_MAR_CERTIFICATEPATH=$with_online_update_mar_certificatepath
13695 if test -n "$ONLINEUPDATE_MAR_CERTIFICATEPATH"; then
13696     AC_MSG_RESULT([yes])
13697 else
13698     AC_MSG_RESULT([no])
13700 AC_SUBST(ONLINEUPDATE_MAR_CERTIFICATEPATH)
13703 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13704 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13705     if test "x$with_privacy_policy_url" = "xundefined"; then
13706         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13707     fi
13709 AC_SUBST(PRIVACY_POLICY_URL)
13710 dnl ===================================================================
13711 dnl Test whether we need bzip2
13712 dnl ===================================================================
13713 SYSTEM_BZIP2=
13714 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE" -o "$enable_python" = internal; then
13715     AC_MSG_CHECKING([whether to use system bzip2])
13716     if test "$with_system_bzip2" = yes; then
13717         SYSTEM_BZIP2=TRUE
13718         AC_MSG_RESULT([yes])
13719         PKG_CHECK_MODULES(BZIP2, bzip2)
13720         FilterLibs "${BZIP2_LIBS}"
13721         BZIP2_LIBS="${filteredlibs}"
13722     else
13723         AC_MSG_RESULT([no])
13724         BUILD_TYPE="$BUILD_TYPE BZIP2"
13725     fi
13727 AC_SUBST(SYSTEM_BZIP2)
13728 AC_SUBST(BZIP2_CFLAGS)
13729 AC_SUBST(BZIP2_LIBS)
13731 dnl ===================================================================
13732 dnl Test whether to enable extension update
13733 dnl ===================================================================
13734 AC_MSG_CHECKING([whether to enable extension update])
13735 ENABLE_EXTENSION_UPDATE=
13736 if test "x$enable_extension_update" = "xno"; then
13737     AC_MSG_RESULT([no])
13738 else
13739     AC_MSG_RESULT([yes])
13740     ENABLE_EXTENSION_UPDATE="TRUE"
13741     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13742     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13744 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13747 dnl ===================================================================
13748 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13749 dnl ===================================================================
13750 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13751 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13752     AC_MSG_RESULT([no])
13753     ENABLE_SILENT_MSI=
13754 else
13755     AC_MSG_RESULT([yes])
13756     ENABLE_SILENT_MSI=TRUE
13757     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13759 AC_SUBST(ENABLE_SILENT_MSI)
13761 dnl ===================================================================
13762 dnl Check for WiX tools.
13763 dnl ===================================================================
13764 if test "$enable_wix" = "" -o "enable_wix" = "no"; then
13765     AC_MSG_RESULT([no])
13766     ENABLE_WIX=
13767 else
13768     AC_MSG_RESULT([yes])
13769     # FIXME: this should do proper detection, but the path is currently
13770     # hardcoded in msicreator/createmsi.py
13771     if ! test -x "/cygdrive/c/Program Files (x86)/WiX Toolset v3.11/bin/candle"; then
13772       AC_MSG_ERROR([WiX requested but WiX toolset v3.11 not found at the expected location])
13773     fi
13774     ENABLE_WIX=TRUE
13776 AC_SUBST(ENABLE_WIX)
13778 AC_MSG_CHECKING([whether and how to use Xinerama])
13779 if test "$USING_X11" = TRUE; then
13780     if test "$x_libraries" = "default_x_libraries"; then
13781         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13782         if test "x$XINERAMALIB" = x; then
13783            XINERAMALIB="/usr/lib"
13784         fi
13785     else
13786         XINERAMALIB="$x_libraries"
13787     fi
13788     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13789         # we have both versions, let the user decide but use the dynamic one
13790         # per default
13791         USE_XINERAMA=TRUE
13792         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13793             XINERAMA_LINK=dynamic
13794         else
13795             XINERAMA_LINK=static
13796         fi
13797     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13798         # we have only the dynamic version
13799         USE_XINERAMA=TRUE
13800         XINERAMA_LINK=dynamic
13801     elif test -e "$XINERAMALIB/libXinerama.a"; then
13802         # static version
13803         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13804             USE_XINERAMA=TRUE
13805             XINERAMA_LINK=static
13806         else
13807             USE_XINERAMA=
13808             XINERAMA_LINK=none
13809         fi
13810     else
13811         # no Xinerama
13812         USE_XINERAMA=
13813         XINERAMA_LINK=none
13814     fi
13815     if test "$USE_XINERAMA" = "TRUE"; then
13816         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13817         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13818             [AC_MSG_ERROR(Xinerama header not found.)], [])
13819         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13820         if test "x$XEXTLIB" = x; then
13821            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13822         fi
13823         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13824         if test "$_os" = "FreeBSD"; then
13825             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13826         fi
13827         if test "$_os" = "Linux"; then
13828             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13829         fi
13830         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13831             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13832     else
13833         AC_MSG_ERROR([libXinerama not found or wrong architecture.])
13834     fi
13835 else
13836     USE_XINERAMA=
13837     XINERAMA_LINK=none
13838     AC_MSG_RESULT([no])
13840 AC_SUBST(XINERAMA_LINK)
13842 AC_MSG_CHECKING([whether to use non-standard RGBA32 cairo pixel order])
13843 if test -z "$enable_cairo_rgba" -a "$_os" = "Android"; then
13844     enable_cairo_rgba=yes
13846 if test "$enable_cairo_rgba" = yes; then
13847     AC_DEFINE(ENABLE_CAIRO_RGBA)
13848     ENABLE_CAIRO_RGBA=TRUE
13849     AC_MSG_RESULT([yes])
13850 else
13851     ENABLE_CAIRO_RGBA=
13852     AC_MSG_RESULT([no])
13854 AC_SUBST(ENABLE_CAIRO_RGBA)
13856 dnl ===================================================================
13857 dnl Test whether to build cairo or rely on the system version
13858 dnl ===================================================================
13860 if test "$test_cairo" = "yes"; then
13861     AC_MSG_CHECKING([whether to use the system cairo])
13863     : ${with_system_cairo:=$with_system_libs}
13864     if test "$with_system_cairo" = "yes" -a "$enable_cairo_rgba" != "yes"; then
13865         SYSTEM_CAIRO=TRUE
13866         AC_MSG_RESULT([yes])
13868         PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13869         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13870         FilterLibs "${CAIRO_LIBS}"
13871         CAIRO_LIBS="${filteredlibs}"
13873         if test "$test_xrender" = "yes"; then
13874             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13875             AC_LANG_PUSH([C])
13876             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13877 #ifdef PictStandardA8
13878 #else
13879       return fail;
13880 #endif
13881 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13883             AC_LANG_POP([C])
13884         fi
13885     else
13886         AC_MSG_RESULT([no])
13887         BUILD_TYPE="$BUILD_TYPE CAIRO"
13888     fi
13890     if test "$enable_cairo_canvas" != no; then
13891         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13892         ENABLE_CAIRO_CANVAS=TRUE
13893     fi
13896 AC_SUBST(CAIRO_CFLAGS)
13897 AC_SUBST(CAIRO_LIBS)
13898 AC_SUBST(ENABLE_CAIRO_CANVAS)
13899 AC_SUBST(SYSTEM_CAIRO)
13901 dnl ===================================================================
13902 dnl Test whether to use avahi
13903 dnl ===================================================================
13904 if test "$_os" = "WINNT"; then
13905     # Windows uses bundled mDNSResponder
13906     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13907 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13908     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13909                       [ENABLE_AVAHI="TRUE"])
13910     AC_DEFINE(HAVE_FEATURE_AVAHI)
13911     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13912     FilterLibs "${AVAHI_LIBS}"
13913     AVAHI_LIBS="${filteredlibs}"
13916 AC_SUBST(ENABLE_AVAHI)
13917 AC_SUBST(AVAHI_CFLAGS)
13918 AC_SUBST(AVAHI_LIBS)
13920 dnl ===================================================================
13921 dnl Test whether to use liblangtag
13922 dnl ===================================================================
13923 SYSTEM_LIBLANGTAG=
13924 AC_MSG_CHECKING([whether to use system liblangtag])
13925 if test "$with_system_liblangtag" = yes; then
13926     SYSTEM_LIBLANGTAG=TRUE
13927     AC_MSG_RESULT([yes])
13928     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13929     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13930     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13931     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13932     FilterLibs "${LIBLANGTAG_LIBS}"
13933     LIBLANGTAG_LIBS="${filteredlibs}"
13934 else
13935     SYSTEM_LIBLANGTAG=
13936     AC_MSG_RESULT([no])
13937     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13938     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13939     if test "$COM" = "MSC"; then
13940         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13941     else
13942         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13943     fi
13945 AC_SUBST(SYSTEM_LIBLANGTAG)
13946 AC_SUBST(LIBLANGTAG_CFLAGS)
13947 AC_SUBST(LIBLANGTAG_LIBS)
13949 dnl ===================================================================
13950 dnl Test whether to build libpng or rely on the system version
13951 dnl ===================================================================
13953 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13954 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13955 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13957 dnl ===================================================================
13958 dnl Test whether to build libtiff or rely on the system version
13959 dnl ===================================================================
13961 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13963 dnl ===================================================================
13964 dnl Test whether to build libwebp or rely on the system version
13965 dnl ===================================================================
13967 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13969 dnl ===================================================================
13970 dnl Check for runtime JVM search path
13971 dnl ===================================================================
13972 if test "$ENABLE_JAVA" != ""; then
13973     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13974     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13975         AC_MSG_RESULT([yes])
13976         if ! test -d "$with_jvm_path"; then
13977             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13978         fi
13979         if ! test -d "$with_jvm_path"jvm; then
13980             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13981         fi
13982         JVM_ONE_PATH_CHECK="$with_jvm_path"
13983         AC_SUBST(JVM_ONE_PATH_CHECK)
13984     else
13985         AC_MSG_RESULT([no])
13986     fi
13989 dnl ===================================================================
13990 dnl Test for the presence of Ant and that it works
13991 dnl ===================================================================
13993 # java takes the encoding from LC_ALL, and since autoconf forces it to C it
13994 # breaks filename decoding, so for the ant section, set it to LANG
13995 LC_ALL=$LANG
13996 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13997     ANT_HOME=; export ANT_HOME
13998     WITH_ANT_HOME=; export WITH_ANT_HOME
13999     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
14000         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
14001             if test "$_os" = "WINNT"; then
14002                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
14003             else
14004                 with_ant_home="$LODE_HOME/opt/ant"
14005             fi
14006         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
14007             with_ant_home="$LODE_HOME/opt/ant"
14008         fi
14009     fi
14010     if test -z "$with_ant_home"; then
14011         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
14012     else
14013         if test "$_os" = "WINNT"; then
14014             # AC_PATH_PROGS needs unix path
14015             with_ant_home=`cygpath -u "$with_ant_home"`
14016         fi
14017         AbsolutePath "$with_ant_home"
14018         with_ant_home=$absolute_path
14019         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
14020         WITH_ANT_HOME=$with_ant_home
14021         ANT_HOME=$with_ant_home
14022     fi
14024     if test -z "$ANT"; then
14025         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
14026     else
14027         # resolve relative or absolute symlink
14028         while test -h "$ANT"; do
14029             a_cwd=`pwd`
14030             a_basename=`basename "$ANT"`
14031             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
14032             cd "`dirname "$ANT"`"
14033             cd "`dirname "$a_script"`"
14034             ANT="`pwd`"/"`basename "$a_script"`"
14035             cd "$a_cwd"
14036         done
14038         AC_MSG_CHECKING([if $ANT works])
14039         mkdir -p conftest.dir
14040         a_cwd=$(pwd)
14041         cd conftest.dir
14042         cat > conftest.java << EOF
14043         public class conftest {
14044             int testmethod(int a, int b) {
14045                     return a + b;
14046             }
14047         }
14050         cat > conftest.xml << EOF
14051         <project name="conftest" default="conftest">
14052         <target name="conftest">
14053             <javac srcdir="." includes="conftest.java">
14054             </javac>
14055         </target>
14056         </project>
14059         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
14060         if test $? = 0 -a -f ./conftest.class; then
14061             AC_MSG_RESULT([Ant works])
14062             if test -z "$WITH_ANT_HOME"; then
14063                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
14064                 if test -z "$ANT_HOME"; then
14065                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
14066                 fi
14067             else
14068                 ANT_HOME="$WITH_ANT_HOME"
14069             fi
14070         else
14071             echo "configure: Ant test failed" >&5
14072             cat conftest.java >&5
14073             cat conftest.xml >&5
14074             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
14075         fi
14076         cd "$a_cwd"
14077         rm -fr conftest.dir
14078     fi
14079     if test -z "$ANT_HOME"; then
14080         ANT_HOME="NO_ANT_HOME"
14081     else
14082         PathFormat "$ANT_HOME"
14083         ANT_HOME="$formatted_path"
14084         PathFormat "$ANT"
14085         ANT="$formatted_path"
14086     fi
14088     dnl Checking for ant.jar
14089     if test "$ANT_HOME" != "NO_ANT_HOME"; then
14090         AC_MSG_CHECKING([Ant lib directory])
14091         if test -f $ANT_HOME/lib/ant.jar; then
14092             ANT_LIB="$ANT_HOME/lib"
14093         else
14094             if test -f $ANT_HOME/ant.jar; then
14095                 ANT_LIB="$ANT_HOME"
14096             else
14097                 if test -f /usr/share/java/ant.jar; then
14098                     ANT_LIB=/usr/share/java
14099                 else
14100                     if test -f /usr/share/ant-core/lib/ant.jar; then
14101                         ANT_LIB=/usr/share/ant-core/lib
14102                     else
14103                         if test -f $ANT_HOME/lib/ant/ant.jar; then
14104                             ANT_LIB="$ANT_HOME/lib/ant"
14105                         else
14106                             if test -f /usr/share/lib/ant/ant.jar; then
14107                                 ANT_LIB=/usr/share/lib/ant
14108                             else
14109                                 AC_MSG_ERROR([Ant libraries not found!])
14110                             fi
14111                         fi
14112                     fi
14113                 fi
14114             fi
14115         fi
14116         PathFormat "$ANT_LIB"
14117         ANT_LIB="$formatted_path"
14118         AC_MSG_RESULT([Ant lib directory found.])
14119     fi
14121     ant_minver=1.6.0
14122     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
14124     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
14125     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
14126     ant_version_major=`echo $ant_version | cut -d. -f1`
14127     ant_version_minor=`echo $ant_version | cut -d. -f2`
14128     echo "configure: ant_version $ant_version " >&5
14129     echo "configure: ant_version_major $ant_version_major " >&5
14130     echo "configure: ant_version_minor $ant_version_minor " >&5
14131     if test "$ant_version_major" -ge "2"; then
14132         AC_MSG_RESULT([yes, $ant_version])
14133     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
14134         AC_MSG_RESULT([yes, $ant_version])
14135     else
14136         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
14137     fi
14139     rm -f conftest* core core.* *.core
14141 AC_SUBST(ANT)
14142 AC_SUBST(ANT_HOME)
14143 AC_SUBST(ANT_LIB)
14145 OOO_JUNIT_JAR=
14146 HAMCREST_JAR=
14147 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
14148     AC_MSG_CHECKING([for JUnit 4])
14149     if test "$with_junit" = "yes"; then
14150         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
14151             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
14152         elif test -e /usr/share/java/junit4.jar; then
14153             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
14154         else
14155            if test -e /usr/share/lib/java/junit.jar; then
14156               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
14157            else
14158               OOO_JUNIT_JAR=/usr/share/java/junit.jar
14159            fi
14160         fi
14161     else
14162         OOO_JUNIT_JAR=$with_junit
14163     fi
14164     if test "$_os" = "WINNT"; then
14165         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
14166     fi
14167     printf 'import org.junit.Before;' > conftest.java
14168     if $JAVACOMPILER -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14169         AC_MSG_RESULT([$OOO_JUNIT_JAR])
14170     else
14171         AC_MSG_ERROR(
14172 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
14173  specify its pathname via --with-junit=..., or disable it via --without-junit])
14174     fi
14175     rm -f conftest.class conftest.java
14176     if test $OOO_JUNIT_JAR != ""; then
14177         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
14178     fi
14180     AC_MSG_CHECKING([for included Hamcrest])
14181     printf 'import org.hamcrest.BaseDescription;' > conftest.java
14182     if $JAVACOMPILER -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
14183         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
14184     else
14185         AC_MSG_RESULT([Not included])
14186         AC_MSG_CHECKING([for standalone hamcrest jar.])
14187         if test "$with_hamcrest" = "yes"; then
14188             if test -e /usr/share/lib/java/hamcrest.jar; then
14189                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
14190             elif test -e /usr/share/java/hamcrest/core.jar; then
14191                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
14192             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
14193                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
14194             else
14195                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
14196             fi
14197         else
14198             HAMCREST_JAR=$with_hamcrest
14199         fi
14200         if test "$_os" = "WINNT"; then
14201             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
14202         fi
14203         if $JAVACOMPILER -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
14204             AC_MSG_RESULT([$HAMCREST_JAR])
14205         else
14206             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),
14207                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
14208         fi
14209     fi
14210     rm -f conftest.class conftest.java
14212 AC_SUBST(OOO_JUNIT_JAR)
14213 AC_SUBST(HAMCREST_JAR)
14214 # set back LC_ALL to C after the java related tests...
14215 LC_ALL=C
14217 AC_SUBST(SCPDEFS)
14220 # check for wget and curl
14222 WGET=
14223 CURL=
14225 if test "$enable_fetch_external" != "no"; then
14227 CURL=`command -v curl`
14229 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
14230     # wget new enough?
14231     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
14232     if test $? -eq 0; then
14233         WGET=$i
14234         break
14235     fi
14236 done
14238 if test -z "$WGET" -a -z "$CURL"; then
14239     AC_MSG_ERROR([neither wget nor curl found!])
14244 AC_SUBST(WGET)
14245 AC_SUBST(CURL)
14248 # check for sha256sum
14250 SHA256SUM=
14252 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
14253     eval "$i -a 256 --version" > /dev/null 2>&1
14254     ret=$?
14255     if test $ret -eq 0; then
14256         SHA256SUM="$i -a 256"
14257         break
14258     fi
14259 done
14261 if test -z "$SHA256SUM"; then
14262     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
14263         eval "$i --version" > /dev/null 2>&1
14264         ret=$?
14265         if test $ret -eq 0; then
14266             SHA256SUM=$i
14267             break
14268         fi
14269     done
14272 if test -z "$SHA256SUM"; then
14273     AC_MSG_ERROR([no sha256sum found!])
14276 AC_SUBST(SHA256SUM)
14278 dnl ===================================================================
14279 dnl Dealing with l10n options
14280 dnl ===================================================================
14281 AC_MSG_CHECKING([which languages to be built])
14282 # get list of all languages
14283 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
14284 # the sed command does the following:
14285 #   + if a line ends with a backslash, append the next line to it
14286 #   + adds " on the beginning of the value (after =)
14287 #   + adds " at the end of the value
14288 #   + removes en-US; we want to put it on the beginning
14289 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
14290 [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)]
14291 ALL_LANGS="en-US $completelangiso"
14292 # check the configured localizations
14293 WITH_LANG="$with_lang"
14295 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
14296 # (Norwegian is "nb" and "nn".)
14297 if test "$WITH_LANG" = "no"; then
14298     WITH_LANG=
14301 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14302     AC_MSG_RESULT([en-US])
14303 else
14304     AC_MSG_RESULT([$WITH_LANG])
14305     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
14306     if test -z "$MSGFMT"; then
14307         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14308             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14309         elif test -x "/opt/lo/bin/msgfmt"; then
14310             MSGFMT="/opt/lo/bin/msgfmt"
14311         else
14312             AC_CHECK_PROGS(MSGFMT, [msgfmt])
14313             if test -z "$MSGFMT"; then
14314                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14315             fi
14316         fi
14317     fi
14318     if test -z "$MSGUNIQ"; then
14319         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14320             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14321         elif test -x "/opt/lo/bin/msguniq"; then
14322             MSGUNIQ="/opt/lo/bin/msguniq"
14323         else
14324             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14325             if test -z "$MSGUNIQ"; then
14326                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14327             fi
14328         fi
14329     fi
14331 AC_SUBST(MSGFMT)
14332 AC_SUBST(MSGUNIQ)
14333 # check that the list is valid
14334 for lang in $WITH_LANG; do
14335     test "$lang" = "ALL" && continue
14336     # need to check for the exact string, so add space before and after the list of all languages
14337     for vl in $ALL_LANGS; do
14338         if test "$vl" = "$lang"; then
14339            break
14340         fi
14341     done
14342     if test "$vl" != "$lang"; then
14343         # if you're reading this - you prolly quoted your languages remove the quotes ...
14344         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14345     fi
14346 done
14347 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14348     echo $WITH_LANG | grep -q en-US
14349     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14351 # list with substituted ALL
14352 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14353 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14354 test "$WITH_LANG" = "en-US" && WITH_LANG=
14355 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14356     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14357     ALL_LANGS=`echo $ALL_LANGS qtz`
14359 AC_SUBST(ALL_LANGS)
14360 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14361 AC_SUBST(WITH_LANG)
14362 AC_SUBST(WITH_LANG_LIST)
14363 AC_SUBST(GIT_NEEDED_SUBMODULES)
14365 WITH_POOR_HELP_LOCALIZATIONS=
14366 if test -d "$SRC_ROOT/translations/source"; then
14367     for l in `ls -1 $SRC_ROOT/translations/source`; do
14368         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14369             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14370         fi
14371     done
14373 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14375 if test -n "$with_locales" -a "$with_locales" != ALL; then
14376     WITH_LOCALES="$with_locales"
14378     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14379     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14380     # config_host/config_locales.h.in
14381     for locale in $WITH_LOCALES; do
14382         lang=${locale%_*}
14384         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14386         case $lang in
14387         hi|mr*ne)
14388             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14389             ;;
14390         bg|ru)
14391             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14392             ;;
14393         esac
14394     done
14395 else
14396     AC_DEFINE(WITH_LOCALE_ALL)
14398 AC_SUBST(WITH_LOCALES)
14400 dnl git submodule update --reference
14401 dnl ===================================================================
14402 if test -n "${GIT_REFERENCE_SRC}"; then
14403     for repo in ${GIT_NEEDED_SUBMODULES}; do
14404         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14405             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14406         fi
14407     done
14409 AC_SUBST(GIT_REFERENCE_SRC)
14411 dnl git submodules linked dirs
14412 dnl ===================================================================
14413 if test -n "${GIT_LINK_SRC}"; then
14414     for repo in ${GIT_NEEDED_SUBMODULES}; do
14415         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14416             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14417         fi
14418     done
14420 AC_SUBST(GIT_LINK_SRC)
14422 dnl branding
14423 dnl ===================================================================
14424 AC_MSG_CHECKING([for alternative branding images directory])
14425 # initialize mapped arrays
14426 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14427 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14429 if test -z "$with_branding" -o "$with_branding" = "no"; then
14430     AC_MSG_RESULT([none])
14431     DEFAULT_BRAND_IMAGES="$brand_files"
14432 else
14433     if ! test -d $with_branding ; then
14434         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14435     else
14436         AC_MSG_RESULT([$with_branding])
14437         CUSTOM_BRAND_DIR="$with_branding"
14438         for lfile in $brand_files
14439         do
14440             if ! test -f $with_branding/$lfile ; then
14441                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14442                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14443             else
14444                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14445             fi
14446         done
14447         check_for_progress="yes"
14448     fi
14450 AC_SUBST([BRAND_INTRO_IMAGES])
14451 AC_SUBST([CUSTOM_BRAND_DIR])
14452 AC_SUBST([CUSTOM_BRAND_IMAGES])
14453 AC_SUBST([DEFAULT_BRAND_IMAGES])
14456 AC_MSG_CHECKING([for 'intro' progress settings])
14457 PROGRESSBARCOLOR=
14458 PROGRESSSIZE=
14459 PROGRESSPOSITION=
14460 PROGRESSFRAMECOLOR=
14461 PROGRESSTEXTCOLOR=
14462 PROGRESSTEXTBASELINE=
14464 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14465     source "$with_branding/progress.conf"
14466     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14467 else
14468     AC_MSG_RESULT([none])
14471 AC_SUBST(PROGRESSBARCOLOR)
14472 AC_SUBST(PROGRESSSIZE)
14473 AC_SUBST(PROGRESSPOSITION)
14474 AC_SUBST(PROGRESSFRAMECOLOR)
14475 AC_SUBST(PROGRESSTEXTCOLOR)
14476 AC_SUBST(PROGRESSTEXTBASELINE)
14479 dnl ===================================================================
14480 dnl Custom build version
14481 dnl ===================================================================
14482 AC_MSG_CHECKING([for extra build ID])
14483 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14484     EXTRA_BUILDID="$with_extra_buildid"
14486 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14487 if test -n "$EXTRA_BUILDID" ; then
14488     AC_MSG_RESULT([$EXTRA_BUILDID])
14489 else
14490     AC_MSG_RESULT([not set])
14492 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14494 OOO_VENDOR=
14495 AC_MSG_CHECKING([for vendor])
14496 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14497     OOO_VENDOR="$USERNAME"
14499     if test -z "$OOO_VENDOR"; then
14500         OOO_VENDOR="$USER"
14501     fi
14503     if test -z "$OOO_VENDOR"; then
14504         OOO_VENDOR="`id -u -n`"
14505     fi
14507     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14508 else
14509     OOO_VENDOR="$with_vendor"
14510     AC_MSG_RESULT([$OOO_VENDOR])
14512 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14513 AC_SUBST(OOO_VENDOR)
14515 if test "$_os" = "Android" ; then
14516     ANDROID_PACKAGE_NAME=
14517     AC_MSG_CHECKING([for Android package name])
14518     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14519         if test -n "$ENABLE_DEBUG"; then
14520             # Default to the package name that makes ndk-gdb happy.
14521             ANDROID_PACKAGE_NAME="org.libreoffice"
14522         else
14523             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14524         fi
14526         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14527     else
14528         ANDROID_PACKAGE_NAME="$with_android_package_name"
14529         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14530     fi
14531     AC_SUBST(ANDROID_PACKAGE_NAME)
14534 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14535 if test "$with_compat_oowrappers" = "yes"; then
14536     WITH_COMPAT_OOWRAPPERS=TRUE
14537     AC_MSG_RESULT(yes)
14538 else
14539     WITH_COMPAT_OOWRAPPERS=
14540     AC_MSG_RESULT(no)
14542 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14544 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14545 AC_MSG_CHECKING([for install dirname])
14546 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14547     INSTALLDIRNAME="$with_install_dirname"
14549 AC_MSG_RESULT([$INSTALLDIRNAME])
14550 AC_SUBST(INSTALLDIRNAME)
14552 AC_MSG_CHECKING([for prefix])
14553 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14554 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14555 PREFIXDIR="$prefix"
14556 AC_MSG_RESULT([$PREFIXDIR])
14557 AC_SUBST(PREFIXDIR)
14559 LIBDIR=[$(eval echo $(eval echo $libdir))]
14560 AC_SUBST(LIBDIR)
14562 DATADIR=[$(eval echo $(eval echo $datadir))]
14563 AC_SUBST(DATADIR)
14565 MANDIR=[$(eval echo $(eval echo $mandir))]
14566 AC_SUBST(MANDIR)
14568 DOCDIR=[$(eval echo $(eval echo $docdir))]
14569 AC_SUBST(DOCDIR)
14571 BINDIR=[$(eval echo $(eval echo $bindir))]
14572 AC_SUBST(BINDIR)
14574 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14575 AC_SUBST(INSTALLDIR)
14577 TESTINSTALLDIR="${BUILDDIR}/test-install"
14578 AC_SUBST(TESTINSTALLDIR)
14581 # ===================================================================
14582 # OAuth2 id and secrets
14583 # ===================================================================
14585 AC_MSG_CHECKING([for Google Drive client id and secret])
14586 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14587     AC_MSG_RESULT([not set])
14588     GDRIVE_CLIENT_ID="\"\""
14589     GDRIVE_CLIENT_SECRET="\"\""
14590 else
14591     AC_MSG_RESULT([set])
14592     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14593     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14595 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14596 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14598 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14599 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14600     AC_MSG_RESULT([not set])
14601     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14602     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14603 else
14604     AC_MSG_RESULT([set])
14605     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14606     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14608 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14609 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14611 AC_MSG_CHECKING([for OneDrive client id and secret])
14612 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14613     AC_MSG_RESULT([not set])
14614     ONEDRIVE_CLIENT_ID="\"\""
14615     ONEDRIVE_CLIENT_SECRET="\"\""
14616 else
14617     AC_MSG_RESULT([set])
14618     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14619     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14621 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14622 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14625 dnl ===================================================================
14626 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14627 dnl --enable-dependency-tracking configure option
14628 dnl ===================================================================
14629 AC_MSG_CHECKING([whether to enable dependency tracking])
14630 if test "$enable_dependency_tracking" = "no"; then
14631     nodep=TRUE
14632     AC_MSG_RESULT([no])
14633 else
14634     AC_MSG_RESULT([yes])
14636 AC_SUBST(nodep)
14638 dnl ===================================================================
14639 dnl Number of CPUs to use during the build
14640 dnl ===================================================================
14641 AC_MSG_CHECKING([for number of processors to use])
14642 # plain --with-parallelism is just the default
14643 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14644     if test "$with_parallelism" = "no"; then
14645         PARALLELISM=0
14646     else
14647         PARALLELISM=$with_parallelism
14648     fi
14649 else
14650     if test "$enable_icecream" = "yes"; then
14651         PARALLELISM="40"
14652     else
14653         case `uname -s` in
14655         Darwin|FreeBSD|NetBSD|OpenBSD)
14656             PARALLELISM=`sysctl -n hw.ncpu`
14657             ;;
14659         Linux)
14660             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14661         ;;
14662         # what else than above does profit here *and* has /proc?
14663         *)
14664             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14665             ;;
14666         esac
14668         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14669         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14670     fi
14673 if test $PARALLELISM -eq 0; then
14674     AC_MSG_RESULT([explicit make -j option needed])
14675 else
14676     AC_MSG_RESULT([$PARALLELISM])
14678 AC_SUBST(PARALLELISM)
14681 # Set up ILIB for MSVC build
14683 ILIB1=
14684 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14685     ILIB="."
14686     if test -n "$JAVA_HOME"; then
14687         ILIB="$ILIB;$JAVA_HOME/lib"
14688     fi
14689     ILIB1=-link
14690     PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14691     ILIB="$ILIB;$formatted_path"
14692     ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14693     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14694     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14695     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14696         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14697         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14698     fi
14699     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14700     ucrtlibpath_formatted=$formatted_path
14701     ILIB="$ILIB;$ucrtlibpath_formatted"
14702     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14703     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14704         PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14705         ILIB="$ILIB;$formatted_path"
14706     else
14707         PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14708         ILIB="$ILIB;$formatted_path"
14709     fi
14711     if test "$cross_compiling" != "yes"; then
14712         ILIB_FOR_BUILD="$ILIB"
14713     fi
14715 AC_SUBST(ILIB)
14716 AC_SUBST(ILIB_FOR_BUILD)
14718 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14719 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14720 dnl from consteval constructor initializing const variable",
14721 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14722 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14723 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14724 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'" (which should be
14725 dnl fixed since Clang 14), <https://developercommunity.visualstudio.com/t/1581879> "Bogus error
14726 dnl C7595 with consteval constructor in ternary expression (/std:c++latest)" (which appears to be
14727 dnl fixed at least in Visual Studio Community 2022 Preview 17.9.0 Preview 5.0),
14728 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14729 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14730 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14731 dnl && "Ptr must be a pointer to Val type!"' failed." (which should be fixed since Clang 17), or
14732 dnl <https://developercommunity.visualstudio.com/t/Bogus-error-C2440-with-consteval-constru/10579616>
14733 dnl "Bogus error C2440 with consteval constructor (/std:c++20)":
14734 have_cpp_consteval=
14735 AC_LANG_PUSH([C++])
14736 save_CXX=$CXX
14737 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14738     CXX="env LIB=$ILIB $CXX"
14740 save_CXXFLAGS=$CXXFLAGS
14741 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14742 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14743         struct S {
14744             consteval S() { i = 1; }
14745             int i = 0;
14746         };
14747         S const s;
14749         struct S1 {
14750              int a;
14751              consteval S1(int n): a(n) {}
14752         };
14753         struct S2 {
14754             S1 x;
14755             S2(): x(0) {}
14756         };
14758         struct S3 {
14759             consteval S3() {}
14760             union {
14761                 int a;
14762                 unsigned b = 0;
14763             };
14764         };
14765         void f() { S3(); }
14767         struct S4 { consteval S4() = default; };
14768         void f4(bool b) { b ? S4() : S4(); }
14770         struct S5 {
14771             consteval S5() { c = 0; }
14772             char * f() { return &c; }
14773             union {
14774                 char c;
14775                 int i;
14776             };
14777         };
14778         auto s5 = S5().f();
14780         struct S6 {
14781             consteval S6(char const (&lit)[[2]]) {
14782                 buf[[0]] = lit[[0]];
14783                 buf[[1]] = lit[[1]];
14784             }
14785             union {
14786                 int x;
14787                 char buf[[2]];
14788             };
14789         };
14790         void f6() { S6("a"); }
14791     ], [
14792         return (s.i == 1) ? 0 : 1;
14793     ])], [
14794         have_cpp_consteval=1
14795         AC_MSG_RESULT([yes])
14796     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14797 CXX=$save_CXX
14798 CXXFLAGS=$save_CXXFLAGS
14799 AC_LANG_POP([C++])
14800 if test -n "$have_cpp_consteval" && test "$COM_IS_CLANG" = TRUE && test -n "$BUILDING_PCH_WITH_OBJ"
14801 then
14802     AC_MSG_CHECKING([whether $CXX_BASE has working consteval in combination with PCH])
14803     dnl ...that does not suffer from <https://github.com/llvm/llvm-project/issues/81745> "undefined
14804     dnl reference to consteval constructor exported from module" (which also affects PCH, see
14805     dnl <https://lists.freedesktop.org/archives/libreoffice/2024-February/091564.html> "Our Clang
14806     dnl --enable-pch setup is known broken"):
14807     printf 'export module M;\nexport struct S1 { consteval S1(int) {} };' >conftest.cppm
14808     $CXX $CXXFLAGS $CXXFLAGS_CXX11 --precompile conftest.cppm
14809     rm conftest.cppm
14810     AC_LANG_PUSH([C++])
14811     save_CXXFLAGS=$CXXFLAGS
14812     save_LDFLAGS=$LDFLAGS
14813     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14814     LDFLAGS="$LDFLAGS -fmodule-file=M=conftest.pcm conftest.pcm"
14815     AC_LINK_IFELSE([AC_LANG_PROGRAM([
14816         import M;
14817     ], [
14818         struct S2 { S1 s = 0; };
14819         S2 s;
14820     ])], [
14821         AC_MSG_RESULT([yes])
14822     ], [
14823         have_cpp_consteval=
14824         AC_MSG_RESULT([no])])
14825     CXXFLAGS=$save_CXXFLAGS
14826     LDFLAGS=$save_LDFLAGS
14827     AC_LANG_POP([C++])
14828     rm conftest.pcm
14830 if test -n "$have_cpp_consteval"; then
14831     AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14834 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 std::strong_order])
14835 dnl ...which is known to not be implemented in libc++ prior to
14836 dnl <https://github.com/llvm/llvm-project/commit/d8380ad977e94498e170b06449c81f1fc27da7b5> "[libc++]
14837 dnl [P1614] Implement [cmp.alg]'s std::{strong,weak,partial}_order" in LLVM 14:
14838 AC_LANG_PUSH([C++])
14839 save_CXX=$CXX
14840 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14841     CXX="env LIB=$ILIB $CXX"
14843 save_CXXFLAGS=$CXXFLAGS
14844 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14845 AC_LINK_IFELSE([AC_LANG_PROGRAM([
14846         #include <compare>
14847     ], [
14848         (void) (std::strong_order(1.0, 2.0) < 0);
14849     ])], [
14850         AC_DEFINE([HAVE_CPP_STRONG_ORDER],[1])
14851         AC_MSG_RESULT([yes])
14852     ], [AC_MSG_RESULT([no])])
14853 CXX=$save_CXX
14854 CXXFLAGS=$save_CXXFLAGS
14855 AC_LANG_POP([C++])
14857 # ===================================================================
14858 # Creating bigger shared library to link against
14859 # ===================================================================
14860 AC_MSG_CHECKING([whether to create huge library])
14861 MERGELIBS=
14862 MERGELIBS_MORE=
14864 if test $_os = iOS -o $_os = Android; then
14865     # Never any point in mergelibs for these as we build just static
14866     # libraries anyway...
14867     enable_mergelibs=no
14870 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14871     if test "$enable_mergelibs" = "more"; then
14872         MERGELIBS="TRUE"
14873         MERGELIBS_MORE="TRUE"
14874         AC_MSG_RESULT([yes (more)])
14875         AC_DEFINE(ENABLE_MERGELIBS)
14876         AC_DEFINE(ENABLE_MERGELIBS_MORE)
14877     elif test "$enable_mergelibs" = "yes" -o "$enable_mergelibs" = ""; then
14878         MERGELIBS="TRUE"
14879         AC_MSG_RESULT([yes])
14880         AC_DEFINE(ENABLE_MERGELIBS)
14881     else
14882         AC_MSG_ERROR([unknown value --enable-mergelibs=$enable_mergelibs])
14883     fi
14884 else
14885     AC_MSG_RESULT([no])
14887 AC_SUBST([MERGELIBS])
14888 AC_SUBST([MERGELIBS_MORE])
14890 dnl ===================================================================
14891 dnl icerun is a wrapper that stops us spawning tens of processes
14892 dnl locally - for tools that can't be executed on the compile cluster
14893 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14894 dnl ===================================================================
14895 AC_MSG_CHECKING([whether to use icerun wrapper])
14896 ICECREAM_RUN=
14897 if test "$enable_icecream" = "yes" && command -v icerun >/dev/null ; then
14898     ICECREAM_RUN=icerun
14899     AC_MSG_RESULT([yes])
14900 else
14901     AC_MSG_RESULT([no])
14903 AC_SUBST(ICECREAM_RUN)
14905 dnl ===================================================================
14906 dnl Setup the ICECC_VERSION for the build the same way it was set for
14907 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14908 dnl ===================================================================
14909 x_ICECC_VERSION=[\#]
14910 if test -n "$ICECC_VERSION" ; then
14911     x_ICECC_VERSION=
14913 AC_SUBST(x_ICECC_VERSION)
14914 AC_SUBST(ICECC_VERSION)
14916 dnl ===================================================================
14918 AC_MSG_CHECKING([MPL subset])
14919 MPL_SUBSET=
14920 LICENSE="LGPL"
14922 if test "$enable_mpl_subset" = "yes"; then
14923     mpl_error_string=
14924     newline=$'\n    *'
14925     warn_report=false
14926     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14927         warn_report=true
14928     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14929         warn_report=true
14930     fi
14931     if test "$warn_report" = "true"; then
14932         mpl_error_string="$mpl_error_string$newline Need to --disable-report-builder - extended database report builder."
14933     fi
14934     if test "x$enable_postgresql_sdbc" != "xno"; then
14935         mpl_error_string="$mpl_error_string$newline Need to --disable-postgresql-sdbc - the PostgreSQL database backend."
14936     fi
14937     if test "$enable_lotuswordpro" = "yes"; then
14938         mpl_error_string="$mpl_error_string$newline Need to --disable-lotuswordpro - a Lotus Word Pro file format import filter."
14939     fi
14940     if test -n "$ENABLE_POPPLER"; then
14941         if test "x$SYSTEM_POPPLER" = "x"; then
14942             mpl_error_string="$mpl_error_string$newline Need to disable PDF import via poppler (--disable-poppler) or use system library."
14943         fi
14944     fi
14945     # cf. m4/libo_check_extension.m4
14946     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14947         mpl_error_string="$mpl_error_string$newline Need to disable extra extensions enabled using --enable-ext-XXXX."
14948     fi
14949     denied_themes=
14950     filtered_themes=
14951     for theme in $WITH_THEMES; do
14952         case $theme in
14953         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14954             denied_themes="${denied_themes:+$denied_themes }$theme" ;;
14955         *)
14956             filtered_themes="${filtered_themes:+$filtered_themes }$theme" ;;
14957         esac
14958     done
14959     if test "x$denied_themes" != "x"; then
14960         if test "x$filtered_themes" == "x"; then
14961             filtered_themes="colibre"
14962         fi
14963         mpl_error_string="$mpl_error_string$newline Need to disable icon themes: $denied_themes, use --with-theme=$filtered_themes."
14964     fi
14966     ENABLE_OPENGL_TRANSITIONS=
14968     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14969         mpl_error_string="$mpl_error_string$newline Need to --disable-lpsolve - calc linear programming solver."
14970     fi
14972     if test "x$mpl_error_string" != "x"; then
14973         AC_MSG_ERROR([$mpl_error_string])
14974     fi
14976     MPL_SUBSET="TRUE"
14977     LICENSE="MPL-2.0"
14978     AC_DEFINE(MPL_HAVE_SUBSET)
14979     AC_MSG_RESULT([only])
14980 else
14981     AC_MSG_RESULT([no restrictions])
14983 AC_SUBST(MPL_SUBSET)
14984 AC_SUBST(LICENSE)
14986 dnl ===================================================================
14988 AC_MSG_CHECKING([formula logger])
14989 ENABLE_FORMULA_LOGGER=
14991 if test "x$enable_formula_logger" = "xyes"; then
14992     AC_MSG_RESULT([yes])
14993     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14994     ENABLE_FORMULA_LOGGER=TRUE
14995 elif test -n "$ENABLE_DBGUTIL" ; then
14996     AC_MSG_RESULT([yes])
14997     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14998     ENABLE_FORMULA_LOGGER=TRUE
14999 else
15000     AC_MSG_RESULT([no])
15003 AC_SUBST(ENABLE_FORMULA_LOGGER)
15005 dnl ===================================================================
15006 dnl Checking for active Antivirus software.
15007 dnl ===================================================================
15009 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
15010     AC_MSG_CHECKING([for active Antivirus software])
15011     PathFormat "$SRC_ROOT/antivirusDetection.vbs"
15012     ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
15013     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
15014         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
15015             AC_MSG_RESULT([found])
15016             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
15017             echo $EICAR_STRING > $SRC_ROOT/eicar
15018             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
15019             rm $SRC_ROOT/eicar
15020             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
15021                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
15022             fi
15023             echo $EICAR_STRING > $BUILDDIR/eicar
15024             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
15025             rm $BUILDDIR/eicar
15026             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
15027                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
15028             fi
15029             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"
15030         else
15031             AC_MSG_RESULT([not found])
15032         fi
15033     else
15034         AC_MSG_RESULT([n/a])
15035     fi
15038 dnl ===================================================================
15040 AC_MSG_CHECKING([for coredumpctl support])
15041 if test -z "$with_coredumpctl" && test $_os != Linux; then
15042     with_coredumpctl=no
15044 if test "$with_coredumpctl" = no; then
15045     WITH_COREDUMPCTL=
15046 else
15047     AC_PATH_PROG(COREDUMPCTL, coredumpctl)
15048     AC_PATH_PROG(JQ, jq)
15049     AC_PATH_PROG(SYSTEMD_ESCAPE, systemd-escape)
15050     AC_PATH_PROG(SYSTEMD_RUN, systemd-run)
15051     if test -z "$COREDUMPCTL" || test -z "$JQ" || test -z "$SYSTEMD_ESCAPE" \
15052         || test -z "$SYSTEMD_RUN"
15053     then
15054         if test -z "$with_coredumpctl"; then
15055             WITH_COREDUMPCTL=
15056         else
15057             if test -z "$COREDUMPCTL"; then
15058                 AC_MSG_ERROR([coredumpctl not found])
15059             fi
15060             if test -z "$JQ"; then
15061                 AC_MSG_ERROR([jq not found])
15062             fi
15063             if test -z "$SYSTEMD_ESCAPE"; then
15064                 AC_MSG_ERROR([systemd-escape not found])
15065             fi
15066             if test -z "$SYSTEMD_RUN"; then
15067                 AC_MSG_ERROR([systemd-run not found])
15068             fi
15069         fi
15070     else
15071         WITH_COREDUMPCTL=TRUE
15072     fi
15074 if test -z "$WITH_COREDUMPCTL"; then
15075     AC_MSG_RESULT([no])
15076 else
15077     AC_MSG_RESULT([yes])
15079 AC_SUBST(COREDUMPCTL)
15080 AC_SUBST(JQ)
15081 AC_SUBST(SYSTEMD_ESCAPE)
15082 AC_SUBST(SYSTEMD_RUN)
15083 AC_SUBST(WITH_COREDUMPCTL)
15085 dnl ===================================================================
15086 dnl Setting up the environment.
15087 dnl ===================================================================
15088 AC_MSG_NOTICE([setting up the build environment variables...])
15090 AC_SUBST(COMPATH)
15092 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
15093     if test -d "$COMPATH/atlmfc/lib/spectre"; then
15094         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
15095         ATL_INCLUDE="$COMPATH/atlmfc/include"
15096     elif test -d "$COMPATH/atlmfc/lib"; then
15097         ATL_LIB="$COMPATH/atlmfc/lib"
15098         ATL_INCLUDE="$COMPATH/atlmfc/include"
15099     else
15100         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
15101         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
15102     fi
15103     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
15104     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
15105     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
15108 if test "$build_os" = "cygwin"; then
15109     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
15110     PathFormat "/usr/bin/find.exe"
15111     FIND="$formatted_path"
15112     PathFormat "/usr/bin/sort.exe"
15113     SORT="$formatted_path"
15114     PathFormat "/usr/bin/grep.exe"
15115     WIN_GREP="$formatted_path"
15116     PathFormat "/usr/bin/ls.exe"
15117     WIN_LS="$formatted_path"
15118     PathFormat "/usr/bin/touch.exe"
15119     WIN_TOUCH="$formatted_path"
15120 else
15121     FIND=find
15122     SORT=sort
15125 AC_SUBST(ATL_INCLUDE)
15126 AC_SUBST(ATL_LIB)
15127 AC_SUBST(FIND)
15128 AC_SUBST(SORT)
15129 AC_SUBST(WIN_GREP)
15130 AC_SUBST(WIN_LS)
15131 AC_SUBST(WIN_TOUCH)
15133 AC_SUBST(BUILD_TYPE)
15135 AC_SUBST(SOLARINC)
15137 PathFormat "$PERL"
15138 PERL="$formatted_path"
15139 AC_SUBST(PERL)
15141 if test -n "$TMPDIR"; then
15142     TEMP_DIRECTORY="$TMPDIR"
15143 else
15144     TEMP_DIRECTORY="/tmp"
15146 CYGWIN_BASH="C:/cygwin64/bin/bash.exe"
15147 if test "$build_os" = "cygwin"; then
15148     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
15149     CYGWIN_BASH=`cygpath -m /usr/bin/bash`
15151 AC_SUBST(TEMP_DIRECTORY)
15152 AC_SUBST(CYGWIN_BASH)
15154 # setup the PATH for the environment
15155 if test -n "$LO_PATH_FOR_BUILD"; then
15156     LO_PATH="$LO_PATH_FOR_BUILD"
15157     case "$host_os" in
15158     cygwin*|wsl*)
15159         pathmunge "$MSVC_HOST_PATH" "before"
15160         ;;
15161     esac
15162 else
15163     LO_PATH="$PATH"
15165     case "$host_os" in
15167     dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
15168         if test "$ENABLE_JAVA" != ""; then
15169             pathmunge "$JAVA_HOME/bin" "after"
15170         fi
15171         ;;
15173     cygwin*|wsl*)
15174         # Win32 make needs native paths
15175         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
15176             LO_PATH=`cygpath -p -m "$PATH"`
15177         fi
15178         if test "$WIN_BUILD_ARCH" = "x64"; then
15179             # needed for msi packaging
15180             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
15181         fi
15182         if test "$WIN_BUILD_ARCH" = "arm64"; then
15183             # needed for msi packaging - as of 10.0.22621 SDK no arm64 ones yet
15184             # the x86 ones probably would work just as well...
15185             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/arm" "before"
15186         fi
15187         # .NET 4.6 and higher don't have bin directory
15188         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
15189             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
15190         fi
15191         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
15192         pathmunge "$CSC_PATH" "before"
15193         pathmunge "$MIDL_PATH" "before"
15194         pathmunge "$AL_PATH" "before"
15195         pathmunge "$MSVC_MULTI_PATH" "before"
15196         pathmunge "$MSVC_BUILD_PATH" "before"
15197         if test -n "$MSBUILD_PATH" ; then
15198             pathmunge "$MSBUILD_PATH" "before"
15199         fi
15200         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
15201         if test "$ENABLE_JAVA" != ""; then
15202             if test -d "$JAVA_HOME/jre/bin/client"; then
15203                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
15204             fi
15205             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
15206                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
15207             fi
15208             pathmunge "$JAVA_HOME/bin" "before"
15209         fi
15210         pathmunge "$MSVC_HOST_PATH" "before"
15211         ;;
15213     solaris*)
15214         pathmunge "/usr/css/bin" "before"
15215         if test "$ENABLE_JAVA" != ""; then
15216             pathmunge "$JAVA_HOME/bin" "after"
15217         fi
15218         ;;
15219     esac
15222 AC_SUBST(LO_PATH)
15224 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
15225 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
15226     x_LO_ELFCHECK_ALLOWLIST=
15227 else
15228     x_LO_ELFCHECK_ALLOWLIST=[\#]
15230 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
15231 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
15233 libo_FUZZ_SUMMARY
15235 # Generate a configuration sha256 we can use for deps
15236 if test -f config_host.mk; then
15237     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
15239 if test -f config_host_lang.mk; then
15240     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
15243 CFLAGS=$my_original_CFLAGS
15244 CXXFLAGS=$my_original_CXXFLAGS
15245 CPPFLAGS=$my_original_CPPFLAGS
15247 AC_CONFIG_LINKS([include:include])
15249 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
15250 # BUILD platform configuration] - otherwise breaks cross building
15251 AC_CONFIG_FILES([config_host.mk
15252                  config_host_lang.mk
15253                  Makefile
15254                  bin/bffvalidator.sh
15255                  bin/odfvalidator.sh
15256                  bin/officeotron.sh
15257                  instsetoo_native/util/openoffice.lst
15258                  sysui/desktop/macosx/Info.plist
15259                  hardened_runtime.xcent:sysui/desktop/macosx/hardened_runtime.xcent.in
15260                  lo.xcent:sysui/desktop/macosx/lo.xcent.in
15261                  vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
15263 AC_CONFIG_HEADERS([config_host/config_atspi.h])
15264 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
15265 AC_CONFIG_HEADERS([config_host/config_buildid.h])
15266 AC_CONFIG_HEADERS([config_host/config_box2d.h])
15267 AC_CONFIG_HEADERS([config_host/config_clang.h])
15268 AC_CONFIG_HEADERS([config_host/config_crypto.h])
15269 AC_CONFIG_HEADERS([config_host/config_dconf.h])
15270 AC_CONFIG_HEADERS([config_host/config_eot.h])
15271 AC_CONFIG_HEADERS([config_host/config_extensions.h])
15272 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
15273 AC_CONFIG_HEADERS([config_host/config_cairo_rgba.h])
15274 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
15275 AC_CONFIG_HEADERS([config_host/config_dbus.h])
15276 AC_CONFIG_HEADERS([config_host/config_features.h])
15277 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
15278 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
15279 AC_CONFIG_HEADERS([config_host/config_firebird.h])
15280 AC_CONFIG_HEADERS([config_host/config_folders.h])
15281 AC_CONFIG_HEADERS([config_host/config_fonts.h])
15282 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
15283 AC_CONFIG_HEADERS([config_host/config_gio.h])
15284 AC_CONFIG_HEADERS([config_host/config_global.h])
15285 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
15286 AC_CONFIG_HEADERS([config_host/config_java.h])
15287 AC_CONFIG_HEADERS([config_host/config_langs.h])
15288 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
15289 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
15290 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
15291 AC_CONFIG_HEADERS([config_host/config_locales.h])
15292 AC_CONFIG_HEADERS([config_host/config_mpl.h])
15293 AC_CONFIG_HEADERS([config_host/config_oox.h])
15294 AC_CONFIG_HEADERS([config_host/config_options.h])
15295 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
15296 AC_CONFIG_HEADERS([config_host/config_zxing.h])
15297 AC_CONFIG_HEADERS([config_host/config_skia.h])
15298 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
15299 AC_CONFIG_HEADERS([config_host/config_validation.h])
15300 AC_CONFIG_HEADERS([config_host/config_vendor.h])
15301 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
15302 AC_CONFIG_HEADERS([config_host/config_version.h])
15303 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
15304 AC_CONFIG_HEADERS([config_host/config_poppler.h])
15305 AC_CONFIG_HEADERS([config_host/config_python.h])
15306 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
15307 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
15308 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
15309 AC_OUTPUT
15311 if test "$CROSS_COMPILING" = TRUE; then
15312     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
15315 # touch the config timestamp file
15316 if test ! -f config_host.mk.stamp; then
15317     echo > config_host.mk.stamp
15318 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
15319     echo "Host Configuration unchanged - avoiding scp2 stamp update"
15320 else
15321     echo > config_host.mk.stamp
15324 # touch the config lang timestamp file
15325 if test ! -f config_host_lang.mk.stamp; then
15326     echo > config_host_lang.mk.stamp
15327 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
15328     echo "Language Configuration unchanged - avoiding scp2 stamp update"
15329 else
15330     echo > config_host_lang.mk.stamp
15334 if test \( "$STALE_MAKE" = "TRUE" \) \
15335         -a "$build_os" = "cygwin"; then
15337 cat << _EOS
15338 ****************************************************************************
15339 WARNING:
15340 Your make version is known to be horribly slow, and hard to debug
15341 problems with. To get a reasonably functional make please do:
15343 to install a pre-compiled binary make for Win32
15345  mkdir -p /opt/lo/bin
15346  cd /opt/lo/bin
15347  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
15348  cp make-4.2.1-msvc.exe make
15349  chmod +x make
15351 to install from source:
15352 place yourself in a working directory of you choice.
15354  git clone git://git.savannah.gnu.org/make.git
15356  [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"]
15357  set PATH=%PATH%;C:\Cygwin\bin
15358  [or Cygwin64, if that is what you have]
15359  cd path-to-make-repo-you-cloned-above
15360  build_w32.bat --without-guile
15362 should result in a WinRel/gnumake.exe.
15363 Copy it to the Cygwin /opt/lo/bin directory as make.exe
15365 Then re-run autogen.sh
15367 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
15368 Alternatively, you can install the 'new' make where ever you want and make sure that `command -v make` finds it.
15370 _EOS
15374 cat << _EOF
15375 ****************************************************************************
15377 To show information on various make targets and make flags, run:
15378 $GNUMAKE help
15380 To just build, run:
15381 $GNUMAKE
15383 _EOF
15385 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
15386     cat << _EOF
15387 After the build has finished successfully, you can immediately run what you built using the command:
15388 _EOF
15390     if test $_os = Darwin; then
15391         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
15392     else
15393         echo instdir/program/soffice
15394     fi
15395     cat << _EOF
15397 If you want to run the unit tests, run:
15398 $GNUMAKE check
15400 _EOF
15403 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
15404     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
15405     cat "$WARNINGS_FILE_FOR_BUILD"
15406     echo
15409 if test -s "$WARNINGS_FILE"; then
15410     echo "HOST config ($WARNINGS_FILE)"
15411     cat "$WARNINGS_FILE"
15414 # Remove unneeded emconfigure artifacts
15415 rm -f a.out a.wasm a.out.js a.out.wasm
15417 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: