tdf#151548: cleanup "Add basic word::XFormField support" etc.
[LibreOffice.git] / configure.ac
blobcef05a5893d97df333e21f55c39ae3144a4830e2
1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 100 -*-
2 dnl configure.ac serves as input for the GNU autoconf package
3 dnl in order to create a configure script.
5 # The version number in the second argument to AC_INIT should be four numbers separated by
6 # periods. Some parts of the code requires the first one to be less than 128 and the others to be less
7 # than 256. The four numbers can optionally be followed by a period and a free-form string containing
8 # no spaces or periods, like "frobozz-mumble-42" or "alpha0". If the free-form string ends with one or
9 # several non-alphanumeric characters, those are split off and used only for the
10 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.
12 AC_INIT([LibreOffice],[7.5.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
17 AC_PREREQ([2.59])
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19     [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22     AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     if test "$COM" = "MSC"; then
50         for f in $1; do
51             if test "x$f" != "x${f#-L}"; then
52                 filteredlibs="$filteredlibs -LIBPATH:${f:2}"
53             elif test "x$f" != "x${f#-l}"; then
54                 filteredlibs="$filteredlibs ${f:2}.lib"
55             else
56                 filteredlibs="$filteredlibs $f"
57             fi
58         done
59     else
60         for f in $1; do
61             case "$f" in
62                 # let's start with Fedora's paths for now
63                 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
64                     # ignore it: on UNIXoids it is searched by default anyway
65                     # but if it's given explicitly then it may override other paths
66                     # (on macOS it would be an error to use it instead of SDK)
67                     ;;
68                 *)
69                     filteredlibs="$filteredlibs $f"
70                     ;;
71             esac
72         done
73     fi
76 PathFormat()
78     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
79     # function is called also on Unix.
80     #
81     # Return value: $formatted_path and $formatted_path_unix.
82     #
83     # $formatted_path is the argument in Windows format, but using forward slashes instead of
84     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
85     # or shell metacharacters).
86     #
87     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
88     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
89     # Unix pathname.
90     #
91     # Errors out if 8.3 names are needed but aren't present for some of the path components.
93     # Examples:
94     #
95     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
96     #
97     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
98     #
99     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
100     #
101     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
102     #
103     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
104     #
105     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
106     #
107     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
109     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
110         printf "PathFormat $1 ==> "
111     fi
113     formatted_path="$1"
114     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
115         if test "$build_os" = "wsl"; then
116             formatted_path=$(echo "$formatted_path" | tr -d '\r')
117         fi
119         pf_conv_to_dos=
120         # spaces,parentheses,brackets,braces are problematic in pathname
121         # so are backslashes
122         case "$formatted_path" in
123             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
124                 pf_conv_to_dos="yes"
125             ;;
126         esac
127         if test "$pf_conv_to_dos" = "yes"; then
128             if test "$build_os" = "wsl"; then
129                 case "$formatted_path" in
130                     /*)
131                         formatted_path=$(wslpath -w "$formatted_path")
132                         ;;
133                 esac
134                 formatted_path=$($WSL_LO_HELPER --8.3 "$formatted_path")
135             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
136                 formatted_path=`cygpath -sm "$formatted_path"`
137             else
138                 formatted_path=`cygpath -d "$formatted_path"`
139             fi
140             if test $? -ne 0;  then
141                 AC_MSG_ERROR([path conversion failed for "$1".])
142             fi
143         fi
144         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
145         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
146         if test "$fp_count_slash$fp_count_colon" != "00"; then
147             if test "$fp_count_colon" = "0"; then
148                 new_formatted_path=`realpath "$formatted_path"`
149                 if test $? -ne 0;  then
150                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
151                 else
152                     formatted_path="$new_formatted_path"
153                 fi
154             fi
155             if test "$build_os" = "wsl"; then
156                 if test "$fp_count_colon" != "0"; then
157                     formatted_path=$(wslpath "$formatted_path")
158                     local final_slash=
159                     case "$formatted_path" in
160                         */)
161                             final_slash=/
162                             ;;
163                     esac
164                     formatted_path=$(wslpath -m $formatted_path)
165                     case "$formatted_path" in
166                         */)
167                             ;;
168                         *)
169                             formatted_path="$formatted_path"$final_slash
170                             ;;
171                     esac
172                 else
173                     formatted_path=$(wslpath -m "$formatted_path")
174                 fi
175             else
176                 formatted_path=`cygpath -m "$formatted_path"`
177             fi
178             if test $? -ne 0;  then
179                 AC_MSG_ERROR([path conversion failed for "$1".])
180             fi
181         fi
182         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
183         if test "$fp_count_space" != "0"; then
184             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
185         fi
186     fi
187     if test "$build_os" = "wsl"; then
188         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
189         formatted_path_unix=$(wslpath "$formatted_path")
190     else
191         # But Cygwin can
192         formatted_path_unix="$formatted_path"
193     fi
196 AbsolutePath()
198     # There appears to be no simple and portable method to get an absolute and
199     # canonical path, so we try creating the directory if does not exist and
200     # utilizing the shell and pwd.
202     # Args: $1: A possibly relative pathname
203     # Return value: $absolute_path
205     # Convert to unix path, mkdir would treat c:/path as a relative path.
206     PathFormat "$1"
207     local rel="$formatted_path_unix"
208     absolute_path=""
209     test ! -e "$rel" && mkdir -p "$rel"
210     if test -d "$rel" ; then
211         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
212         absolute_path="$(pwd)"
213         cd - > /dev/null
214     else
215         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
216     fi
219 WARNINGS_FILE=config.warn
220 WARNINGS_FILE_FOR_BUILD=config.Build.warn
221 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
222 have_WARNINGS="no"
223 add_warning()
225     if test "$have_WARNINGS" = "no"; then
226         echo "*************************************" > "$WARNINGS_FILE"
227         have_WARNINGS="yes"
228         if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
229             dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
230             COLORWARN='*\e@<:@1;33;40m WARNING \e@<:@0m:'
231         else
232             COLORWARN="* WARNING :"
233         fi
234     fi
235     echo "$COLORWARN $@" >> "$WARNINGS_FILE"
238 dnl Some Mac User have the bad habit of letting a lot of crap
239 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
240 dnl that confuse the build.
241 dnl For the ones that use LODE, let's be nice and protect them
242 dnl from themselves
244 mac_sanitize_path()
246     mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
247 dnl a common but nevertheless necessary thing that may be in a fancy
248 dnl path location is git, so make sure we have it
249     mac_git_path=`which git 2>/dev/null`
250     if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
251         mac_path="$mac_path:`dirname $mac_git_path`"
252     fi
253 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
254 dnl path location is gpg, so make sure we find it
255     mac_gpg_path=`which gpg 2>/dev/null`
256     if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
257         mac_path="$mac_path:`dirname $mac_gpg_path`"
258     fi
259     PATH="$mac_path"
260     unset mac_path
261     unset mac_git_path
262     unset mac_gpg_path
265 dnl semantically test a three digits version
266 dnl $1 - $3 = minimal version
267 dnl $4 - $6 = current version
269 check_semantic_version_three()
271     test "$4" -gt "$1" \
272         -o \( "$4" -eq "$1" -a "$5" -gt "$2" \) \
273         -o \( "$4" -eq "$1" -a "$5" -eq "$2" -a "$6" -ge "$3" \)
274     return $?
277 dnl calls check_semantic_version_three with digits in named variables $1_MAJOR, $1_MINOR, $1_TINY
278 dnl $1 = current version prefix, e.g. EMSCRIPTEN => EMSCRIPTEN_
279 dnl $2 = postfix to $1, e.g. MIN => EMSCRIPTEN_MIN_
281 check_semantic_version_three_prefixed()
283     eval local MIN_MAJOR="\$${1}_${2}_MAJOR"
284     eval local MIN_MINOR="\$${1}_${2}_MINOR"
285     eval local MIN_TINY="\$${1}_${2}_TINY"
286     eval local CUR_MAJOR="\$${1}_MAJOR"
287     eval local CUR_MINOR="\$${1}_MINOR"
288     eval local CUR_TINY="\$${1}_TINY"
289     check_semantic_version_three $MIN_MAJOR $MIN_MINOR $MIN_TINY $CUR_MAJOR $CUR_MINOR $CUR_TINY
290     return $?
293 echo "********************************************************************"
294 echo "*"
295 echo "*   Running ${PACKAGE_NAME} build configuration."
296 echo "*"
297 echo "********************************************************************"
298 echo ""
300 dnl ===================================================================
301 dnl checks build and host OSes
302 dnl do this before argument processing to allow for platform dependent defaults
303 dnl ===================================================================
305 # Check for WSL. 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 "$(uname -r | grep -i Microsoft 2>/dev/null)" != ""; then
308     ac_cv_host="x86_64-pc-wsl"
309     ac_cv_host_cpu="x86_64"
310     ac_cv_host_os="wsl"
311     ac_cv_build="$ac_cv_host"
312     ac_cv_build_cpu="$ac_cv_host_cpu"
313     ac_cv_build_os="$ac_cv_host_os"
315     # Emulation of Cygwin's cygpath command for WSL.
316     cygpath()
317     {
318         if test -n "$UNITTEST_WSL_CYGPATH"; then
319             echo -n cygpath "$@" "==> "
320         fi
322         # Cygwin's real cygpath has a plethora of options but we use only a few here.
323         local args="$@"
324         local opt
325         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
326         OPTIND=1
328         while getopts dmuwlsp opt; do
329             case "$opt" in
330                 \?)
331                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
332                     ;;
333                 ?)
334                     eval opt_$opt=yes
335                     ;;
336             esac
337         done
339         shift $((OPTIND-1))
341         if test $# -ne 1; then
342             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
343         fi
345         local input="$1"
347         local result
349         if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
350             # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
352             if test -n "$opt_u"; then
353                 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
354             fi
356             case "$input" in
357                 /mnt/*)
358                     # A Windows file in WSL format
359                     input=$(wslpath -w "$input")
360                     ;;
361                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
362                     # Already in Windows format
363                     ;;
364                 /*)
365                     input=$(wslpath -w "$input")
366                     ;;
367                 *)
368                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
369                     ;;
370             esac
371             if test -n "$opt_d" -o -n "$opt_s"; then
372                 input=$($WSL_LO_HELPER --8.3 "$input")
373             fi
374             if test -n "$opt_m"; then
375                 input="${input//\\//}"
376             fi
377             echo "$input"
378         else
379             # Print Unix path
381             case "$input" in
382                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
383                     wslpath -u "$input"
384                     ;;
385                 /)
386                     echo "$input"
387                     ;;
388                 *)
389                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
390                     ;;
391             esac
392         fi
393     }
395     if test -n "$UNITTEST_WSL_CYGPATH"; then
396         BUILDDIR=.
398         # Nothing special with these file names, just arbitrary ones picked to test with
399         cygpath -d /usr/lib64/ld-linux-x86-64.so.2
400         cygpath -w /usr/lib64/ld-linux-x86-64.so.2
401         cygpath -m /usr/lib64/ld-linux-x86-64.so.2
402         cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
403         # At least on my machine for instance this file does have an 8.3 name
404         cygpath -d /mnt/c/windows/WindowsUpdate.log
405         # But for instance this one doesn't
406         cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
407         cygpath -ws /mnt/c/windows/WindowsUpdate.log
408         cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
409         cygpath -ms /mnt/c/windows/WindowsUpdate.log
411         cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
412         cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
414         exit 0
415     fi
417     if test -z "$WSL_LO_HELPER"; then
418         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/wsl-lo-helper" ; then
419             WSL_LO_HELPER="$LODE_HOME/opt/bin/wsl-lo-helper"
420         elif test -x "/opt/lo/bin/wsl-lo-helper"; then
421             WSL_LO_HELPER="/opt/lo/bin/wsl-lo-helper"
422         fi
423     fi
424     if test -z "$WSL_LO_HELPER"; then
425         AC_MSG_ERROR([wsl-lo-helper not found. See solenv/wsl/README.])
426     fi
429 AC_CANONICAL_HOST
430 AC_CANONICAL_BUILD
432 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
433     BUILDDIR=.
434     GREP=grep
436     # Use of PathFormat must be after AC_CANONICAL_BUILD above
437     PathFormat /
438     printf "$formatted_path , $formatted_path_unix\n"
440     PathFormat $PWD
441     printf "$formatted_path , $formatted_path_unix\n"
443     PathFormat "$PROGRAMFILESX86"
444     printf "$formatted_path , $formatted_path_unix\n"
446     exit 0
449 AC_MSG_CHECKING([for product name])
450 PRODUCTNAME="AC_PACKAGE_NAME"
451 if test -n "$with_product_name" -a "$with_product_name" != no; then
452     PRODUCTNAME="$with_product_name"
454 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
455     PRODUCTNAME="${PRODUCTNAME}Dev"
457 AC_MSG_RESULT([$PRODUCTNAME])
458 AC_SUBST(PRODUCTNAME)
459 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
460 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
462 dnl ===================================================================
463 dnl Our version is defined by the AC_INIT() at the top of this script.
464 dnl ===================================================================
466 AC_MSG_CHECKING([for package version])
467 if test -n "$with_package_version" -a "$with_package_version" != no; then
468     PACKAGE_VERSION="$with_package_version"
470 AC_MSG_RESULT([$PACKAGE_VERSION])
472 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
474 LIBO_VERSION_MAJOR=$1
475 LIBO_VERSION_MINOR=$2
476 LIBO_VERSION_MICRO=$3
477 LIBO_VERSION_PATCH=$4
479 LIBO_VERSION_SUFFIX=$5
481 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
482 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
483 # they get undoubled before actually passed to sed.
484 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
485 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
486 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
487 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
489 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
490 # three non-negative integers. Please find more information about CFBundleVersion at
491 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
493 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
494 # of at most three non-negative integers. Please find more information about
495 # CFBundleShortVersionString at
496 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
498 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
500 if test "$enable_macosx_sandbox" = yes; then
501     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
502     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
503 else
504     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
505     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
508 AC_SUBST(LIBO_VERSION_MAJOR)
509 AC_SUBST(LIBO_VERSION_MINOR)
510 AC_SUBST(LIBO_VERSION_MICRO)
511 AC_SUBST(LIBO_VERSION_PATCH)
512 AC_SUBST(LIBO_VERSION_SUFFIX)
513 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
514 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
515 AC_SUBST(MACOSX_BUNDLE_VERSION)
517 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
518 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
519 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
520 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
522 LIBO_THIS_YEAR=`date +%Y`
523 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
525 AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$ac_configure_args"]],[Options passed to configure script])
527 dnl ===================================================================
528 dnl Product version
529 dnl ===================================================================
530 AC_MSG_CHECKING([for product version])
531 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
532 AC_MSG_RESULT([$PRODUCTVERSION])
533 AC_SUBST(PRODUCTVERSION)
535 AC_PROG_EGREP
536 # AC_PROG_EGREP doesn't set GREP on all systems as well
537 AC_PATH_PROG(GREP, grep)
539 BUILDDIR=`pwd`
540 cd $srcdir
541 SRC_ROOT=`pwd`
542 cd $BUILDDIR
543 x_Cygwin=[\#]
545 dnl ======================================
546 dnl Required GObject introspection version
547 dnl ======================================
548 INTROSPECTION_REQUIRED_VERSION=1.32.0
550 dnl ===================================================================
551 dnl Search all the common names for GNU Make
552 dnl ===================================================================
553 AC_MSG_CHECKING([for GNU Make])
555 # try to use our own make if it is available and GNUMAKE was not already defined
556 if test -z "$GNUMAKE"; then
557     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
558         GNUMAKE="$LODE_HOME/opt/bin/make"
559     elif test -x "/opt/lo/bin/make"; then
560         GNUMAKE="/opt/lo/bin/make"
561     fi
564 GNUMAKE_WIN_NATIVE=
565 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
566     if test -n "$a"; then
567         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
568         if test $? -eq 0;  then
569             if test "$build_os" = "cygwin"; then
570                 if test -n "$($a -v | grep 'Built for Windows')" ; then
571                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
572                     GNUMAKE_WIN_NATIVE="TRUE"
573                 else
574                     GNUMAKE=`which $a`
575                 fi
576             else
577                 GNUMAKE=`which $a`
578             fi
579             break
580         fi
581     fi
582 done
583 AC_MSG_RESULT($GNUMAKE)
584 if test -z "$GNUMAKE"; then
585     AC_MSG_ERROR([not found. install GNU Make.])
586 else
587     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
588         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
589     fi
592 win_short_path_for_make()
594     local short_path="$1"
595     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
596         cygpath -sm "$short_path"
597     else
598         cygpath -u "$(cygpath -d "$short_path")"
599     fi
603 if test "$build_os" = "cygwin"; then
604     PathFormat "$SRC_ROOT"
605     SRC_ROOT="$formatted_path"
606     PathFormat "$BUILDDIR"
607     BUILDDIR="$formatted_path"
608     x_Cygwin=
609     AC_MSG_CHECKING(for explicit COMSPEC)
610     if test -z "$COMSPEC"; then
611         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
612     else
613         AC_MSG_RESULT([found: $COMSPEC])
614     fi
617 AC_SUBST(SRC_ROOT)
618 AC_SUBST(BUILDDIR)
619 AC_SUBST(x_Cygwin)
620 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
621 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
622 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
624 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
625     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
628 # need sed in os checks...
629 AC_PATH_PROGS(SED, sed)
630 if test -z "$SED"; then
631     AC_MSG_ERROR([install sed to run this script])
634 # Set the ENABLE_LTO variable
635 # ===================================================================
636 AC_MSG_CHECKING([whether to use link-time optimization])
637 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
638     ENABLE_LTO="TRUE"
639     AC_MSG_RESULT([yes])
640 else
641     ENABLE_LTO=""
642     AC_MSG_RESULT([no])
644 AC_SUBST(ENABLE_LTO)
646 AC_ARG_ENABLE(fuzz-options,
647     AS_HELP_STRING([--enable-fuzz-options],
648         [Randomly enable or disable each of those configurable options
649          that are supposed to be freely selectable without interdependencies,
650          or where bad interaction from interdependencies is automatically avoided.])
653 dnl ===================================================================
654 dnl When building for Android, --with-android-ndk,
655 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
656 dnl mandatory
657 dnl ===================================================================
659 AC_ARG_WITH(android-ndk,
660     AS_HELP_STRING([--with-android-ndk],
661         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
664 AC_ARG_WITH(android-ndk-toolchain-version,
665     AS_HELP_STRING([--with-android-ndk-toolchain-version],
666         [Specify which toolchain version to use, of those present in the
667         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
668         with_android_ndk_toolchain_version=clang5.0)
670 AC_ARG_WITH(android-sdk,
671     AS_HELP_STRING([--with-android-sdk],
672         [Specify location of the Android SDK. Mandatory when building for Android.]),
675 AC_ARG_WITH(android-api-level,
676     AS_HELP_STRING([--with-android-api-level],
677         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
680 ANDROID_NDK_DIR=
681 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
682     with_android_ndk="$SRC_ROOT/external/android-ndk"
684 if test -n "$with_android_ndk"; then
685     eval ANDROID_NDK_DIR=$with_android_ndk
687     # Set up a lot of pre-canned defaults
689     if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
690         if test ! -f $ANDROID_NDK_DIR/source.properties; then
691             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
692         fi
693         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
694     else
695         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
696     fi
697     if test -z "$ANDROID_NDK_VERSION";  then
698         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
699     fi
700     case $ANDROID_NDK_VERSION in
701     r9*|r10*)
702         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
703         ;;
704     11.1.*|12.1.*|13.1.*|14.1.*)
705         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
706         ;;
707     16.*|17.*|18.*|19.*|20.*)
708         ;;
709     *)
710         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
711         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
712         ;;
713     esac
715     ANDROID_API_LEVEL=16
716     if test -n "$with_android_api_level" ; then
717         ANDROID_API_LEVEL="$with_android_api_level"
718     fi
720     android_cpu=$host_cpu
721     if test $host_cpu = arm; then
722         android_platform_prefix=arm-linux-androideabi
723         android_gnu_prefix=$android_platform_prefix
724         LLVM_TRIPLE=armv7a-linux-androideabi
725         ANDROID_APP_ABI=armeabi-v7a
726         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
727     elif test $host_cpu = aarch64; then
728         android_platform_prefix=aarch64-linux-android
729         android_gnu_prefix=$android_platform_prefix
730         LLVM_TRIPLE=$android_platform_prefix
731         # minimum android version that supports aarch64
732         if test "$ANDROID_API_LEVEL" -lt "21" ; then
733             ANDROID_API_LEVEL=21
734         fi
735         ANDROID_APP_ABI=arm64-v8a
736     elif test $host_cpu = x86_64; then
737         android_platform_prefix=x86_64-linux-android
738         android_gnu_prefix=$android_platform_prefix
739         LLVM_TRIPLE=$android_platform_prefix
740         # minimum android version that supports x86_64
741         ANDROID_API_LEVEL=21
742         ANDROID_APP_ABI=x86_64
743     else
744         # host_cpu is something like "i386" or "i686" I guess, NDK uses
745         # "x86" in some contexts
746         android_cpu=x86
747         android_platform_prefix=$android_cpu
748         android_gnu_prefix=i686-linux-android
749         LLVM_TRIPLE=$android_gnu_prefix
750         ANDROID_APP_ABI=x86
751     fi
753     case "$with_android_ndk_toolchain_version" in
754     clang5.0)
755         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
756         ;;
757     *)
758         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
759     esac
761     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
763     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
764     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
765     # manage to link the (app-specific) single huge .so that is built for the app in
766     # android/source/ if there is debug information in a significant part of the object files.
767     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
768     # all objects have been built with debug information.)
769     case $build_os in
770     linux-gnu*)
771         android_HOST_TAG=linux-x86_64
772         ;;
773     darwin*)
774         android_HOST_TAG=darwin-x86_64
775         ;;
776     *)
777         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
778         # ndk would also support windows and windows-x86_64
779         ;;
780     esac
781     android_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
782     ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
783     dnl TODO: NSS build uses it...
784     ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_DIR/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
785     AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
787     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
788     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
789     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
790     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
791     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
793     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
794     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
795     if test "$ENABLE_LTO" = TRUE; then
796         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
797         # $CC and $CXX when building external libraries
798         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
799     fi
801     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
803     if test -z "$CC"; then
804         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
805         CC_BASE="clang"
806     fi
807     if test -z "$CXX"; then
808         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
809         CXX_BASE="clang++"
810     fi
812 AC_SUBST(ANDROID_NDK_DIR)
813 AC_SUBST(ANDROID_APP_ABI)
814 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
816 dnl ===================================================================
817 dnl --with-android-sdk
818 dnl ===================================================================
819 ANDROID_SDK_DIR=
820 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
821     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
823 if test -n "$with_android_sdk"; then
824     eval ANDROID_SDK_DIR=$with_android_sdk
825     PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
827 AC_SUBST(ANDROID_SDK_DIR)
829 AC_ARG_ENABLE([android-lok],
830     AS_HELP_STRING([--enable-android-lok],
831         [The Android app from the android/ subdir needs several tweaks all
832          over the place that break the LOK when used in the Online-based
833          Android app.  This switch indicates that the intent of this build is
834          actually the Online-based, non-modified LOK.])
836 ENABLE_ANDROID_LOK=
837 if test -n "$ANDROID_NDK_DIR" ; then
838     if test "$enable_android_lok" = yes; then
839         ENABLE_ANDROID_LOK=TRUE
840         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
841         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
842     else
843         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
844     fi
846 AC_SUBST([ENABLE_ANDROID_LOK])
848 libo_FUZZ_ARG_ENABLE([android-editing],
849     AS_HELP_STRING([--enable-android-editing],
850         [Enable the experimental editing feature on Android.])
852 ENABLE_ANDROID_EDITING=
853 if test "$enable_android_editing" = yes; then
854     ENABLE_ANDROID_EDITING=TRUE
856 AC_SUBST([ENABLE_ANDROID_EDITING])
858 disable_database_connectivity_dependencies()
860     enable_evolution2=no
861     enable_firebird_sdbc=no
862     enable_mariadb_sdbc=no
863     enable_postgresql_sdbc=no
864     enable_report_builder=no
867 # ===================================================================
869 # Start initial platform setup
871 # The using_* variables reflect platform support and should not be
872 # changed after the "End initial platform setup" block.
873 # This is also true for most test_* variables.
874 # ===================================================================
875 build_crypto=yes
876 test_clucene=no
877 test_gdb_index=no
878 test_openldap=yes
879 test_split_debug=no
880 test_webdav=yes
881 usable_dlapi=yes
883 # There is currently just iOS not using salplug, so this explicitly enables it.
884 # must: using_freetype_fontconfig
885 #  may: using_headless_plugin defaults to $using_freetype_fontconfig
886 # must: using_x11
888 # Default values, as such probably valid just for Linux, set
889 # differently below just for Mac OSX, but at least better than
890 # hardcoding these as we used to do. Much of this is duplicated also
891 # in solenv for old build system and for gbuild, ideally we should
892 # perhaps define stuff like this only here in configure.ac?
894 LINKFLAGSSHL="-shared"
895 PICSWITCH="-fpic"
896 DLLPOST=".so"
898 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
900 INSTROOTBASESUFFIX=
901 INSTROOTCONTENTSUFFIX=
902 SDKDIRNAME=sdk
904 HOST_PLATFORM="$host"
906 host_cpu_for_clang="$host_cpu"
908 case "$host_os" in
910 solaris*)
911     using_freetype_fontconfig=yes
912     using_x11=yes
913     build_skia=yes
914     _os=SunOS
916     dnl ===========================================================
917     dnl Check whether we're using Solaris 10 - SPARC or Intel.
918     dnl ===========================================================
919     AC_MSG_CHECKING([the Solaris operating system release])
920     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
921     if test "$_os_release" -lt "10"; then
922         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
923     else
924         AC_MSG_RESULT([ok ($_os_release)])
925     fi
927     dnl Check whether we're using a SPARC or i386 processor
928     AC_MSG_CHECKING([the processor type])
929     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
930         AC_MSG_RESULT([ok ($host_cpu)])
931     else
932         AC_MSG_ERROR([only SPARC and i386 processors are supported])
933     fi
934     ;;
936 linux-gnu*|k*bsd*-gnu*|linux-musl*)
937     using_freetype_fontconfig=yes
938     using_x11=yes
939     build_skia=yes
940     test_gdb_index=yes
941     test_split_debug=yes
942     if test "$enable_fuzzers" = yes; then
943         test_system_freetype=no
944     fi
945     _os=Linux
946     ;;
948 gnu)
949     using_freetype_fontconfig=yes
950     using_x11=no
951     _os=GNU
952      ;;
954 cygwin*|wsl*)
955     # When building on Windows normally with MSVC under Cygwin,
956     # configure thinks that the host platform (the platform the
957     # built code will run on) is Cygwin, even if it obviously is
958     # Windows, which in Autoconf terminology is called
959     # "mingw32". (Which is misleading as MinGW is the name of the
960     # tool-chain, not an operating system.)
962     # Somewhat confusing, yes. But this configure script doesn't
963     # look at $host etc that much, it mostly uses its own $_os
964     # variable, set here in this case statement.
966     using_freetype_fontconfig=no
967     using_x11=no
968     test_unix_dlapi=no
969     test_openldap=no
970     enable_pagein=no
971     build_skia=yes
972     _os=WINNT
974     DLLPOST=".dll"
975     LINKFLAGSNOUNDEFS=
977     if test "$host_cpu" = "aarch64"; then
978         build_skia=no
979         enable_gpgmepp=no
980         enable_coinmp=no
981         enable_firebird_sdbc=no
982     fi
983     ;;
985 darwin*) # macOS
986     using_freetype_fontconfig=no
987     using_x11=no
988     build_skia=yes
989     enable_pagein=no
990     if test -n "$LODE_HOME" ; then
991         mac_sanitize_path
992         AC_MSG_NOTICE([sanitized the PATH to $PATH])
993     fi
994     _os=Darwin
995     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
996     INSTROOTCONTENTSUFFIX=/Contents
997     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
998     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
999     LINKFLAGSSHL="-dynamiclib -single_module"
1001     # -fPIC is default
1002     PICSWITCH=""
1004     DLLPOST=".dylib"
1006     # -undefined error is the default
1007     LINKFLAGSNOUNDEFS=""
1008     case "$host_cpu" in
1009     aarch64|arm64)
1010         # Apple's Clang uses "arm64"
1011         host_cpu_for_clang=arm64
1012     esac
1015 ios*) # iOS
1016     using_freetype_fontconfig=no
1017     using_x11=no
1018     build_crypto=no
1019     test_libcmis=no
1020     test_openldap=no
1021     test_webdav=no
1022     if test -n "$LODE_HOME" ; then
1023         mac_sanitize_path
1024         AC_MSG_NOTICE([sanitized the PATH to $PATH])
1025     fi
1026     enable_gpgmepp=no
1027     _os=iOS
1028     enable_mpl_subset=yes
1029     enable_lotuswordpro=no
1030     disable_database_connectivity_dependencies
1031     enable_coinmp=no
1032     enable_lpsolve=no
1033     enable_extension_integration=no
1034     enable_xmlhelp=no
1035     with_ppds=no
1036     if test "$enable_ios_simulator" = "yes"; then
1037         host=x86_64-apple-darwin
1038     fi
1039     # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1040     LINKFLAGSSHL="-dynamiclib -single_module"
1042     # -fPIC is default
1043     PICSWITCH=""
1045     DLLPOST=".dylib"
1047     # -undefined error is the default
1048     LINKFLAGSNOUNDEFS=""
1050     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1051     # part, so use aarch64-apple-darwin for now.
1052     HOST_PLATFORM=aarch64-apple-darwin
1054     # Apple's Clang uses "arm64"
1055     host_cpu_for_clang=arm64
1058 freebsd*)
1059     using_freetype_fontconfig=yes
1060     using_x11=yes
1061     build_skia=yes
1062     AC_MSG_CHECKING([the FreeBSD operating system release])
1063     if test -n "$with_os_version"; then
1064         OSVERSION="$with_os_version"
1065     else
1066         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1067     fi
1068     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1069     AC_MSG_CHECKING([which thread library to use])
1070     if test "$OSVERSION" -lt "500016"; then
1071         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1072         PTHREAD_LIBS="-pthread"
1073     elif test "$OSVERSION" -lt "502102"; then
1074         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1075         PTHREAD_LIBS="-lc_r"
1076     else
1077         PTHREAD_CFLAGS=""
1078         PTHREAD_LIBS="-pthread"
1079     fi
1080     AC_MSG_RESULT([$PTHREAD_LIBS])
1081     _os=FreeBSD
1082     ;;
1084 *netbsd*)
1085     using_freetype_fontconfig=yes
1086     using_x11=yes
1087     test_gtk3_kde5=no
1088     build_skia=yes
1089     PTHREAD_LIBS="-pthread -lpthread"
1090     _os=NetBSD
1091     ;;
1093 aix*)
1094     using_freetype_fontconfig=yes
1095     using_x11=yes
1096     test_randr=no
1097     test_gstreamer_1_0=no
1098     PTHREAD_LIBS=-pthread
1099     _os=AIX
1100     ;;
1102 openbsd*)
1103     using_freetype_fontconfig=yes
1104     using_x11=yes
1105     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1106     PTHREAD_LIBS="-pthread"
1107     _os=OpenBSD
1108     ;;
1110 dragonfly*)
1111     using_freetype_fontconfig=yes
1112     using_x11=yes
1113     build_skia=yes
1114     PTHREAD_LIBS="-pthread"
1115     _os=DragonFly
1116     ;;
1118 linux-android*)
1119     # API exists, but seems not really usable since Android 7 AFAIK
1120     usable_dlapi=no
1121     using_freetype_fontconfig=yes
1122     using_headless_plugin=no
1123     using_x11=no
1124     build_crypto=no
1125     test_openldap=no
1126     test_system_freetype=no
1127     test_webdav=no
1128     disable_database_connectivity_dependencies
1129     enable_lotuswordpro=no
1130     enable_mpl_subset=yes
1131     enable_cairo_canvas=no
1132     enable_coinmp=yes
1133     enable_lpsolve=no
1134     enable_odk=no
1135     enable_python=no
1136     enable_xmlhelp=no
1137     _os=Android
1138     ;;
1140 haiku*)
1141     using_freetype_fontconfig=yes
1142     using_x11=no
1143     test_gtk3=no
1144     test_gtk3_kde5=no
1145     test_kf5=yes
1146     enable_odk=no
1147     enable_coinmp=no
1148     enable_pdfium=no
1149     enable_sdremote=no
1150     enable_postgresql_sdbc=no
1151     enable_firebird_sdbc=no
1152     _os=Haiku
1153     ;;
1155 emscripten)
1156     # API currently just exists in headers, not code
1157     usable_dlapi=no
1158     using_freetype_fontconfig=yes
1159     using_x11=no
1160     test_openldap=no
1161     test_qt5=yes
1162     test_split_debug=yes
1163     test_system_freetype=no
1164     enable_compiler_plugins=no
1165     enable_customtarget_components=yes
1166     enable_qt5=yes
1167     enable_scripting=no
1168     enable_split_debug=yes
1169     enable_wasm_strip=yes
1170     with_system_zlib=no
1171     with_theme="colibre"
1172     _os=Emscripten
1173     ;;
1176     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1177     ;;
1178 esac
1180 AC_SUBST(HOST_PLATFORM)
1182 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1183     AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1186 # Set defaults, if not set by platform
1187 test "${test_cups+set}" = set || test_cups="$using_x11"
1188 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1189 test "${test_gen+set}" = set || test_gen="$using_x11"
1190 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1191 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1192 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1193 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1194 # don't handle test_qt5, so it can disable test_kf5 later
1195 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1196 test "${test_randr+set}" = set || test_randr="$using_x11"
1197 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1198 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1200 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1201 # Make sure fontconfig and freetype test both either system or not
1202 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1203 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1205 # convenience / platform overriding "fixes"
1206 # Don't sort!
1207 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1208 test "$test_kf5" = yes && test_qt5=yes
1209 test "$test_gtk3" != yes && enable_gtk3=no
1210 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1211 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1212 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1214 # Keep in sync with the above $using_x11 depending test default list
1215 disable_x11_tests()
1217     test_cups=no
1218     test_dbus=no
1219     test_gen=no
1220     test_gstreamer_1_0=no
1221     test_gtk3_kde5=no
1222     test_gtk3=no
1223     test_gtk4=no
1224     test_kf5=no
1225     test_qt5=no
1226     test_qt6=no
1227     test_randr=no
1228     test_xrender=no
1231 test "$using_x11" = yes && USING_X11=TRUE
1233 if test "$using_freetype_fontconfig" = yes; then
1234     USE_HEADLESS_CODE=TRUE
1235     if test "$using_headless_plugin" = yes; then
1236         AC_DEFINE(ENABLE_HEADLESS)
1237         ENABLE_HEADLESS=TRUE
1238     fi
1239 else
1240     test_fontconfig=no
1241     test_freetype=no
1244 AC_SUBST(ENABLE_HEADLESS)
1245 AC_SUBST(USE_HEADLESS_CODE)
1247 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1248 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1249 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1250 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1252 # ===================================================================
1254 # End initial platform setup
1256 # ===================================================================
1258 if test "$_os" = "Android" ; then
1259     # Verify that the NDK and SDK options are proper
1260     if test -z "$with_android_ndk"; then
1261         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1262     elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1263         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1264     fi
1266     if test -z "$ANDROID_SDK_DIR"; then
1267         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1268     elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1269         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1270     fi
1273 if test "$_os" = "AIX"; then
1274     AC_PATH_PROG(GAWK, gawk)
1275     if test -z "$GAWK"; then
1276         AC_MSG_ERROR([gawk not found in \$PATH])
1277     fi
1280 AC_SUBST(SDKDIRNAME)
1282 AC_SUBST(PTHREAD_CFLAGS)
1283 AC_SUBST(PTHREAD_LIBS)
1285 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1286 # By default use the ones specified by our build system,
1287 # but explicit override is possible.
1288 AC_MSG_CHECKING(for explicit AFLAGS)
1289 if test -n "$AFLAGS"; then
1290     AC_MSG_RESULT([$AFLAGS])
1291     x_AFLAGS=
1292 else
1293     AC_MSG_RESULT(no)
1294     x_AFLAGS=[\#]
1296 AC_MSG_CHECKING(for explicit CFLAGS)
1297 if test -n "$CFLAGS"; then
1298     AC_MSG_RESULT([$CFLAGS])
1299     x_CFLAGS=
1300 else
1301     AC_MSG_RESULT(no)
1302     x_CFLAGS=[\#]
1304 AC_MSG_CHECKING(for explicit CXXFLAGS)
1305 if test -n "$CXXFLAGS"; then
1306     AC_MSG_RESULT([$CXXFLAGS])
1307     x_CXXFLAGS=
1308 else
1309     AC_MSG_RESULT(no)
1310     x_CXXFLAGS=[\#]
1312 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1313 if test -n "$OBJCFLAGS"; then
1314     AC_MSG_RESULT([$OBJCFLAGS])
1315     x_OBJCFLAGS=
1316 else
1317     AC_MSG_RESULT(no)
1318     x_OBJCFLAGS=[\#]
1320 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1321 if test -n "$OBJCXXFLAGS"; then
1322     AC_MSG_RESULT([$OBJCXXFLAGS])
1323     x_OBJCXXFLAGS=
1324 else
1325     AC_MSG_RESULT(no)
1326     x_OBJCXXFLAGS=[\#]
1328 AC_MSG_CHECKING(for explicit LDFLAGS)
1329 if test -n "$LDFLAGS"; then
1330     AC_MSG_RESULT([$LDFLAGS])
1331     x_LDFLAGS=
1332 else
1333     AC_MSG_RESULT(no)
1334     x_LDFLAGS=[\#]
1336 AC_SUBST(AFLAGS)
1337 AC_SUBST(CFLAGS)
1338 AC_SUBST(CXXFLAGS)
1339 AC_SUBST(OBJCFLAGS)
1340 AC_SUBST(OBJCXXFLAGS)
1341 AC_SUBST(LDFLAGS)
1342 AC_SUBST(x_AFLAGS)
1343 AC_SUBST(x_CFLAGS)
1344 AC_SUBST(x_CXXFLAGS)
1345 AC_SUBST(x_OBJCFLAGS)
1346 AC_SUBST(x_OBJCXXFLAGS)
1347 AC_SUBST(x_LDFLAGS)
1349 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1350 my_original_CFLAGS=$CFLAGS
1351 my_original_CXXFLAGS=$CXXFLAGS
1352 my_original_CPPFLAGS=$CPPFLAGS
1354 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1355 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1356 dnl AC_PROG_CC internally.
1357 if test "$_os" != "WINNT"; then
1358     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1359     save_CFLAGS=$CFLAGS
1360     AC_PROG_CC
1361     CFLAGS=$save_CFLAGS
1362     if test -z "$CC_BASE"; then
1363         CC_BASE=`first_arg_basename "$CC"`
1364     fi
1367 if test "$_os" != "WINNT"; then
1368     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1369 else
1370     ENDIANNESS=little
1372 AC_SUBST(ENDIANNESS)
1374 if test "$usable_dlapi" != no; then
1375     AC_DEFINE([HAVE_DLAPI])
1376     if test "$test_unix_dlapi" != no; then
1377         save_LIBS="$LIBS"
1378         AC_SEARCH_LIBS([dlsym], [dl],
1379             [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1380             [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1381         LIBS="$save_LIBS"
1382         AC_DEFINE([HAVE_UNIX_DLAPI])
1383     fi
1385 AC_SUBST(UNIX_DLAPI_LIBS)
1387 # Check for a (GNU) backtrace implementation
1388 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1389 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1390 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1391     save_LIBS="$LIBS"
1392     AC_SEARCH_LIBS([backtrace], [libexecinfo],
1393         [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1394         [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1395     LIBS="$save_LIBS"
1397 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1398     AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1401 dnl ===================================================================
1402 dnl Sanity checks for Emscripten SDK setup
1403 dnl ===================================================================
1405 EMSCRIPTEN_MIN_MAJOR=2
1406 EMSCRIPTEN_MIN_MINOR=0
1407 EMSCRIPTEN_MIN_TINY=31
1408 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1410 if test "$_os" = "Emscripten"; then
1411     AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1412     EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1413     EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1414     EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1415     EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1416     EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1418     check_semantic_version_three_prefixed EMSCRIPTEN MIN
1419     if test $? -eq 0; then
1420         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1421     else
1422         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1423     fi
1425     EMSCRIPTEN_ERROR=0
1426     if ! which emconfigure >/dev/null 2>&1; then
1427         AC_MSG_WARN([emconfigure must be in your \$PATH])
1428         EMSCRIPTEN_ERROR=1
1429     fi
1430     if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1431         AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1432         EMSCRIPTEN_ERROR=1
1433     fi
1434     EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1435     if ! test -x "$EMSDK_FILE_PACKAGER"; then
1436         AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1437         EMSCRIPTEN_ERROR=1
1438     fi
1439     if test $EMSCRIPTEN_ERROR -ne 0; then
1440         AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1441     fi
1443 AC_SUBST(EMSDK_FILE_PACKAGER)
1445 ###############################################################################
1446 # Extensions switches --enable/--disable
1447 ###############################################################################
1448 # By default these should be enabled unless having extra dependencies.
1449 # If there is extra dependency over configure options then the enable should
1450 # be automagic based on whether the requiring feature is enabled or not.
1451 # All this options change anything only with --enable-extension-integration.
1453 # The name of this option and its help string makes it sound as if
1454 # extensions are built anyway, just not integrated in the installer,
1455 # if you use --disable-extension-integration. Is that really the
1456 # case?
1458 AC_ARG_ENABLE(ios-simulator,
1459     AS_HELP_STRING([--enable-ios-simulator],
1460         [build for iOS simulator])
1463 libo_FUZZ_ARG_ENABLE(extension-integration,
1464     AS_HELP_STRING([--disable-extension-integration],
1465         [Disable integration of the built extensions in the installer of the
1466          product. Use this switch to disable the integration.])
1469 AC_ARG_ENABLE(avmedia,
1470     AS_HELP_STRING([--disable-avmedia],
1471         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1472 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1474 AC_ARG_ENABLE(database-connectivity,
1475     AS_HELP_STRING([--disable-database-connectivity],
1476         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1479 # This doesn't mean not building (or "integrating") extensions
1480 # (although it probably should; i.e. it should imply
1481 # --disable-extension-integration I guess), it means not supporting
1482 # any extension mechanism at all
1483 libo_FUZZ_ARG_ENABLE(extensions,
1484     AS_HELP_STRING([--disable-extensions],
1485         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1488 AC_ARG_ENABLE(scripting,
1489     AS_HELP_STRING([--disable-scripting],
1490         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1491 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1493 # This is mainly for Android and iOS, but could potentially be used in some
1494 # special case otherwise, too, so factored out as a separate setting
1496 AC_ARG_ENABLE(dynamic-loading,
1497     AS_HELP_STRING([--disable-dynamic-loading],
1498         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1501 libo_FUZZ_ARG_ENABLE(report-builder,
1502     AS_HELP_STRING([--disable-report-builder],
1503         [Disable the Report Builder.])
1506 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1507     AS_HELP_STRING([--enable-ext-wiki-publisher],
1508         [Enable the Wiki Publisher extension.])
1511 libo_FUZZ_ARG_ENABLE(lpsolve,
1512     AS_HELP_STRING([--disable-lpsolve],
1513         [Disable compilation of the lp solve solver ])
1515 libo_FUZZ_ARG_ENABLE(coinmp,
1516     AS_HELP_STRING([--disable-coinmp],
1517         [Disable compilation of the CoinMP solver ])
1520 libo_FUZZ_ARG_ENABLE(pdfimport,
1521     AS_HELP_STRING([--disable-pdfimport],
1522         [Disable building the PDF import feature.])
1525 libo_FUZZ_ARG_ENABLE(pdfium,
1526     AS_HELP_STRING([--disable-pdfium],
1527         [Disable building PDFium. Results in unsecure PDF signature verification.])
1530 libo_FUZZ_ARG_ENABLE(skia,
1531     AS_HELP_STRING([--disable-skia],
1532         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1535 ###############################################################################
1537 dnl ---------- *** ----------
1539 libo_FUZZ_ARG_ENABLE(mergelibs,
1540     AS_HELP_STRING([--enable-mergelibs],
1541         [Merge several of the smaller libraries into one big, "merged", one.])
1544 libo_FUZZ_ARG_ENABLE(breakpad,
1545     AS_HELP_STRING([--enable-breakpad],
1546         [Enables breakpad for crash reporting.])
1549 libo_FUZZ_ARG_ENABLE(crashdump,
1550     AS_HELP_STRING([--disable-crashdump],
1551         [Disable dump.ini and dump-file, when --enable-breakpad])
1554 AC_ARG_ENABLE(fetch-external,
1555     AS_HELP_STRING([--disable-fetch-external],
1556         [Disables fetching external tarballs from web sources.])
1559 AC_ARG_ENABLE(fuzzers,
1560     AS_HELP_STRING([--enable-fuzzers],
1561         [Enables building libfuzzer targets for fuzz testing.])
1564 libo_FUZZ_ARG_ENABLE(pch,
1565     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1566         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1567          Using 'system' will include only external headers, 'base' will add also headers
1568          from base modules, 'normal' will also add all headers except from the module built,
1569          'full' will use all suitable headers even from a module itself.])
1572 libo_FUZZ_ARG_ENABLE(epm,
1573     AS_HELP_STRING([--enable-epm],
1574         [LibreOffice includes self-packaging code, that requires epm, however epm is
1575          useless for large scale package building.])
1578 libo_FUZZ_ARG_ENABLE(odk,
1579     AS_HELP_STRING([--enable-odk],
1580         [Enable building the Office Development Kit, the part that extensions need to build against])
1583 AC_ARG_ENABLE(mpl-subset,
1584     AS_HELP_STRING([--enable-mpl-subset],
1585         [Don't compile any pieces which are not MPL or more liberally licensed])
1588 libo_FUZZ_ARG_ENABLE(evolution2,
1589     AS_HELP_STRING([--enable-evolution2],
1590         [Allows the built-in evolution 2 addressbook connectivity build to be
1591          enabled.])
1594 AC_ARG_ENABLE(avahi,
1595     AS_HELP_STRING([--enable-avahi],
1596         [Determines whether to use Avahi to advertise Impress to remote controls.])
1599 libo_FUZZ_ARG_ENABLE(werror,
1600     AS_HELP_STRING([--enable-werror],
1601         [Turn warnings to errors. (Has no effect in modules where the treating
1602          of warnings as errors is disabled explicitly.)]),
1605 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1606     AS_HELP_STRING([--enable-assert-always-abort],
1607         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1610 libo_FUZZ_ARG_ENABLE(dbgutil,
1611     AS_HELP_STRING([--enable-dbgutil],
1612         [Provide debugging support from --enable-debug and include additional debugging
1613          utilities such as object counting or more expensive checks.
1614          This is the recommended option for developers.
1615          Note that this makes the build ABI incompatible, it is not possible to mix object
1616          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1618 libo_FUZZ_ARG_ENABLE(debug,
1619     AS_HELP_STRING([--enable-debug],
1620         [Include debugging information, disable compiler optimization and inlining plus
1621          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1623 libo_FUZZ_ARG_ENABLE(split-debug,
1624     AS_HELP_STRING([--disable-split-debug],
1625         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1626          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1628 libo_FUZZ_ARG_ENABLE(gdb-index,
1629     AS_HELP_STRING([--disable-gdb-index],
1630         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1631          The feature requires a linker that supports the --gdb-index option.]))
1633 libo_FUZZ_ARG_ENABLE(sal-log,
1634     AS_HELP_STRING([--enable-sal-log],
1635         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1637 libo_FUZZ_ARG_ENABLE(symbols,
1638     AS_HELP_STRING([--enable-symbols],
1639         [Generate debug information.
1640          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1641          otherwise. It is possible to explicitly specify gbuild build targets
1642          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1643          everything in the directory; there is no ordering, more specific overrides
1644          more general, and disabling takes precedence).
1645          Example: --enable-symbols="all -sw/ -Library_sc".]))
1647 libo_FUZZ_ARG_ENABLE(optimized,
1648     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1649         [Whether to compile with optimization flags.
1650          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1651          otherwise. Using 'debug' will try to use only optimizations that should
1652          not interfere with debugging. For Emscripten we default to optimized (-O1)
1653          debug build, as otherwise binaries become too large.]))
1655 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1656     AS_HELP_STRING([--disable-runtime-optimizations],
1657         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1658          JVM JIT) that are known to interact badly with certain dynamic analysis
1659          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1660          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1661          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1663 AC_ARG_WITH(valgrind,
1664     AS_HELP_STRING([--with-valgrind],
1665         [Make availability of Valgrind headers a hard requirement.]))
1667 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1668     AS_HELP_STRING([--enable-compiler-plugins],
1669         [Enable compiler plugins that will perform additional checks during
1670          building. Enabled automatically by --enable-dbgutil.
1671          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1672 COMPILER_PLUGINS_DEBUG=
1673 if test "$enable_compiler_plugins" = debug; then
1674     enable_compiler_plugins=yes
1675     COMPILER_PLUGINS_DEBUG=TRUE
1678 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1679     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1680         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1681          relevant in the --disable-compiler-plugins case.]))
1683 libo_FUZZ_ARG_ENABLE(ooenv,
1684     AS_HELP_STRING([--enable-ooenv],
1685         [Enable ooenv for the instdir installation.]))
1687 AC_ARG_ENABLE(lto,
1688     AS_HELP_STRING([--enable-lto],
1689         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1690          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1691          linker.)]))
1693 AC_ARG_ENABLE(python,
1694     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1695         [Enables or disables Python support at run-time.
1696          Also specifies what Python to use at build-time.
1697          'fully-internal' even forces the internal version for uses of Python
1698          during the build.
1699          On macOS the only choices are
1700          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1701          ]))
1703 libo_FUZZ_ARG_ENABLE(gtk3,
1704     AS_HELP_STRING([--disable-gtk3],
1705         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1706 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1708 AC_ARG_ENABLE(gtk4,
1709     AS_HELP_STRING([--enable-gtk4],
1710         [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1712 AC_ARG_ENABLE(introspection,
1713     AS_HELP_STRING([--enable-introspection],
1714         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1715          Linux distributions.)]))
1717 AC_ARG_ENABLE(split-app-modules,
1718     AS_HELP_STRING([--enable-split-app-modules],
1719         [Split file lists for app modules, e.g. base, calc.
1720          Has effect only with make distro-pack-install]),
1723 AC_ARG_ENABLE(split-opt-features,
1724     AS_HELP_STRING([--enable-split-opt-features],
1725         [Split file lists for some optional features, e.g. pyuno, testtool.
1726          Has effect only with make distro-pack-install]),
1729 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1730     AS_HELP_STRING([--disable-cairo-canvas],
1731         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1734 libo_FUZZ_ARG_ENABLE(dbus,
1735     AS_HELP_STRING([--disable-dbus],
1736         [Determines whether to enable features that depend on dbus.
1737          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1738 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1740 libo_FUZZ_ARG_ENABLE(sdremote,
1741     AS_HELP_STRING([--disable-sdremote],
1742         [Determines whether to enable Impress remote control (i.e. the server component).]),
1743 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1745 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1746     AS_HELP_STRING([--disable-sdremote-bluetooth],
1747         [Determines whether to build sdremote with bluetooth support.
1748          Requires dbus on Linux.]))
1750 libo_FUZZ_ARG_ENABLE(gio,
1751     AS_HELP_STRING([--disable-gio],
1752         [Determines whether to use the GIO support.]),
1753 ,test "${enable_gio+set}" = set || enable_gio=yes)
1755 AC_ARG_ENABLE(qt5,
1756     AS_HELP_STRING([--enable-qt5],
1757         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1758          available.]),
1761 AC_ARG_ENABLE(qt6,
1762     AS_HELP_STRING([--enable-qt6],
1763         [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1764          available.]),
1767 AC_ARG_ENABLE(kf5,
1768     AS_HELP_STRING([--enable-kf5],
1769         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1770          KF5 are available.]),
1773 AC_ARG_ENABLE(gtk3_kde5,
1774     AS_HELP_STRING([--enable-gtk3-kde5],
1775         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1776          platforms where Gtk3, Qt5 and Plasma is available.]),
1779 AC_ARG_ENABLE(gen,
1780     AS_HELP_STRING([--enable-gen],
1781         [To select the gen backend in case of --disable-dynamic-loading.
1782          Per default auto-enabled when X11 is used.]),
1783 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1785 AC_ARG_ENABLE(gui,
1786     AS_HELP_STRING([--disable-gui],
1787         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1788 ,enable_gui=yes)
1790 libo_FUZZ_ARG_ENABLE(randr,
1791     AS_HELP_STRING([--disable-randr],
1792         [Disable RandR support in the vcl project.]),
1793 ,test "${enable_randr+set}" = set || enable_randr=yes)
1795 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1796     AS_HELP_STRING([--disable-gstreamer-1-0],
1797         [Disable building with the gstreamer 1.0 avmedia backend.]),
1798 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1800 libo_FUZZ_ARG_ENABLE([eot],
1801     [AS_HELP_STRING([--enable-eot],
1802         [Enable support for Embedded OpenType fonts.])],
1803 ,test "${enable_eot+set}" = set || enable_eot=no)
1805 libo_FUZZ_ARG_ENABLE(cve-tests,
1806     AS_HELP_STRING([--disable-cve-tests],
1807         [Prevent CVE tests to be executed]),
1810 AC_ARG_ENABLE(build-opensymbol,
1811     AS_HELP_STRING([--enable-build-opensymbol],
1812         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1813          fontforge installed.]),
1816 AC_ARG_ENABLE(dependency-tracking,
1817     AS_HELP_STRING([--enable-dependency-tracking],
1818         [Do not reject slow dependency extractors.])[
1819   --disable-dependency-tracking
1820                           Disables generation of dependency information.
1821                           Speed up one-time builds.],
1824 AC_ARG_ENABLE(icecream,
1825     AS_HELP_STRING([--enable-icecream],
1826         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1827          It defaults to /opt/icecream for the location of the icecream gcc/g++
1828          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1831 AC_ARG_ENABLE(ld,
1832     AS_HELP_STRING([--enable-ld=<linker>],
1833         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1834          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1835          If <linker> contains any ':', the part before the first ':' is used as the value of
1836          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1837          needed for Clang 12).]),
1840 libo_FUZZ_ARG_ENABLE(cups,
1841     AS_HELP_STRING([--disable-cups],
1842         [Do not build cups support.])
1845 AC_ARG_ENABLE(ccache,
1846     AS_HELP_STRING([--disable-ccache],
1847         [Do not try to use ccache automatically.
1848          By default we will try to detect if ccache is available; in that case if
1849          CC/CXX are not yet set, and --enable-icecream is not given, we
1850          attempt to use ccache. --disable-ccache disables ccache completely.
1851          Additionally ccache's depend mode is enabled if possible,
1852          use --enable-ccache=nodepend to enable ccache without depend mode.
1856 AC_ARG_ENABLE(z7-debug,
1857     AS_HELP_STRING([--enable-z7-debug],
1858         [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1859          more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1860          Enabled by default if ccache is detected.]))
1862 libo_FUZZ_ARG_ENABLE(online-update,
1863     AS_HELP_STRING([--enable-online-update],
1864         [Enable the online update service that will check for new versions of
1865          LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1866          If the value is "mar", the experimental Mozilla-like update will be
1867          enabled instead of the traditional update mechanism.]),
1870 AC_ARG_WITH(update-config,
1871     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1872                    [Path to the update config ini file]))
1874 libo_FUZZ_ARG_ENABLE(extension-update,
1875     AS_HELP_STRING([--disable-extension-update],
1876         [Disable possibility to update installed extensions.]),
1879 libo_FUZZ_ARG_ENABLE(release-build,
1880     AS_HELP_STRING([--enable-release-build],
1881         [Enable release build. Note that the "release build" choice is orthogonal to
1882          whether symbols are present, debug info is generated, or optimization
1883          is done.
1884          See http://wiki.documentfoundation.org/Development/DevBuild]),
1887 AC_ARG_ENABLE(windows-build-signing,
1888     AS_HELP_STRING([--enable-windows-build-signing],
1889         [Enable signing of windows binaries (*.exe, *.dll)]),
1892 AC_ARG_ENABLE(silent-msi,
1893     AS_HELP_STRING([--enable-silent-msi],
1894         [Enable MSI with LIMITUI=1 (silent install).]),
1897 AC_ARG_ENABLE(macosx-code-signing,
1898     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1899         [Sign executables, dylibs, frameworks and the app bundle. If you
1900          don't provide an identity the first suitable certificate
1901          in your keychain is used.]),
1904 AC_ARG_ENABLE(macosx-package-signing,
1905     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1906         [Create a .pkg suitable for uploading to the Mac App Store and sign
1907          it. If you don't provide an identity the first suitable certificate
1908          in your keychain is used.]),
1911 AC_ARG_ENABLE(macosx-sandbox,
1912     AS_HELP_STRING([--enable-macosx-sandbox],
1913         [Make the app bundle run in a sandbox. Requires code signing.
1914          Is required by apps distributed in the Mac App Store, and implies
1915          adherence to App Store rules.]),
1918 AC_ARG_WITH(macosx-bundle-identifier,
1919     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1920         [Define the macOS bundle identifier. Default is the somewhat weird
1921          org.libreoffice.script ("script", huh?).]),
1922 ,with_macosx_bundle_identifier=org.libreoffice.script)
1924 AC_ARG_WITH(macosx-provisioning-profile,
1925     AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1926         [Specify the path to a provisioning profile to use]),
1929 AC_ARG_WITH(product-name,
1930     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1931         [Define the product name. Default is AC_PACKAGE_NAME.]),
1932 ,with_product_name=$PRODUCTNAME)
1934 libo_FUZZ_ARG_ENABLE(community-flavor,
1935     AS_HELP_STRING([--disable-community-flavor],
1936         [Disable the Community branding.]),
1939 AC_ARG_WITH(package-version,
1940     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1941         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1944 libo_FUZZ_ARG_ENABLE(readonly-installset,
1945     AS_HELP_STRING([--enable-readonly-installset],
1946         [Prevents any attempts by LibreOffice to write into its installation. That means
1947          at least that no "system-wide" extensions can be added. Partly experimental work in
1948          progress, probably not fully implemented. Always enabled for macOS.]),
1951 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1952     AS_HELP_STRING([--disable-mariadb-sdbc],
1953         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1956 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1957     AS_HELP_STRING([--disable-postgresql-sdbc],
1958         [Disable the build of the PostgreSQL-SDBC driver.])
1961 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1962     AS_HELP_STRING([--disable-lotuswordpro],
1963         [Disable the build of the Lotus Word Pro filter.]),
1964 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1966 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1967     AS_HELP_STRING([--disable-firebird-sdbc],
1968         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1969 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1971 AC_ARG_ENABLE(bogus-pkg-config,
1972     AS_HELP_STRING([--enable-bogus-pkg-config],
1973         [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.]),
1976 AC_ARG_ENABLE(openssl,
1977     AS_HELP_STRING([--disable-openssl],
1978         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1979          components will use NSS. Work in progress,
1980          use only if you are hacking on it.]),
1981 ,enable_openssl=yes)
1983 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1984     AS_HELP_STRING([--enable-cipher-openssl-backend],
1985         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1986          Requires --enable-openssl.]))
1988 AC_ARG_ENABLE(nss,
1989     AS_HELP_STRING([--disable-nss],
1990         [Disable using NSS. If disabled,
1991          components will use openssl. Work in progress,
1992          use only if you are hacking on it.]),
1993 ,enable_nss=yes)
1995 AC_ARG_ENABLE(library-bin-tar,
1996     AS_HELP_STRING([--enable-library-bin-tar],
1997         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1998         Some libraries can save their build result in a tarball
1999         stored in TARFILE_LOCATION. That binary tarball is
2000         uniquely identified by the source tarball,
2001         the content of the config_host.mk file and the content
2002         of the top-level directory in core for that library
2003         If this option is enabled, then if such a tarfile exist, it will be untarred
2004         instead of the source tarfile, and the build step will be skipped for that
2005         library.
2006         If a proper tarfile does not exist, then the normal source-based
2007         build is done for that library and a proper binary tarfile is created
2008         for the next time.]),
2011 AC_ARG_ENABLE(dconf,
2012     AS_HELP_STRING([--disable-dconf],
2013         [Disable the dconf configuration backend (enabled by default where
2014          available).]))
2016 libo_FUZZ_ARG_ENABLE(formula-logger,
2017     AS_HELP_STRING(
2018         [--enable-formula-logger],
2019         [Enable formula logger for logging formula calculation flow in Calc.]
2020     )
2023 AC_ARG_ENABLE(ldap,
2024     AS_HELP_STRING([--disable-ldap],
2025         [Disable LDAP support.]),
2026 ,enable_ldap=yes)
2028 AC_ARG_ENABLE(opencl,
2029     AS_HELP_STRING([--disable-opencl],
2030         [Disable OpenCL support.]),
2031 ,enable_opencl=yes)
2033 libo_FUZZ_ARG_ENABLE(librelogo,
2034     AS_HELP_STRING([--disable-librelogo],
2035         [Do not build LibreLogo.]),
2036 ,enable_librelogo=yes)
2038 AC_ARG_ENABLE(wasm-strip,
2039     AS_HELP_STRING([--enable-wasm-strip],
2040         [Strip the static build like for WASM/emscripten platform.]),
2043 AC_ARG_WITH(main-module,
2044     AS_HELP_STRING([--with-main-module=<writer/calc>],
2045         [Specify which main module to build for wasm.
2046         Default value is 'writer'.]),
2049 AC_ARG_ENABLE(wasm-exceptions,
2050     AS_HELP_STRING([--enable-wasm-exceptions],
2051         [Build with native WASM exceptions (AKA -fwasm-exceptions),
2052         matter of fact, this is currently not finished by any implementation)
2053         (see https://webassembly.org/roadmap/ for the current state]),
2056 AC_ARG_ENABLE(xmlhelp,
2057     AS_HELP_STRING([--disable-xmlhelp],
2058         [Disable XML help support]),
2059 ,enable_xmlhelp=yes)
2061 AC_ARG_ENABLE(customtarget-components,
2062     AS_HELP_STRING([--enable-customtarget-components],
2063         [Generates the static UNO object constructor mapping from the build.]))
2065 AC_ARG_ENABLE(float_device_pixel,
2066     AS_HELP_STRING([--enable-float-device-pixel],
2067                    [Uses doubles for VCL device coordinates instead of 32-bit integers.]),
2070 dnl ===================================================================
2071 dnl Optional Packages (--with/without-)
2072 dnl ===================================================================
2074 AC_ARG_WITH(gcc-home,
2075     AS_HELP_STRING([--with-gcc-home],
2076         [Specify the location of gcc/g++ manually. This can be used in conjunction
2077          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2078          non-default path.]),
2081 AC_ARG_WITH(gnu-patch,
2082     AS_HELP_STRING([--with-gnu-patch],
2083         [Specify location of GNU patch on Solaris or FreeBSD.]),
2086 AC_ARG_WITH(build-platform-configure-options,
2087     AS_HELP_STRING([--with-build-platform-configure-options],
2088         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2091 AC_ARG_WITH(gnu-cp,
2092     AS_HELP_STRING([--with-gnu-cp],
2093         [Specify location of GNU cp on Solaris or FreeBSD.]),
2096 AC_ARG_WITH(external-tar,
2097     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2098         [Specify an absolute path of where to find (and store) tarfiles.]),
2099     TARFILE_LOCATION=$withval ,
2102 AC_ARG_WITH(referenced-git,
2103     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2104         [Specify another checkout directory to reference. This makes use of
2105                  git submodule update --reference, and saves a lot of diskspace
2106                  when having multiple trees side-by-side.]),
2107     GIT_REFERENCE_SRC=$withval ,
2110 AC_ARG_WITH(linked-git,
2111     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2112         [Specify a directory where the repositories of submodules are located.
2113          This uses a method similar to git-new-workdir to get submodules.]),
2114     GIT_LINK_SRC=$withval ,
2117 AC_ARG_WITH(galleries,
2118     AS_HELP_STRING([--with-galleries],
2119         [Specify how galleries should be built. It is possible either to
2120          build these internally from source ("build"),
2121          or to disable them ("no")]),
2124 AC_ARG_WITH(theme,
2125     AS_HELP_STRING([--with-theme="theme1 theme2..."],
2126         [Choose which themes to include. By default those themes with an '*' are included.
2127          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2128          *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2129          *elementary, *elementary_svg,
2130          *karasa_jaga, *karasa_jaga_svg,
2131          *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2132          *sukapura, *sukapura_svg.]),
2135 libo_FUZZ_ARG_WITH(helppack-integration,
2136     AS_HELP_STRING([--without-helppack-integration],
2137         [It will not integrate the helppacks to the installer
2138          of the product. Please use this switch to use the online help
2139          or separate help packages.]),
2142 libo_FUZZ_ARG_WITH(fonts,
2143     AS_HELP_STRING([--without-fonts],
2144         [LibreOffice includes some third-party fonts to provide a reliable basis for
2145          help content, templates, samples, etc. When these fonts are already
2146          known to be available on the system then you should use this option.]),
2149 AC_ARG_WITH(epm,
2150     AS_HELP_STRING([--with-epm],
2151         [Decides which epm to use. Default is to use the one from the system if
2152          one is built. When either this is not there or you say =internal epm
2153          will be built.]),
2156 AC_ARG_WITH(package-format,
2157     AS_HELP_STRING([--with-package-format],
2158         [Specify package format(s) for LibreOffice installation sets. The
2159          implicit --without-package-format leads to no installation sets being
2160          generated. Possible values: aix, archive, bsd, deb, dmg,
2161          installed, msi, pkg, and rpm.
2162          Example: --with-package-format='deb rpm']),
2165 AC_ARG_WITH(tls,
2166     AS_HELP_STRING([--with-tls],
2167         [Decides which TLS/SSL and cryptographic implementations to use for
2168          LibreOffice's code. Default is to use NSS although OpenSSL is also
2169          possible. Notice that selecting NSS restricts the usage of OpenSSL
2170          in LO's code but selecting OpenSSL doesn't restrict by now the
2171          usage of NSS in LO's code. Possible values: openssl, nss.
2172          Example: --with-tls="nss"]),
2175 AC_ARG_WITH(system-libs,
2176     AS_HELP_STRING([--with-system-libs],
2177         [Use libraries already on system -- enables all --with-system-* flags.]),
2180 AC_ARG_WITH(system-bzip2,
2181     AS_HELP_STRING([--with-system-bzip2],
2182         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2183     [with_system_bzip2="$with_system_libs"])
2185 AC_ARG_WITH(system-headers,
2186     AS_HELP_STRING([--with-system-headers],
2187         [Use headers already on system -- enables all --with-system-* flags for
2188          external packages whose headers are the only entities used i.e.
2189          boost/odbc/sane-header(s).]),,
2190     [with_system_headers="$with_system_libs"])
2192 AC_ARG_WITH(system-jars,
2193     AS_HELP_STRING([--without-system-jars],
2194         [When building with --with-system-libs, also the needed jars are expected
2195          on the system. Use this to disable that]),,
2196     [with_system_jars="$with_system_libs"])
2198 AC_ARG_WITH(system-cairo,
2199     AS_HELP_STRING([--with-system-cairo],
2200         [Use cairo libraries already on system.  Happens automatically for
2201          (implicit) --enable-gtk3.]))
2203 AC_ARG_WITH(system-epoxy,
2204     AS_HELP_STRING([--with-system-epoxy],
2205         [Use epoxy libraries already on system.  Happens automatically for
2206          (implicit) --enable-gtk3.]),,
2207        [with_system_epoxy="$with_system_libs"])
2209 AC_ARG_WITH(myspell-dicts,
2210     AS_HELP_STRING([--with-myspell-dicts],
2211         [Adds myspell dictionaries to the LibreOffice installation set]),
2214 AC_ARG_WITH(system-dicts,
2215     AS_HELP_STRING([--without-system-dicts],
2216         [Do not use dictionaries from system paths.]),
2219 AC_ARG_WITH(external-dict-dir,
2220     AS_HELP_STRING([--with-external-dict-dir],
2221         [Specify external dictionary dir.]),
2224 AC_ARG_WITH(external-hyph-dir,
2225     AS_HELP_STRING([--with-external-hyph-dir],
2226         [Specify external hyphenation pattern dir.]),
2229 AC_ARG_WITH(external-thes-dir,
2230     AS_HELP_STRING([--with-external-thes-dir],
2231         [Specify external thesaurus dir.]),
2234 AC_ARG_WITH(system-zlib,
2235     AS_HELP_STRING([--with-system-zlib],
2236         [Use zlib already on system.]),,
2237     [with_system_zlib=auto])
2239 AC_ARG_WITH(system-jpeg,
2240     AS_HELP_STRING([--with-system-jpeg],
2241         [Use jpeg already on system.]),,
2242     [with_system_jpeg="$with_system_libs"])
2244 AC_ARG_WITH(system-expat,
2245     AS_HELP_STRING([--with-system-expat],
2246         [Use expat already on system.]),,
2247     [with_system_expat="$with_system_libs"])
2249 AC_ARG_WITH(system-libxml,
2250     AS_HELP_STRING([--with-system-libxml],
2251         [Use libxml/libxslt already on system.]),,
2252     [with_system_libxml=auto])
2254 AC_ARG_WITH(system-openldap,
2255     AS_HELP_STRING([--with-system-openldap],
2256         [Use the OpenLDAP LDAP SDK already on system.]),,
2257     [with_system_openldap="$with_system_libs"])
2259 libo_FUZZ_ARG_ENABLE(poppler,
2260     AS_HELP_STRING([--disable-poppler],
2261         [Disable building Poppler.])
2264 AC_ARG_WITH(system-poppler,
2265     AS_HELP_STRING([--with-system-poppler],
2266         [Use system poppler (only needed for PDF import).]),,
2267     [with_system_poppler="$with_system_libs"])
2269 AC_ARG_WITH(system-abseil,
2270     AS_HELP_STRING([--with-system-abseil],
2271         [Use the abseil libraries already on system.]),,
2272     [with_system_abseil="$with_system_libs"])
2274 AC_ARG_WITH(system-openjpeg,
2275     AS_HELP_STRING([--with-system-openjpeg],
2276         [Use the OpenJPEG library already on system.]),,
2277     [with_system_openjpeg="$with_system_libs"])
2279 libo_FUZZ_ARG_ENABLE(gpgmepp,
2280     AS_HELP_STRING([--disable-gpgmepp],
2281         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2284 AC_ARG_WITH(system-gpgmepp,
2285     AS_HELP_STRING([--with-system-gpgmepp],
2286         [Use gpgmepp already on system]),,
2287     [with_system_gpgmepp="$with_system_libs"])
2289 AC_ARG_WITH(system-mariadb,
2290     AS_HELP_STRING([--with-system-mariadb],
2291         [Use MariaDB/MySQL libraries already on system.]),,
2292     [with_system_mariadb="$with_system_libs"])
2294 AC_ARG_ENABLE(bundle-mariadb,
2295     AS_HELP_STRING([--enable-bundle-mariadb],
2296         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2299 AC_ARG_WITH(system-postgresql,
2300     AS_HELP_STRING([--with-system-postgresql],
2301         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2302          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2303     [with_system_postgresql="$with_system_libs"])
2305 AC_ARG_WITH(libpq-path,
2306     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2307         [Use this PostgreSQL C interface (libpq) installation for building
2308          the PostgreSQL-SDBC extension.]),
2311 AC_ARG_WITH(system-firebird,
2312     AS_HELP_STRING([--with-system-firebird],
2313         [Use Firebird libraries already on system, for building the Firebird-SDBC
2314          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2315     [with_system_firebird="$with_system_libs"])
2317 AC_ARG_WITH(system-libtommath,
2318             AS_HELP_STRING([--with-system-libtommath],
2319                            [Use libtommath already on system]),,
2320             [with_system_libtommath="$with_system_libs"])
2322 AC_ARG_WITH(system-hsqldb,
2323     AS_HELP_STRING([--with-system-hsqldb],
2324         [Use hsqldb already on system.]))
2326 AC_ARG_WITH(hsqldb-jar,
2327     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2328         [Specify path to jarfile manually.]),
2329     HSQLDB_JAR=$withval)
2331 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2332     AS_HELP_STRING([--disable-scripting-beanshell],
2333         [Disable support for scripts in BeanShell.]),
2337 AC_ARG_WITH(system-beanshell,
2338     AS_HELP_STRING([--with-system-beanshell],
2339         [Use beanshell already on system.]),,
2340     [with_system_beanshell="$with_system_jars"])
2342 AC_ARG_WITH(beanshell-jar,
2343     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2344         [Specify path to jarfile manually.]),
2345     BSH_JAR=$withval)
2347 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2348     AS_HELP_STRING([--disable-scripting-javascript],
2349         [Disable support for scripts in JavaScript.]),
2353 AC_ARG_WITH(system-rhino,
2354     AS_HELP_STRING([--with-system-rhino],
2355         [Use rhino already on system.]),,)
2356 #    [with_system_rhino="$with_system_jars"])
2357 # Above is not used as we have different debug interface
2358 # patched into internal rhino. This code needs to be fixed
2359 # before we can enable it by default.
2361 AC_ARG_WITH(rhino-jar,
2362     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2363         [Specify path to jarfile manually.]),
2364     RHINO_JAR=$withval)
2366 AC_ARG_WITH(system-jfreereport,
2367     AS_HELP_STRING([--with-system-jfreereport],
2368         [Use JFreeReport already on system.]),,
2369     [with_system_jfreereport="$with_system_jars"])
2371 AC_ARG_WITH(sac-jar,
2372     AS_HELP_STRING([--with-sac-jar=JARFILE],
2373         [Specify path to jarfile manually.]),
2374     SAC_JAR=$withval)
2376 AC_ARG_WITH(libxml-jar,
2377     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2378         [Specify path to jarfile manually.]),
2379     LIBXML_JAR=$withval)
2381 AC_ARG_WITH(flute-jar,
2382     AS_HELP_STRING([--with-flute-jar=JARFILE],
2383         [Specify path to jarfile manually.]),
2384     FLUTE_JAR=$withval)
2386 AC_ARG_WITH(jfreereport-jar,
2387     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2388         [Specify path to jarfile manually.]),
2389     JFREEREPORT_JAR=$withval)
2391 AC_ARG_WITH(liblayout-jar,
2392     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2393         [Specify path to jarfile manually.]),
2394     LIBLAYOUT_JAR=$withval)
2396 AC_ARG_WITH(libloader-jar,
2397     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2398         [Specify path to jarfile manually.]),
2399     LIBLOADER_JAR=$withval)
2401 AC_ARG_WITH(libformula-jar,
2402     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2403         [Specify path to jarfile manually.]),
2404     LIBFORMULA_JAR=$withval)
2406 AC_ARG_WITH(librepository-jar,
2407     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2408         [Specify path to jarfile manually.]),
2409     LIBREPOSITORY_JAR=$withval)
2411 AC_ARG_WITH(libfonts-jar,
2412     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2413         [Specify path to jarfile manually.]),
2414     LIBFONTS_JAR=$withval)
2416 AC_ARG_WITH(libserializer-jar,
2417     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2418         [Specify path to jarfile manually.]),
2419     LIBSERIALIZER_JAR=$withval)
2421 AC_ARG_WITH(libbase-jar,
2422     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2423         [Specify path to jarfile manually.]),
2424     LIBBASE_JAR=$withval)
2426 AC_ARG_WITH(system-odbc,
2427     AS_HELP_STRING([--with-system-odbc],
2428         [Use the odbc headers already on system.]),,
2429     [with_system_odbc="auto"])
2431 AC_ARG_WITH(system-sane,
2432     AS_HELP_STRING([--with-system-sane],
2433         [Use sane.h already on system.]),,
2434     [with_system_sane="$with_system_headers"])
2436 AC_ARG_WITH(system-bluez,
2437     AS_HELP_STRING([--with-system-bluez],
2438         [Use bluetooth.h already on system.]),,
2439     [with_system_bluez="$with_system_headers"])
2441 AC_ARG_WITH(system-boost,
2442     AS_HELP_STRING([--with-system-boost],
2443         [Use boost already on system.]),,
2444     [with_system_boost="$with_system_headers"])
2446 AC_ARG_WITH(system-dragonbox,
2447     AS_HELP_STRING([--with-system-dragonbox],
2448         [Use dragonbox already on system.]),,
2449     [with_system_dragonbox="$with_system_headers"])
2451 AC_ARG_WITH(system-libfixmath,
2452     AS_HELP_STRING([--with-system-libfixmath],
2453         [Use libfixmath already on system.]),,
2454     [with_system_libfixmath="$with_system_libs"])
2456 AC_ARG_WITH(system-glm,
2457     AS_HELP_STRING([--with-system-glm],
2458         [Use glm already on system.]),,
2459     [with_system_glm="$with_system_headers"])
2461 AC_ARG_WITH(system-hunspell,
2462     AS_HELP_STRING([--with-system-hunspell],
2463         [Use libhunspell already on system.]),,
2464     [with_system_hunspell="$with_system_libs"])
2466 libo_FUZZ_ARG_ENABLE(zxing,
2467     AS_HELP_STRING([--disable-zxing],
2468        [Disable use of zxing external library.]))
2470 AC_ARG_WITH(system-zxing,
2471     AS_HELP_STRING([--with-system-zxing],
2472         [Use libzxing already on system.]),,
2473     [with_system_zxing="$with_system_libs"])
2475 AC_ARG_WITH(system-box2d,
2476     AS_HELP_STRING([--with-system-box2d],
2477         [Use box2d already on system.]),,
2478     [with_system_box2d="$with_system_libs"])
2480 AC_ARG_WITH(system-mythes,
2481     AS_HELP_STRING([--with-system-mythes],
2482         [Use mythes already on system.]),,
2483     [with_system_mythes="$with_system_libs"])
2485 AC_ARG_WITH(system-altlinuxhyph,
2486     AS_HELP_STRING([--with-system-altlinuxhyph],
2487         [Use ALTLinuxhyph already on system.]),,
2488     [with_system_altlinuxhyph="$with_system_libs"])
2490 AC_ARG_WITH(system-lpsolve,
2491     AS_HELP_STRING([--with-system-lpsolve],
2492         [Use lpsolve already on system.]),,
2493     [with_system_lpsolve="$with_system_libs"])
2495 AC_ARG_WITH(system-coinmp,
2496     AS_HELP_STRING([--with-system-coinmp],
2497         [Use CoinMP already on system.]),,
2498     [with_system_coinmp="$with_system_libs"])
2500 AC_ARG_WITH(system-liblangtag,
2501     AS_HELP_STRING([--with-system-liblangtag],
2502         [Use liblangtag library already on system.]),,
2503     [with_system_liblangtag="$with_system_libs"])
2505 AC_ARG_WITH(system-lockfile,
2506     AS_HELP_STRING([--with-system-lockfile[=file]],
2507         [Detect a system lockfile program or use the \$file argument.]))
2509 AC_ARG_WITH(webdav,
2510     AS_HELP_STRING([--without-webdav],
2511         [Disable WebDAV support in the UCB.]))
2513 AC_ARG_WITH(linker-hash-style,
2514     AS_HELP_STRING([--with-linker-hash-style],
2515         [Use linker with --hash-style=<style> when linking shared objects.
2516          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2517          if supported on the build system, and "sysv" otherwise.]))
2519 AC_ARG_WITH(jdk-home,
2520     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2521         [If you have installed JDK 9 or later on your system please supply the
2522          path here. Note that this is not the location of the java command but the
2523          location of the entire distribution. In case of cross-compiling, this
2524          is the JDK of the host os. Use --with-build-platform-configure-options
2525          to point to a different build platform JDK.]),
2528 AC_ARG_WITH(help,
2529     AS_HELP_STRING([--with-help],
2530         [Enable the build of help. There is a special parameter "common" that
2531          can be used to bundle only the common part, .e.g help-specific icons.
2532          This is useful when you build the helpcontent separately.])
2533     [
2534                           Usage:     --with-help    build the old local help
2535                                  --without-help     no local help (default)
2536                                  --with-help=html   build the new HTML local help
2537                                  --with-help=online build the new HTML online help
2538     ],
2541 AC_ARG_WITH(omindex,
2542    AS_HELP_STRING([--with-omindex],
2543         [Enable the support of xapian-omega index for online help.])
2544    [
2545                          Usage: --with-omindex=server prepare the pages for omindex
2546                                 but let xapian-omega be built in server.
2547                                 --with-omindex=noxap do not prepare online pages
2548                                 for xapian-omega
2549   ],
2552 libo_FUZZ_ARG_WITH(java,
2553     AS_HELP_STRING([--with-java=<java command>],
2554         [Specify the name of the Java interpreter command. Typically "java"
2555          which is the default.
2557          To build without support for Java components, applets, accessibility
2558          or the XML filters written in Java, use --without-java or --with-java=no.]),
2559     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2560     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2563 AC_ARG_WITH(jvm-path,
2564     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2565         [Use a specific JVM search path at runtime.
2566          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2569 AC_ARG_WITH(ant-home,
2570     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2571         [If you have installed Apache Ant on your system, please supply the path here.
2572          Note that this is not the location of the Ant binary but the location
2573          of the entire distribution.]),
2576 AC_ARG_WITH(symbol-config,
2577     AS_HELP_STRING([--with-symbol-config],
2578         [Configuration for the crashreport symbol upload]),
2579         [],
2580         [with_symbol_config=no])
2582 AC_ARG_WITH(export-validation,
2583     AS_HELP_STRING([--without-export-validation],
2584         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2585 ,with_export_validation=auto)
2587 AC_ARG_WITH(bffvalidator,
2588     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2589         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2590          Requires installed Microsoft Office Binary File Format Validator.
2591          Note: export-validation (--with-export-validation) is required to be turned on.
2592          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2593 ,with_bffvalidator=no)
2595 libo_FUZZ_ARG_WITH(junit,
2596     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2597         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2598          --without-junit disables those tests. Not relevant in the --without-java case.]),
2599 ,with_junit=yes)
2601 AC_ARG_WITH(hamcrest,
2602     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2603         [Specifies the hamcrest jar file to use for JUnit-based tests.
2604          --without-junit disables those tests. Not relevant in the --without-java case.]),
2605 ,with_hamcrest=yes)
2607 AC_ARG_WITH(perl-home,
2608     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2609         [If you have installed Perl 5 Distribution, on your system, please
2610          supply the path here. Note that this is not the location of the Perl
2611          binary but the location of the entire distribution.]),
2614 libo_FUZZ_ARG_WITH(doxygen,
2615     AS_HELP_STRING(
2616         [--with-doxygen=<absolute path to doxygen executable>],
2617         [Specifies the doxygen executable to use when generating ODK C/C++
2618          documentation. --without-doxygen disables generation of ODK C/C++
2619          documentation. Not relevant in the --disable-odk case.]),
2620 ,with_doxygen=yes)
2622 AC_ARG_WITH(visual-studio,
2623     AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2624         [Specify which Visual Studio version to use in case several are
2625          installed. Currently 2019 (default) and 2022 are supported.]),
2628 AC_ARG_WITH(windows-sdk,
2629     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2630         [Specify which Windows SDK, or "Windows Kit", version to use
2631          in case the one that came with the selected Visual Studio
2632          is not what you want for some reason. Note that not all compiler/SDK
2633          combinations are supported. The intent is that this option should not
2634          be needed.]),
2637 AC_ARG_WITH(lang,
2638     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2639         [Use this option to build LibreOffice with additional UI language support.
2640          English (US) is always included by default.
2641          Separate multiple languages with space.
2642          For all languages, use --with-lang=ALL.]),
2645 AC_ARG_WITH(locales,
2646     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2647         [Use this option to limit the locale information built in.
2648          Separate multiple locales with space.
2649          Very experimental and might well break stuff.
2650          Just a desperate measure to shrink code and data size.
2651          By default all the locales available is included.
2652          Just works with --disable-dynloading. Defaults to "ALL".
2653          This option is completely unrelated to --with-lang.])
2654     [
2655                           Affects also our character encoding conversion
2656                           tables for encodings mainly targeted for a
2657                           particular locale, like EUC-CN and EUC-TW for
2658                           zh, ISO-2022-JP for ja.
2660                           Affects also our add-on break iterator data for
2661                           some languages.
2663                           For the default, all locales, don't use this switch at all.
2664                           Specifying just the language part of a locale means all matching
2665                           locales will be included.
2666     ],
2669 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2670 libo_FUZZ_ARG_WITH(krb5,
2671     AS_HELP_STRING([--with-krb5],
2672         [Enable MIT Kerberos 5 support in modules that support it.
2673          By default automatically enabled on platforms
2674          where a good system Kerberos 5 is available.]),
2677 libo_FUZZ_ARG_WITH(gssapi,
2678     AS_HELP_STRING([--with-gssapi],
2679         [Enable GSSAPI support in modules that support it.
2680          By default automatically enabled on platforms
2681          where a good system GSSAPI is available.]),
2684 libo_FUZZ_ARG_WITH(lxml,
2685     AS_HELP_STRING([--without-lxml],
2686         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2687          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2688          report widget classes and ids.]),
2691 libo_FUZZ_ARG_WITH(latest-c++,
2692     AS_HELP_STRING([--with-latest-c++],
2693         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2694          published standard.  This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2695         [with_latest_c__=no])
2697 AC_ARG_WITH(gtk3-build,
2698     AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2699         [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2700          to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2702 dnl ===================================================================
2703 dnl Branding
2704 dnl ===================================================================
2706 AC_ARG_WITH(branding,
2707     AS_HELP_STRING([--with-branding=/path/to/images],
2708         [Use given path to retrieve branding images set.])
2709     [
2710                           Search for intro.png about.svg and logo.svg.
2711                           If any is missing, default ones will be used instead.
2713                           Search also progress.conf for progress
2714                           settings on intro screen :
2716                           PROGRESSBARCOLOR="255,255,255" Set color of
2717                           progress bar. Comma separated RGB decimal values.
2718                           PROGRESSSIZE="407,6" Set size of progress bar.
2719                           Comma separated decimal values (width, height).
2720                           PROGRESSPOSITION="61,317" Set position of progress
2721                           bar from left,top. Comma separated decimal values.
2722                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2723                           bar frame. Comma separated RGB decimal values.
2724                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2725                           bar text. Comma separated RGB decimal values.
2726                           PROGRESSTEXTBASELINE="287" Set vertical position of
2727                           progress bar text from top. Decimal value.
2729                           Default values will be used if not found.
2730     ],
2734 AC_ARG_WITH(extra-buildid,
2735     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2736         [Show addition build identification in about dialog.]),
2740 AC_ARG_WITH(vendor,
2741     AS_HELP_STRING([--with-vendor="John the Builder"],
2742         [Set vendor of the build.]),
2745 AC_ARG_WITH(privacy-policy-url,
2746     AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2747         [The URL to your privacy policy (needed when
2748          enabling online-update or crashreporting via breakpad)]),
2749         [if test "x$with_privacy_policy_url" = "xyes"; then
2750             AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2751          elif test "x$with_privacy_policy_url" = "xno"; then
2752             with_privacy_policy_url="undefined"
2753          fi]
2754 ,[with_privacy_policy_url="undefined"])
2756 AC_ARG_WITH(android-package-name,
2757     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2758         [Set Android package name of the build.]),
2761 AC_ARG_WITH(compat-oowrappers,
2762     AS_HELP_STRING([--with-compat-oowrappers],
2763         [Install oo* wrappers in parallel with
2764          lo* ones to keep backward compatibility.
2765          Has effect only with make distro-pack-install]),
2768 AC_ARG_WITH(os-version,
2769     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2770         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2773 AC_ARG_WITH(parallelism,
2774     AS_HELP_STRING([--with-parallelism],
2775         [Number of jobs to run simultaneously during build. Parallel builds can
2776         save a lot of time on multi-cpu machines. Defaults to the number of
2777         CPUs on the machine, unless you configure --enable-icecream - then to
2778         40.]),
2781 AC_ARG_WITH(all-tarballs,
2782     AS_HELP_STRING([--with-all-tarballs],
2783         [Download all external tarballs unconditionally]))
2785 AC_ARG_WITH(gdrive-client-id,
2786     AS_HELP_STRING([--with-gdrive-client-id],
2787         [Provides the client id of the application for OAuth2 authentication
2788         on Google Drive. If either this or --with-gdrive-client-secret is
2789         empty, the feature will be disabled]),
2792 AC_ARG_WITH(gdrive-client-secret,
2793     AS_HELP_STRING([--with-gdrive-client-secret],
2794         [Provides the client secret of the application for OAuth2
2795         authentication on Google Drive. If either this or
2796         --with-gdrive-client-id is empty, the feature will be disabled]),
2799 AC_ARG_WITH(alfresco-cloud-client-id,
2800     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2801         [Provides the client id of the application for OAuth2 authentication
2802         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2803         empty, the feature will be disabled]),
2806 AC_ARG_WITH(alfresco-cloud-client-secret,
2807     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2808         [Provides the client secret of the application for OAuth2
2809         authentication on Alfresco Cloud. If either this or
2810         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2813 AC_ARG_WITH(onedrive-client-id,
2814     AS_HELP_STRING([--with-onedrive-client-id],
2815         [Provides the client id of the application for OAuth2 authentication
2816         on OneDrive. If either this or --with-onedrive-client-secret is
2817         empty, the feature will be disabled]),
2820 AC_ARG_WITH(onedrive-client-secret,
2821     AS_HELP_STRING([--with-onedrive-client-secret],
2822         [Provides the client secret of the application for OAuth2
2823         authentication on OneDrive. If either this or
2824         --with-onedrive-client-id is empty, the feature will be disabled]),
2826 dnl ===================================================================
2827 dnl Do we want to use pre-build binary tarball for recompile
2828 dnl ===================================================================
2830 if test "$enable_library_bin_tar" = "yes" ; then
2831     USE_LIBRARY_BIN_TAR=TRUE
2832 else
2833     USE_LIBRARY_BIN_TAR=
2835 AC_SUBST(USE_LIBRARY_BIN_TAR)
2837 dnl ===================================================================
2838 dnl Test whether build target is Release Build
2839 dnl ===================================================================
2840 AC_MSG_CHECKING([whether build target is Release Build])
2841 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2842     AC_MSG_RESULT([no])
2843     ENABLE_RELEASE_BUILD=
2844     GET_TASK_ALLOW_ENTITLEMENT='
2845         <!-- We want to be able to debug a hardened process when not building for release -->
2846         <key>com.apple.security.get-task-allow</key>
2847         <true/>'
2848 else
2849     AC_MSG_RESULT([yes])
2850     ENABLE_RELEASE_BUILD=TRUE
2851     GET_TASK_ALLOW_ENTITLEMENT=''
2853 AC_SUBST(ENABLE_RELEASE_BUILD)
2854 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2856 AC_MSG_CHECKING([whether to build a Community flavor])
2857 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2858     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2859     AC_MSG_RESULT([yes])
2860 else
2861     AC_MSG_RESULT([no])
2864 dnl ===================================================================
2865 dnl Test whether to sign Windows Build
2866 dnl ===================================================================
2867 AC_MSG_CHECKING([whether to sign windows build])
2868 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2869     AC_MSG_RESULT([yes])
2870     WINDOWS_BUILD_SIGNING="TRUE"
2871 else
2872     AC_MSG_RESULT([no])
2873     WINDOWS_BUILD_SIGNING="FALSE"
2875 AC_SUBST(WINDOWS_BUILD_SIGNING)
2877 dnl ===================================================================
2878 dnl MacOSX build and runtime environment options
2879 dnl ===================================================================
2881 AC_ARG_WITH(macosx-version-min-required,
2882     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2883         [set the minimum OS version needed to run the built LibreOffice])
2884     [
2885                           e. g.: --with-macosx-version-min-required=10.14
2886     ],
2889 dnl ===================================================================
2890 dnl Check for incompatible options set by fuzzing, and reset those
2891 dnl automatically to working combinations
2892 dnl ===================================================================
2894 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2895         "$enable_dbus" != "$enable_avahi"; then
2896     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2897     enable_avahi=$enable_dbus
2900 add_lopath_after ()
2902     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2903         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2904     fi
2907 add_lopath_before ()
2909     local IFS=${P_SEP}
2910     local path_cleanup
2911     local dir
2912     for dir in $LO_PATH ; do
2913         if test "$dir" != "$1" ; then
2914             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2915         fi
2916     done
2917     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2920 dnl ===================================================================
2921 dnl check for required programs (grep, awk, sed, bash)
2922 dnl ===================================================================
2924 pathmunge ()
2926     local new_path
2927     if test -n "$1"; then
2928         if test "$build_os" = "cygwin"; then
2929             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2930                 PathFormat "$1"
2931                 new_path=`cygpath -sm "$formatted_path"`
2932             else
2933                 PathFormat "$1"
2934                 new_path=`cygpath -u "$formatted_path"`
2935             fi
2936         else
2937             new_path="$1"
2938         fi
2939         if test "$2" = "after"; then
2940             add_lopath_after "$new_path"
2941         else
2942             add_lopath_before "$new_path"
2943         fi
2944     fi
2947 AC_PROG_AWK
2948 AC_PATH_PROG( AWK, $AWK)
2949 if test -z "$AWK"; then
2950     AC_MSG_ERROR([install awk to run this script])
2953 AC_PATH_PROG(BASH, bash)
2954 if test -z "$BASH"; then
2955     AC_MSG_ERROR([bash not found in \$PATH])
2957 AC_SUBST(BASH)
2959 # prefer parallel compression tools, if available
2960 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2961 if test -z "$COMPRESSIONTOOL"; then
2962     AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2963     if test -z "$COMPRESSIONTOOL"; then
2964         AC_MSG_ERROR([gzip not found in \$PATH])
2965     fi
2967 AC_SUBST(COMPRESSIONTOOL)
2969 # use GNU parallel for packaging, if available
2970 AC_PATH_PROG(GNUPARALLEL, parallel)
2971 AC_SUBST(GNUPARALLEL)
2973 AC_MSG_CHECKING([for GNU or BSD tar])
2974 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
2975     $a --version 2> /dev/null | grep -E "GNU|bsdtar"  2>&1 > /dev/null
2976     if test $? -eq 0;  then
2977         GNUTAR=$a
2978         break
2979     fi
2980 done
2981 AC_MSG_RESULT($GNUTAR)
2982 if test -z "$GNUTAR"; then
2983     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2985 AC_SUBST(GNUTAR)
2987 AC_MSG_CHECKING([for tar's option to strip components])
2988 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
2989 if test $? -eq 0; then
2990     STRIP_COMPONENTS="--strip-components"
2991 else
2992     $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
2993     if test $? -eq 0; then
2994         STRIP_COMPONENTS="--strip-path"
2995     else
2996         STRIP_COMPONENTS="unsupported"
2997     fi
2999 AC_MSG_RESULT($STRIP_COMPONENTS)
3000 if test x$STRIP_COMPONENTS = xunsupported; then
3001     AC_MSG_ERROR([you need a tar that is able to strip components.])
3003 AC_SUBST(STRIP_COMPONENTS)
3005 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3006 dnl desktop OSes from "mobile" ones.
3008 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3009 dnl In other words, that when building for an OS that is not a
3010 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3012 dnl Note the direction of the implication; there is no assumption that
3013 dnl cross-compiling would imply a non-desktop OS.
3015 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3016     BUILD_TYPE="$BUILD_TYPE DESKTOP"
3017     AC_DEFINE(HAVE_FEATURE_DESKTOP)
3018     if test "$_os" != Emscripten; then
3019         AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3020     fi
3023 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3024 # also work with the default gtk3 plugin.
3025 if test "$enable_wasm_strip" = "yes"; then
3026     enable_avmedia=no
3027     enable_cmis=no
3028     enable_coinmp=no
3029     enable_cups=no
3030     test "$_os" = Emscripten && enable_curl=no
3031     enable_database_connectivity=no
3032     enable_dbus=no
3033     enable_dconf=no
3034     test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3035     enable_extension_integration=no
3036     enable_extensions=no
3037     enable_extension_update=no
3038     enable_gio=no
3039     enable_gpgmepp=no
3040     enable_ldap=no
3041     enable_lotuswordpro=no
3042     enable_lpsolve=no
3043     enable_nss=no
3044     enable_odk=no
3045     enable_online_update=no
3046     enable_opencl=no
3047     enable_pdfimport=no
3048     enable_randr=no
3049     enable_report_builder=no
3050     enable_scripting=no
3051     enable_sdremote_bluetooth=no
3052     enable_skia=no
3053     enable_xmlhelp=no
3054     enable_zxing=no
3055     test_libepubgen=no
3056     test_libcdr=no
3057     test_libcmis=no
3058     test_libetonyek=no
3059     test_libfreehand=no
3060     test_libmspub=no
3061     test_libpagemaker=no
3062     test_libqxp=no
3063     test_libvisio=no
3064     test_libzmf=no
3065     test_webdav=no
3066     with_galleries=no
3067     with_webdav=no
3068     with_x=no
3070     test "${with_fonts+set}" = set || with_fonts=yes
3071     test "${with_locales+set}" = set || with_locales=en
3073     AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3074     AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3075     AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3076     AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3077 #    AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3078     AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3079     AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3080     AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3081     AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3082 #    AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3083     AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3084     AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3085     AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3086     AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3087     AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3088     AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3089     AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3092 EMSCRIPTEN_NEH_MAJOR=3
3093 EMSCRIPTEN_NEH_MINOR=1
3094 EMSCRIPTEN_NEH_TINY=3
3095 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3097 if test "$enable_wasm_exceptions" = yes; then
3098     AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3099     check_semantic_version_three_prefixed EMSCRIPTEN NEH
3100     if test $? -ne 0; then
3101         AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3102     else
3103         AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3104     fi
3105     ENABLE_WASM_EXCEPTIONS=TRUE
3107 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3109 # Whether to build "avmedia" functionality or not.
3111 if test "$enable_avmedia" = yes; then
3112     BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3113     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3114 else
3115     test_gstreamer_1_0=no
3118 # Decide whether to build database connectivity stuff (including Base) or not.
3119 if test "$enable_database_connectivity" != no; then
3120     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3121     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3122 else
3123     if test "$_os" = iOS; then
3124         AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3125     fi
3126     disable_database_connectivity_dependencies
3129 if test -z "$enable_extensions"; then
3130     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3131     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3132         enable_extensions=yes
3133     fi
3136 DISABLE_SCRIPTING=''
3137 if test "$enable_scripting" = yes; then
3138     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3139     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3140 else
3141     DISABLE_SCRIPTING='TRUE'
3142     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3145 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3146     # Disable dynamic_loading always for iOS and Android
3147     enable_dynamic_loading=no
3148 elif test -z "$enable_dynamic_loading"; then
3149     # Otherwise enable it unless specifically disabled
3150     enable_dynamic_loading=yes
3153 DISABLE_DYNLOADING=''
3154 if test "$enable_dynamic_loading" = yes; then
3155     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3156 else
3157     DISABLE_DYNLOADING='TRUE'
3158     if test $_os != iOS -a $_os != Android; then
3159         enable_database_connectivity=no
3160         enable_nss=no
3161         enable_odk=no
3162         enable_python=no
3163         enable_skia=no
3164         with_java=no
3165     fi
3167 AC_SUBST(DISABLE_DYNLOADING)
3169 ENABLE_CUSTOMTARGET_COMPONENTS=
3170 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3171     ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3172     if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3173         AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3174     fi
3176 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3178 if test "$enable_extensions" = yes; then
3179     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3180     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3181 else
3182     enable_extension_integration=no
3183     enable_extension_update=no
3186 # remember SYSBASE value
3187 AC_SUBST(SYSBASE)
3189 dnl ===================================================================
3190 dnl  Sort out various gallery compilation options
3191 dnl ===================================================================
3192 WITH_GALLERY_BUILD=TRUE
3193 AC_MSG_CHECKING([how to build and package galleries])
3194 if test -n "${with_galleries}"; then
3195     if test "$with_galleries" = "build"; then
3196         if test "$enable_database_connectivity" = no; then
3197             AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3198         fi
3199         AC_MSG_RESULT([build from source images internally])
3200     elif test "$with_galleries" = "no"; then
3201         WITH_GALLERY_BUILD=
3202         AC_MSG_RESULT([disable non-internal gallery build])
3203     else
3204         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3205     fi
3206 else
3207     if test $_os != iOS -a $_os != Android; then
3208         AC_MSG_RESULT([internal src images for desktop])
3209     else
3210         WITH_GALLERY_BUILD=
3211         AC_MSG_RESULT([disable src image build])
3212     fi
3214 AC_SUBST(WITH_GALLERY_BUILD)
3216 dnl ===================================================================
3217 dnl  Checks if ccache is available
3218 dnl ===================================================================
3219 CCACHE_DEPEND_MODE=
3220 if test "$enable_ccache" = "no"; then
3221     CCACHE=""
3222 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3223     case "%$CC%$CXX%" in
3224     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3225     # assume that's good then
3226     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3227         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3228         CCACHE_DEPEND_MODE=1
3229         ;;
3230     *)
3231         # try to use our own ccache if it is available and CCACHE was not already defined
3232         if test -z "$CCACHE"; then
3233             if test "$_os" = "WINNT"; then
3234                 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3235             fi
3236             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3237                 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3238             elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3239                 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3240             fi
3241         fi
3242         AC_PATH_PROG([CCACHE],[ccache],[not found])
3243         if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3244             CCACHE=`win_short_path_for_make "$CCACHE"`
3245             # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3246             rm -f conftest.txt
3247             AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3248             CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3249             if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3250                 AC_MSG_RESULT(yes)
3251             else
3252                 AC_MSG_RESULT(no)
3253                 CCACHE="not found"
3254             fi
3255             rm -f conftest.txt
3256         fi
3257         if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3258             # on windows/VC perhaps sccache is around?
3259             case "%$CC%$CXX%" in
3260             # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3261             # assume that's good then
3262             *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3263                 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3264                 CCACHE_DEPEND_MODE=1
3265                 SCCACHE=1
3266                 ;;
3267             *)
3268                 # for sharing code below, reuse CCACHE env var
3269                 AC_PATH_PROG([CCACHE],[sccache],[not found])
3270                 if test "$CCACHE" != "not found"; then
3271                     CCACHE=`win_short_path_for_make "$CCACHE"`
3272                     SCCACHE=1
3273                     CCACHE_DEPEND_MODE=1
3274                 fi
3275                 ;;
3276             esac
3277         fi
3278         if test "$CCACHE" = "not found"; then
3279             CCACHE=""
3280         fi
3281         if test -n "$CCACHE" -a -z "$SCCACHE"; then
3282             CCACHE_DEPEND_MODE=1
3283             # Need to check for ccache version: otherwise prevents
3284             # caching of the results (like "-x objective-c++" for Mac)
3285             if test $_os = Darwin -o $_os = iOS; then
3286                 # Check ccache version
3287                 AC_MSG_CHECKING([whether version of ccache is suitable])
3288                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3289                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3290                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3291                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
3292                 else
3293                     AC_MSG_RESULT([no, $CCACHE_VERSION])
3294                     CCACHE=""
3295                     CCACHE_DEPEND_MODE=
3296                 fi
3297             fi
3298         fi
3299         ;;
3300     esac
3301 else
3302     CCACHE=""
3304 if test "$enable_ccache" = "nodepend"; then
3305     CCACHE_DEPEND_MODE=""
3307 AC_SUBST(CCACHE_DEPEND_MODE)
3309 # sccache defaults are good enough
3310 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3311     # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3312     # -p works with both 4.2 and 4.4
3313     ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3314     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3315     if test "$ccache_size" = ""; then
3316         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3317         if test "$ccache_size" = ""; then
3318             ccache_size=0
3319         fi
3320         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3321         if test $ccache_size -lt 1024; then
3322             CCACHE=""
3323             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3324             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3325         else
3326             # warn that ccache may be too small for debug build
3327             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3328             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3329         fi
3330     else
3331         if test $ccache_size -lt 5; then
3332             #warn that ccache may be too small for debug build
3333             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3334             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3335         fi
3336     fi
3339 ENABLE_Z7_DEBUG=
3340 if test "$enable_z7_debug" != no; then
3341     if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3342         ENABLE_Z7_DEBUG=TRUE
3343     fi
3344 else
3345     AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3346     add_warning "ccache will not work with --disable-z7-debug"
3348 AC_SUBST(ENABLE_Z7_DEBUG)
3350 dnl ===================================================================
3351 dnl  Checks for C compiler,
3352 dnl  The check for the C++ compiler is later on.
3353 dnl ===================================================================
3354 if test "$_os" != "WINNT"; then
3355     GCC_HOME_SET="true"
3356     AC_MSG_CHECKING([gcc home])
3357     if test -z "$with_gcc_home"; then
3358         if test "$enable_icecream" = "yes"; then
3359             if test -d "/usr/lib/icecc/bin"; then
3360                 GCC_HOME="/usr/lib/icecc/"
3361             elif test -d "/usr/libexec/icecc/bin"; then
3362                 GCC_HOME="/usr/libexec/icecc/"
3363             elif test -d "/opt/icecream/bin"; then
3364                 GCC_HOME="/opt/icecream/"
3365             else
3366                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3368             fi
3369         else
3370             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3371             GCC_HOME_SET="false"
3372         fi
3373     else
3374         GCC_HOME="$with_gcc_home"
3375     fi
3376     AC_MSG_RESULT($GCC_HOME)
3377     AC_SUBST(GCC_HOME)
3379     if test "$GCC_HOME_SET" = "true"; then
3380         if test -z "$CC"; then
3381             CC="$GCC_HOME/bin/gcc"
3382             CC_BASE="gcc"
3383         fi
3384         if test -z "$CXX"; then
3385             CXX="$GCC_HOME/bin/g++"
3386             CXX_BASE="g++"
3387         fi
3388     fi
3391 COMPATH=`dirname "$CC"`
3392 if test "$COMPATH" = "."; then
3393     AC_PATH_PROGS(COMPATH, $CC)
3394     dnl double square bracket to get single because of M4 quote...
3395     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3397 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3399 dnl ===================================================================
3400 dnl Java support
3401 dnl ===================================================================
3402 AC_MSG_CHECKING([whether to build with Java support])
3403 if test "$with_java" != "no"; then
3404     if test "$DISABLE_SCRIPTING" = TRUE; then
3405         AC_MSG_RESULT([no, overridden by --disable-scripting])
3406         ENABLE_JAVA=""
3407         with_java=no
3408     else
3409         AC_MSG_RESULT([yes])
3410         ENABLE_JAVA="TRUE"
3411         AC_DEFINE(HAVE_FEATURE_JAVA)
3412     fi
3413 else
3414     AC_MSG_RESULT([no])
3415     ENABLE_JAVA=""
3418 AC_SUBST(ENABLE_JAVA)
3420 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3422 dnl ENABLE_JAVA="" indicate no Java support at all
3424 dnl ===================================================================
3425 dnl Check macOS SDK and compiler
3426 dnl ===================================================================
3428 if test $_os = Darwin; then
3430     # The SDK in the currently selected Xcode should be found.
3432     AC_MSG_CHECKING([what macOS SDK to use])
3433     for macosx_sdk in 13.0 12.3 12.1 12.0 11.3 11.1 11.0 10.15 10.14; do
3434         MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null`
3435         if test -d "$MACOSX_SDK_PATH"; then
3436             break
3437         else
3438             MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk"
3439             if test -d "$MACOSX_SDK_PATH"; then
3440                 break
3441             fi
3442         fi
3443     done
3444     if test ! -d "$MACOSX_SDK_PATH"; then
3445         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3446     fi
3448     AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3449     MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion) 
3450     case $macosx_sdk in
3451     10.14)
3452         MACOSX_SDK_VERSION=101400
3453         ;;
3454     10.15)
3455         MACOSX_SDK_VERSION=101500
3456         ;;
3457     11.0)
3458         MACOSX_SDK_VERSION=110000
3459         ;;
3460     11.1)
3461         MACOSX_SDK_VERSION=110100
3462         ;;
3463     11.3)
3464         MACOSX_SDK_VERSION=110300
3465         ;;
3466     12.0)
3467         MACOSX_SDK_VERSION=120000
3468         ;;
3469     12.1)
3470         MACOSX_SDK_VERSION=120100
3471         ;;
3472     12.3)
3473         MACOSX_SDK_VERSION=120300
3474         ;;
3475     13.0)
3476         MACOSX_SDK_VERSION=130000
3477         ;;
3478     *)
3479         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported])
3480         ;;
3481     esac
3483     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3484         AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon])
3485     fi
3487     if test "$with_macosx_version_min_required" = "" ; then
3488         if test "$host_cpu" = x86_64; then
3489             with_macosx_version_min_required="10.14";
3490         else
3491             with_macosx_version_min_required="11.0";
3492         fi
3493     fi
3495     # export this so that "xcrun" invocations later return matching values
3496     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3497     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3498     export DEVELOPER_DIR
3499     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3500     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3502     AC_MSG_CHECKING([whether Xcode is new enough])
3503     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3504     my_xcode_ver2=${my_xcode_ver1#Xcode }
3505     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3506     if test "$my_xcode_ver3" -ge 1205; then
3507         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3508     else
3509         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3510     fi
3512     my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3513     MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3515     case "$with_macosx_version_min_required" in
3516     10.14)
3517         MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3518         ;;
3519     10.15)
3520         MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3521         ;;
3522     10.16)
3523         MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3524         ;;
3525     11.0)
3526         MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3527         ;;
3528     11.1)
3529         MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3530         ;;
3531     11.3)
3532         MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3533         ;;
3534     12.0)
3535         MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3536         ;;
3537     12.1)
3538         MAC_OS_X_VERSION_MIN_REQUIRED="120100"
3539         ;;
3540     12.3)
3541         MAC_OS_X_VERSION_MIN_REQUIRED="120300"
3542         ;;
3543     13.0)
3544         MAC_OS_X_VERSION_MIN_REQUIRED="130000"
3545         ;;
3546     *)
3547         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.14--13.0])
3548         ;;
3549     esac
3551     LIBTOOL=/usr/bin/libtool
3552     INSTALL_NAME_TOOL=install_name_tool
3553     if test -z "$save_CC"; then
3554         stdlib=-stdlib=libc++
3556         AC_MSG_CHECKING([what C compiler to use])
3557         CC="`xcrun -find clang`"
3558         CC_BASE=`first_arg_basename "$CC"`
3559         if test "$host_cpu" = x86_64; then
3560             CC+=" -target x86_64-apple-macos"
3561         else
3562             CC+=" -target arm64-apple-macos"
3563         fi
3564         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3565         AC_MSG_RESULT([$CC])
3567         AC_MSG_CHECKING([what C++ compiler to use])
3568         CXX="`xcrun -find clang++`"
3569         CXX_BASE=`first_arg_basename "$CXX"`
3570         if test "$host_cpu" = x86_64; then
3571             CXX+=" -target x86_64-apple-macos"
3572         else
3573             CXX+=" -target arm64-apple-macos"
3574         fi
3575         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3576         AC_MSG_RESULT([$CXX])
3578         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3579         AR=`xcrun -find ar`
3580         NM=`xcrun -find nm`
3581         STRIP=`xcrun -find strip`
3582         LIBTOOL=`xcrun -find libtool`
3583         RANLIB=`xcrun -find ranlib`
3584     fi
3586     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3587     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3588         AC_MSG_ERROR([the version minimum required cannot be greater than the sdk level])
3589     else
3590         AC_MSG_RESULT([ok])
3591     fi
3592     AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3594     AC_MSG_CHECKING([whether to do code signing])
3596     if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3597         AC_MSG_RESULT([no])
3598     else
3599         if test "$enable_macosx_code_signing" = yes; then
3600             # By default use the first suitable certificate (?).
3602             # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3603             # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3604             # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3605             # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3606             # "Developer ID Application" one.
3607             identity="Developer ID Application:"
3608         else
3609             identity=$enable_macosx_code_signing
3610         fi
3611         identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3612         if test -n "$identity"; then
3613             MACOSX_CODESIGNING_IDENTITY=$identity
3614             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3615             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3616         else
3617             AC_MSG_ERROR([cannot determine identity to use])
3618         fi
3619     fi
3621     AC_MSG_CHECKING([whether to create a Mac App Store package])
3623     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3624         AC_MSG_RESULT([no])
3625     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3626         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3627     else
3628         if test "$enable_macosx_package_signing" = yes; then
3629             # By default use the first suitable certificate.
3630             # It should be a "3rd Party Mac Developer Installer" one
3631             identity="3rd Party Mac Developer Installer:"
3632         else
3633             identity=$enable_macosx_package_signing
3634         fi
3635         identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3636         if test -n "$identity"; then
3637             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3638             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3639             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3640         else
3641             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3642         fi
3643     fi
3645     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3646         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3647     fi
3649     AC_MSG_CHECKING([whether to sandbox the application])
3651     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3652         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3653     elif test "$enable_macosx_sandbox" = yes; then
3654         ENABLE_MACOSX_SANDBOX=TRUE
3655         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3656         AC_MSG_RESULT([yes])
3657     else
3658         AC_MSG_RESULT([no])
3659     fi
3661     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3662     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3663     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3665     if test -n "$with_macosx_provisioning_profile" ; then
3666         if test ! -f "$with_macosx_provisioning_profile"; then
3667             AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3668         else
3669             MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3670             MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3671                 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3672                     | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3673                 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3674         fi
3675     fi
3677 AC_SUBST(MACOSX_SDK_PATH)
3678 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3679 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3680 AC_SUBST(INSTALL_NAME_TOOL)
3681 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3682 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3683 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3684 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3685 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3686 AC_SUBST(MACOSX_PROVISIONING_INFO)
3687 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3688 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3689 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3691 dnl ===================================================================
3692 dnl Check iOS SDK and compiler
3693 dnl ===================================================================
3695 if test $_os = iOS; then
3696     AC_MSG_CHECKING([what iOS SDK to use])
3697     current_sdk_ver=16.1
3698     older_sdk_vers="16.0 15.6"
3699     if test "$enable_ios_simulator" = "yes"; then
3700         platform=iPhoneSimulator
3701         versionmin=-mios-simulator-version-min=14.5
3702     else
3703         platform=iPhoneOS
3704         versionmin=-miphoneos-version-min=14.5
3705     fi
3706     xcode_developer=`xcode-select -print-path`
3708     for sdkver in $current_sdk_ver $older_sdk_vers; do
3709         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3710         if test -d $t; then
3711             sysroot=$t
3712             break
3713         fi
3714     done
3716     if test -z "$sysroot"; then
3717         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3718     fi
3720     AC_MSG_RESULT($sysroot)
3722     stdlib="-stdlib=libc++"
3724     AC_MSG_CHECKING([what C compiler to use])
3725     CC="`xcrun -find clang`"
3726     CC_BASE=`first_arg_basename "$CC"`
3727     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3728     AC_MSG_RESULT([$CC])
3730     AC_MSG_CHECKING([what C++ compiler to use])
3731     CXX="`xcrun -find clang++`"
3732     CXX_BASE=`first_arg_basename "$CXX"`
3733     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3734     AC_MSG_RESULT([$CXX])
3736     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3737     AR=`xcrun -find ar`
3738     NM=`xcrun -find nm`
3739     STRIP=`xcrun -find strip`
3740     LIBTOOL=`xcrun -find libtool`
3741     RANLIB=`xcrun -find ranlib`
3744 AC_MSG_CHECKING([whether to treat the installation as read-only])
3746 if test $_os = Darwin; then
3747     enable_readonly_installset=yes
3748 elif test "$enable_extensions" != yes; then
3749     enable_readonly_installset=yes
3751 if test "$enable_readonly_installset" = yes; then
3752     AC_MSG_RESULT([yes])
3753     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3754 else
3755     AC_MSG_RESULT([no])
3758 dnl ===================================================================
3759 dnl Structure of install set
3760 dnl ===================================================================
3762 if test $_os = Darwin; then
3763     LIBO_BIN_FOLDER=MacOS
3764     LIBO_ETC_FOLDER=Resources
3765     LIBO_LIBEXEC_FOLDER=MacOS
3766     LIBO_LIB_FOLDER=Frameworks
3767     LIBO_LIB_PYUNO_FOLDER=Resources
3768     LIBO_SHARE_FOLDER=Resources
3769     LIBO_SHARE_HELP_FOLDER=Resources/help
3770     LIBO_SHARE_JAVA_FOLDER=Resources/java
3771     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3772     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3773     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3774     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3775     LIBO_URE_BIN_FOLDER=MacOS
3776     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3777     LIBO_URE_LIB_FOLDER=Frameworks
3778     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3779     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3780 elif test $_os = WINNT; then
3781     LIBO_BIN_FOLDER=program
3782     LIBO_ETC_FOLDER=program
3783     LIBO_LIBEXEC_FOLDER=program
3784     LIBO_LIB_FOLDER=program
3785     LIBO_LIB_PYUNO_FOLDER=program
3786     LIBO_SHARE_FOLDER=share
3787     LIBO_SHARE_HELP_FOLDER=help
3788     LIBO_SHARE_JAVA_FOLDER=program/classes
3789     LIBO_SHARE_PRESETS_FOLDER=presets
3790     LIBO_SHARE_READMES_FOLDER=readmes
3791     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3792     LIBO_SHARE_SHELL_FOLDER=program/shell
3793     LIBO_URE_BIN_FOLDER=program
3794     LIBO_URE_ETC_FOLDER=program
3795     LIBO_URE_LIB_FOLDER=program
3796     LIBO_URE_MISC_FOLDER=program
3797     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3798 else
3799     LIBO_BIN_FOLDER=program
3800     LIBO_ETC_FOLDER=program
3801     LIBO_LIBEXEC_FOLDER=program
3802     LIBO_LIB_FOLDER=program
3803     LIBO_LIB_PYUNO_FOLDER=program
3804     LIBO_SHARE_FOLDER=share
3805     LIBO_SHARE_HELP_FOLDER=help
3806     LIBO_SHARE_JAVA_FOLDER=program/classes
3807     LIBO_SHARE_PRESETS_FOLDER=presets
3808     LIBO_SHARE_READMES_FOLDER=readmes
3809     if test "$enable_fuzzers" != yes; then
3810         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3811     else
3812         LIBO_SHARE_RESOURCE_FOLDER=resource
3813     fi
3814     LIBO_SHARE_SHELL_FOLDER=program/shell
3815     LIBO_URE_BIN_FOLDER=program
3816     LIBO_URE_ETC_FOLDER=program
3817     LIBO_URE_LIB_FOLDER=program
3818     LIBO_URE_MISC_FOLDER=program
3819     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3821 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3822 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3823 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3824 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3825 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3826 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3827 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3828 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3829 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3830 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3831 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3832 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3833 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3834 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3835 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3836 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3838 # Not all of them needed in config_host.mk, add more if need arises
3839 AC_SUBST(LIBO_BIN_FOLDER)
3840 AC_SUBST(LIBO_ETC_FOLDER)
3841 AC_SUBST(LIBO_LIB_FOLDER)
3842 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3843 AC_SUBST(LIBO_SHARE_FOLDER)
3844 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3845 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3846 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3847 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3848 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3849 AC_SUBST(LIBO_URE_BIN_FOLDER)
3850 AC_SUBST(LIBO_URE_ETC_FOLDER)
3851 AC_SUBST(LIBO_URE_LIB_FOLDER)
3852 AC_SUBST(LIBO_URE_MISC_FOLDER)
3853 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3855 dnl ===================================================================
3856 dnl Windows specific tests and stuff
3857 dnl ===================================================================
3859 reg_get_value()
3861     # Return value: $regvalue
3862     unset regvalue
3864     if test "$build_os" = "wsl"; then
3865         regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3866         return
3867     fi
3869     local _regentry="/proc/registry${1}/${2}"
3870     if test -f "$_regentry"; then
3871         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3872         # Registry keys read via /proc/registry* are always \0 terminated!
3873         local _regvalue=$(tr -d '\0' < "$_regentry")
3874         if test $? -eq 0; then
3875             regvalue=$_regvalue
3876         fi
3877     fi
3880 # Get a value from the 32-bit side of the Registry
3881 reg_get_value_32()
3883     reg_get_value "32" "$1"
3886 # Get a value from the 64-bit side of the Registry
3887 reg_get_value_64()
3889     reg_get_value "64" "$1"
3892 reg_list_values()
3894     # Return value: $reglist
3895     unset reglist
3897     if test "$build_os" = "wsl"; then
3898         reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3899         return
3900     fi
3902     reglist=$(ls "/proc/registry${1}/${2}")
3905 # List values from the 32-bit side of the Registry
3906 reg_list_values_32()
3908     reg_list_values "32" "$1"
3911 # List values from the 64-bit side of the Registry
3912 reg_list_values_64()
3914     reg_list_values "64" "$1"
3917 case "$host_os" in
3918 cygwin*|wsl*)
3919     COM=MSC
3920     OS=WNT
3921     RTL_OS=Windows
3922     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3923         P_SEP=";"
3924     else
3925         P_SEP=:
3926     fi
3927     case "$host_cpu" in
3928     x86_64)
3929         CPUNAME=X86_64
3930         RTL_ARCH=X86_64
3931         PLATFORMID=windows_x86_64
3932         WINDOWS_X64=1
3933         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3934         WIN_HOST_ARCH="x64"
3935         WIN_MULTI_ARCH="x86"
3936         WIN_HOST_BITS=64
3937         ;;
3938     i*86)
3939         CPUNAME=INTEL
3940         RTL_ARCH=x86
3941         PLATFORMID=windows_x86
3942         WIN_HOST_ARCH="x86"
3943         WIN_HOST_BITS=32
3944         WIN_OTHER_ARCH="x64"
3945         ;;
3946     aarch64)
3947         CPUNAME=AARCH64
3948         RTL_ARCH=AARCH64
3949         PLATFORMID=windows_aarch64
3950         WINDOWS_X64=1
3951         SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3952         WIN_HOST_ARCH="arm64"
3953         WIN_HOST_BITS=64
3954         with_ucrt_dir=no
3955         ;;
3956     *)
3957         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3958         ;;
3959     esac
3961     case "$build_cpu" in
3962     x86_64) WIN_BUILD_ARCH="x64" ;;
3963     i*86) WIN_BUILD_ARCH="x86" ;;
3964     aarch64) WIN_BUILD_ARCH="arm64" ;;
3965     *)
3966         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3967         ;;
3968     esac
3970     SCPDEFS="$SCPDEFS -D_MSC_VER"
3971     ;;
3972 esac
3974 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3975 # other-arch won't, but wouldn't break the build (x64 on x86).
3976 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3977     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3981 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3982     # To allow building Windows multi-arch releases without cross-tooling
3983     if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3984         cross_compiling="yes"
3985     fi
3988 if test "$cross_compiling" = "yes"; then
3989     export CROSS_COMPILING=TRUE
3990     if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3991         ENABLE_WASM_STRIP=TRUE
3992     fi
3993     if test "$_os" = "Emscripten"; then
3994         if test "$with_main_module" = "calc"; then
3995             ENABLE_WASM_STRIP_WRITER=TRUE
3996         else
3997             ENABLE_WASM_STRIP_CALC=TRUE
3998         fi
3999     fi
4000 else
4001     CROSS_COMPILING=
4002     BUILD_TYPE="$BUILD_TYPE NATIVE"
4004 AC_SUBST(CROSS_COMPILING)
4005 AC_SUBST(ENABLE_WASM_STRIP)
4006 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
4007 AC_SUBST(ENABLE_WASM_STRIP_CALC)
4009 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
4010 # NOTE: must _not_ be used for bundled external libraries!
4011 ISYSTEM=
4012 if test "$GCC" = "yes"; then
4013     AC_MSG_CHECKING( for -isystem )
4014     save_CFLAGS=$CFLAGS
4015     CFLAGS="$CFLAGS -isystem /usr/include -Werror"
4016     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
4017     CFLAGS=$save_CFLAGS
4018     if test -n "$ISYSTEM"; then
4019         AC_MSG_RESULT(yes)
4020     else
4021         AC_MSG_RESULT(no)
4022     fi
4024 if test -z "$ISYSTEM"; then
4025     # fall back to using -I
4026     ISYSTEM=-I
4028 AC_SUBST(ISYSTEM)
4030 dnl ===================================================================
4031 dnl  Check which Visual Studio compiler is used
4032 dnl ===================================================================
4034 map_vs_year_to_version()
4036     # Return value: $vsversion
4038     unset vsversion
4040     case $1 in
4041     2019)
4042         vsversion=16;;
4043     2022)
4044         vsversion=17;;
4045     2022preview)
4046         vsversion=17.4;;
4047     *)
4048         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4049     esac
4052 vs_versions_to_check()
4054     # Args: $1 (optional) : versions to check, in the order of preference
4055     # Return value: $vsversions
4057     unset vsversions
4059     if test -n "$1"; then
4060         map_vs_year_to_version "$1"
4061         vsversions=$vsversion
4062     else
4063         # Default version is 2019
4064         vsversions="16"
4065     fi
4068 win_get_env_from_vsvars32bat()
4070     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4071     # Also seems to be located in another directory under the same name: vsvars32.bat
4072     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
4073     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
4074     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4075     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4076     local result
4077     if test "$build_os" = "wsl"; then
4078         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4079     else
4080         chmod +x $WRAPPERBATCHFILEPATH
4081         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4082     fi
4083     rm -f $WRAPPERBATCHFILEPATH
4084     printf '%s' "$result"
4087 find_ucrt()
4089     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4090     if test -n "$regvalue"; then
4091         PathFormat "$regvalue"
4092         UCRTSDKDIR=$formatted_path_unix
4093         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4094         UCRTVERSION=$regvalue
4095         # Rest if not exist
4096         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4097           UCRTSDKDIR=
4098         fi
4099     fi
4100     if test -z "$UCRTSDKDIR"; then
4101         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4102         ide_env_file="${ide_env_dir}VsDevCmd.bat"
4103         if test -f "$ide_env_file"; then
4104             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
4105             UCRTSDKDIR=$formatted_path
4106             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
4107             dnl Hack needed at least by tml:
4108             if test "$UCRTVERSION" = 10.0.15063.0 \
4109                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4110                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4111             then
4112                 UCRTVERSION=10.0.14393.0
4113             fi
4114         else
4115           AC_MSG_ERROR([No UCRT found])
4116         fi
4117     fi
4120 find_msvc()
4122     # Find Visual C++
4123     # Args: $1 (optional) : The VS version year
4124     # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4126     unset vctest vctoolset vcnumwithdot vcbuildnumber
4128     vs_versions_to_check "$1"
4129     if test "$build_os" = wsl; then
4130         vswhere="$PROGRAMFILESX86"
4131         if test -z "$vswhere"; then
4132             vswhere="c:\\Program Files (x86)"
4133         fi
4134     else
4135         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4136     fi
4137     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4138     PathFormat "$vswhere"
4139     vswhere=$formatted_path_unix
4140     for ver in $vsversions; do
4141         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4142         if test -z "$vswhereoutput"; then
4143             vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4144         fi
4145         # Fall back to all MS products (this includes VC++ Build Tools)
4146         if ! test -n "$vswhereoutput"; then
4147             AC_MSG_CHECKING([VC++ Build Tools and similar])
4148             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4149         fi
4150         if test -n "$vswhereoutput"; then
4151             PathFormat "$vswhereoutput"
4152             vctest=$formatted_path_unix
4153             break
4154         fi
4155     done
4157     if test -n "$vctest"; then
4158         vcnumwithdot="$ver"
4159         if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4160             vcnumwithdot=$vcnumwithdot.0
4161         fi
4162         case "$vcnumwithdot" in
4163         16.0)
4164             vcyear=2019
4165             vctoolset=v142
4166             ;;
4167         17.0 | 17.4)
4168             vcyear=2022
4169             vctoolset=v143
4170             ;;
4171         esac
4172         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4174     fi
4177 test_cl_exe()
4179     AC_MSG_CHECKING([$1 compiler])
4181     CL_EXE_PATH="$2/cl.exe"
4183     if test ! -f "$CL_EXE_PATH"; then
4184         if test "$1" = "multi-arch"; then
4185             AC_MSG_WARN([no compiler (cl.exe) in $2])
4186             return 1
4187         else
4188             AC_MSG_ERROR([no compiler (cl.exe) in $2])
4189         fi
4190     fi
4192     dnl ===========================================================
4193     dnl  Check for the corresponding mspdb*.dll
4194     dnl ===========================================================
4196     # MSVC 15.0 has libraries from 14.0?
4197     mspdbnum="140"
4199     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4200         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4201     fi
4203     # The compiles has to find its shared libraries
4204     OLD_PATH="$PATH"
4205     TEMP_PATH=`cygpath -d "$2"`
4206     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4208     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4209         AC_MSG_ERROR([no compiler (cl.exe) in $2])
4210     fi
4212     PATH="$OLD_PATH"
4214     AC_MSG_RESULT([$CL_EXE_PATH])
4217 SOLARINC=
4218 MSBUILD_PATH=
4219 DEVENV=
4220 if test "$_os" = "WINNT"; then
4221     AC_MSG_CHECKING([Visual C++])
4222     find_msvc "$with_visual_studio"
4223     if test -z "$vctest"; then
4224         if test -n "$with_visual_studio"; then
4225             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4226         else
4227             AC_MSG_ERROR([no Visual Studio installation found])
4228         fi
4229     fi
4230     AC_MSG_RESULT([])
4232     VC_PRODUCT_DIR="$vctest/VC"
4233     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4235     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4236     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4237         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4238         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4239         if test $? -ne 0; then
4240             WIN_MULTI_ARCH=""
4241             WIN_OTHER_ARCH=""
4242         fi
4243     fi
4245     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4246         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4247         test_cl_exe "build" "$MSVC_BUILD_PATH"
4248     fi
4250     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4251         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4252         test_cl_exe "host" "$MSVC_HOST_PATH"
4253     else
4254         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4255     fi
4257     AC_MSG_CHECKING([for short pathname of VC product directory])
4258     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4259     AC_MSG_RESULT([$VC_PRODUCT_DIR])
4261     UCRTSDKDIR=
4262     UCRTVERSION=
4264     AC_MSG_CHECKING([for UCRT location])
4265     find_ucrt
4266     # find_ucrt errors out if it doesn't find it
4267     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4268     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4269     ucrtincpath_formatted=$formatted_path
4270     # SOLARINC is used for external modules and must be set too.
4271     # And no, it's not sufficient to set SOLARINC only, as configure
4272     # itself doesn't honour it.
4273     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4274     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4275     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4276     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4278     AC_SUBST(UCRTSDKDIR)
4279     AC_SUBST(UCRTVERSION)
4281     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4282     # Find the proper version of MSBuild.exe to use based on the VS version
4283     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4284     if test -z "$regvalue" ; then
4285         if test "$WIN_BUILD_ARCH" != "x64"; then
4286             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4287         else
4288             regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4289         fi
4290     fi
4291     if test -d "$regvalue" ; then
4292         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4293         AC_MSG_RESULT([$regvalue])
4294     else
4295         AC_MSG_ERROR([MSBuild.exe location not found])
4296     fi
4298     # Find the version of devenv.exe
4299     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4300     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4301     DEVENV_unix=$(cygpath -u "$DEVENV")
4302     if test ! -e "$DEVENV_unix"; then
4303         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4304     fi
4306     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4307     dnl needed when building CLR code:
4308     if test -z "$MSVC_CXX"; then
4309         # This gives us a posix path with 8.3 filename restrictions
4310         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4311     fi
4313     if test -z "$CC"; then
4314         CC=$MSVC_CXX
4315         CC_BASE=`first_arg_basename "$CC"`
4316     fi
4317     if test -z "$CXX"; then
4318         CXX=$MSVC_CXX
4319         CXX_BASE=`first_arg_basename "$CXX"`
4320     fi
4322     if test -n "$CC"; then
4323         # Remove /cl.exe from CC case insensitive
4324         AC_MSG_NOTICE([found Visual C++ $vcyear])
4326         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4327         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4329         PathFormat "$COMPATH"
4330         COMPATH=`win_short_path_for_make "$formatted_path"`
4332         VCVER=$vcnumwithdot
4333         VCTOOLSET=$vctoolset
4335         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
4336         # are always "better", we list them in reverse chronological order.
4338         case "$vcnumwithdot" in
4339         16.0 | 17.0 | 17.4)
4340             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4341             ;;
4342         esac
4344         # The expectation is that --with-windows-sdk should not need to be used
4345         if test -n "$with_windows_sdk"; then
4346             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4347             *" "$with_windows_sdk" "*)
4348                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4349                 ;;
4350             *)
4351                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4352                 ;;
4353             esac
4354         fi
4356         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4357         ac_objext=obj
4358         ac_exeext=exe
4360     else
4361         AC_MSG_ERROR([Visual C++ not found after all, huh])
4362     fi
4364     # ERROR if VS version < 16.5
4365     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4366     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4367         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4368         // between Visual Studio versions and _MSC_VER:
4369         #if _MSC_VER < 1925
4370         #error
4371         #endif
4372     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4374     # WARN if VS version < 16.10
4375     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4376     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4377         #if _MSC_VER < 1929
4378         #error
4379         #endif
4380     ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4382     if test $vs2019_recommended_version = yes; then
4383         AC_MSG_RESULT([yes])
4384     else
4385         AC_MSG_WARN([no])
4386         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."
4387     fi
4389     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4390     # version of the Explorer extension (and maybe other small
4391     # bits, too) needed when installing a 32-bit LibreOffice on a
4392     # 64-bit OS. The 64-bit Explorer extension is a feature that
4393     # has been present since long in OOo. Don't confuse it with
4394     # building LibreOffice itself as 64-bit code.
4396     BUILD_X64=
4397     CXX_X64_BINARY=
4399     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4400         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4401         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4402              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4403         then
4404             BUILD_X64=TRUE
4405             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4406             AC_MSG_RESULT([found])
4407         else
4408             AC_MSG_RESULT([not found])
4409             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4410         fi
4411     elif test "$WIN_HOST_ARCH" = "x64"; then
4412         CXX_X64_BINARY=$CXX
4413     fi
4414     AC_SUBST(BUILD_X64)
4416     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4417     AC_SUBST(CXX_X64_BINARY)
4419     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4420     # needed to support TWAIN scan on both 32- and 64-bit systems
4422     case "$WIN_HOST_ARCH" in
4423     x64)
4424         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4425         if test -n "$CXX_X86_BINARY"; then
4426             BUILD_X86=TRUE
4427             AC_MSG_RESULT([preset])
4428         elif test -n "$WIN_MULTI_ARCH"; then
4429             BUILD_X86=TRUE
4430             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4431             AC_MSG_RESULT([found])
4432         else
4433             AC_MSG_RESULT([not found])
4434             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4435         fi
4436         ;;
4437     x86)
4438         BUILD_X86=TRUE
4439         CXX_X86_BINARY=$MSVC_CXX
4440         ;;
4441     esac
4442     AC_SUBST(BUILD_X86)
4443     AC_SUBST(CXX_X86_BINARY)
4445 AC_SUBST(VCVER)
4446 AC_SUBST(VCTOOLSET)
4447 AC_SUBST(DEVENV)
4448 AC_SUBST(MSVC_CXX)
4450 COM_IS_CLANG=
4451 AC_MSG_CHECKING([whether the compiler is actually Clang])
4452 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4453     #ifndef __clang__
4454     you lose
4455     #endif
4456     int foo=42;
4457     ]])],
4458     [AC_MSG_RESULT([yes])
4459      COM_IS_CLANG=TRUE],
4460     [AC_MSG_RESULT([no])])
4461 AC_SUBST(COM_IS_CLANG)
4463 CLANGVER=
4464 if test "$COM_IS_CLANG" = TRUE; then
4465     AC_MSG_CHECKING([whether Clang is new enough])
4466     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4467         #if !defined __apple_build_version__
4468         #error
4469         #endif
4470         ]])],
4471         [my_apple_clang=yes],[my_apple_clang=])
4472     if test "$my_apple_clang" = yes; then
4473         AC_MSG_RESULT([assumed yes (Apple Clang)])
4474     elif test "$_os" = Emscripten; then
4475         AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4476     else
4477         if test "$_os" = WINNT; then
4478             dnl In which case, assume clang-cl:
4479             my_args="/EP /TC"
4480         else
4481             my_args="-E -P"
4482         fi
4483         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4484         CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4485         CLANGVER=`echo $clang_version \
4486             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4487         if test "$CLANGVER" -ge 80001; then
4488             AC_MSG_RESULT([yes ($clang_version)])
4489         else
4490             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 8.0.1])
4491         fi
4492         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4493         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4494     fi
4497 SHOWINCLUDES_PREFIX=
4498 if test "$_os" = WINNT; then
4499     dnl We need to guess the prefix of the -showIncludes output, it can be
4500     dnl localized
4501     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4502     echo "#include <stdlib.h>" > conftest.c
4503     SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4504         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4505     rm -f conftest.c conftest.obj
4506     if test -z "$SHOWINCLUDES_PREFIX"; then
4507         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4508     else
4509         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4510     fi
4512 AC_SUBST(SHOWINCLUDES_PREFIX)
4515 # prefix C with ccache if needed
4517 if test "$CCACHE" != ""; then
4518     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4520     AC_LANG_PUSH([C])
4521     save_CFLAGS=$CFLAGS
4522     CFLAGS="$CFLAGS --ccache-skip -O2"
4523     # msvc does not fail on unknown options, check stdout
4524     if test "$COM" = MSC; then
4525         CFLAGS="$CFLAGS -nologo"
4526     fi
4527     save_ac_c_werror_flag=$ac_c_werror_flag
4528     ac_c_werror_flag=yes
4529     dnl an empty program will do, we're checking the compiler flags
4530     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4531                       [use_ccache=yes], [use_ccache=no])
4532     CFLAGS=$save_CFLAGS
4533     ac_c_werror_flag=$save_ac_c_werror_flag
4534     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4535         AC_MSG_RESULT([yes])
4536     else
4537         CC="$CCACHE $CC"
4538         CC_BASE="ccache $CC_BASE"
4539         AC_MSG_RESULT([no])
4540     fi
4541     AC_LANG_POP([C])
4544 # ===================================================================
4545 # check various GCC options that Clang does not support now but maybe
4546 # will somewhen in the future, check them even for GCC, so that the
4547 # flags are set
4548 # ===================================================================
4550 HAVE_GCC_GGDB2=
4551 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4552     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4553     save_CFLAGS=$CFLAGS
4554     CFLAGS="$CFLAGS -Werror -ggdb2"
4555     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4556     CFLAGS=$save_CFLAGS
4557     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4558         AC_MSG_RESULT([yes])
4559     else
4560         AC_MSG_RESULT([no])
4561     fi
4563     if test "$host_cpu" = "m68k"; then
4564         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4565         save_CFLAGS=$CFLAGS
4566         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4567         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4568         CFLAGS=$save_CFLAGS
4569         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4570             AC_MSG_RESULT([yes])
4571         else
4572             AC_MSG_ERROR([no])
4573         fi
4574     fi
4576 AC_SUBST(HAVE_GCC_GGDB2)
4578 dnl ===================================================================
4579 dnl  Test the gcc version
4580 dnl ===================================================================
4581 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4582     AC_MSG_CHECKING([the GCC version])
4583     _gcc_version=`$CC -dumpfullversion`
4584     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4585         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4586     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4588     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4590     if test "$gcc_full_version" -lt 70000; then
4591         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4592     fi
4593 else
4594     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4595     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4596     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4597     # (which reports itself as GCC 4.2.1).
4598     GCC_VERSION=
4600 AC_SUBST(GCC_VERSION)
4602 dnl Set the ENABLE_DBGUTIL variable
4603 dnl ===================================================================
4604 AC_MSG_CHECKING([whether to build with additional debug utilities])
4605 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4606     ENABLE_DBGUTIL="TRUE"
4607     # this is an extra var so it can have different default on different MSVC
4608     # versions (in case there are version specific problems with it)
4609     MSVC_USE_DEBUG_RUNTIME="TRUE"
4611     AC_MSG_RESULT([yes])
4612     # cppunit and graphite expose STL in public headers
4613     if test "$with_system_cppunit" = "yes"; then
4614         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4615     else
4616         with_system_cppunit=no
4617     fi
4618     if test "$with_system_graphite" = "yes"; then
4619         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4620     else
4621         with_system_graphite=no
4622     fi
4623     if test "$with_system_orcus" = "yes"; then
4624         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4625     else
4626         with_system_orcus=no
4627     fi
4628     if test "$with_system_libcmis" = "yes"; then
4629         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4630     else
4631         with_system_libcmis=no
4632     fi
4633     if test "$with_system_hunspell" = "yes"; then
4634         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4635     else
4636         with_system_hunspell=no
4637     fi
4638     if test "$with_system_gpgmepp" = "yes"; then
4639         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4640     else
4641         with_system_gpgmepp=no
4642     fi
4643     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4644     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4645     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4646     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4647     # of those two is using the system variant:
4648     if test "$with_system_libnumbertext" = "yes"; then
4649         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4650     else
4651         with_system_libnumbertext=no
4652     fi
4653     if test "$with_system_libwps" = "yes"; then
4654         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4655     else
4656         with_system_libwps=no
4657     fi
4658 else
4659     ENABLE_DBGUTIL=""
4660     MSVC_USE_DEBUG_RUNTIME=""
4661     AC_MSG_RESULT([no])
4663 AC_SUBST(ENABLE_DBGUTIL)
4664 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4666 dnl Set the ENABLE_DEBUG variable.
4667 dnl ===================================================================
4668 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4669     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4671 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4672     if test -z "$libo_fuzzed_enable_debug"; then
4673         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4674     else
4675         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4676         enable_debug=yes
4677     fi
4680 AC_MSG_CHECKING([whether to do a debug build])
4681 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4682     ENABLE_DEBUG="TRUE"
4683     if test -n "$ENABLE_DBGUTIL" ; then
4684         AC_MSG_RESULT([yes (dbgutil)])
4685     else
4686         AC_MSG_RESULT([yes])
4687     fi
4688 else
4689     ENABLE_DEBUG=""
4690     AC_MSG_RESULT([no])
4692 AC_SUBST(ENABLE_DEBUG)
4694 dnl ===================================================================
4695 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4696 dnl This is done only after compiler checks (need to know if Clang is
4697 dnl used, for different defaults) and after checking if a debug build
4698 dnl is wanted (non-debug builds get the default linker if not explicitly
4699 dnl specified otherwise).
4700 dnl All checks for linker features/options should come after this.
4701 dnl ===================================================================
4702 check_use_ld()
4704     use_ld=-fuse-ld=${1%%:*}
4705     use_ld_path=${1#*:}
4706     if test "$use_ld_path" != "$1"; then
4707         if test "$COM_IS_CLANG" = TRUE; then
4708             if test "$CLANGVER" -ge 120000; then
4709                 use_ld="${use_ld} --ld-path=${use_ld_path}"
4710             else
4711                 use_ld="-fuse-ld=${use_ld_path}"
4712             fi
4713         else
4714             # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4715             # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4716             # pickup the alternative linker, when called by libtool for linking.
4717             # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4718             AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4719         fi
4720     fi
4721     use_ld_fail_if_error=$2
4722     use_ld_ok=
4723     AC_MSG_CHECKING([for $use_ld linker support])
4724     use_ld_ldflags_save="$LDFLAGS"
4725     LDFLAGS="$LDFLAGS $use_ld"
4726     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4727 #include <stdio.h>
4728         ],[
4729 printf ("hello world\n");
4730         ])], USE_LD=$use_ld, [])
4731     if test -n "$USE_LD"; then
4732         AC_MSG_RESULT( yes )
4733         use_ld_ok=yes
4734     else
4735         if test -n "$use_ld_fail_if_error"; then
4736             AC_MSG_ERROR( no )
4737         else
4738             AC_MSG_RESULT( no )
4739         fi
4740     fi
4741     if test -n "$use_ld_ok"; then
4742         dnl keep the value of LDFLAGS
4743         return 0
4744     fi
4745     LDFLAGS="$use_ld_ldflags_save"
4746     return 1
4748 USE_LD=
4749 if test "$enable_ld" != "no"; then
4750     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4751         if test -n "$enable_ld"; then
4752             check_use_ld "$enable_ld" fail_if_error
4753         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4754             dnl non-debug builds default to the default linker
4755             true
4756         elif test -n "$COM_IS_CLANG"; then
4757             check_use_ld lld
4758             if test $? -ne 0; then
4759                 check_use_ld gold
4760                 if test $? -ne 0; then
4761                     check_use_ld mold
4762                 fi
4763             fi
4764         else
4765             # For gcc first try gold, new versions also support lld/mold.
4766             check_use_ld gold
4767             if test $? -ne 0; then
4768                 check_use_ld lld
4769                 if test $? -ne 0; then
4770                     check_use_ld mold
4771                 fi
4772             fi
4773         fi
4774         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4775         rm conftest.out
4776         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4777         if test -z "$ld_used"; then
4778             ld_used="unknown"
4779         fi
4780         AC_MSG_CHECKING([for linker that is used])
4781         AC_MSG_RESULT([$ld_used])
4782         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4783             if echo "$ld_used" | grep -q "^GNU ld"; then
4784                 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4785                 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4786             fi
4787         fi
4788     else
4789         if test "$enable_ld" = "yes"; then
4790             AC_MSG_ERROR([--enable-ld not supported])
4791         fi
4792     fi
4794 AC_SUBST(USE_LD)
4795 AC_SUBST(LD)
4797 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4798 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4799     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4800     bsymbolic_functions_ldflags_save=$LDFLAGS
4801     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4802     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4803 #include <stdio.h>
4804         ],[
4805 printf ("hello world\n");
4806         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4807     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4808         AC_MSG_RESULT( found )
4809     else
4810         AC_MSG_RESULT( not found )
4811     fi
4812     LDFLAGS=$bsymbolic_functions_ldflags_save
4814 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4816 LD_GC_SECTIONS=
4817 if test "$GCC" = "yes"; then
4818     for flag in "--gc-sections" "-dead_strip"; do
4819         AC_MSG_CHECKING([for $flag linker support])
4820         ldflags_save=$LDFLAGS
4821         LDFLAGS="$LDFLAGS -Wl,$flag"
4822         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4823 #include <stdio.h>
4824             ],[
4825 printf ("hello world\n");
4826             ])],[
4827             LD_GC_SECTIONS="-Wl,$flag"
4828             AC_MSG_RESULT( found )
4829             ], [
4830             AC_MSG_RESULT( not found )
4831             ])
4832         LDFLAGS=$ldflags_save
4833         if test -n "$LD_GC_SECTIONS"; then
4834             break
4835         fi
4836     done
4838 AC_SUBST(LD_GC_SECTIONS)
4840 HAVE_EXTERNAL_DWARF=
4841 if test "$enable_split_debug" != no; then
4842     use_split_debug=
4843     if test -n "$ENABLE_LTO"; then
4844         : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4845     elif test "$enable_split_debug" = yes; then
4846         use_split_debug=1
4847     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4848     elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4849         use_split_debug=1
4850     fi
4851     if test -n "$use_split_debug"; then
4852         if test "$_os" = "Emscripten"; then
4853             TEST_CC_FLAG=-gseparate-dwarf
4854         else
4855             TEST_CC_FLAG=-gsplit-dwarf
4856         fi
4857         AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4858         save_CFLAGS=$CFLAGS
4859         CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4860         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4861         CFLAGS=$save_CFLAGS
4862         if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4863             AC_MSG_RESULT([yes])
4864         else
4865             if test "$enable_split_debug" = yes; then
4866                 AC_MSG_ERROR([no])
4867             else
4868                 AC_MSG_RESULT([no])
4869             fi
4870         fi
4871     fi
4872     if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4873         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4874         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4875     fi
4877 AC_SUBST(HAVE_EXTERNAL_DWARF)
4879 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4880 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4881 save_CFLAGS=$CFLAGS
4882 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4883 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4884 CFLAGS=$save_CFLAGS
4885 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4886     AC_MSG_RESULT([yes])
4887 else
4888     AC_MSG_RESULT([no])
4890 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4892 ENABLE_GDB_INDEX=
4893 if test "$enable_gdb_index" != "no"; then
4894     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4895     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4896         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4897         save_CFLAGS=$CFLAGS
4898         CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4899         have_ggnu_pubnames=
4900         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4901         if test "$have_ggnu_pubnames" != "TRUE"; then
4902             if test "$enable_gdb_index" = "yes"; then
4903                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4904             else
4905                 AC_MSG_RESULT( no )
4906             fi
4907         else
4908             AC_MSG_RESULT( yes )
4909             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4910             ldflags_save=$LDFLAGS
4911             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4912             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4913 #include <stdio.h>
4914                 ],[
4915 printf ("hello world\n");
4916                 ])], ENABLE_GDB_INDEX=TRUE, [])
4917             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4918                 AC_MSG_RESULT( yes )
4919             else
4920                 if test "$enable_gdb_index" = "yes"; then
4921                     AC_MSG_ERROR( no )
4922                 else
4923                     AC_MSG_RESULT( no )
4924                 fi
4925             fi
4926             LDFLAGS=$ldflags_save
4927         fi
4928         CFLAGS=$save_CFLAGS
4929         fi
4930     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4931         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4932         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4933     fi
4935 AC_SUBST(ENABLE_GDB_INDEX)
4937 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4938     enable_sal_log=yes
4940 if test "$enable_sal_log" = yes; then
4941     ENABLE_SAL_LOG=TRUE
4943 AC_SUBST(ENABLE_SAL_LOG)
4945 dnl Check for enable symbols option
4946 dnl ===================================================================
4947 AC_MSG_CHECKING([whether to generate debug information])
4948 if test -z "$enable_symbols"; then
4949     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4950         enable_symbols=yes
4951     else
4952         enable_symbols=no
4953     fi
4955 if test "$enable_symbols" = yes; then
4956     ENABLE_SYMBOLS_FOR=all
4957     AC_MSG_RESULT([yes])
4958 elif test "$enable_symbols" = no; then
4959     ENABLE_SYMBOLS_FOR=
4960     AC_MSG_RESULT([no])
4961 else
4962     # Selective debuginfo.
4963     ENABLE_SYMBOLS_FOR="$enable_symbols"
4964     AC_MSG_RESULT([for "$enable_symbols"])
4966 AC_SUBST(ENABLE_SYMBOLS_FOR)
4968 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4969     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4970     AC_MSG_CHECKING([whether enough memory is available for linking])
4971     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4972     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4973     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4974         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4975     else
4976         AC_MSG_RESULT([yes])
4977     fi
4980 ENABLE_OPTIMIZED=
4981 ENABLE_OPTIMIZED_DEBUG=
4982 AC_MSG_CHECKING([whether to compile with optimization flags])
4983 if test -z "$enable_optimized"; then
4984     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4985         enable_optimized=no
4986     else
4987         enable_optimized=yes
4988     fi
4990 if test "$enable_optimized" = yes; then
4991     ENABLE_OPTIMIZED=TRUE
4992     AC_MSG_RESULT([yes])
4993 elif test "$enable_optimized" = debug; then
4994     ENABLE_OPTIMIZED_DEBUG=TRUE
4995     AC_MSG_RESULT([yes (debug)])
4996     HAVE_GCC_OG=
4997     if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4998         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4999         save_CFLAGS=$CFLAGS
5000         CFLAGS="$CFLAGS -Werror -Og"
5001         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
5002         CFLAGS=$save_CFLAGS
5003         if test "$HAVE_GCC_OG" = "TRUE"; then
5004             AC_MSG_RESULT([yes])
5005         else
5006             AC_MSG_RESULT([no])
5007         fi
5008     fi
5009     if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
5010         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
5011     fi
5012 else
5013     AC_MSG_RESULT([no])
5015 AC_SUBST(ENABLE_OPTIMIZED)
5016 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
5019 # determine CPUNAME, OS, ...
5021 case "$host_os" in
5023 aix*)
5024     COM=GCC
5025     CPUNAME=POWERPC
5026     OS=AIX
5027     RTL_OS=AIX
5028     RTL_ARCH=PowerPC
5029     PLATFORMID=aix_powerpc
5030     P_SEP=:
5031     ;;
5033 cygwin*|wsl*)
5034     # Already handled
5035     ;;
5037 darwin*)
5038     COM=GCC
5039     OS=MACOSX
5040     RTL_OS=MacOSX
5041     P_SEP=:
5043     case "$host_cpu" in
5044     aarch64|arm64)
5045         if test "$enable_ios_simulator" = "yes"; then
5046             OS=iOS
5047         else
5048             CPUNAME=AARCH64
5049             RTL_ARCH=AARCH64
5050             PLATFORMID=macosx_aarch64
5051         fi
5052         ;;
5053     x86_64)
5054         if test "$enable_ios_simulator" = "yes"; then
5055             OS=iOS
5056         fi
5057         CPUNAME=X86_64
5058         RTL_ARCH=X86_64
5059         PLATFORMID=macosx_x86_64
5060         ;;
5061     *)
5062         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5063         ;;
5064     esac
5065     ;;
5067 ios*)
5068     COM=GCC
5069     OS=iOS
5070     RTL_OS=iOS
5071     P_SEP=:
5073     case "$host_cpu" in
5074     aarch64|arm64)
5075         if test "$enable_ios_simulator" = "yes"; then
5076             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5077         fi
5078         ;;
5079     *)
5080         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5081         ;;
5082     esac
5083     CPUNAME=AARCH64
5084     RTL_ARCH=AARCH64
5085     PLATFORMID=ios_arm64
5086     ;;
5088 dragonfly*)
5089     COM=GCC
5090     OS=DRAGONFLY
5091     RTL_OS=DragonFly
5092     P_SEP=:
5094     case "$host_cpu" in
5095     i*86)
5096         CPUNAME=INTEL
5097         RTL_ARCH=x86
5098         PLATFORMID=dragonfly_x86
5099         ;;
5100     x86_64)
5101         CPUNAME=X86_64
5102         RTL_ARCH=X86_64
5103         PLATFORMID=dragonfly_x86_64
5104         ;;
5105     *)
5106         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5107         ;;
5108     esac
5109     ;;
5111 freebsd*)
5112     COM=GCC
5113     RTL_OS=FreeBSD
5114     OS=FREEBSD
5115     P_SEP=:
5117     case "$host_cpu" in
5118     aarch64)
5119         CPUNAME=AARCH64
5120         PLATFORMID=freebsd_aarch64
5121         RTL_ARCH=AARCH64
5122         ;;
5123     i*86)
5124         CPUNAME=INTEL
5125         RTL_ARCH=x86
5126         PLATFORMID=freebsd_x86
5127         ;;
5128     x86_64|amd64)
5129         CPUNAME=X86_64
5130         RTL_ARCH=X86_64
5131         PLATFORMID=freebsd_x86_64
5132         ;;
5133     powerpc64)
5134         CPUNAME=POWERPC64
5135         RTL_ARCH=PowerPC_64
5136         PLATFORMID=freebsd_powerpc64
5137         ;;
5138     powerpc|powerpcspe)
5139         CPUNAME=POWERPC
5140         RTL_ARCH=PowerPC
5141         PLATFORMID=freebsd_powerpc
5142         ;;
5143     *)
5144         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5145         ;;
5146     esac
5147     ;;
5149 haiku*)
5150     COM=GCC
5151     GUIBASE=haiku
5152     RTL_OS=Haiku
5153     OS=HAIKU
5154     P_SEP=:
5156     case "$host_cpu" in
5157     i*86)
5158         CPUNAME=INTEL
5159         RTL_ARCH=x86
5160         PLATFORMID=haiku_x86
5161         ;;
5162     x86_64|amd64)
5163         CPUNAME=X86_64
5164         RTL_ARCH=X86_64
5165         PLATFORMID=haiku_x86_64
5166         ;;
5167     *)
5168         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5169         ;;
5170     esac
5171     ;;
5173 kfreebsd*)
5174     COM=GCC
5175     OS=LINUX
5176     RTL_OS=kFreeBSD
5177     P_SEP=:
5179     case "$host_cpu" in
5181     i*86)
5182         CPUNAME=INTEL
5183         RTL_ARCH=x86
5184         PLATFORMID=kfreebsd_x86
5185         ;;
5186     x86_64)
5187         CPUNAME=X86_64
5188         RTL_ARCH=X86_64
5189         PLATFORMID=kfreebsd_x86_64
5190         ;;
5191     *)
5192         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5193         ;;
5194     esac
5195     ;;
5197 linux-gnu*|linux-musl*)
5198     COM=GCC
5199     OS=LINUX
5200     RTL_OS=Linux
5201     P_SEP=:
5203     case "$host_cpu" in
5205     aarch64)
5206         CPUNAME=AARCH64
5207         PLATFORMID=linux_aarch64
5208         RTL_ARCH=AARCH64
5209         EPM_FLAGS="-a arm64"
5210         ;;
5211     alpha)
5212         CPUNAME=AXP
5213         RTL_ARCH=ALPHA
5214         PLATFORMID=linux_alpha
5215         ;;
5216     arm*)
5217         CPUNAME=ARM
5218         EPM_FLAGS="-a arm"
5219         RTL_ARCH=ARM_EABI
5220         PLATFORMID=linux_arm_eabi
5221         case "$host_cpu" in
5222         arm*-linux)
5223             RTL_ARCH=ARM_OABI
5224             PLATFORMID=linux_arm_oabi
5225             ;;
5226         esac
5227         ;;
5228     hppa)
5229         CPUNAME=HPPA
5230         RTL_ARCH=HPPA
5231         EPM_FLAGS="-a hppa"
5232         PLATFORMID=linux_hppa
5233         ;;
5234     i*86)
5235         CPUNAME=INTEL
5236         RTL_ARCH=x86
5237         PLATFORMID=linux_x86
5238         ;;
5239     ia64)
5240         CPUNAME=IA64
5241         RTL_ARCH=IA64
5242         PLATFORMID=linux_ia64
5243         ;;
5244     mips)
5245         CPUNAME=MIPS
5246         RTL_ARCH=MIPS_EB
5247         EPM_FLAGS="-a mips"
5248         PLATFORMID=linux_mips_eb
5249         ;;
5250     mips64)
5251         CPUNAME=MIPS64
5252         RTL_ARCH=MIPS64_EB
5253         EPM_FLAGS="-a mips64"
5254         PLATFORMID=linux_mips64_eb
5255         ;;
5256     mips64el)
5257         CPUNAME=MIPS64
5258         RTL_ARCH=MIPS64_EL
5259         EPM_FLAGS="-a mips64el"
5260         PLATFORMID=linux_mips64_el
5261         ;;
5262     mipsel)
5263         CPUNAME=MIPS
5264         RTL_ARCH=MIPS_EL
5265         EPM_FLAGS="-a mipsel"
5266         PLATFORMID=linux_mips_el
5267         ;;
5268     riscv64)
5269         CPUNAME=RISCV64
5270         RTL_ARCH=RISCV64
5271         EPM_FLAGS="-a riscv64"
5272         PLATFORMID=linux_riscv64
5273         ;;
5274     m68k)
5275         CPUNAME=M68K
5276         RTL_ARCH=M68K
5277         PLATFORMID=linux_m68k
5278         ;;
5279     powerpc)
5280         CPUNAME=POWERPC
5281         RTL_ARCH=PowerPC
5282         PLATFORMID=linux_powerpc
5283         ;;
5284     powerpc64)
5285         CPUNAME=POWERPC64
5286         RTL_ARCH=PowerPC_64
5287         PLATFORMID=linux_powerpc64
5288         ;;
5289     powerpc64le)
5290         CPUNAME=POWERPC64
5291         RTL_ARCH=PowerPC_64_LE
5292         PLATFORMID=linux_powerpc64_le
5293         ;;
5294     sparc)
5295         CPUNAME=SPARC
5296         RTL_ARCH=SPARC
5297         PLATFORMID=linux_sparc
5298         ;;
5299     sparc64)
5300         CPUNAME=SPARC64
5301         RTL_ARCH=SPARC64
5302         PLATFORMID=linux_sparc64
5303         ;;
5304     s390)
5305         CPUNAME=S390
5306         RTL_ARCH=S390
5307         PLATFORMID=linux_s390
5308         ;;
5309     s390x)
5310         CPUNAME=S390X
5311         RTL_ARCH=S390x
5312         PLATFORMID=linux_s390x
5313         ;;
5314     x86_64)
5315         CPUNAME=X86_64
5316         RTL_ARCH=X86_64
5317         PLATFORMID=linux_x86_64
5318         ;;
5319     loongarch64)
5320         CPUNAME=LOONGARCH64
5321         RTL_ARCH=LOONGARCH64
5322         PLATFORMID=linux_loongarch64
5323         ;;
5324     *)
5325         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5326         ;;
5327     esac
5328     ;;
5330 linux-android*)
5331     COM=GCC
5332     OS=ANDROID
5333     RTL_OS=Android
5334     P_SEP=:
5336     case "$host_cpu" in
5338     arm|armel)
5339         CPUNAME=ARM
5340         RTL_ARCH=ARM_EABI
5341         PLATFORMID=android_arm_eabi
5342         ;;
5343     aarch64)
5344         CPUNAME=AARCH64
5345         RTL_ARCH=AARCH64
5346         PLATFORMID=android_aarch64
5347         ;;
5348     i*86)
5349         CPUNAME=INTEL
5350         RTL_ARCH=x86
5351         PLATFORMID=android_x86
5352         ;;
5353     x86_64)
5354         CPUNAME=X86_64
5355         RTL_ARCH=X86_64
5356         PLATFORMID=android_x86_64
5357         ;;
5358     *)
5359         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5360         ;;
5361     esac
5362     ;;
5364 *netbsd*)
5365     COM=GCC
5366     OS=NETBSD
5367     RTL_OS=NetBSD
5368     P_SEP=:
5370     case "$host_cpu" in
5371     i*86)
5372         CPUNAME=INTEL
5373         RTL_ARCH=x86
5374         PLATFORMID=netbsd_x86
5375         ;;
5376     powerpc)
5377         CPUNAME=POWERPC
5378         RTL_ARCH=PowerPC
5379         PLATFORMID=netbsd_powerpc
5380         ;;
5381     sparc)
5382         CPUNAME=SPARC
5383         RTL_ARCH=SPARC
5384         PLATFORMID=netbsd_sparc
5385         ;;
5386     x86_64)
5387         CPUNAME=X86_64
5388         RTL_ARCH=X86_64
5389         PLATFORMID=netbsd_x86_64
5390         ;;
5391     *)
5392         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5393         ;;
5394     esac
5395     ;;
5397 openbsd*)
5398     COM=GCC
5399     OS=OPENBSD
5400     RTL_OS=OpenBSD
5401     P_SEP=:
5403     case "$host_cpu" in
5404     i*86)
5405         CPUNAME=INTEL
5406         RTL_ARCH=x86
5407         PLATFORMID=openbsd_x86
5408         ;;
5409     x86_64)
5410         CPUNAME=X86_64
5411         RTL_ARCH=X86_64
5412         PLATFORMID=openbsd_x86_64
5413         ;;
5414     *)
5415         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5416         ;;
5417     esac
5418     SOLARINC="$SOLARINC -I/usr/local/include"
5419     ;;
5421 solaris*)
5422     COM=GCC
5423     OS=SOLARIS
5424     RTL_OS=Solaris
5425     P_SEP=:
5427     case "$host_cpu" in
5428     i*86)
5429         CPUNAME=INTEL
5430         RTL_ARCH=x86
5431         PLATFORMID=solaris_x86
5432         ;;
5433     sparc)
5434         CPUNAME=SPARC
5435         RTL_ARCH=SPARC
5436         PLATFORMID=solaris_sparc
5437         ;;
5438     sparc64)
5439         CPUNAME=SPARC64
5440         RTL_ARCH=SPARC64
5441         PLATFORMID=solaris_sparc64
5442         ;;
5443     *)
5444         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5445         ;;
5446     esac
5447     SOLARINC="$SOLARINC -I/usr/local/include"
5448     ;;
5450 emscripten*)
5451     COM=GCC
5452     OS=EMSCRIPTEN
5453     RTL_OS=Emscripten
5454     P_SEP=:
5456     case "$host_cpu" in
5457     wasm32|wasm64)
5458         ;;
5459     *)
5460         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5461         ;;
5462     esac
5463     CPUNAME=INTEL
5464     RTL_ARCH=x86
5465     PLATFORMID=linux_x86
5466     ;;
5469     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5470     ;;
5471 esac
5473 DISABLE_GUI=""
5474 if test "$enable_gui" = "no"; then
5475     if test "$using_x11" != yes; then
5476         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5477     fi
5478     USING_X11=
5479     DISABLE_GUI=TRUE
5480     test_epoxy=no
5481 else
5482     AC_DEFINE(HAVE_FEATURE_UI)
5484 AC_SUBST(DISABLE_GUI)
5486 if test "$with_x" = "no"; then
5487     USING_X11=
5490 if test -z "$USING_X11" -a "$DISABLE_DYNLOADING" = TRUE -a "$enable_gen" = "yes"; then
5491     AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5494 if test "$using_x11" = yes; then
5495     if test "$USING_X11" = TRUE; then
5496         AC_DEFINE(USING_X11)
5497     else
5498         disable_x11_tests
5499         if test "$DISABLE_DYNLOADING" = TRUE; then
5500             test_qt5=yes
5501         fi
5502     fi
5503 else
5504     if test "$USING_X11" = TRUE; then
5505         AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5506     fi
5509 WORKDIR="${BUILDDIR}/workdir"
5510 INSTDIR="${BUILDDIR}/instdir"
5511 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5512 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5513 AC_SUBST(COM)
5514 AC_SUBST(CPUNAME)
5515 AC_SUBST(RTL_OS)
5516 AC_SUBST(RTL_ARCH)
5517 AC_SUBST(EPM_FLAGS)
5518 AC_SUBST(USING_X11)
5519 AC_SUBST([INSTDIR])
5520 AC_SUBST([INSTROOT])
5521 AC_SUBST([INSTROOTBASE])
5522 AC_SUBST(OS)
5523 AC_SUBST(P_SEP)
5524 AC_SUBST(WORKDIR)
5525 AC_SUBST(PLATFORMID)
5526 AC_SUBST(WINDOWS_X64)
5527 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5528 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5530 if test "$OS" = WNT -a "$COM" = MSC; then
5531     case "$CPUNAME" in
5532     INTEL) CPPU_ENV=msci ;;
5533     X86_64) CPPU_ENV=mscx ;;
5534     AARCH64) CPPU_ENV=msca ;;
5535     *)
5536         AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5537         ;;
5538     esac
5539 else
5540     CPPU_ENV=gcc3
5542 AC_SUBST(CPPU_ENV)
5544 dnl ===================================================================
5545 dnl Test which package format to use
5546 dnl ===================================================================
5547 AC_MSG_CHECKING([which package format to use])
5548 if test -n "$with_package_format" -a "$with_package_format" != no; then
5549     for i in $with_package_format; do
5550         case "$i" in
5551         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5552             ;;
5553         *)
5554             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5555 aix - AIX software distribution
5556 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5557 deb - Debian software distribution
5558 pkg - Solaris software distribution
5559 rpm - RedHat software distribution
5561 LibreOffice additionally supports:
5562 archive - .tar.gz or .zip
5563 dmg - macOS .dmg
5564 installed - installation tree
5565 msi - Windows .msi
5566         ])
5567             ;;
5568         esac
5569     done
5570     # fakeroot is needed to ensure correct file ownerships/permissions
5571     # inside deb packages and tar archives created on Linux and Solaris.
5572     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5573         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5574         if test "$FAKEROOT" = "no"; then
5575             AC_MSG_ERROR(
5576                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5577         fi
5578     fi
5579     PKGFORMAT="$with_package_format"
5580     AC_MSG_RESULT([$PKGFORMAT])
5581 else
5582     PKGFORMAT=
5583     AC_MSG_RESULT([none])
5585 AC_SUBST(PKGFORMAT)
5587 dnl ===================================================================
5588 dnl handle help related options
5590 dnl If you change help related options, please update README.help
5591 dnl ===================================================================
5593 ENABLE_HTMLHELP=
5594 HELP_OMINDEX_PAGE=
5595 HELP_ONLINE=
5596 WITH_HELPPACKS=
5598 AC_MSG_CHECKING([which help to build])
5599 if test -n "$with_help" -a "$with_help" != "no"; then
5600     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5601     BUILD_TYPE="$BUILD_TYPE HELP"
5602     case "$with_help" in
5603     "html")
5604         ENABLE_HTMLHELP=TRUE
5605         WITH_HELPPACKS=TRUE
5606         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5607         AC_MSG_RESULT([HTML (local)])
5608         ;;
5609     "online")
5610         ENABLE_HTMLHELP=TRUE
5611         HELP_ONLINE=TRUE
5612         AC_MSG_RESULT([HTML (online)])
5613         ;;
5614     yes)
5615         WITH_HELPPACKS=TRUE
5616         SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5617         AC_MSG_RESULT([XML (local)])
5618         ;;
5619     *)
5620         AC_MSG_ERROR([Unknown --with-help=$with_help])
5621         ;;
5622     esac
5623 else
5624     AC_MSG_RESULT([no])
5627 AC_MSG_CHECKING([if we need to build the help index tooling])
5628 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5629     BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5630     test_clucene=yes
5631     AC_MSG_RESULT([yes])
5632 else
5633     AC_MSG_RESULT([no])
5636 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5637 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5638     if test "$HELP_ONLINE" != TRUE; then
5639         AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5640     fi
5641     case "$with_omindex" in
5642     "server")
5643         HELP_OMINDEX_PAGE=TRUE
5644         AC_MSG_RESULT([SERVER])
5645         ;;
5646     "noxap")
5647         AC_MSG_RESULT([NOXAP])
5648         ;;
5649     *)
5650         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5651         ;;
5652     esac
5653 else
5654     AC_MSG_RESULT([no])
5657 AC_MSG_CHECKING([whether to include the XML-help support])
5658 if test "$enable_xmlhelp" = yes; then
5659     BUILD_TYPE="$BUILD_TYPE XMLHELP"
5660     test_clucene=yes
5661     AC_DEFINE(HAVE_FEATURE_XMLHELP)
5662     AC_MSG_RESULT([yes])
5663 else
5664     if test "$with_help" = yes; then
5665         add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5666     fi
5667     AC_MSG_RESULT([no])
5670 dnl Test whether to integrate helppacks into the product's installer
5671 AC_MSG_CHECKING([for helppack integration])
5672 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5673     AC_MSG_RESULT([no integration])
5674 else
5675     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5676     AC_MSG_RESULT([integration])
5679 AC_SUBST([ENABLE_HTMLHELP])
5680 AC_SUBST([HELP_OMINDEX_PAGE])
5681 AC_SUBST([HELP_ONLINE])
5682 # WITH_HELPPACKS is used only in configure
5684 dnl ===================================================================
5685 dnl Set up a different compiler to produce tools to run on the build
5686 dnl machine when doing cross-compilation
5687 dnl ===================================================================
5689 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5690 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5691 if test "$cross_compiling" = "yes"; then
5692     AC_MSG_CHECKING([for BUILD platform configuration])
5693     echo
5694     rm -rf CONF-FOR-BUILD config_build.mk
5695     mkdir CONF-FOR-BUILD
5696     # Here must be listed all files needed when running the configure script. In particular, also
5697     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5698     # keep them in the same order as there.
5699     (cd $SRC_ROOT && tar cf - \
5700         config.guess \
5701         bin/get_config_variables \
5702         solenv/bin/getcompver.awk \
5703         solenv/inc/langlist.mk \
5704         download.lst \
5705         config_host.mk.in \
5706         config_host_lang.mk.in \
5707         Makefile.in \
5708         lo.xcent.in \
5709         bin/bffvalidator.sh.in \
5710         bin/odfvalidator.sh.in \
5711         bin/officeotron.sh.in \
5712         hardened_runtime.xcent.in \
5713         instsetoo_native/util/openoffice.lst.in \
5714         config_host/*.in \
5715         sysui/desktop/macosx/Info.plist.in \
5716         .vscode/vs-code-template.code-workspace.in \
5717         solenv/lockfile/autoconf.h.in \
5718         ) \
5719     | (cd CONF-FOR-BUILD && tar xf -)
5720     cp configure CONF-FOR-BUILD
5721     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5722     (
5723     unset COM USING_X11 OS CPUNAME
5724     unset CC CXX SYSBASE CFLAGS
5725     unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5726     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5727     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5728     unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5729     if test -n "$CC_FOR_BUILD"; then
5730         export CC="$CC_FOR_BUILD"
5731         CC_BASE=`first_arg_basename "$CC"`
5732     fi
5733     if test -n "$CXX_FOR_BUILD"; then
5734         export CXX="$CXX_FOR_BUILD"
5735         CXX_BASE=`first_arg_basename "$CXX"`
5736     fi
5737     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5738     cd CONF-FOR-BUILD
5740     # Handle host configuration, which affects the cross-toolset too
5741     sub_conf_opts=""
5742     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5743     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5744     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5745     # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5746     if test -n "$ENABLE_JAVA"; then
5747         case "$_os" in
5748         Android)
5749             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5750             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5751             ;;
5752         *)
5753             if test -z "$with_jdk_home"; then
5754                 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.])
5755             fi
5756             ;;
5757         esac
5758     else
5759         sub_conf_opts="$sub_conf_opts --without-java"
5760     fi
5761     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5762     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5763     test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5764     test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5765     test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5766     test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5767     test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5768     test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5769     test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5770     if test "$_os" = "Emscripten"; then
5771         sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5772         if test "${with_main_module+set}" = set; then
5773             sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5774         else
5775             sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5776         fi
5777     fi
5779     # Don't bother having configure look for stuff not needed for the build platform anyway
5780     # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5781     sub_conf_defaults=" \
5782         --build="$build_alias" \
5783         --disable-cairo-canvas \
5784         --disable-cups \
5785         --disable-customtarget-components \
5786         --disable-firebird-sdbc \
5787         --disable-gpgmepp \
5788         --disable-gstreamer-1-0 \
5789         --disable-gtk3 \
5790         --disable-gtk4 \
5791         --disable-libcmis \
5792         --disable-mariadb-sdbc \
5793         --disable-nss \
5794         --disable-online-update \
5795         --disable-opencl \
5796         --disable-pdfimport \
5797         --disable-postgresql-sdbc \
5798         --disable-skia \
5799         --disable-xmlhelp \
5800         --enable-dynamic-loading \
5801         --enable-icecream="$enable_icecream" \
5802         --without-doxygen \
5803         --without-webdav \
5804         --without-x \
5805         --with-tls=openssl \
5807     # single quotes added for better readability in case of spaces
5808     echo "    Running CONF-FOR-BUILD/configure" \
5809         $sub_conf_defaults \
5810         --with-parallelism="'$with_parallelism'" \
5811         --with-theme="'$with_theme'" \
5812         --with-vendor="'$with_vendor'" \
5813         $sub_conf_opts \
5814         $with_build_platform_configure_options \
5815         --srcdir=$srcdir
5817     ./configure \
5818         $sub_conf_defaults \
5819         --with-parallelism="$with_parallelism" \
5820         --with-theme="$with_theme" \
5821         "--with-vendor=$with_vendor" \
5822         $sub_conf_opts \
5823         $with_build_platform_configure_options \
5824         --srcdir=$srcdir \
5825         2>&1 | sed -e 's/^/    /'
5826     if test [${PIPESTATUS[0]}] -ne 0; then
5827         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5828     fi
5830     # filter permitted build targets
5831     PERMITTED_BUILD_TARGETS="
5832         AVMEDIA
5833         BOOST
5834         CAIRO
5835         CLUCENE
5836         CURL
5837         DBCONNECTIVITY
5838         DESKTOP
5839         DRAGONBOX
5840         DYNLOADING
5841         EPOXY
5842         EXPAT
5843         GLM
5844         GRAPHITE
5845         HARFBUZZ
5846         HELPTOOLS
5847         ICU
5848         LCMS2
5849         LIBJPEG_TURBO
5850         LIBLANGTAG
5851         LibO
5852         LIBFFI
5853         LIBPN
5854         LIBTIFF
5855         LIBWEBP
5856         LIBXML2
5857         LIBXSLT
5858         MDDS
5859         NATIVE
5860         OPENSSL
5861         ORCUS
5862         PYTHON
5863         SCRIPTING
5864         ZLIB
5866     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5867     # newlined lists, to use grep as a filter
5868     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5869     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5870     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5871     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5873     cp config_host.mk ../config_build.mk
5874     cp config_host_lang.mk ../config_build_lang.mk
5875     mv config.log ../config.Build.log
5876     mkdir -p ../config_build
5877     mv config_host/*.h ../config_build
5878     test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5880     # all these will get a _FOR_BUILD postfix
5881     DIRECT_FOR_BUILD_SETTINGS="
5882         CC
5883         CPPU_ENV
5884         CXX
5885         ILIB
5886         JAVA_HOME
5887         JAVAIFLAGS
5888         JDK
5889         JDK_SECURITYMANAGER_DISALLOWED
5890         LIBO_BIN_FOLDER
5891         LIBO_LIB_FOLDER
5892         LIBO_URE_LIB_FOLDER
5893         LIBO_URE_MISC_FOLDER
5894         OS
5895         SDKDIRNAME
5896         SYSTEM_LIBXML
5897         SYSTEM_LIBXSLT
5899     # these overwrite host config with build config
5900     OVERWRITING_SETTINGS="
5901         ANT
5902         ANT_HOME
5903         ANT_LIB
5904         JAVA_CLASSPATH_NOT_SET
5905         JAVA_SOURCE_VER
5906         JAVA_TARGET_VER
5907         JAVACFLAGS
5908         JAVACOMPILER
5909         JAVADOC
5910         JAVADOCISGJDOC
5911         LOCKFILE
5912         SYSTEM_GENBRK
5913         SYSTEM_GENCCODE
5914         SYSTEM_GENCMN
5916     # these need some special handling
5917     EXTRA_HANDLED_SETTINGS="
5918         INSTDIR
5919         INSTROOT
5920         PATH
5921         WORKDIR
5923     OLD_PATH=$PATH
5924     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5925     BUILD_PATH=$PATH
5926     PATH=$OLD_PATH
5928     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5929     echo "$line" >>build-config
5931     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5932         VV='$'$V
5933         VV=`eval "echo $VV"`
5934         if test -n "$VV"; then
5935             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5936             echo "$line" >>build-config
5937         fi
5938     done
5940     for V in $OVERWRITING_SETTINGS; do
5941         VV='$'$V
5942         VV=`eval "echo $VV"`
5943         if test -n "$VV"; then
5944             line=${V}='${'${V}:-$VV'}'
5945             echo "$line" >>build-config
5946         fi
5947     done
5949     for V in INSTDIR INSTROOT WORKDIR; do
5950         VV='$'$V
5951         VV=`eval "echo $VV"`
5952         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5953         if test -n "$VV"; then
5954             line="${V}_FOR_BUILD='$VV'"
5955             echo "$line" >>build-config
5956         fi
5957     done
5959     )
5960     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5961     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])
5962     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5963              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5965     eval `cat CONF-FOR-BUILD/build-config`
5967     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5969     rm -rf CONF-FOR-BUILD
5970 else
5971     OS_FOR_BUILD="$OS"
5972     CC_FOR_BUILD="$CC"
5973     CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5974     CXX_FOR_BUILD="$CXX"
5975     INSTDIR_FOR_BUILD="$INSTDIR"
5976     INSTROOT_FOR_BUILD="$INSTROOT"
5977     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5978     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5979     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5980     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5981     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5982     WORKDIR_FOR_BUILD="$WORKDIR"
5984 AC_SUBST(OS_FOR_BUILD)
5985 AC_SUBST(INSTDIR_FOR_BUILD)
5986 AC_SUBST(INSTROOT_FOR_BUILD)
5987 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5988 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5989 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5990 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5991 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5992 AC_SUBST(WORKDIR_FOR_BUILD)
5993 AC_SUBST(CC_FOR_BUILD)
5994 AC_SUBST(CXX_FOR_BUILD)
5995 AC_SUBST(CPPU_ENV_FOR_BUILD)
5997 dnl ===================================================================
5998 dnl Check for lockfile deps
5999 dnl ===================================================================
6000 if test -z "$CROSS_COMPILING"; then
6001     test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
6002     test "${with_system_lockfile+set}" = set || with_system_lockfile=no
6003     AC_MSG_CHECKING([which lockfile binary to use])
6004     case "$with_system_lockfile" in
6005     yes)
6006         AC_MSG_RESULT([external])
6007         AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
6008         ;;
6009     no)
6010         AC_MSG_RESULT([internal])
6011         ;;
6012     *)
6013         if test -x "$with_system_lockfile"; then
6014             LOCKFILE="$with_system_lockfile"
6015         else
6016             AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
6017         fi
6018         AC_MSG_RESULT([$with_system_lockfile])
6019         ;;
6020     esac
6023 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
6024     add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
6027 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
6028 AC_CHECK_FUNCS([utime utimes])
6029 AC_SUBST(LOCKFILE)
6031 dnl ===================================================================
6032 dnl Check for syslog header
6033 dnl ===================================================================
6034 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
6036 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
6037 dnl ===================================================================
6038 AC_MSG_CHECKING([whether to turn warnings to errors])
6039 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
6040     ENABLE_WERROR="TRUE"
6041     PYTHONWARNINGS="error"
6042     AC_MSG_RESULT([yes])
6043 else
6044     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
6045         ENABLE_WERROR="TRUE"
6046         PYTHONWARNINGS="error"
6047         AC_MSG_RESULT([yes])
6048     else
6049         AC_MSG_RESULT([no])
6050     fi
6052 AC_SUBST(ENABLE_WERROR)
6053 AC_SUBST(PYTHONWARNINGS)
6055 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
6056 dnl ===================================================================
6057 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
6058 if test -z "$enable_assert_always_abort"; then
6059    if test "$ENABLE_DEBUG" = TRUE; then
6060        enable_assert_always_abort=yes
6061    else
6062        enable_assert_always_abort=no
6063    fi
6065 if test "$enable_assert_always_abort" = "yes"; then
6066     ASSERT_ALWAYS_ABORT="TRUE"
6067     AC_MSG_RESULT([yes])
6068 else
6069     ASSERT_ALWAYS_ABORT="FALSE"
6070     AC_MSG_RESULT([no])
6072 AC_SUBST(ASSERT_ALWAYS_ABORT)
6074 # Determine whether to use ooenv for the instdir installation
6075 # ===================================================================
6076 if test $_os != "WINNT" -a $_os != "Darwin"; then
6077     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6078     if test -z "$enable_ooenv"; then
6079         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6080             enable_ooenv=yes
6081         else
6082             enable_ooenv=no
6083         fi
6084     fi
6085     if test "$enable_ooenv" = "no"; then
6086         AC_MSG_RESULT([no])
6087     else
6088         ENABLE_OOENV="TRUE"
6089         AC_MSG_RESULT([yes])
6090     fi
6092 AC_SUBST(ENABLE_OOENV)
6094 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6095     if test "$enable_qt5" = "no"; then
6096         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6097     else
6098         enable_qt5=yes
6099     fi
6102 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6103 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6104     AC_MSG_RESULT([yes])
6105     ENABLE_PAGEIN=TRUE
6106     AC_DEFINE(HAVE_FEATURE_PAGEIN)
6107 else
6108     AC_MSG_RESULT([no])
6110 AC_SUBST(ENABLE_PAGEIN)
6112 dnl ===================================================================
6113 dnl check for cups support
6114 dnl ===================================================================
6116 AC_MSG_CHECKING([whether to enable CUPS support])
6117 if test "$test_cups" = yes -a "$enable_cups" != no; then
6118     ENABLE_CUPS=TRUE
6119     AC_MSG_RESULT([yes])
6121     AC_MSG_CHECKING([whether cups support is present])
6122     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6123     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6124     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6125         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6126     fi
6127 else
6128     AC_MSG_RESULT([no])
6131 AC_SUBST(ENABLE_CUPS)
6133 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,system,TRUE)
6135 dnl whether to find & fetch external tarballs?
6136 dnl ===================================================================
6137 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6138    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6139        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6140    else
6141        TARFILE_LOCATION="$LODE_HOME/ext_tar"
6142    fi
6144 if test -z "$TARFILE_LOCATION"; then
6145     if test -d "$SRC_ROOT/src" ; then
6146         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6147         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6148     fi
6149     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6150 else
6151     AbsolutePath "$TARFILE_LOCATION"
6152     PathFormat "${absolute_path}"
6153     TARFILE_LOCATION="${formatted_path_unix}"
6155 AC_SUBST(TARFILE_LOCATION)
6157 AC_MSG_CHECKING([whether we want to fetch tarballs])
6158 if test "$enable_fetch_external" != "no"; then
6159     if test "$with_all_tarballs" = "yes"; then
6160         AC_MSG_RESULT([yes, all of them])
6161         DO_FETCH_TARBALLS="ALL"
6162     else
6163         AC_MSG_RESULT([yes, if we use them])
6164         DO_FETCH_TARBALLS="TRUE"
6165     fi
6166 else
6167     AC_MSG_RESULT([no])
6168     DO_FETCH_TARBALLS=
6170 AC_SUBST(DO_FETCH_TARBALLS)
6172 dnl Test whether to include MySpell dictionaries
6173 dnl ===================================================================
6174 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6175 if test "$with_myspell_dicts" = "yes"; then
6176     AC_MSG_RESULT([yes])
6177     WITH_MYSPELL_DICTS=TRUE
6178     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6179     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6180 else
6181     AC_MSG_RESULT([no])
6182     WITH_MYSPELL_DICTS=
6184 AC_SUBST(WITH_MYSPELL_DICTS)
6186 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6187 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6188     if test "$with_system_dicts" = yes; then
6189         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6190     fi
6191     with_system_dicts=no
6194 AC_MSG_CHECKING([whether to use dicts from external paths])
6195 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6196     AC_MSG_RESULT([yes])
6197     SYSTEM_DICTS=TRUE
6198     AC_MSG_CHECKING([for spelling dictionary directory])
6199     if test -n "$with_external_dict_dir"; then
6200         DICT_SYSTEM_DIR=file://$with_external_dict_dir
6201     else
6202         DICT_SYSTEM_DIR=file:///usr/share/hunspell
6203         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6204             DICT_SYSTEM_DIR=file:///usr/share/myspell
6205         fi
6206     fi
6207     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6208     AC_MSG_CHECKING([for hyphenation patterns directory])
6209     if test -n "$with_external_hyph_dir"; then
6210         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6211     else
6212         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6213     fi
6214     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6215     AC_MSG_CHECKING([for thesaurus directory])
6216     if test -n "$with_external_thes_dir"; then
6217         THES_SYSTEM_DIR=file://$with_external_thes_dir
6218     else
6219         THES_SYSTEM_DIR=file:///usr/share/mythes
6220     fi
6221     AC_MSG_RESULT([$THES_SYSTEM_DIR])
6222 else
6223     AC_MSG_RESULT([no])
6224     SYSTEM_DICTS=
6226 AC_SUBST(SYSTEM_DICTS)
6227 AC_SUBST(DICT_SYSTEM_DIR)
6228 AC_SUBST(HYPH_SYSTEM_DIR)
6229 AC_SUBST(THES_SYSTEM_DIR)
6231 dnl ===================================================================
6232 dnl Precompiled headers.
6233 ENABLE_PCH=""
6234 AC_MSG_CHECKING([whether to enable pch feature])
6235 if test -z "$enable_pch"; then
6236     if test "$_os" = "WINNT"; then
6237         # Enabled by default on Windows.
6238         enable_pch=yes
6239         # never use sccache on auto-enabled PCH builds, except if requested explicitly
6240         if test -z "$enable_ccache" -a "$SCCACHE"; then
6241             CCACHE=""
6242         fi
6243     else
6244         enable_pch=no
6245     fi
6247 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6248     AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6250 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6251     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6253 if test "$enable_pch" = "system"; then
6254     ENABLE_PCH="1"
6255     AC_MSG_RESULT([yes (system headers)])
6256 elif test "$enable_pch" = "base"; then
6257     ENABLE_PCH="2"
6258     AC_MSG_RESULT([yes (system and base headers)])
6259 elif test "$enable_pch" = "normal"; then
6260     ENABLE_PCH="3"
6261     AC_MSG_RESULT([yes (normal)])
6262 elif test "$enable_pch" = "full"; then
6263     ENABLE_PCH="4"
6264     AC_MSG_RESULT([yes (full)])
6265 elif test "$enable_pch" = "yes"; then
6266     # Pick a suitable default.
6267     if test "$GCC" = "yes"; then
6268         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6269         # while making the PCHs larger and rebuilds more likely.
6270         ENABLE_PCH="2"
6271         AC_MSG_RESULT([yes (system and base headers)])
6272     else
6273         # With MSVC the highest level makes a significant difference,
6274         # and it was the default when there used to be no PCH levels.
6275         ENABLE_PCH="4"
6276         AC_MSG_RESULT([yes (full)])
6277     fi
6278 elif test "$enable_pch" = "no"; then
6279     AC_MSG_RESULT([no])
6280 else
6281     AC_MSG_ERROR([Unknown value for --enable-pch])
6283 AC_SUBST(ENABLE_PCH)
6284 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6285 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6286     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6287     if test "$CCACHE_BIN" != "not found"; then
6288         AC_MSG_CHECKING([ccache version])
6289         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6290         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6291         AC_MSG_RESULT([$CCACHE_VERSION])
6292         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6293         if test "$CCACHE_NUMVER" -gt "030701"; then
6294             AC_MSG_RESULT([yes])
6295         else
6296             AC_MSG_RESULT([no (not newer than 3.7.1)])
6297             CCACHE_DEPEND_MODE=
6298         fi
6299     fi
6302 PCH_INSTANTIATE_TEMPLATES=
6303 if test -n "$ENABLE_PCH"; then
6304     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6305     save_CFLAGS=$CFLAGS
6306     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6307     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6308     CFLAGS=$save_CFLAGS
6309     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6310         AC_MSG_RESULT(yes)
6311     else
6312         AC_MSG_RESULT(no)
6313     fi
6315 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6317 BUILDING_PCH_WITH_OBJ=
6318 if test -n "$ENABLE_PCH"; then
6319     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6320     save_CFLAGS=$CFLAGS
6321     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6322     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6323     CFLAGS=$save_CFLAGS
6324     if test -n "$BUILDING_PCH_WITH_OBJ"; then
6325         AC_MSG_RESULT(yes)
6326     else
6327         AC_MSG_RESULT(no)
6328     fi
6330 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6332 PCH_CODEGEN=
6333 PCH_NO_CODEGEN=
6334 fpch_prefix=
6335 if test "$COM" = MSC; then
6336     fpch_prefix="-Xclang "
6338 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6339     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6340     save_CFLAGS=$CFLAGS
6341     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6342     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6343         [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6344     CFLAGS=$save_CFLAGS
6345     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6346     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6347         [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6348     CFLAGS=$save_CFLAGS
6349     if test -n "$PCH_CODEGEN"; then
6350         AC_MSG_RESULT(yes)
6351     else
6352         AC_MSG_RESULT(no)
6353     fi
6355 AC_SUBST(PCH_CODEGEN)
6356 AC_SUBST(PCH_NO_CODEGEN)
6357 PCH_DEBUGINFO=
6358 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6359     AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6360     save_CFLAGS=$CFLAGS
6361     CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6362     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6363     CFLAGS=$save_CFLAGS
6364     if test -n "$PCH_DEBUGINFO"; then
6365         AC_MSG_RESULT(yes)
6366     else
6367         AC_MSG_RESULT(no)
6368     fi
6370 AC_SUBST(PCH_DEBUGINFO)
6372 TAB=`printf '\t'`
6374 AC_MSG_CHECKING([the GNU Make version])
6375 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6376 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6377 if test "$_make_longver" -ge "038200"; then
6378     AC_MSG_RESULT([$GNUMAKE $_make_version])
6379 else
6380     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6383 # find if gnumake support file function
6384 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6385 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6386 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6387     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6389 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6390 \$(file >test.txt,Success )
6392 .PHONY: all
6393 all:
6394 <TAB>@cat test.txt
6397 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6398 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6399     HAVE_GNUMAKE_FILE_FUNC=TRUE
6400     AC_MSG_RESULT([yes])
6401 else
6402     AC_MSG_RESULT([no])
6404 rm -rf $TESTGMAKEFILEFUNC
6405 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6407 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6408 STALE_MAKE=
6409 if test "$_make_ver_check" = ""; then
6410    STALE_MAKE=TRUE
6413 HAVE_LD_HASH_STYLE=FALSE
6414 WITH_LINKER_HASH_STYLE=
6415 AC_MSG_CHECKING([for --hash-style gcc linker support])
6416 if test "$GCC" = "yes"; then
6417     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6418         hash_styles="gnu sysv"
6419     elif test "$with_linker_hash_style" = "no"; then
6420         hash_styles=
6421     else
6422         hash_styles="$with_linker_hash_style"
6423     fi
6425     for hash_style in $hash_styles; do
6426         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6427         hash_style_ldflags_save=$LDFLAGS
6428         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6430         AC_RUN_IFELSE([AC_LANG_PROGRAM(
6431             [
6432 #include <stdio.h>
6433             ],[
6434 printf ("");
6435             ])],
6436             [
6437                   HAVE_LD_HASH_STYLE=TRUE
6438                   WITH_LINKER_HASH_STYLE=$hash_style
6439             ],
6440             [HAVE_LD_HASH_STYLE=FALSE],
6441             [HAVE_LD_HASH_STYLE=FALSE])
6442         LDFLAGS=$hash_style_ldflags_save
6443     done
6445     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6446         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6447     else
6448         AC_MSG_RESULT( no )
6449     fi
6450     LDFLAGS=$hash_style_ldflags_save
6451 else
6452     AC_MSG_RESULT( no )
6454 AC_SUBST(HAVE_LD_HASH_STYLE)
6455 AC_SUBST(WITH_LINKER_HASH_STYLE)
6457 dnl ===================================================================
6458 dnl Check whether there's a Perl version available.
6459 dnl ===================================================================
6460 if test -z "$with_perl_home"; then
6461     AC_PATH_PROG(PERL, perl)
6462 else
6463     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6464     _perl_path="$with_perl_home/bin/perl"
6465     if test -x "$_perl_path"; then
6466         PERL=$_perl_path
6467     else
6468         AC_MSG_ERROR([$_perl_path not found])
6469     fi
6472 dnl ===================================================================
6473 dnl Testing for Perl version 5 or greater.
6474 dnl $] is the Perl version variable, it is returned as an integer
6475 dnl ===================================================================
6476 if test "$PERL"; then
6477     AC_MSG_CHECKING([the Perl version])
6478     ${PERL} -e "exit($]);"
6479     _perl_version=$?
6480     if test "$_perl_version" -lt 5; then
6481         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6482     fi
6483     AC_MSG_RESULT([Perl $_perl_version])
6484 else
6485     AC_MSG_ERROR([Perl not found, install Perl 5])
6488 dnl ===================================================================
6489 dnl Testing for required Perl modules
6490 dnl ===================================================================
6492 AC_MSG_CHECKING([for required Perl modules])
6493 perl_use_string="use Cwd ; use Digest::MD5"
6494 if test "$_os" = "WINNT"; then
6495     if test -n "$PKGFORMAT"; then
6496         for i in $PKGFORMAT; do
6497             case "$i" in
6498             msi)
6499                 # for getting fonts versions to use in MSI
6500                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6501                 ;;
6502             esac
6503         done
6504     fi
6506 if test "$with_system_hsqldb" = "yes"; then
6507     perl_use_string="$perl_use_string ; use Archive::Zip"
6509 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6510     # OpenSSL needs that to build
6511     perl_use_string="$perl_use_string ; use FindBin"
6513 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6514     AC_MSG_RESULT([all modules found])
6515 else
6516     AC_MSG_RESULT([failed to find some modules])
6517     # Find out which modules are missing.
6518     for i in $perl_use_string; do
6519         if test "$i" != "use" -a "$i" != ";"; then
6520             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6521                 missing_perl_modules="$missing_perl_modules $i"
6522             fi
6523         fi
6524     done
6525     AC_MSG_ERROR([
6526     The missing Perl modules are: $missing_perl_modules
6527     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6530 dnl ===================================================================
6531 dnl Check for pkg-config
6532 dnl ===================================================================
6533 if test "$_os" != "WINNT"; then
6534     PKG_PROG_PKG_CONFIG
6536 AC_SUBST(PKG_CONFIG)
6537 AC_SUBST(PKG_CONFIG_PATH)
6538 AC_SUBST(PKG_CONFIG_LIBDIR)
6540 if test "$_os" != "WINNT"; then
6542     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6543     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6544     # explicitly. Or put /path/to/compiler in PATH yourself.
6546     toolprefix=gcc
6547     if test "$COM_IS_CLANG" = "TRUE"; then
6548         toolprefix=llvm
6549     fi
6550     AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6551     AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6552     AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6553     AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6554     AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6555     AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6557 AC_SUBST(AR)
6558 AC_SUBST(NM)
6559 AC_SUBST(OBJDUMP)
6560 AC_SUBST(RANLIB)
6561 AC_SUBST(READELF)
6562 AC_SUBST(STRIP)
6564 dnl ===================================================================
6565 dnl pkg-config checks on macOS
6566 dnl ===================================================================
6568 if test $_os = Darwin; then
6569     AC_MSG_CHECKING([for bogus pkg-config])
6570     if test -n "$PKG_CONFIG"; then
6571         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6572             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6573         else
6574             if test "$enable_bogus_pkg_config" = "yes"; then
6575                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6576             else
6577                 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.])
6578             fi
6579         fi
6580     else
6581         AC_MSG_RESULT([no, good])
6582     fi
6585 find_csc()
6587     # Return value: $csctest
6589     unset csctest
6591     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6592     if test -n "$regvalue"; then
6593         csctest=$regvalue
6594         return
6595     fi
6598 find_al()
6600     # Return value: $altest
6602     unset altest
6604     # We need this check to detect 4.6.1 or above.
6605     for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6606         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6607         PathFormat "$regvalue"
6608         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6609             altest=$regvalue
6610             return
6611         fi
6612     done
6614     reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6615     for x in $reglist; do
6616         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6617         PathFormat "$regvalue"
6618         if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6619             altest=$regvalue
6620             return
6621         fi
6622     done
6625 find_dotnetsdk46()
6627     unset frametest
6629     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
6630         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6631         if test -n "$regvalue"; then
6632             frametest=$regvalue
6633             return
6634         fi
6635     done
6638 find_winsdk_version()
6640     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6641     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6643     unset winsdktest winsdkbinsubdir winsdklibsubdir
6645     case "$1" in
6646     8.0|8.0A)
6647         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6648         if test -n "$regvalue"; then
6649             winsdktest=$regvalue
6650             winsdklibsubdir=win8
6651             return
6652         fi
6653         ;;
6654     8.1|8.1A)
6655         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6656         if test -n "$regvalue"; then
6657             winsdktest=$regvalue
6658             winsdklibsubdir=winv6.3
6659             return
6660         fi
6661         ;;
6662     10.0)
6663         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6664         if test -n "$regvalue"; then
6665             winsdktest=$regvalue
6666             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6667             if test -n "$regvalue"; then
6668                 winsdkbinsubdir="$regvalue".0
6669                 winsdklibsubdir=$winsdkbinsubdir
6670                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6671                 local tmppath_unix=$(cygpath -u "$tmppath")
6672                 # test exist the SDK path
6673                 if test -d "$tmppath_unix"; then
6674                    # when path is convertible to a short path then path is okay
6675                    cygpath -d "$tmppath" >/dev/null 2>&1
6676                    if test $? -ne 0; then
6677                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6678                    fi
6679                 else
6680                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6681                 fi
6682             fi
6683             return
6684         fi
6685         ;;
6686     esac
6689 find_winsdk()
6691     # Return value: From find_winsdk_version
6693     unset winsdktest
6695     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6696         find_winsdk_version $ver
6697         if test -n "$winsdktest"; then
6698             return
6699         fi
6700     done
6703 find_msms()
6705     # Return value: $msmdir
6706     local version="$1"
6708     AC_MSG_CHECKING([for MSVC $version merge modules directory])
6709     local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6710     local my_msm_dir
6712     echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6714     msmdir=
6715     case "$VCVER" in
6716     16.0 | 17.0 | 17.4)
6717         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6718             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6719             echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6720             if test -e "$my_msm_dir${my_msm_file}"; then
6721                 msmdir=$my_msm_dir
6722             fi
6723         done
6724         ;;
6725     esac
6727     if test -n "$msmdir"; then
6728         msmdir=`cygpath -m "$msmdir"`
6729         AC_MSG_RESULT([$msmdir])
6730     else
6731         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6732             AC_MSG_FAILURE([not found])
6733         else
6734             AC_MSG_WARN([not found (check config.log)])
6735             add_warning "MSM ${my_msm_file} not found"
6736         fi
6737     fi
6740 find_msvc_x64_dlls()
6742     # Return value: $msvcdllpath, $msvcdlls
6744     AC_MSG_CHECKING([for MSVC x64 DLL path])
6746     dnl Order crtver in increasing order. Then check the directories returned by
6747     dnl ls in an inner loop; assuming they are also ordered in increasing order,
6748     dnl the result will be the highest CRT version found in the highest directory.
6750     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6751     case "$VCVER" in
6752     16.0 | 17.0 | 17.4)
6753         for crtver in 141 142 143; do
6754             for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6755                 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6756                 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6757                     msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6758                 fi
6759             done
6760         done
6761         ;;
6762     esac
6763     AC_MSG_RESULT([$msvcdllpath])
6764     AC_MSG_CHECKING([for MSVC x64 DLLs])
6765     msvcdlls="msvcp140.dll vcruntime140.dll"
6766     for dll in $msvcdlls; do
6767         if ! test -f "$msvcdllpath/$dll"; then
6768             AC_MSG_FAILURE([missing $dll])
6769         fi
6770     done
6771     AC_MSG_RESULT([found all ($msvcdlls)])
6774 dnl =========================================
6775 dnl Check for the Windows  SDK.
6776 dnl =========================================
6777 if test "$_os" = "WINNT"; then
6778     AC_MSG_CHECKING([for Windows SDK])
6779     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6780         find_winsdk
6781         WINDOWS_SDK_HOME=$winsdktest
6783         # normalize if found
6784         if test -n "$WINDOWS_SDK_HOME"; then
6785             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6786             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6787         fi
6789         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6790     fi
6792     if test -n "$WINDOWS_SDK_HOME"; then
6793         # Remove a possible trailing backslash
6794         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6796         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6797              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6798              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6799             have_windows_sdk_headers=yes
6800         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6801              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6802              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6803             have_windows_sdk_headers=yes
6804         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6805              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6806              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6807             have_windows_sdk_headers=yes
6808         else
6809             have_windows_sdk_headers=no
6810         fi
6812         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6813             have_windows_sdk_libs=yes
6814         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6815             have_windows_sdk_libs=yes
6816         else
6817             have_windows_sdk_libs=no
6818         fi
6820         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6821             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6822 the  Windows SDK are installed.])
6823         fi
6824     fi
6826     if test -z "$WINDOWS_SDK_HOME"; then
6827         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6828     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6829         WINDOWS_SDK_VERSION=80
6830         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6831     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6832         WINDOWS_SDK_VERSION=81
6833         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6834     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6835         WINDOWS_SDK_VERSION=10
6836         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6837     else
6838         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6839     fi
6840     PathFormat "$WINDOWS_SDK_HOME"
6841     WINDOWS_SDK_HOME="$formatted_path"
6842     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6843     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6844         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6845         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6846             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6847         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6848             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6849         fi
6850     fi
6852     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6853     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6854     dnl but not in v8.0), so allow this to be overridden with a
6855     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6856     dnl and configuration error if no WiLangId.vbs is found would arguably be
6857     dnl better, but I do not know under which conditions exactly it is needed by
6858     dnl msiglobal.pm:
6859     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6860         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6861         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6862         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6863             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6864             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6865         fi
6866         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6867             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6868             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6869         fi
6870         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6871             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6872             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6873         fi
6874     fi
6875     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6876         if test -n "$with_package_format" -a "$with_package_format" != no; then
6877             for i in "$with_package_format"; do
6878                 if test "$i" = "msi"; then
6879                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6880                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6881                     fi
6882                 fi
6883             done
6884         fi
6885     fi
6887 AC_SUBST(WINDOWS_SDK_HOME)
6888 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6889 AC_SUBST(WINDOWS_SDK_VERSION)
6890 AC_SUBST(WINDOWS_SDK_WILANGID)
6892 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6893     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6894     dnl dir, it also determines that dir's path w/o an arch segment if any,
6895     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6896     AC_MSG_CHECKING([for midl.exe])
6898     find_winsdk
6899     PathFormat "$winsdktest"
6900     winsdktest_unix="$formatted_path_unix"
6902     if test -n "$winsdkbinsubdir" \
6903         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6904     then
6905         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6906         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6907     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6908         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6909         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6910     elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6911         MIDL_PATH=$winsdktest/Bin
6912         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6913     fi
6914     PathFormat "$MIDL_PATH"
6915     if test ! -f "$formatted_path_unix/midl.exe"; then
6916         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6917     else
6918         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6919     fi
6921     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6922     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6924     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6925          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6926          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6927          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6928     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6929          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6930          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6931          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6932     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6933          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6934          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6935          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6936     else
6937         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6938     fi
6940     dnl Check csc.exe
6941     AC_MSG_CHECKING([for csc.exe])
6942     find_csc
6943     PathFormat "$csctest"
6944     csctest_unix="$formatted_path_unix"
6945     if test -f "$csctest_unix/csc.exe"; then
6946         CSC_PATH="$csctest"
6947     fi
6948     if test ! -f "$csctest_unix/csc.exe"; then
6949         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6950     else
6951         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6952     fi
6954     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6956     dnl Check al.exe
6957     AC_MSG_CHECKING([for al.exe])
6958     if test -n "$winsdkbinsubdir" \
6959         -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6960     then
6961         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6962     elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6963         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6964     elif test -f "$winsdktest_unix/Bin/al.exe"; then
6965         AL_PATH="$winsdktest/Bin"
6966     fi
6968     if test -z "$AL_PATH"; then
6969         find_al
6970         PathFormat "$altest"
6971         altest_unix="$formatted_path_unix"
6972         if test -f "$altest_unix/bin/al.exe"; then
6973             AL_PATH="$altest/bin"
6974         elif test -f "$altest_unix/al.exe"; then
6975             AL_PATH="$altest"
6976         fi
6977     fi
6978     PathFormat "$AL_PATH"
6979     if test ! -f "$formatted_path_unix/al.exe"; then
6980         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6981     else
6982         AC_MSG_RESULT([$AL_PATH/al.exe])
6983     fi
6985     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6987     dnl Check mscoree.lib / .NET Framework dir
6988     AC_MSG_CHECKING(.NET Framework)
6989     find_dotnetsdk46
6990     PathFormat "$frametest"
6991     frametest="$formatted_path_unix"
6992     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6993         DOTNET_FRAMEWORK_HOME="$frametest"
6994     else
6995         if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6996             DOTNET_FRAMEWORK_HOME="$winsdktest"
6997         fi
6998     fi
6999     PathFormat "$DOTNET_FRAMEWORK_HOME"
7000     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
7001         AC_MSG_ERROR([mscoree.lib not found])
7002     fi
7003     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
7005     PathFormat "$MIDL_PATH"
7006     MIDL_PATH="$formatted_path"
7008     PathFormat "$AL_PATH"
7009     AL_PATH="$formatted_path"
7011     PathFormat "$DOTNET_FRAMEWORK_HOME"
7012     DOTNET_FRAMEWORK_HOME="$formatted_path"
7014     PathFormat "$CSC_PATH"
7015     CSC_PATH="$formatted_path"
7018 dnl ===================================================================
7019 dnl Testing for C++ compiler and version...
7020 dnl ===================================================================
7022 if test "$_os" != "WINNT"; then
7023     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
7024     save_CXXFLAGS=$CXXFLAGS
7025     AC_PROG_CXX
7026     CXXFLAGS=$save_CXXFLAGS
7027     if test -z "$CXX_BASE"; then
7028         CXX_BASE=`first_arg_basename "$CXX"`
7029     fi
7032 dnl check for GNU C++ compiler version
7033 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
7034     AC_MSG_CHECKING([the GNU C++ compiler version])
7036     _gpp_version=`$CXX -dumpversion`
7037     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
7039     if test "$_gpp_majmin" -lt "700"; then
7040         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
7041     else
7042         AC_MSG_RESULT([ok (g++ $_gpp_version)])
7043     fi
7045     dnl see https://code.google.com/p/android/issues/detail?id=41770
7046         glibcxx_threads=no
7047         AC_LANG_PUSH([C++])
7048         AC_REQUIRE_CPP
7049         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
7050         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7051             #include <bits/c++config.h>]],[[
7052             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7053             && !defined(_GLIBCXX__PTHREADS) \
7054             && !defined(_GLIBCXX_HAS_GTHREADS)
7055             choke me
7056             #endif
7057         ]])],[AC_MSG_RESULT([yes])
7058         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7059         AC_LANG_POP([C++])
7060         if test $glibcxx_threads = yes; then
7061             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7062         fi
7064 AC_SUBST(BOOST_CXXFLAGS)
7067 # prefx CXX with ccache if needed
7069 if test "$CCACHE" != ""; then
7070     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7071     AC_LANG_PUSH([C++])
7072     save_CXXFLAGS=$CXXFLAGS
7073     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7074     # msvc does not fail on unknown options, check stdout
7075     if test "$COM" = MSC; then
7076         CXXFLAGS="$CXXFLAGS -nologo"
7077     fi
7078     save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7079     ac_cxx_werror_flag=yes
7080     dnl an empty program will do, we're checking the compiler flags
7081     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7082                       [use_ccache=yes], [use_ccache=no])
7083     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7084         AC_MSG_RESULT([yes])
7085     else
7086         CXX="$CCACHE $CXX"
7087         CXX_BASE="ccache $CXX_BASE"
7088         AC_MSG_RESULT([no])
7089     fi
7090     CXXFLAGS=$save_CXXFLAGS
7091     ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7092     AC_LANG_POP([C++])
7095 dnl ===================================================================
7096 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7097 dnl ===================================================================
7099 if test "$_os" != "WINNT"; then
7100     AC_PROG_CXXCPP
7102     dnl Check whether there's a C pre-processor.
7103     AC_PROG_CPP
7107 dnl ===================================================================
7108 dnl Find integral type sizes and alignments
7109 dnl ===================================================================
7111 if test "$_os" != "WINNT"; then
7113     AC_CHECK_SIZEOF(long)
7114     AC_CHECK_SIZEOF(short)
7115     AC_CHECK_SIZEOF(int)
7116     AC_CHECK_SIZEOF(long long)
7117     AC_CHECK_SIZEOF(double)
7118     AC_CHECK_SIZEOF(void*)
7119     AC_CHECK_SIZEOF(size_t)
7121     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7122     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7123     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7124     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7125     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7126     SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7128     dnl Allow build without AC_CHECK_ALIGNOF, grrr
7129     m4_pattern_allow([AC_CHECK_ALIGNOF])
7130     m4_ifdef([AC_CHECK_ALIGNOF],
7131         [
7132             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7133             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7134             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7135             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7136         ],
7137         [
7138             case "$_os-$host_cpu" in
7139             Linux-i686)
7140                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7141                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7142                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7143                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7144                 ;;
7145             Linux-x86_64)
7146                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7147                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7148                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7149                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7150                 ;;
7151             *)
7152                 if test -z "$ac_cv_alignof_short" -o \
7153                         -z "$ac_cv_alignof_int" -o \
7154                         -z "$ac_cv_alignof_long" -o \
7155                         -z "$ac_cv_alignof_double"; then
7156                    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.])
7157                 fi
7158                 ;;
7159             esac
7160         ])
7162     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7163     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7164     if test $ac_cv_sizeof_long -eq 8; then
7165         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7166     elif test $ac_cv_sizeof_double -eq 8; then
7167         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7168     else
7169         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7170     fi
7172     dnl Check for large file support
7173     AC_SYS_LARGEFILE
7174     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7175         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7176     fi
7177     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7178         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7179     fi
7180 else
7181     # Hardcode for MSVC
7182     SAL_TYPES_SIZEOFSHORT=2
7183     SAL_TYPES_SIZEOFINT=4
7184     SAL_TYPES_SIZEOFLONG=4
7185     SAL_TYPES_SIZEOFLONGLONG=8
7186     if test $WIN_HOST_BITS -eq 32; then
7187         SAL_TYPES_SIZEOFPOINTER=4
7188         SIZEOF_SIZE_T=4
7189     else
7190         SAL_TYPES_SIZEOFPOINTER=8
7191         SIZEOF_SIZE_T=8
7192     fi
7193     SAL_TYPES_ALIGNMENT2=2
7194     SAL_TYPES_ALIGNMENT4=4
7195     SAL_TYPES_ALIGNMENT8=8
7196     LFS_CFLAGS=''
7198 AC_SUBST(LFS_CFLAGS)
7199 AC_SUBST(SIZEOF_SIZE_T)
7201 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7202 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7203 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7204 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7205 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7206 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7207 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7208 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7210 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7211 AC_MSG_CHECKING([whether jumbo sheets are supported])
7212 if test "$_os" != "WINNT"; then
7213     if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7214         AC_MSG_RESULT([yes])
7215         ENABLE_JUMBO_SHEETS=TRUE
7216         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7217     else
7218         AC_MSG_RESULT([no])
7219     fi
7220 else
7221     if test $WIN_HOST_BITS -gt 32; then
7222         # 64bit windows is special-cased for tools::Long because long is 32bit
7223         AC_MSG_RESULT([yes])
7224         ENABLE_JUMBO_SHEETS=TRUE
7225         AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7226     else
7227         AC_MSG_RESULT([no])
7228     fi
7230 AC_SUBST(ENABLE_JUMBO_SHEETS)
7232 dnl ===================================================================
7233 dnl Check whether to enable runtime optimizations
7234 dnl ===================================================================
7235 ENABLE_RUNTIME_OPTIMIZATIONS=
7236 AC_MSG_CHECKING([whether to enable runtime optimizations])
7237 if test -z "$enable_runtime_optimizations"; then
7238     for i in $CC; do
7239         case $i in
7240         -fsanitize=*)
7241             enable_runtime_optimizations=no
7242             break
7243             ;;
7244         esac
7245     done
7247 if test "$enable_runtime_optimizations" != no; then
7248     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7249     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7250     AC_MSG_RESULT([yes])
7251 else
7252     AC_MSG_RESULT([no])
7254 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7256 dnl ===================================================================
7257 dnl Check if valgrind headers are available
7258 dnl ===================================================================
7259 ENABLE_VALGRIND=
7260 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7261     prev_cppflags=$CPPFLAGS
7262     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7263     # or where does it come from?
7264     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7265     AC_CHECK_HEADER([valgrind/valgrind.h],
7266         [ENABLE_VALGRIND=TRUE])
7267     CPPFLAGS=$prev_cppflags
7269 AC_SUBST([ENABLE_VALGRIND])
7270 if test -z "$ENABLE_VALGRIND"; then
7271     if test "$with_valgrind" = yes; then
7272         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7273     fi
7274     VALGRIND_CFLAGS=
7276 AC_SUBST([VALGRIND_CFLAGS])
7279 dnl ===================================================================
7280 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7281 dnl ===================================================================
7283 # We need at least the sys/sdt.h include header.
7284 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7285 if test "$SDT_H_FOUND" = "TRUE"; then
7286     # Found sys/sdt.h header, now make sure the c++ compiler works.
7287     # Old g++ versions had problems with probes in constructors/destructors.
7288     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7289     AC_LANG_PUSH([C++])
7290     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7291     #include <sys/sdt.h>
7292     class ProbeClass
7293     {
7294     private:
7295       int& ref;
7296       const char *name;
7298     public:
7299       ProbeClass(int& v, const char *n) : ref(v), name(n)
7300       {
7301         DTRACE_PROBE2(_test_, cons, name, ref);
7302       }
7304       void method(int min)
7305       {
7306         DTRACE_PROBE3(_test_, meth, name, ref, min);
7307         ref -= min;
7308       }
7310       ~ProbeClass()
7311       {
7312         DTRACE_PROBE2(_test_, dest, name, ref);
7313       }
7314     };
7315     ]],[[
7316     int i = 64;
7317     DTRACE_PROBE1(_test_, call, i);
7318     ProbeClass inst = ProbeClass(i, "call");
7319     inst.method(24);
7320     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7321           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7322     AC_LANG_POP([C++])
7324 AC_CONFIG_HEADERS([config_host/config_probes.h])
7326 dnl ===================================================================
7327 dnl GCC features
7328 dnl ===================================================================
7329 HAVE_GCC_STACK_CLASH_PROTECTION=
7330 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7331     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7332     save_CFLAGS=$CFLAGS
7333     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7334     AC_LINK_IFELSE(
7335         [AC_LANG_PROGRAM(, [[return 0;]])],
7336         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7337         [AC_MSG_RESULT([no])])
7338     CFLAGS=$save_CFLAGS
7340     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7341     save_CFLAGS=$CFLAGS
7342     CFLAGS="$CFLAGS -Werror -mno-avx"
7343     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7344     CFLAGS=$save_CFLAGS
7345     if test "$HAVE_GCC_AVX" = "TRUE"; then
7346         AC_MSG_RESULT([yes])
7347     else
7348         AC_MSG_RESULT([no])
7349     fi
7351     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7352     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7353     int v = 0;
7354     if (__sync_add_and_fetch(&v, 1) != 1 ||
7355         __sync_sub_and_fetch(&v, 1) != 0)
7356         return 1;
7357     __sync_synchronize();
7358     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7359         v != 1)
7360         return 1;
7361     return 0;
7362 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7363     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7364         AC_MSG_RESULT([yes])
7365         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7366     else
7367         AC_MSG_RESULT([no])
7368     fi
7370     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7371     AC_LANG_PUSH([C++])
7372     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7373             #include <cstddef>
7374             #include <cxxabi.h>
7375             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7376         ])], [
7377             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7378             AC_MSG_RESULT([yes])
7379         ], [AC_MSG_RESULT([no])])
7380     AC_LANG_POP([C++])
7382     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7383     AC_LANG_PUSH([C++])
7384     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7385             #include <cstddef>
7386             #include <cxxabi.h>
7387             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7388         ])], [
7389             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7390             AC_MSG_RESULT([yes])
7391         ], [AC_MSG_RESULT([no])])
7392     AC_LANG_POP([C++])
7394     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7395     AC_LANG_PUSH([C++])
7396     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7397             #include <cxxabi.h>
7398             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7399         ])], [
7400             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7401             AC_MSG_RESULT([yes])
7402         ], [AC_MSG_RESULT([no])])
7403     AC_LANG_POP([C++])
7405     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7406     AC_LANG_PUSH([C++])
7407     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7408             #include <cstddef>
7409             #include <cxxabi.h>
7410             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7411         ])], [
7412             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7413             AC_MSG_RESULT([yes])
7414         ], [AC_MSG_RESULT([no])])
7415     AC_LANG_POP([C++])
7417     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7418     AC_LANG_PUSH([C++])
7419     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7420             #include <cstddef>
7421             #include <cxxabi.h>
7422             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7423         ])], [
7424             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7425             AC_MSG_RESULT([yes])
7426         ], [AC_MSG_RESULT([no])])
7427     AC_LANG_POP([C++])
7429     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7430     AC_LANG_PUSH([C++])
7431     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7432             #include <cxxabi.h>
7433             void * f() { return __cxxabiv1::__cxa_get_globals(); }
7434         ])], [
7435             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7436             AC_MSG_RESULT([yes])
7437         ], [AC_MSG_RESULT([no])])
7438     AC_LANG_POP([C++])
7440     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7441     AC_LANG_PUSH([C++])
7442     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7443             #include <cxxabi.h>
7444             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7445         ])], [
7446             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7447             AC_MSG_RESULT([yes])
7448         ], [AC_MSG_RESULT([no])])
7449     AC_LANG_POP([C++])
7451     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7452     AC_LANG_PUSH([C++])
7453     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7454             #include <cxxabi.h>
7455             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7456         ])], [
7457             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7458             AC_MSG_RESULT([yes])
7459         ], [AC_MSG_RESULT([no])])
7460     AC_LANG_POP([C++])
7462     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7463     AC_LANG_PUSH([C++])
7464     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7465             #include <cstddef>
7466             #include <cxxabi.h>
7467             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7468         ])], [
7469             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7470             AC_MSG_RESULT([yes])
7471         ], [AC_MSG_RESULT([no])])
7472     AC_LANG_POP([C++])
7474     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7475     AC_LANG_PUSH([C++])
7476     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7477             #include <cstddef>
7478             #include <cxxabi.h>
7479             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7480         ])], [
7481             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7482             AC_MSG_RESULT([yes])
7483         ], [AC_MSG_RESULT([no])])
7484     AC_LANG_POP([C++])
7487 AC_SUBST(HAVE_GCC_AVX)
7488 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7489 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7491 dnl ===================================================================
7492 dnl Identify the C++ library
7493 dnl ===================================================================
7495 AC_MSG_CHECKING([what the C++ library is])
7496 HAVE_LIBSTDCPP=
7497 HAVE_LIBCPP=
7498 AC_LANG_PUSH([C++])
7499 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7500 #include <utility>
7501 #ifndef __GLIBCXX__
7502 foo bar
7503 #endif
7504 ]])],
7505     [CPP_LIBRARY=GLIBCXX
7506      cpp_library_name="GNU libstdc++"
7507      HAVE_LIBSTDCPP=TRUE
7508     ],
7509     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7510 #include <utility>
7511 #ifndef _LIBCPP_VERSION
7512 foo bar
7513 #endif
7514 ]])],
7515     [CPP_LIBRARY=LIBCPP
7516      cpp_library_name="LLVM libc++"
7517      AC_DEFINE([HAVE_LIBCPP])
7518      HAVE_LIBCPP=TRUE
7519     ],
7520     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7521 #include <utility>
7522 #ifndef _MSC_VER
7523 foo bar
7524 #endif
7525 ]])],
7526     [CPP_LIBRARY=MSVCRT
7527      cpp_library_name="Microsoft"
7528     ],
7529     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7530 AC_MSG_RESULT([$cpp_library_name])
7531 AC_LANG_POP([C++])
7532 AC_SUBST([HAVE_LIBSTDCPP])
7533 AC_SUBST([HAVE_LIBCPP])
7535 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7536 then
7537     # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7538     # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7539     # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7540     # although there will be backwards compatibility).
7541     # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7542     # and there would be undefined references to debug functions.
7543     # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7544     # So check if debug mode can be used and disable or downgrade it to assertions
7545     # if needed.
7546     AC_MSG_CHECKING([if libc++ has a usable debug mode])
7547     AC_LANG_PUSH([C++])
7548     libcpp_debug_links=
7549     AC_LINK_IFELSE([AC_LANG_SOURCE([[
7550 #define _LIBCPP_DEBUG 0 // only assertions
7551 #include <vector>
7552 int main()
7554     std::vector<int> v;
7555     v.push_back( 1 );
7556     return v[ 3 ];
7558 ]])], [libcpp_debug_links=1])
7559     if test -n "$libcpp_debug_links"; then
7560         # we can use at least assertions, check if debug mode works
7561         AC_RUN_IFELSE([AC_LANG_SOURCE([[
7562 #define _LIBCPP_DEBUG 1 // debug mode
7563 #include <string>
7564 #include <vector>
7565 int foo(const std::vector<int>& v) { return *v.begin(); }
7566 int main()
7568     std::vector<int> v;
7569     v.push_back( 1 );
7570     std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7571     return (foo(v) + s.size()) != 0 ? 0 : 1;
7573 ]])],
7574         [AC_MSG_RESULT(yes)
7575          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7576         ],
7577         [AC_MSG_RESULT(no, using only assertions)
7578          LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7579         ]
7580         )
7581     else
7582         AC_MSG_RESULT(no)
7583     fi
7584     AC_LANG_POP([C++])
7586 AC_SUBST([LIBCPP_DEBUG])
7588 dnl ===================================================================
7589 dnl Check for gperf
7590 dnl ===================================================================
7591 AC_PATH_PROG(GPERF, gperf)
7592 if test -z "$GPERF"; then
7593     AC_MSG_ERROR([gperf not found but needed. Install it.])
7595 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7596     GPERF=`cygpath -m $GPERF`
7598 AC_MSG_CHECKING([whether gperf is new enough])
7599 my_gperf_ver1=$($GPERF --version | head -n 1)
7600 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7601 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7602 if test "$my_gperf_ver3" -ge 301; then
7603     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7604 else
7605     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7607 AC_SUBST(GPERF)
7609 dnl ===================================================================
7610 dnl Check for system libcmis
7611 dnl ===================================================================
7612 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2],enabled)
7614 dnl ===================================================================
7615 dnl C++11
7616 dnl ===================================================================
7618 if test -z "${CXXFLAGS_CXX11+x}"; then
7619     AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7620     if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7621         if test "$with_latest_c__" = yes; then
7622             CXXFLAGS_CXX11=-std:c++latest
7623         else
7624             CXXFLAGS_CXX11=-std:c++17
7625         fi
7626         CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7627     elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7628         my_flags='-std=c++17 -std=c++1z'
7629         if test "$with_latest_c__" = yes; then
7630             my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7631         fi
7632         for flag in $my_flags; do
7633             if test "$COM" = MSC; then
7634                 flag="-Xclang $flag"
7635             fi
7636             save_CXXFLAGS=$CXXFLAGS
7637             CXXFLAGS="$CXXFLAGS $flag -Werror"
7638             if test "$SYSTEM_LIBCMIS" = TRUE; then
7639                 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7640             fi
7641             AC_LANG_PUSH([C++])
7642             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7643                 #include <algorithm>
7644                 #include <functional>
7645                 #include <vector>
7647                 #if defined SYSTEM_LIBCMIS
7648                 // See ucb/source/ucp/cmis/auth_provider.hxx:
7649                 #if !defined __clang__
7650                 #pragma GCC diagnostic push
7651                 #pragma GCC diagnostic ignored "-Wdeprecated"
7652                 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7653                 #endif
7654                 #include <libcmis/libcmis.hxx>
7655                 #if !defined __clang__
7656                 #pragma GCC diagnostic pop
7657                 #endif
7658                 #endif
7660                 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7661                     std::sort(v.begin(), v.end(), fn);
7662                 }
7663                 ]])],[CXXFLAGS_CXX11=$flag])
7664             AC_LANG_POP([C++])
7665             CXXFLAGS=$save_CXXFLAGS
7666             if test -n "$CXXFLAGS_CXX11"; then
7667                 break
7668             fi
7669         done
7670     fi
7671     if test -n "$CXXFLAGS_CXX11"; then
7672         AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7673     else
7674         AC_MSG_ERROR(no)
7675     fi
7677 AC_SUBST(CXXFLAGS_CXX11)
7679 if test "$GCC" = "yes"; then
7680     save_CXXFLAGS=$CXXFLAGS
7681     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7682     CHECK_L_ATOMIC
7683     CXXFLAGS=$save_CXXFLAGS
7684     AC_SUBST(ATOMIC_LIB)
7687 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7688 save_CXXFLAGS=$CXXFLAGS
7689 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7690 AC_LANG_PUSH([C++])
7692 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7693 #include <stddef.h>
7695 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7697 namespace
7699         struct b
7700         {
7701                 int i;
7702                 int j;
7703         };
7705 ]], [[
7706 struct a
7708         int i;
7709         int j;
7711 a thinga[]={{0,0}, {1,1}};
7712 b thingb[]={{0,0}, {1,1}};
7713 size_t i = sizeof(sal_n_array_size(thinga));
7714 size_t j = sizeof(sal_n_array_size(thingb));
7715 return !(i != 0 && j != 0);
7717     ], [ AC_MSG_RESULT(yes) ],
7718     [ AC_MSG_ERROR(no)])
7719 AC_LANG_POP([C++])
7720 CXXFLAGS=$save_CXXFLAGS
7722 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7723 if test "$GCC" = yes; then
7724     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7725     AC_LANG_PUSH([C++])
7726     save_CXXFLAGS=$CXXFLAGS
7727     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7728     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7729     CXXFLAGS=$save_CXXFLAGS
7730     AC_LANG_POP([C++])
7731     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7732         AC_MSG_RESULT([yes])
7733     else
7734         AC_MSG_RESULT([no])
7735     fi
7737 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7739 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7740 AC_LANG_PUSH([C++])
7741 save_CXXFLAGS=$CXXFLAGS
7742 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7743 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7744         #include <algorithm>
7745         #include <initializer_list>
7746         #include <vector>
7747         template<typename T> class S {
7748         private:
7749             std::vector<T> v_;
7750         public:
7751             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7752         };
7753         constinit S<int> s{3, 2, 1};
7754     ])], [
7755         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7756         AC_MSG_RESULT([yes])
7757     ], [AC_MSG_RESULT([no])])
7758 CXXFLAGS=$save_CXXFLAGS
7759 AC_LANG_POP([C++])
7761 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7762 AC_LANG_PUSH([C++])
7763 save_CXXFLAGS=$CXXFLAGS
7764 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7765 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7766         #include <span>
7767         #include <type_traits>
7768         // Don't check size_type directly, as it was called index_type before P1872R0:
7769         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7770     ])], [
7771         AC_DEFINE([HAVE_CPP_SPAN],[1])
7772         AC_MSG_RESULT([yes])
7773     ], [AC_MSG_RESULT([no])])
7774 CXXFLAGS=$save_CXXFLAGS
7775 AC_LANG_POP([C++])
7777 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7778 AC_LANG_PUSH([C++])
7779 save_CXXFLAGS=$CXXFLAGS
7780 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7781 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7782         struct S1 { S1(S1 &&); };
7783         struct S2: S1 {};
7784         S1 f(S2 s) { return s; }
7785     ])], [
7786         AC_DEFINE([HAVE_P1155R3],[1])
7787         AC_MSG_RESULT([yes])
7788     ], [AC_MSG_RESULT([no])])
7789 CXXFLAGS=$save_CXXFLAGS
7790 AC_LANG_POP([C++])
7792 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7793 HAVE_CXX20_ATOMIC_REF=
7794 AC_LANG_PUSH([C++])
7795 save_CXXFLAGS=$CXXFLAGS
7796 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7797 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7798         #include <atomic>
7799         int x;
7800         std::atomic_ref<int> y(x);
7801     ])], [
7802         HAVE_CXX20_ATOMIC_REF=TRUE
7803         AC_MSG_RESULT([yes])
7804     ], [AC_MSG_RESULT([no])])
7805 CXXFLAGS=$save_CXXFLAGS
7806 AC_LANG_POP([C++])
7807 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7809 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7810 dnl which is included in -Wextra anyway):
7811 HAVE_WDEPRECATED_COPY_DTOR=
7812 if test "$GCC" = yes; then
7813     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7814     AC_LANG_PUSH([C++])
7815     save_CXXFLAGS=$CXXFLAGS
7816     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7817     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7818             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7819             AC_MSG_RESULT([yes])
7820         ], [AC_MSG_RESULT([no])])
7821     CXXFLAGS=$save_CXXFLAGS
7822     AC_LANG_POP([C++])
7824 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7826 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7827 dnl uninitialized warning for code like
7829 dnl   OString f();
7830 dnl   boost::optional<OString> * g(bool b) {
7831 dnl       boost::optional<OString> o;
7832 dnl       if (b) o = f();
7833 dnl       return new boost::optional<OString>(o);
7834 dnl   }
7836 dnl (as is e.g. present, in a slightly more elaborate form, in
7837 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7838 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7839 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7840 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7841     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7842     AC_LANG_PUSH([C++])
7843     save_CXXFLAGS=$CXXFLAGS
7844     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7845     if test "$ENABLE_OPTIMIZED" = TRUE; then
7846         CXXFLAGS="$CXXFLAGS -O2"
7847     else
7848         CXXFLAGS="$CXXFLAGS -O0"
7849     fi
7850     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7851             #include <new>
7852             void f1(int);
7853             struct S1 {
7854                 ~S1() { f1(n); }
7855                 int n = 0;
7856             };
7857             struct S2 {
7858                 S2() {}
7859                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7860                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7861                 void set(S1 s) {
7862                     new (stg) S1(s);
7863                     init = true;
7864                 }
7865                 bool init = false;
7866                 char stg[sizeof (S1)];
7867             } ;
7868             S1 f2();
7869             S2 * f3(bool b) {
7870                 S2 o;
7871                 if (b) o.set(f2());
7872                 return new S2(o);
7873             }
7874         ]])], [AC_MSG_RESULT([no])], [
7875             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7876             AC_MSG_RESULT([yes])
7877         ])
7878     CXXFLAGS=$save_CXXFLAGS
7879     AC_LANG_POP([C++])
7881 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7883 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7884 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7885 dnl hits us e.g. with GCC 10 and --enable-optimized at
7887 dnl   In file included from include/rtl/string.hxx:49,
7888 dnl                    from include/rtl/ustring.hxx:43,
7889 dnl                    from include/osl/file.hxx:35,
7890 dnl                    from include/codemaker/global.hxx:28,
7891 dnl                    from include/codemaker/options.hxx:23,
7892 dnl                    from codemaker/source/commoncpp/commoncpp.cxx:24:
7893 dnl   In function â€˜char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7894 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,
7895 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,
7896 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,
7897 dnl       inlined from â€˜rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7898 dnl   include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7899 dnl      78 |         memcpy( buffer, data, length );
7900 dnl         |         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7901 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7902 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7903     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7904     AC_LANG_PUSH([C++])
7905     save_CXXFLAGS=$CXXFLAGS
7906     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7907     if test "$ENABLE_OPTIMIZED" = TRUE; then
7908         CXXFLAGS="$CXXFLAGS -O2"
7909     else
7910         CXXFLAGS="$CXXFLAGS -O0"
7911     fi
7912     dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7913     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7914             void fill(char const * begin, char const * end, char c);
7915             struct q {
7916                 char ids[4];
7917                 char username[6];
7918             };
7919             void test(q & c) {
7920                 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7921                 __builtin_strncpy(c.username, "root", sizeof(c.username));
7922             }
7923         ]])], [AC_MSG_RESULT([no])], [
7924             HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7925             AC_MSG_RESULT([yes])
7926         ])
7927     CXXFLAGS=$save_CXXFLAGS
7928     AC_LANG_POP([C++])
7930 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7932 HAVE_DLLEXPORTINLINES=
7933 if test "$_os" = "WINNT"; then
7934     AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7935     AC_LANG_PUSH([C++])
7936     save_CXXFLAGS=$CXXFLAGS
7937     CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7938     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7939             HAVE_DLLEXPORTINLINES=TRUE
7940             AC_MSG_RESULT([yes])
7941         ], [AC_MSG_RESULT([no])])
7942     CXXFLAGS=$save_CXXFLAGS
7943     AC_LANG_POP([C++])
7945 AC_SUBST([HAVE_DLLEXPORTINLINES])
7947 dnl ===================================================================
7948 dnl CPU Intrinsics support - SSE, AVX
7949 dnl ===================================================================
7951 CXXFLAGS_INTRINSICS_SSE2=
7952 CXXFLAGS_INTRINSICS_SSSE3=
7953 CXXFLAGS_INTRINSICS_SSE41=
7954 CXXFLAGS_INTRINSICS_SSE42=
7955 CXXFLAGS_INTRINSICS_AVX=
7956 CXXFLAGS_INTRINSICS_AVX2=
7957 CXXFLAGS_INTRINSICS_AVX512=
7958 CXXFLAGS_INTRINSICS_AVX512F=
7959 CXXFLAGS_INTRINSICS_F16C=
7960 CXXFLAGS_INTRINSICS_FMA=
7962 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7963     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7964     flag_sse2=-msse2
7965     flag_ssse3=-mssse3
7966     flag_sse41=-msse4.1
7967     flag_sse42=-msse4.2
7968     flag_avx=-mavx
7969     flag_avx2=-mavx2
7970     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7971     flag_avx512f=-mavx512f
7972     flag_f16c=-mf16c
7973     flag_fma=-mfma
7974 else
7975     # With MSVC using -arch is in fact not necessary for being able
7976     # to use CPU intrinsics, code using AVX512F intrinsics will compile
7977     # even if compiled with -arch:AVX, the -arch option really only affects
7978     # instructions generated for C/C++ code.
7979     # So use the matching same (or lower) -arch options, but only in order
7980     # to generate the best matching instructions for the C++ code surrounding
7981     # the intrinsics.
7982     # SSE2 is the default for x86/x64, so no need to specify the option.
7983     flag_sse2=
7984     # No specific options for these, use the next lower.
7985     flag_ssse3="$flag_sse2"
7986     flag_sse41="$flag_sse2"
7987     flag_sse42="$flag_sse2"
7988     flag_avx=-arch:AVX
7989     flag_avx2=-arch:AVX2
7990     flag_avx512=-arch:AVX512
7991     # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7992     flag_avx512f=-arch:AVX2
7993     # No MSVC options for these.
7994     flag_f16c="$flag_sse2"
7995     flag_fma="$flag_sse2"
7998 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7999 AC_LANG_PUSH([C++])
8000 save_CXXFLAGS=$CXXFLAGS
8001 CXXFLAGS="$CXXFLAGS $flag_sse2"
8002 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8003     #include <emmintrin.h>
8004     int main () {
8005         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8006         c = _mm_xor_si128 (a, b);
8007         return 0;
8008     }
8009     ])],
8010     [can_compile_sse2=yes],
8011     [can_compile_sse2=no])
8012 AC_LANG_POP([C++])
8013 CXXFLAGS=$save_CXXFLAGS
8014 AC_MSG_RESULT([${can_compile_sse2}])
8015 if test "${can_compile_sse2}" = "yes" ; then
8016     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
8019 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
8020 AC_LANG_PUSH([C++])
8021 save_CXXFLAGS=$CXXFLAGS
8022 CXXFLAGS="$CXXFLAGS $flag_ssse3"
8023 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8024     #include <tmmintrin.h>
8025     int main () {
8026         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8027         c = _mm_maddubs_epi16 (a, b);
8028         return 0;
8029     }
8030     ])],
8031     [can_compile_ssse3=yes],
8032     [can_compile_ssse3=no])
8033 AC_LANG_POP([C++])
8034 CXXFLAGS=$save_CXXFLAGS
8035 AC_MSG_RESULT([${can_compile_ssse3}])
8036 if test "${can_compile_ssse3}" = "yes" ; then
8037     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
8040 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
8041 AC_LANG_PUSH([C++])
8042 save_CXXFLAGS=$CXXFLAGS
8043 CXXFLAGS="$CXXFLAGS $flag_sse41"
8044 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8045     #include <smmintrin.h>
8046     int main () {
8047         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8048         c = _mm_cmpeq_epi64 (a, b);
8049         return 0;
8050     }
8051     ])],
8052     [can_compile_sse41=yes],
8053     [can_compile_sse41=no])
8054 AC_LANG_POP([C++])
8055 CXXFLAGS=$save_CXXFLAGS
8056 AC_MSG_RESULT([${can_compile_sse41}])
8057 if test "${can_compile_sse41}" = "yes" ; then
8058     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8061 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8062 AC_LANG_PUSH([C++])
8063 save_CXXFLAGS=$CXXFLAGS
8064 CXXFLAGS="$CXXFLAGS $flag_sse42"
8065 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8066     #include <nmmintrin.h>
8067     int main () {
8068         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8069         c = _mm_cmpgt_epi64 (a, b);
8070         return 0;
8071     }
8072     ])],
8073     [can_compile_sse42=yes],
8074     [can_compile_sse42=no])
8075 AC_LANG_POP([C++])
8076 CXXFLAGS=$save_CXXFLAGS
8077 AC_MSG_RESULT([${can_compile_sse42}])
8078 if test "${can_compile_sse42}" = "yes" ; then
8079     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8082 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8083 AC_LANG_PUSH([C++])
8084 save_CXXFLAGS=$CXXFLAGS
8085 CXXFLAGS="$CXXFLAGS $flag_avx"
8086 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8087     #include <immintrin.h>
8088     int main () {
8089         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8090         c = _mm256_xor_ps(a, b);
8091         return 0;
8092     }
8093     ])],
8094     [can_compile_avx=yes],
8095     [can_compile_avx=no])
8096 AC_LANG_POP([C++])
8097 CXXFLAGS=$save_CXXFLAGS
8098 AC_MSG_RESULT([${can_compile_avx}])
8099 if test "${can_compile_avx}" = "yes" ; then
8100     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8103 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8104 AC_LANG_PUSH([C++])
8105 save_CXXFLAGS=$CXXFLAGS
8106 CXXFLAGS="$CXXFLAGS $flag_avx2"
8107 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8108     #include <immintrin.h>
8109     int main () {
8110         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8111         c = _mm256_maddubs_epi16(a, b);
8112         return 0;
8113     }
8114     ])],
8115     [can_compile_avx2=yes],
8116     [can_compile_avx2=no])
8117 AC_LANG_POP([C++])
8118 CXXFLAGS=$save_CXXFLAGS
8119 AC_MSG_RESULT([${can_compile_avx2}])
8120 if test "${can_compile_avx2}" = "yes" ; then
8121     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8124 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8125 AC_LANG_PUSH([C++])
8126 save_CXXFLAGS=$CXXFLAGS
8127 CXXFLAGS="$CXXFLAGS $flag_avx512"
8128 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8129     #include <immintrin.h>
8130     int main () {
8131         __m512i a = _mm512_loadu_si512(0);
8132         __m512d v1 = _mm512_load_pd(0);
8133         // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8134         __m512d v2 = _mm512_abs_pd(v1);
8135         return 0;
8136     }
8137     ])],
8138     [can_compile_avx512=yes],
8139     [can_compile_avx512=no])
8140 AC_LANG_POP([C++])
8141 CXXFLAGS=$save_CXXFLAGS
8142 AC_MSG_RESULT([${can_compile_avx512}])
8143 if test "${can_compile_avx512}" = "yes" ; then
8144     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8145     CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8148 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8149 AC_LANG_PUSH([C++])
8150 save_CXXFLAGS=$CXXFLAGS
8151 CXXFLAGS="$CXXFLAGS $flag_f16c"
8152 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8153     #include <immintrin.h>
8154     int main () {
8155         __m128i a = _mm_set1_epi32 (0);
8156         __m128 c;
8157         c = _mm_cvtph_ps(a);
8158         return 0;
8159     }
8160     ])],
8161     [can_compile_f16c=yes],
8162     [can_compile_f16c=no])
8163 AC_LANG_POP([C++])
8164 CXXFLAGS=$save_CXXFLAGS
8165 AC_MSG_RESULT([${can_compile_f16c}])
8166 if test "${can_compile_f16c}" = "yes" ; then
8167     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8170 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8171 AC_LANG_PUSH([C++])
8172 save_CXXFLAGS=$CXXFLAGS
8173 CXXFLAGS="$CXXFLAGS $flag_fma"
8174 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8175     #include <immintrin.h>
8176     int main () {
8177         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8178         d = _mm256_fmadd_ps(a, b, c);
8179         return 0;
8180     }
8181     ])],
8182     [can_compile_fma=yes],
8183     [can_compile_fma=no])
8184 AC_LANG_POP([C++])
8185 CXXFLAGS=$save_CXXFLAGS
8186 AC_MSG_RESULT([${can_compile_fma}])
8187 if test "${can_compile_fma}" = "yes" ; then
8188     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8191 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8192 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8193 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8194 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8195 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8196 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8197 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8198 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8199 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8200 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8202 dnl ===================================================================
8203 dnl system stl sanity tests
8204 dnl ===================================================================
8205 if test "$_os" != "WINNT"; then
8207     AC_LANG_PUSH([C++])
8209     save_CPPFLAGS="$CPPFLAGS"
8210     if test -n "$MACOSX_SDK_PATH"; then
8211         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8212     fi
8214     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8215     # only.
8216     if test "$CPP_LIBRARY" = GLIBCXX; then
8217         dnl gcc#19664, gcc#22482, rhbz#162935
8218         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8219         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8220         AC_MSG_RESULT([$stlvisok])
8221         if test "$stlvisok" = "no"; then
8222             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8223         fi
8224     fi
8226     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8227     # when we don't make any dynamic libraries?
8228     if test "$DISABLE_DYNLOADING" = ""; then
8229         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8230         cat > conftestlib1.cc <<_ACEOF
8231 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8232 struct S2: S1<int> { virtual ~S2(); };
8233 S2::~S2() {}
8234 _ACEOF
8235         cat > conftestlib2.cc <<_ACEOF
8236 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8237 struct S2: S1<int> { virtual ~S2(); };
8238 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8239 _ACEOF
8240         gccvisinlineshiddenok=yes
8241         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8242             gccvisinlineshiddenok=no
8243         else
8244             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8245             dnl known to not work with -z defs (unsetting which makes the test
8246             dnl moot, though):
8247             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8248             if test "$COM_IS_CLANG" = TRUE; then
8249                 for i in $CXX $CXXFLAGS; do
8250                     case $i in
8251                     -fsanitize=*)
8252                         my_linkflagsnoundefs=
8253                         break
8254                         ;;
8255                     esac
8256                 done
8257             fi
8258             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8259                 gccvisinlineshiddenok=no
8260             fi
8261         fi
8263         rm -fr libconftest*
8264         AC_MSG_RESULT([$gccvisinlineshiddenok])
8265         if test "$gccvisinlineshiddenok" = "no"; then
8266             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8267         fi
8268     fi
8270    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8271     cat >visibility.cxx <<_ACEOF
8272 #pragma GCC visibility push(hidden)
8273 struct __attribute__ ((visibility ("default"))) TestStruct {
8274   static void Init();
8276 __attribute__ ((visibility ("default"))) void TestFunc() {
8277   TestStruct::Init();
8279 _ACEOF
8280     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8281         gccvisbroken=yes
8282     else
8283         case "$host_cpu" in
8284         i?86|x86_64)
8285             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8286                 gccvisbroken=no
8287             else
8288                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8289                     gccvisbroken=no
8290                 else
8291                     gccvisbroken=yes
8292                 fi
8293             fi
8294             ;;
8295         *)
8296             gccvisbroken=no
8297             ;;
8298         esac
8299     fi
8300     rm -f visibility.s visibility.cxx
8302     AC_MSG_RESULT([$gccvisbroken])
8303     if test "$gccvisbroken" = "yes"; then
8304         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8305     fi
8307     CPPFLAGS="$save_CPPFLAGS"
8309     AC_MSG_CHECKING([if CET endbranch is recognized])
8310 cat > endbr.s <<_ACEOF
8311 endbr32
8312 _ACEOF
8313     HAVE_ASM_END_BRANCH_INS_SUPPORT=
8314     if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8315         AC_MSG_RESULT([yes])
8316         HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8317     else
8318         AC_MSG_RESULT([no])
8319     fi
8320     rm -f endbr.s endbr.o
8321     AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8323     AC_LANG_POP([C++])
8326 dnl ===================================================================
8327 dnl  Clang++ tests
8328 dnl ===================================================================
8330 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8331 if test "$GCC" = "yes"; then
8332     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8333     AC_LANG_PUSH([C++])
8334     save_CXXFLAGS=$CXXFLAGS
8335     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8336     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8337     CXXFLAGS=$save_CXXFLAGS
8338     AC_LANG_POP([C++])
8339     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8340         AC_MSG_RESULT([yes])
8341     else
8342         AC_MSG_RESULT([no])
8343     fi
8345 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8347 dnl ===================================================================
8348 dnl Compiler plugins
8349 dnl ===================================================================
8351 COMPILER_PLUGINS=
8352 # currently only Clang
8354 if test "$COM_IS_CLANG" != "TRUE"; then
8355     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8356         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8357         enable_compiler_plugins=no
8358     fi
8361 COMPILER_PLUGINS_COM_IS_CLANG=
8362 if test "$COM_IS_CLANG" = "TRUE"; then
8363     if test -n "$enable_compiler_plugins"; then
8364         compiler_plugins="$enable_compiler_plugins"
8365     elif test -n "$ENABLE_DBGUTIL"; then
8366         compiler_plugins=test
8367     else
8368         compiler_plugins=no
8369     fi
8370     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8371         if test "$CLANGVER" -lt 120001; then
8372             if test "$compiler_plugins" = yes; then
8373                 AC_MSG_ERROR(
8374                     [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8375             else
8376                 compiler_plugins=no
8377             fi
8378         fi
8379     fi
8380     if test "$compiler_plugins" != "no"; then
8381         dnl The prefix where Clang resides, override to where Clang resides if
8382         dnl using a source build:
8383         if test -z "$CLANGDIR"; then
8384             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8385         fi
8386         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8387         if test -z "$COMPILER_PLUGINS_CXX"; then
8388             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8389         fi
8390         clangbindir=$CLANGDIR/bin
8391         if test "$build_os" = "cygwin"; then
8392             clangbindir=$(cygpath -u "$clangbindir")
8393         fi
8394         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8395         if test -n "$LLVM_CONFIG"; then
8396             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8397             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8398             if test -z "$CLANGLIBDIR"; then
8399                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8400             fi
8401             # Try if clang is built from source (in which case its includes are not together with llvm includes).
8402             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8403             if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8404                 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8405                 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8406                     COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8407                 fi
8408             fi
8409             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8410             clangobjdir=$($LLVM_CONFIG --obj-root)
8411             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8412                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8413             fi
8414         fi
8415         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8416         AC_LANG_PUSH([C++])
8417         save_CXX=$CXX
8418         save_CXXCPP=$CXXCPP
8419         save_CPPFLAGS=$CPPFLAGS
8420         save_CXXFLAGS=$CXXFLAGS
8421         save_LDFLAGS=$LDFLAGS
8422         save_LIBS=$LIBS
8423         CXX=$COMPILER_PLUGINS_CXX
8424         CXXCPP="$COMPILER_PLUGINS_CXX -E"
8425         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8426         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8427         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8428             [COMPILER_PLUGINS=TRUE],
8429             [
8430             if test "$compiler_plugins" = "yes"; then
8431                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8432             else
8433                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8434                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8435             fi
8436             ])
8437         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8438         dnl comment in compilerplugins/Makefile-clang.mk:
8439         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8440             LDFLAGS=""
8441             AC_MSG_CHECKING([for clang libraries to use])
8442             if test -z "$CLANGTOOLLIBS"; then
8443                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8444                 AC_LINK_IFELSE([
8445                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8446                         [[ clang::FullSourceLoc().dump(); ]])
8447                 ],[CLANGTOOLLIBS="$LIBS"],[])
8448             fi
8449             dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8450             dnl list of individual -lclang* (but note that that list can become outdated over time,
8451             dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8452             dnl needs to include -lclangSupport now"):
8453             if test -z "$CLANGTOOLLIBS"; then
8454                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8455  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8456                 AC_LINK_IFELSE([
8457                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8458                         [[ clang::FullSourceLoc().dump(); ]])
8459                 ],[CLANGTOOLLIBS="$LIBS"],[])
8460             fi
8461             AC_MSG_RESULT([$CLANGTOOLLIBS])
8462             if test -z "$CLANGTOOLLIBS"; then
8463                 if test "$compiler_plugins" = "yes"; then
8464                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8465                 else
8466                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8467                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8468                 fi
8469                 COMPILER_PLUGINS=
8470             fi
8471             if test -n "$COMPILER_PLUGINS"; then
8472                 if test -z "$CLANGSYSINCLUDE"; then
8473                     if test -n "$LLVM_CONFIG"; then
8474                         # Path to the clang system headers (no idea if there's a better way to get it).
8475                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8476                     fi
8477                 fi
8478             fi
8479         fi
8480         CXX=$save_CXX
8481         CXXCPP=$save_CXXCPP
8482         CPPFLAGS=$save_CPPFLAGS
8483         CXXFLAGS=$save_CXXFLAGS
8484         LDFLAGS=$save_LDFLAGS
8485         LIBS="$save_LIBS"
8486         AC_LANG_POP([C++])
8488         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8489         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8490             #ifndef __clang__
8491             you lose
8492             #endif
8493             int foo=42;
8494             ]])],
8495             [AC_MSG_RESULT([yes])
8496              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8497             [AC_MSG_RESULT([no])])
8498         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8499     fi
8500 else
8501     if test "$enable_compiler_plugins" = "yes"; then
8502         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8503     fi
8505 COMPILER_PLUGINS_ANALYZER_PCH=
8506 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8507     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8509 AC_SUBST(COMPILER_PLUGINS)
8510 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8511 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8512 AC_SUBST(COMPILER_PLUGINS_CXX)
8513 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8514 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8515 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8516 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8517 AC_SUBST(CLANGDIR)
8518 AC_SUBST(CLANGLIBDIR)
8519 AC_SUBST(CLANGTOOLLIBS)
8520 AC_SUBST(CLANGSYSINCLUDE)
8522 # Plugin to help linker.
8523 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8524 # This makes --enable-lto build with clang work.
8525 AC_SUBST(LD_PLUGIN)
8527 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8528 AC_SUBST(HAVE_POSIX_FALLOCATE)
8530 JITC_PROCESSOR_TYPE=""
8531 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8532     # IBMs JDK needs this...
8533     JITC_PROCESSOR_TYPE=6
8534     export JITC_PROCESSOR_TYPE
8536 AC_SUBST([JITC_PROCESSOR_TYPE])
8538 # Misc Windows Stuff
8539 AC_ARG_WITH(ucrt-dir,
8540     AS_HELP_STRING([--with-ucrt-dir],
8541         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8542         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8543         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8544             Windows6.1-KB2999226-x64.msu
8545             Windows6.1-KB2999226-x86.msu
8546             Windows8.1-KB2999226-x64.msu
8547             Windows8.1-KB2999226-x86.msu
8548             Windows8-RT-KB2999226-x64.msu
8549             Windows8-RT-KB2999226-x86.msu
8550         A zip archive including those files is available from Microsoft site:
8551         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8554 UCRT_REDISTDIR="$with_ucrt_dir"
8555 if test $_os = "WINNT"; then
8556     find_msvc_x64_dlls
8557     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8558     MSVC_DLLS="$msvcdlls"
8559     if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8560         with_redist=143
8561     elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8562         with_redist=142
8563     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8564         with_redist=141
8565     fi
8566     for i in $PKGFORMAT; do
8567         if test "$i" = msi; then
8568             find_msms "$with_redist"
8569             if test -n "$msmdir"; then
8570                 MSM_PATH=`win_short_path_for_make "$msmdir"`
8571                 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8572             fi
8573             break
8574         fi
8575     done
8577     if test "$UCRT_REDISTDIR" = "no"; then
8578         dnl explicitly disabled
8579         UCRT_REDISTDIR=""
8580     else
8581         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8582                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8583                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8584                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8585                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8586                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8587             UCRT_REDISTDIR=""
8588             if test -n "$PKGFORMAT"; then
8589                for i in $PKGFORMAT; do
8590                    case "$i" in
8591                    msi)
8592                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8593                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8594                        ;;
8595                    esac
8596                done
8597             fi
8598         fi
8599     fi
8602 AC_SUBST(UCRT_REDISTDIR)
8603 AC_SUBST(MSVC_DLL_PATH)
8604 AC_SUBST(MSVC_DLLS)
8605 AC_SUBST(MSM_PATH)
8608 dnl ===================================================================
8609 dnl Checks for Java
8610 dnl ===================================================================
8611 if test "$ENABLE_JAVA" != ""; then
8613     # Windows-specific tests
8614     if test "$build_os" = "cygwin"; then
8615         if test -z "$with_jdk_home"; then
8616             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8617             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8618             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8619             if test -n "$regvalue"; then
8620                 ver=$regvalue
8621                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8622                 with_jdk_home=$regvalue
8623             fi
8624             howfound="found automatically"
8625         else
8626             with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8627             howfound="you passed"
8628         fi
8630         if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8631             AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option (or fix the path) pointing to a $WIN_HOST_BITS-bit JDK >= 9])
8632         fi
8633     fi
8635     # 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.
8636     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8637     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8638         with_jdk_home=`/usr/libexec/java_home`
8639     fi
8641     JAVA_HOME=; export JAVA_HOME
8642     if test -z "$with_jdk_home"; then
8643         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8644     else
8645         _java_path="$with_jdk_home/bin/$with_java"
8646         dnl Check if there is a Java interpreter at all.
8647         if test -x "$_java_path"; then
8648             JAVAINTERPRETER=$_java_path
8649         else
8650             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8651         fi
8652     fi
8654     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8655     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8656     dnl loaded by java to run JunitTests:
8657     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8658         shortjdkhome=`cygpath -d "$with_jdk_home"`
8659         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
8660             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8661             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8662         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
8663             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8664             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8665         fi
8667         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8668             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8669         fi
8670         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8671     elif test "$cross_compiling" != "yes"; then
8672         case $CPUNAME in
8673             AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64)
8674                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8675                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8676                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8677                 fi
8678                 ;;
8679             *) # assumption: everything else 32-bit
8680                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8681                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8682                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8683                 fi
8684                 ;;
8685         esac
8686     fi
8689 dnl ===================================================================
8690 dnl Checks for JDK.
8691 dnl ===================================================================
8693 # Whether all the complexity here actually is needed any more or not, no idea.
8695 JDK_SECURITYMANAGER_DISALLOWED=
8696 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8697     _gij_longver=0
8698     AC_MSG_CHECKING([the installed JDK])
8699     if test -n "$JAVAINTERPRETER"; then
8700         dnl java -version sends output to stderr!
8701         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8702             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8703         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8704             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8705         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8706             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8707         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8708             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8709         else
8710             JDK=sun
8712             dnl Sun JDK specific tests
8713             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8714             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8716             if test "$_jdk_ver" -lt 10900; then
8717                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8718             fi
8719             if test "$_jdk_ver" -gt 10900; then
8720                 JAVA_CLASSPATH_NOT_SET=TRUE
8721             fi
8722             dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8723             dnl completely removed in some Java version > 18 (see
8724             dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8725             if test "$_jdk_ver" -ge 180000; then
8726                 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8727             fi
8729             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8730             if test "$_os" = "WINNT"; then
8731                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8732             fi
8733             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8735             # set to limit VM usage for JunitTests
8736             JAVAIFLAGS=-Xmx64M
8737             # set to limit VM usage for javac
8738             JAVACFLAGS=-J-Xmx128M
8739         fi
8740     else
8741         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8742     fi
8743 else
8744     if test -z "$ENABLE_JAVA"; then
8745         dnl Java disabled
8746         JAVA_HOME=
8747         export JAVA_HOME
8748     elif test "$cross_compiling" = "yes"; then
8749         # Just assume compatibility of build and host JDK
8750         JDK=$JDK_FOR_BUILD
8751         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8752     fi
8755 dnl ===================================================================
8756 dnl Checks for javac
8757 dnl ===================================================================
8758 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8759     javacompiler="javac"
8760     : ${JAVA_SOURCE_VER=8}
8761     : ${JAVA_TARGET_VER=8}
8762     if test -z "$with_jdk_home"; then
8763         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8764     else
8765         _javac_path="$with_jdk_home/bin/$javacompiler"
8766         dnl Check if there is a Java compiler at all.
8767         if test -x "$_javac_path"; then
8768             JAVACOMPILER=$_javac_path
8769         fi
8770     fi
8771     if test -z "$JAVACOMPILER"; then
8772         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8773     fi
8774     if test "$build_os" = "cygwin"; then
8775         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8776             JAVACOMPILER="${JAVACOMPILER}.exe"
8777         fi
8778         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8779     fi
8782 dnl ===================================================================
8783 dnl Checks for javadoc
8784 dnl ===================================================================
8785 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8786     if test -z "$with_jdk_home"; then
8787         AC_PATH_PROG(JAVADOC, javadoc)
8788     else
8789         _javadoc_path="$with_jdk_home/bin/javadoc"
8790         dnl Check if there is a javadoc at all.
8791         if test -x "$_javadoc_path"; then
8792             JAVADOC=$_javadoc_path
8793         else
8794             AC_PATH_PROG(JAVADOC, javadoc)
8795         fi
8796     fi
8797     if test -z "$JAVADOC"; then
8798         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8799     fi
8800     if test "$build_os" = "cygwin"; then
8801         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8802             JAVADOC="${JAVADOC}.exe"
8803         fi
8804         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8805     fi
8807     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8808     JAVADOCISGJDOC="yes"
8809     fi
8811 AC_SUBST(JAVADOC)
8812 AC_SUBST(JAVADOCISGJDOC)
8814 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8815     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8816     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8817         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8818            # try to recover first by looking whether we have an alternative
8819            # system as in Debian or newer SuSEs where following /usr/bin/javac
8820            # over /etc/alternatives/javac leads to the right bindir where we
8821            # just need to strip a bit away to get a valid JAVA_HOME
8822            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8823         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8824             # maybe only one level of symlink (e.g. on Mac)
8825             JAVA_HOME=$(readlink $JAVACOMPILER)
8826             if test "$(dirname $JAVA_HOME)" = "."; then
8827                 # we've got no path to trim back
8828                 JAVA_HOME=""
8829             fi
8830         else
8831             # else warn
8832             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8833             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8834             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8835             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8836         fi
8837         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8838         if test "$JAVA_HOME" != "/usr"; then
8839             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8840                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8841                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8842                 dnl Tiger already returns a JDK path...
8843                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8844             else
8845                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8846                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8847                 dnl that checks which version to run
8848                 if test -f "$JAVA_HOME"; then
8849                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8850                 fi
8851             fi
8852         fi
8853     fi
8854     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8856     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8857     if test -z "$JAVA_HOME"; then
8858         if test "x$with_jdk_home" = "x"; then
8859             cat > findhome.java <<_ACEOF
8860 [import java.io.File;
8862 class findhome
8864     public static void main(String args[])
8865     {
8866         String jrelocation = System.getProperty("java.home");
8867         File jre = new File(jrelocation);
8868         System.out.println(jre.getParent());
8869     }
8871 _ACEOF
8872             AC_MSG_CHECKING([if javac works])
8873             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8874             AC_TRY_EVAL(javac_cmd)
8875             if test $? = 0 -a -f ./findhome.class; then
8876                 AC_MSG_RESULT([javac works])
8877             else
8878                 echo "configure: javac test failed" >&5
8879                 cat findhome.java >&5
8880                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8881             fi
8882             AC_MSG_CHECKING([if gij knows its java.home])
8883             JAVA_HOME=`$JAVAINTERPRETER findhome`
8884             if test $? = 0 -a "$JAVA_HOME" != ""; then
8885                 AC_MSG_RESULT([$JAVA_HOME])
8886             else
8887                 echo "configure: java test failed" >&5
8888                 cat findhome.java >&5
8889                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8890             fi
8891             # clean-up after ourselves
8892             rm -f ./findhome.java ./findhome.class
8893         else
8894             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8895         fi
8896     fi
8898     # now check if $JAVA_HOME is really valid
8899     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8900         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8901             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8902             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8903             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8904             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8905             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8906             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8907         fi
8908     fi
8909     PathFormat "$JAVA_HOME"
8910     JAVA_HOME="$formatted_path"
8913 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8914     "$_os" != Darwin
8915 then
8916     AC_MSG_CHECKING([for JAWT lib])
8917     if test "$_os" = WINNT; then
8918         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8919         JAWTLIB=jawt.lib
8920     else
8921         case "$host_cpu" in
8922         arm*)
8923             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8924             JAVA_ARCH=$my_java_arch
8925             ;;
8926         i*86)
8927             my_java_arch=i386
8928             ;;
8929         m68k)
8930             my_java_arch=m68k
8931             ;;
8932         powerpc)
8933             my_java_arch=ppc
8934             ;;
8935         powerpc64)
8936             my_java_arch=ppc64
8937             ;;
8938         powerpc64le)
8939             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8940             JAVA_ARCH=$my_java_arch
8941             ;;
8942         sparc64)
8943             my_java_arch=sparcv9
8944             ;;
8945         x86_64)
8946             my_java_arch=amd64
8947             ;;
8948         *)
8949             my_java_arch=$host_cpu
8950             ;;
8951         esac
8952         # This is where JDK9 puts the library
8953         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8954             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8955         else
8956             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8957         fi
8958         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8959     fi
8960     AC_MSG_RESULT([$JAWTLIB])
8962 AC_SUBST(JAWTLIB)
8964 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8965     case "$host_os" in
8967     aix*)
8968         JAVAINC="-I$JAVA_HOME/include"
8969         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8970         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8971         ;;
8973     cygwin*|wsl*)
8974         JAVAINC="-I$JAVA_HOME/include/win32"
8975         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8976         ;;
8978     darwin*)
8979         if test -d "$JAVA_HOME/include/darwin"; then
8980             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8981         else
8982             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8983         fi
8984         ;;
8986     dragonfly*)
8987         JAVAINC="-I$JAVA_HOME/include"
8988         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8989         ;;
8991     freebsd*)
8992         JAVAINC="-I$JAVA_HOME/include"
8993         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8994         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8995         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8996         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8997         ;;
8999     k*bsd*-gnu*)
9000         JAVAINC="-I$JAVA_HOME/include"
9001         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9002         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9003         ;;
9005     linux-gnu*)
9006         JAVAINC="-I$JAVA_HOME/include"
9007         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
9008         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9009         ;;
9011     *netbsd*)
9012         JAVAINC="-I$JAVA_HOME/include"
9013         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
9014         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9015        ;;
9017     openbsd*)
9018         JAVAINC="-I$JAVA_HOME/include"
9019         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
9020         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9021         ;;
9023     solaris*)
9024         JAVAINC="-I$JAVA_HOME/include"
9025         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
9026         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
9027         ;;
9028     esac
9030 SOLARINC="$SOLARINC $JAVAINC"
9032 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
9033     JAVA_HOME_FOR_BUILD=$JAVA_HOME
9034     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
9035     JDK_FOR_BUILD=$JDK
9036     JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
9039 AC_SUBST(JAVACFLAGS)
9040 AC_SUBST(JAVACOMPILER)
9041 AC_SUBST(JAVAINTERPRETER)
9042 AC_SUBST(JAVAIFLAGS)
9043 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
9044 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
9045 AC_SUBST(JAVA_HOME)
9046 AC_SUBST(JAVA_HOME_FOR_BUILD)
9047 AC_SUBST(JDK)
9048 AC_SUBST(JDK_FOR_BUILD)
9049 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
9050 AC_SUBST(JAVA_SOURCE_VER)
9051 AC_SUBST(JAVA_TARGET_VER)
9054 dnl ===================================================================
9055 dnl Export file validation
9056 dnl ===================================================================
9057 AC_MSG_CHECKING([whether to enable export file validation])
9058 if test "$with_export_validation" != "no"; then
9059     if test -z "$ENABLE_JAVA"; then
9060         if test "$with_export_validation" = "yes"; then
9061             AC_MSG_ERROR([requested, but Java is disabled])
9062         else
9063             AC_MSG_RESULT([no, as Java is disabled])
9064         fi
9065     elif ! test -d "${SRC_ROOT}/schema"; then
9066         if test "$with_export_validation" = "yes"; then
9067             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9068         else
9069             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9070         fi
9071     else
9072         AC_MSG_RESULT([yes])
9073         AC_DEFINE(HAVE_EXPORT_VALIDATION)
9075         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9076         if test -z "$ODFVALIDATOR"; then
9077             # remember to download the ODF toolkit with validator later
9078             AC_MSG_NOTICE([no odfvalidator found, will download it])
9079             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9080             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9082             # and fetch name of odfvalidator jar name from download.lst
9083             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9084             AC_SUBST(ODFVALIDATOR_JAR)
9086             if test -z "$ODFVALIDATOR_JAR"; then
9087                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9088             fi
9089         fi
9090         if test "$build_os" = "cygwin"; then
9091             # In case of Cygwin it will be executed from Windows,
9092             # so we need to run bash and absolute path to validator
9093             # so instead of "odfvalidator" it will be
9094             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9095             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9096         else
9097             ODFVALIDATOR="sh $ODFVALIDATOR"
9098         fi
9099         AC_SUBST(ODFVALIDATOR)
9102         AC_PATH_PROGS(OFFICEOTRON, officeotron)
9103         if test -z "$OFFICEOTRON"; then
9104             # remember to download the officeotron with validator later
9105             AC_MSG_NOTICE([no officeotron found, will download it])
9106             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9107             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9109             # and fetch name of officeotron jar name from download.lst
9110             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9111             AC_SUBST(OFFICEOTRON_JAR)
9113             if test -z "$OFFICEOTRON_JAR"; then
9114                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9115             fi
9116         else
9117             # check version of existing officeotron
9118             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9119             if test 0"$OFFICEOTRON_VER" -lt 704; then
9120                 AC_MSG_ERROR([officeotron too old])
9121             fi
9122         fi
9123         if test "$build_os" = "cygwin"; then
9124             # In case of Cygwin it will be executed from Windows,
9125             # so we need to run bash and absolute path to validator
9126             # so instead of "odfvalidator" it will be
9127             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9128             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9129         else
9130             OFFICEOTRON="sh $OFFICEOTRON"
9131         fi
9132     fi
9133     AC_SUBST(OFFICEOTRON)
9134 else
9135     AC_MSG_RESULT([no])
9138 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9139 if test "$with_bffvalidator" != "no"; then
9140     AC_DEFINE(HAVE_BFFVALIDATOR)
9142     if test "$with_export_validation" = "no"; then
9143         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9144     fi
9146     if test "$with_bffvalidator" = "yes"; then
9147         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9148     else
9149         BFFVALIDATOR="$with_bffvalidator"
9150     fi
9152     if test "$build_os" = "cygwin"; then
9153         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9154             AC_MSG_RESULT($BFFVALIDATOR)
9155         else
9156             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9157         fi
9158     elif test -n "$BFFVALIDATOR"; then
9159         # We are not in Cygwin but need to run Windows binary with wine
9160         AC_PATH_PROGS(WINE, wine)
9162         # so swap in a shell wrapper that converts paths transparently
9163         BFFVALIDATOR_EXE="$BFFVALIDATOR"
9164         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9165         AC_SUBST(BFFVALIDATOR_EXE)
9166         AC_MSG_RESULT($BFFVALIDATOR)
9167     else
9168         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9169     fi
9170     AC_SUBST(BFFVALIDATOR)
9171 else
9172     AC_MSG_RESULT([no])
9175 dnl ===================================================================
9176 dnl Check for epm (not needed for Windows)
9177 dnl ===================================================================
9178 AC_MSG_CHECKING([whether to enable EPM for packing])
9179 if test "$enable_epm" = "yes"; then
9180     AC_MSG_RESULT([yes])
9181     if test "$_os" != "WINNT"; then
9182         if test $_os = Darwin; then
9183             EPM=internal
9184         elif test -n "$with_epm"; then
9185             EPM=$with_epm
9186         else
9187             AC_PATH_PROG(EPM, epm, no)
9188         fi
9189         if test "$EPM" = "no" -o "$EPM" = "internal"; then
9190             AC_MSG_NOTICE([EPM will be built.])
9191             BUILD_TYPE="$BUILD_TYPE EPM"
9192             EPM=${WORKDIR}/UnpackedTarball/epm/epm
9193         else
9194             # Gentoo has some epm which is something different...
9195             AC_MSG_CHECKING([whether the found epm is the right epm])
9196             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9197                 AC_MSG_RESULT([yes])
9198             else
9199                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9200             fi
9201             AC_MSG_CHECKING([epm version])
9202             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9203             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9204                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9205                 AC_MSG_RESULT([OK, >= 3.7])
9206             else
9207                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9208                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9209             fi
9210         fi
9211     fi
9213     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9214         AC_MSG_CHECKING([for rpm])
9215         for a in "$RPM" rpmbuild rpm; do
9216             $a --usage >/dev/null 2> /dev/null
9217             if test $? -eq 0; then
9218                 RPM=$a
9219                 break
9220             else
9221                 $a --version >/dev/null 2> /dev/null
9222                 if test $? -eq 0; then
9223                     RPM=$a
9224                     break
9225                 fi
9226             fi
9227         done
9228         if test -z "$RPM"; then
9229             AC_MSG_ERROR([not found])
9230         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9231             RPM_PATH=`which $RPM`
9232             AC_MSG_RESULT([$RPM_PATH])
9233             SCPDEFS="$SCPDEFS -DWITH_RPM"
9234         else
9235             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9236         fi
9237     fi
9238     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9239         AC_PATH_PROG(DPKG, dpkg, no)
9240         if test "$DPKG" = "no"; then
9241             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9242         fi
9243     fi
9244     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9245        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9246         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9247             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9248                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9249                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9250                     AC_MSG_RESULT([yes])
9251                 else
9252                     AC_MSG_RESULT([no])
9253                     if echo "$PKGFORMAT" | $GREP -q rpm; then
9254                         _pt="rpm"
9255                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9256                         add_warning "the rpms will need to be installed with --nodeps"
9257                     else
9258                         _pt="pkg"
9259                     fi
9260                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
9261                     add_warning "the ${_pt}s will not be relocatable"
9262                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
9263                                  relocation will work, you need to patch your epm with the
9264                                  patch in epm/epm-3.7.patch or build with
9265                                  --with-epm=internal which will build a suitable epm])
9266                 fi
9267             fi
9268         fi
9269     fi
9270     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9271         AC_PATH_PROG(PKGMK, pkgmk, no)
9272         if test "$PKGMK" = "no"; then
9273             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9274         fi
9275     fi
9276     AC_SUBST(RPM)
9277     AC_SUBST(DPKG)
9278     AC_SUBST(PKGMK)
9279 else
9280     for i in $PKGFORMAT; do
9281         case "$i" in
9282         aix | bsd | deb | pkg | rpm | native | portable)
9283             AC_MSG_ERROR(
9284                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9285             ;;
9286         esac
9287     done
9288     AC_MSG_RESULT([no])
9289     EPM=NO
9291 AC_SUBST(EPM)
9293 ENABLE_LWP=
9294 if test "$enable_lotuswordpro" = "yes"; then
9295     ENABLE_LWP="TRUE"
9297 AC_SUBST(ENABLE_LWP)
9299 dnl ===================================================================
9300 dnl Check for building ODK
9301 dnl ===================================================================
9302 AC_MSG_CHECKING([whether to build the ODK])
9303 if test "$enable_odk" = yes; then
9304     if test "$DISABLE_DYNLOADING" = TRUE; then
9305         AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9306     fi
9307     AC_MSG_RESULT([yes])
9308     BUILD_TYPE="$BUILD_TYPE ODK"
9309 else
9310     AC_MSG_RESULT([no])
9313 if test "$enable_odk" != yes; then
9314     unset DOXYGEN
9315 else
9316     if test "$with_doxygen" = no; then
9317         AC_MSG_CHECKING([for doxygen])
9318         unset DOXYGEN
9319         AC_MSG_RESULT([no])
9320     else
9321         if test "$with_doxygen" = yes; then
9322             AC_PATH_PROG([DOXYGEN], [doxygen])
9323             if test -z "$DOXYGEN"; then
9324                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9325             fi
9326             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9327                 if ! dot -V 2>/dev/null; then
9328                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9329                 fi
9330             fi
9331         else
9332             AC_MSG_CHECKING([for doxygen])
9333             DOXYGEN=$with_doxygen
9334             AC_MSG_RESULT([$DOXYGEN])
9335         fi
9336         if test -n "$DOXYGEN"; then
9337             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9338             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9339             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9340                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9341             fi
9342         fi
9343     fi
9345 AC_SUBST([DOXYGEN])
9347 dnl ==================================================================
9348 dnl libfuzzer
9349 dnl ==================================================================
9350 AC_MSG_CHECKING([whether to enable fuzzers])
9351 if test "$enable_fuzzers" != yes; then
9352     AC_MSG_RESULT([no])
9353 else
9354     if test -z $LIB_FUZZING_ENGINE; then
9355       AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9356     fi
9357     AC_MSG_RESULT([yes])
9358     ENABLE_FUZZERS="TRUE"
9359     AC_DEFINE([ENABLE_FUZZERS],1)
9360     AC_DEFINE([VCL_FLOAT_DEVICE_PIXEL],1)
9361     BUILD_TYPE="$BUILD_TYPE FUZZERS"
9363 AC_SUBST(LIB_FUZZING_ENGINE)
9365 dnl ===================================================================
9366 dnl Check for system zlib
9367 dnl ===================================================================
9368 if test "$with_system_zlib" = "auto"; then
9369     case "$_os" in
9370     WINNT)
9371         with_system_zlib="$with_system_libs"
9372         ;;
9373     *)
9374         if test "$enable_fuzzers" != "yes"; then
9375             with_system_zlib=yes
9376         else
9377             with_system_zlib=no
9378         fi
9379         ;;
9380     esac
9383 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9384 dnl and has no pkg-config for it at least on some tinderboxes,
9385 dnl so leaving that out for now
9386 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9387 AC_MSG_CHECKING([which zlib to use])
9388 if test "$with_system_zlib" = "yes"; then
9389     AC_MSG_RESULT([external])
9390     SYSTEM_ZLIB=TRUE
9391     AC_CHECK_HEADER(zlib.h, [],
9392         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9393     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9394         [AC_MSG_ERROR(zlib not found or functional)], [])
9395 else
9396     AC_MSG_RESULT([internal])
9397     SYSTEM_ZLIB=
9398     BUILD_TYPE="$BUILD_TYPE ZLIB"
9399     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9400     if test "$COM" = "MSC"; then
9401         ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9402     else
9403         ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9404     fi
9406 AC_SUBST(ZLIB_CFLAGS)
9407 AC_SUBST(ZLIB_LIBS)
9408 AC_SUBST(SYSTEM_ZLIB)
9410 dnl ===================================================================
9411 dnl Check for system jpeg
9412 dnl ===================================================================
9413 AC_MSG_CHECKING([which libjpeg to use])
9414 if test "$with_system_jpeg" = "yes"; then
9415     AC_MSG_RESULT([external])
9416     SYSTEM_LIBJPEG=TRUE
9417     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9418         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9419     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9420         [AC_MSG_ERROR(jpeg library not found or functional)], [])
9421 else
9422     SYSTEM_LIBJPEG=
9423     AC_MSG_RESULT([internal, libjpeg-turbo])
9424     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9426     case "$host_cpu" in
9427     x86_64 | amd64 | i*86 | x86 | ia32)
9428         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9429         if test -z "$NASM" -a "$build_os" = "cygwin"; then
9430             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9431                 NASM="$LODE_HOME/opt/bin/nasm"
9432             elif test -x "/opt/lo/bin/nasm"; then
9433                 NASM="/opt/lo/bin/nasm"
9434             fi
9435         fi
9437         if test -n "$NASM"; then
9438             AC_MSG_CHECKING([for object file format of host system])
9439             case "$host_os" in
9440               cygwin* | mingw* | pw32* | wsl*)
9441                 case "$host_cpu" in
9442                   x86_64)
9443                     objfmt='Win64-COFF'
9444                     ;;
9445                   *)
9446                     objfmt='Win32-COFF'
9447                     ;;
9448                 esac
9449               ;;
9450               msdosdjgpp* | go32*)
9451                 objfmt='COFF'
9452               ;;
9453               os2-emx*) # not tested
9454                 objfmt='MSOMF' # obj
9455               ;;
9456               linux*coff* | linux*oldld*)
9457                 objfmt='COFF' # ???
9458               ;;
9459               linux*aout*)
9460                 objfmt='a.out'
9461               ;;
9462               linux*)
9463                 case "$host_cpu" in
9464                   x86_64)
9465                     objfmt='ELF64'
9466                     ;;
9467                   *)
9468                     objfmt='ELF'
9469                     ;;
9470                 esac
9471               ;;
9472               kfreebsd* | freebsd* | netbsd* | openbsd*)
9473                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9474                   objfmt='BSD-a.out'
9475                 else
9476                   case "$host_cpu" in
9477                     x86_64 | amd64)
9478                       objfmt='ELF64'
9479                       ;;
9480                     *)
9481                       objfmt='ELF'
9482                       ;;
9483                   esac
9484                 fi
9485               ;;
9486               solaris* | sunos* | sysv* | sco*)
9487                 case "$host_cpu" in
9488                   x86_64)
9489                     objfmt='ELF64'
9490                     ;;
9491                   *)
9492                     objfmt='ELF'
9493                     ;;
9494                 esac
9495               ;;
9496               darwin* | rhapsody* | nextstep* | openstep* | macos*)
9497                 case "$host_cpu" in
9498                   x86_64)
9499                     objfmt='Mach-O64'
9500                     ;;
9501                   *)
9502                     objfmt='Mach-O'
9503                     ;;
9504                 esac
9505               ;;
9506               *)
9507                 objfmt='ELF ?'
9508               ;;
9509             esac
9511             AC_MSG_RESULT([$objfmt])
9512             if test "$objfmt" = 'ELF ?'; then
9513               objfmt='ELF'
9514               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9515             fi
9517             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9518             case "$objfmt" in
9519               MSOMF)      NAFLAGS='-fobj -DOBJ32 -DPIC';;
9520               Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9521               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9522               COFF)       NAFLAGS='-fcoff -DCOFF -DPIC';;
9523               a.out)      NAFLAGS='-faout -DAOUT -DPIC';;
9524               BSD-a.out)  NAFLAGS='-faoutb -DAOUT -DPIC';;
9525               ELF)        NAFLAGS='-felf -DELF -DPIC';;
9526               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9527               RDF)        NAFLAGS='-frdf -DRDF -DPIC';;
9528               Mach-O)     NAFLAGS='-fmacho -DMACHO -DPIC';;
9529               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9530             esac
9531             AC_MSG_RESULT([$NAFLAGS])
9533             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9534             cat > conftest.asm << EOF
9535             [%line __oline__ "configure"
9536                     section .text
9537                     global  _main,main
9538             _main:
9539             main:   xor     eax,eax
9540                     ret
9541             ]
9543             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9544             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9545               AC_MSG_RESULT(yes)
9546             else
9547               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9548               cat conftest.asm >&AS_MESSAGE_LOG_FD
9549               rm -rf conftest*
9550               AC_MSG_RESULT(no)
9551               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9552               NASM=""
9553             fi
9555         fi
9557         if test -z "$NASM"; then
9558 cat << _EOS
9559 ****************************************************************************
9560 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9561 To get one please:
9563 _EOS
9564             if test "$build_os" = "cygwin"; then
9565 cat << _EOS
9566 install a pre-compiled binary for Win32
9568 mkdir -p /opt/lo/bin
9569 cd /opt/lo/bin
9570 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9571 chmod +x nasm
9573 or get and install one from http://www.nasm.us/
9575 Then re-run autogen.sh
9577 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9578 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9580 _EOS
9581             else
9582 cat << _EOS
9583 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9585 _EOS
9586             fi
9587             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9588             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9589         fi
9590       ;;
9591     esac
9594 AC_SUBST(NASM)
9595 AC_SUBST(NAFLAGS)
9596 AC_SUBST(LIBJPEG_CFLAGS)
9597 AC_SUBST(LIBJPEG_LIBS)
9598 AC_SUBST(SYSTEM_LIBJPEG)
9600 dnl ===================================================================
9601 dnl Check for system clucene
9602 dnl ===================================================================
9603 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9604 if test "$SYSTEM_CLUCENE" = TRUE; then
9605     AC_LANG_PUSH([C++])
9606     save_CXXFLAGS=$CXXFLAGS
9607     save_CPPFLAGS=$CPPFLAGS
9608     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9609     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9610     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9611     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9612     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9613                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9614     CXXFLAGS=$save_CXXFLAGS
9615     CPPFLAGS=$save_CPPFLAGS
9616     AC_LANG_POP([C++])
9617     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9620 dnl ===================================================================
9621 dnl Check for system expat
9622 dnl ===================================================================
9623 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9625 dnl ===================================================================
9626 dnl Check for system xmlsec
9627 dnl ===================================================================
9628 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9630 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9631 if test "$enable_eot" = "yes"; then
9632     ENABLE_EOT="TRUE"
9633     AC_DEFINE([ENABLE_EOT])
9634     AC_MSG_RESULT([yes])
9636     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9637 else
9638     ENABLE_EOT=
9639     AC_MSG_RESULT([no])
9641 AC_SUBST([ENABLE_EOT])
9643 dnl ===================================================================
9644 dnl Check for DLP libs
9645 dnl ===================================================================
9646 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9647 AS_IF([test "$COM" = "MSC"],
9648       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9649       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9651 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9652 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9654 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9656 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9658 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9659 AS_IF([test "$COM" = "MSC"],
9660       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9661       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9663 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9664 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9666 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9668 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9669 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9671 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9673 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9675 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9677 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9678 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9680 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9681 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9683 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9685 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9686 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9688 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9690 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9692 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9694 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9696 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9697 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9699 dnl ===================================================================
9700 dnl Check for system lcms2
9701 dnl ===================================================================
9702 if test "$with_system_lcms2" != "yes"; then
9703     SYSTEM_LCMS2=
9705 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9706 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9707 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9708 if test "$GCC" = "yes"; then
9709     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9711 if test "$COM" = "MSC"; then # override the above
9712     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9715 dnl ===================================================================
9716 dnl Check for system cppunit
9717 dnl ===================================================================
9718 if test "$_os" != "Android" ; then
9719     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9722 dnl ===================================================================
9723 dnl Check whether freetype is available
9725 dnl FreeType has 3 different kinds of versions
9726 dnl * release, like 2.4.10
9727 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9728 dnl * soname
9729 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9731 dnl 9.9.3 is 2.2.0
9732 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9733 dnl ===================================================================
9734 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9735 if test "x$ac_config_site_64bit_host" = xYES; then
9736     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9737 else
9738     FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9740 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9742 # ===================================================================
9743 # Check for system libxslt
9744 # to prevent incompatibilities between internal libxml2 and external libxslt,
9745 # or vice versa, use with_system_libxml here
9746 # ===================================================================
9747 if test "$with_system_libxml" = "auto"; then
9748     case "$_os" in
9749     WINNT|iOS|Android)
9750         with_system_libxml="$with_system_libs"
9751         ;;
9752     Emscripten)
9753         with_system_libxml=no
9754         ;;
9755     *)
9756         if test "$enable_fuzzers" != "yes"; then
9757             with_system_libxml=yes
9758         else
9759             with_system_libxml=no
9760         fi
9761         ;;
9762     esac
9765 AC_MSG_CHECKING([which libxslt to use])
9766 if test "$with_system_libxml" = "yes"; then
9767     AC_MSG_RESULT([external])
9768     SYSTEM_LIBXSLT=TRUE
9769     if test "$_os" = "Darwin"; then
9770         dnl make sure to use SDK path
9771         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9772         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9773         dnl omit -L/usr/lib
9774         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9775         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9776     else
9777         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9778         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9779         FilterLibs "${LIBXSLT_LIBS}"
9780         LIBXSLT_LIBS="${filteredlibs}"
9781         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9782         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9783         FilterLibs "${LIBEXSLT_LIBS}"
9784         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9785     fi
9787     dnl Check for xsltproc
9788     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9789     if test "$XSLTPROC" = "no"; then
9790         AC_MSG_ERROR([xsltproc is required])
9791     fi
9792 else
9793     AC_MSG_RESULT([internal])
9794     SYSTEM_LIBXSLT=
9795     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9797 AC_SUBST(SYSTEM_LIBXSLT)
9798 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9799     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9801 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9803 AC_SUBST(LIBEXSLT_CFLAGS)
9804 AC_SUBST(LIBEXSLT_LIBS)
9805 AC_SUBST(LIBXSLT_CFLAGS)
9806 AC_SUBST(LIBXSLT_LIBS)
9807 AC_SUBST(XSLTPROC)
9809 # ===================================================================
9810 # Check for system libxml
9811 # ===================================================================
9812 AC_MSG_CHECKING([which libxml to use])
9813 if test "$with_system_libxml" = "yes"; then
9814     AC_MSG_RESULT([external])
9815     SYSTEM_LIBXML=TRUE
9816     if test "$_os" = "Darwin"; then
9817         dnl make sure to use SDK path
9818         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9819         dnl omit -L/usr/lib
9820         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9821     elif test $_os = iOS; then
9822         dnl make sure to use SDK path
9823         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9824         LIBXML_CFLAGS="-I$usr/include/libxml2"
9825         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9826     else
9827         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9828         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9829         FilterLibs "${LIBXML_LIBS}"
9830         LIBXML_LIBS="${filteredlibs}"
9831     fi
9833     dnl Check for xmllint
9834     AC_PATH_PROG(XMLLINT, xmllint, no)
9835     if test "$XMLLINT" = "no"; then
9836         AC_MSG_ERROR([xmllint is required])
9837     fi
9838 else
9839     AC_MSG_RESULT([internal])
9840     SYSTEM_LIBXML=
9841     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9842     if test "$COM" = "MSC"; then
9843         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9844     fi
9845     if test "$COM" = "MSC"; then
9846         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9847     else
9848         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9849         if test "$DISABLE_DYNLOADING" = TRUE; then
9850             LIBXML_LIBS="$LIBXML_LIBS -lm"
9851         fi
9852     fi
9853     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9855 AC_SUBST(SYSTEM_LIBXML)
9856 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9857     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9859 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9860 AC_SUBST(LIBXML_CFLAGS)
9861 AC_SUBST(LIBXML_LIBS)
9862 AC_SUBST(XMLLINT)
9864 # =====================================================================
9865 # Checking for a Python interpreter with version >= 3.3.
9866 # Optionally user can pass an option to configure, i. e.
9867 # ./configure PYTHON=/usr/bin/python
9868 # =====================================================================
9869 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9870     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9871     # unless PYTHON is defined as above which allows 'system'
9872     enable_python=internal
9874 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9875     if test -n "$PYTHON"; then
9876         PYTHON_FOR_BUILD=$PYTHON
9877     else
9878         # This allows a lack of system python with no error, we use internal one in that case.
9879         AM_PATH_PYTHON([3.3],, [:])
9880         # Clean PYTHON_VERSION checked below if cross-compiling
9881         PYTHON_VERSION=""
9882         if test "$PYTHON" != ":"; then
9883             PYTHON_FOR_BUILD=$PYTHON
9884         fi
9885     fi
9888 # Checks for Python to use for Pyuno
9889 AC_MSG_CHECKING([which Python to use for Pyuno])
9890 case "$enable_python" in
9891 no|disable)
9892     if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9893         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9894         # requirement from the choice whether to include Python stuff in the installer, but why
9895         # bother?
9896         AC_MSG_ERROR([Python is required at build time.])
9897     fi
9898     enable_python=no
9899     AC_MSG_RESULT([none])
9900     ;;
9901 ""|yes|auto)
9902     if test "$DISABLE_SCRIPTING" = TRUE; then
9903         if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9904             AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9905         fi
9906         AC_MSG_RESULT([none, overridden by --disable-scripting])
9907         enable_python=no
9908     elif test $build_os = cygwin -o $build_os = wsl; then
9909         dnl When building on Windows we don't attempt to use any installed
9910         dnl "system"  Python.
9911         AC_MSG_RESULT([fully internal])
9912         enable_python=internal
9913     elif test "$cross_compiling" = yes; then
9914         AC_MSG_RESULT([system])
9915         enable_python=system
9916     else
9917         # Unset variables set by the above AM_PATH_PYTHON so that
9918         # we actually do check anew.
9919         AC_MSG_RESULT([])
9920         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
9921         AM_PATH_PYTHON([3.3],, [:])
9922         AC_MSG_CHECKING([which Python to use for Pyuno])
9923         if test "$PYTHON" = ":"; then
9924             if test -z "$PYTHON_FOR_BUILD"; then
9925                 AC_MSG_RESULT([fully internal])
9926             else
9927                 AC_MSG_RESULT([internal])
9928             fi
9929             enable_python=internal
9930         else
9931             AC_MSG_RESULT([system])
9932             enable_python=system
9933         fi
9934     fi
9935     ;;
9936 internal)
9937     AC_MSG_RESULT([internal])
9938     ;;
9939 fully-internal)
9940     AC_MSG_RESULT([fully internal])
9941     enable_python=internal
9942     ;;
9943 system)
9944     AC_MSG_RESULT([system])
9945     if test "$_os" = Darwin -a -z "$PYTHON"; then
9946         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9947     fi
9948     ;;
9950     AC_MSG_ERROR([Incorrect --enable-python option])
9951     ;;
9952 esac
9954 if test $enable_python != no; then
9955     BUILD_TYPE="$BUILD_TYPE PYUNO"
9958 if test $enable_python = system; then
9959     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9960         # Fallback: Accept these in the environment, or as set above
9961         # for MacOSX.
9962         :
9963     elif test "$cross_compiling" != yes; then
9964         # Unset variables set by the above AM_PATH_PYTHON so that
9965         # we actually do check anew.
9966         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
9967         # This causes an error if no python command is found
9968         AM_PATH_PYTHON([3.3])
9969         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9970         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9971         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9972         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9973         if test -z "$PKG_CONFIG"; then
9974             PYTHON_CFLAGS="-I$python_include"
9975             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9976         elif $PKG_CONFIG --exists python-$python_version-embed; then
9977             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9978             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9979         elif $PKG_CONFIG --exists python-$python_version; then
9980             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9981             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9982         else
9983             PYTHON_CFLAGS="-I$python_include"
9984             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9985         fi
9986         FilterLibs "${PYTHON_LIBS}"
9987         PYTHON_LIBS="${filteredlibs}"
9988     else
9989         dnl How to find out the cross-compilation Python installation path?
9990         AC_MSG_CHECKING([for python version])
9991         AS_IF([test -n "$PYTHON_VERSION"],
9992               [AC_MSG_RESULT([$PYTHON_VERSION])],
9993               [AC_MSG_RESULT([not found])
9994                AC_MSG_ERROR([no usable python found])])
9995         test -n "$PYTHON_CFLAGS" && break
9996     fi
9998     dnl Check if the headers really work
9999     save_CPPFLAGS="$CPPFLAGS"
10000     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
10001     AC_CHECK_HEADER(Python.h)
10002     CPPFLAGS="$save_CPPFLAGS"
10004     # let the PYTHON_FOR_BUILD match the same python installation that
10005     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
10006     # better for PythonTests.
10007     PYTHON_FOR_BUILD=$PYTHON
10010 if test "$with_lxml" != no; then
10011     if test -z "$PYTHON_FOR_BUILD"; then
10012         case $build_os in
10013             cygwin)
10014                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
10015                 ;;
10016             *)
10017                 if test "$cross_compiling" != yes ; then
10018                     BUILD_TYPE="$BUILD_TYPE LXML"
10019                 fi
10020                 ;;
10021         esac
10022     else
10023         AC_MSG_CHECKING([for python lxml])
10024         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
10025             AC_MSG_RESULT([yes])
10026         else
10027             case $build_os in
10028                 cygwin)
10029                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
10030                     ;;
10031                 *)
10032                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
10033                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
10034                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
10035                         else
10036                             BUILD_TYPE="$BUILD_TYPE LXML"
10037                             AC_MSG_RESULT([no, using internal lxml])
10038                         fi
10039                     else
10040                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
10041                     fi
10042                     ;;
10043             esac
10044         fi
10045     fi
10048 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
10049     SYSTEM_PYTHON=
10050     PYTHON_VERSION_MAJOR=3
10051     PYTHON_VERSION_MINOR=8
10052     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.15
10053     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
10054         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
10055     fi
10056     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
10058     # Embedded Python dies without Home set
10059     if test "$HOME" = ""; then
10060         export HOME=""
10061     fi
10064 dnl By now enable_python should be "system", "internal" or "no"
10065 case $enable_python in
10066 system)
10067     SYSTEM_PYTHON=TRUE
10069     if test "x$ac_cv_header_Python_h" != "xyes"; then
10070        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10071     fi
10073     AC_LANG_PUSH(C)
10074     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10075     AC_MSG_CHECKING([for correct python library version])
10076        AC_RUN_IFELSE([AC_LANG_SOURCE([[
10077 #include <Python.h>
10079 int main(int argc, char **argv) {
10080    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10081    else return 1;
10083        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10084     AC_LANG_POP(C)
10086     dnl FIXME Check if the Python library can be linked with, too?
10087     ;;
10089 internal)
10090     BUILD_TYPE="$BUILD_TYPE PYTHON"
10091     if test "$OS" = LINUX -o "$OS" = WNT ; then
10092         BUILD_TYPE="$BUILD_TYPE LIBFFI"
10093     fi
10094     ;;
10096     DISABLE_PYTHON=TRUE
10097     SYSTEM_PYTHON=
10098     ;;
10100     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10101     ;;
10102 esac
10104 AC_SUBST(DISABLE_PYTHON)
10105 AC_SUBST(SYSTEM_PYTHON)
10106 AC_SUBST(PYTHON_CFLAGS)
10107 AC_SUBST(PYTHON_FOR_BUILD)
10108 AC_SUBST(PYTHON_LIBS)
10109 AC_SUBST(PYTHON_VERSION)
10110 AC_SUBST(PYTHON_VERSION_MAJOR)
10111 AC_SUBST(PYTHON_VERSION_MINOR)
10113 AC_MSG_CHECKING([whether to build LibreLogo])
10114 case "$enable_python" in
10115 no|disable)
10116     AC_MSG_RESULT([no; Python disabled])
10117     ;;
10119     if test "${enable_librelogo}" = "no"; then
10120         AC_MSG_RESULT([no])
10121     else
10122         AC_MSG_RESULT([yes])
10123         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10124         AC_DEFINE([ENABLE_LIBRELOGO],1)
10125     fi
10126     ;;
10127 esac
10128 AC_SUBST(ENABLE_LIBRELOGO)
10130 ENABLE_MARIADBC=
10131 MARIADBC_MAJOR=1
10132 MARIADBC_MINOR=0
10133 MARIADBC_MICRO=2
10134 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10135 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10136     ENABLE_MARIADBC=TRUE
10137     AC_MSG_RESULT([yes])
10138     BUILD_TYPE="$BUILD_TYPE MARIADBC"
10139 else
10140     AC_MSG_RESULT([no])
10142 AC_SUBST(ENABLE_MARIADBC)
10143 AC_SUBST(MARIADBC_MAJOR)
10144 AC_SUBST(MARIADBC_MINOR)
10145 AC_SUBST(MARIADBC_MICRO)
10147 if test "$ENABLE_MARIADBC" = "TRUE"; then
10148     dnl ===================================================================
10149     dnl Check for system MariaDB
10150     dnl ===================================================================
10151     AC_MSG_CHECKING([which MariaDB to use])
10152     if test "$with_system_mariadb" = "yes"; then
10153         AC_MSG_RESULT([external])
10154         SYSTEM_MARIADB_CONNECTOR_C=TRUE
10155         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10156         if test -z "$MARIADBCONFIG"; then
10157             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10158             if test -z "$MARIADBCONFIG"; then
10159                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10160                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10161             fi
10162         fi
10163         AC_MSG_CHECKING([MariaDB version])
10164         MARIADB_VERSION=`$MARIADBCONFIG --version`
10165         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10166         if test "$MARIADB_MAJOR" -ge "5"; then
10167             AC_MSG_RESULT([OK])
10168         else
10169             AC_MSG_ERROR([too old, use 5.0.x or later])
10170         fi
10171         AC_MSG_CHECKING([for MariaDB Client library])
10172         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10173         if test "$COM_IS_CLANG" = TRUE; then
10174             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10175         fi
10176         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10177         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10178         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10179         dnl linux32:
10180         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10181             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10182             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10183                 | sed -e 's|/lib64/|/lib/|')
10184         fi
10185         FilterLibs "${MARIADB_LIBS}"
10186         MARIADB_LIBS="${filteredlibs}"
10187         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10188         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10189         if test "$enable_bundle_mariadb" = "yes"; then
10190             AC_MSG_RESULT([yes])
10191             BUNDLE_MARIADB_CONNECTOR_C=TRUE
10192             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10194 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10196 /g' | grep -E '(mysqlclient|mariadb)')
10197             if test "$_os" = "Darwin"; then
10198                 LIBMARIADB=${LIBMARIADB}.dylib
10199             elif test "$_os" = "WINNT"; then
10200                 LIBMARIADB=${LIBMARIADB}.dll
10201             else
10202                 LIBMARIADB=${LIBMARIADB}.so
10203             fi
10204             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10205             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10206             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10207                 AC_MSG_RESULT([found.])
10208                 PathFormat "$LIBMARIADB_PATH"
10209                 LIBMARIADB_PATH="$formatted_path"
10210             else
10211                 AC_MSG_ERROR([not found.])
10212             fi
10213         else
10214             AC_MSG_RESULT([no])
10215             BUNDLE_MARIADB_CONNECTOR_C=
10216         fi
10217     else
10218         AC_MSG_RESULT([internal])
10219         SYSTEM_MARIADB_CONNECTOR_C=
10220         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10221         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10222         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10223     fi
10225     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10226     AC_SUBST(MARIADB_CFLAGS)
10227     AC_SUBST(MARIADB_LIBS)
10228     AC_SUBST(LIBMARIADB)
10229     AC_SUBST(LIBMARIADB_PATH)
10230     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10233 dnl ===================================================================
10234 dnl Check for system hsqldb
10235 dnl ===================================================================
10236 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10237     AC_MSG_CHECKING([which hsqldb to use])
10238     if test "$with_system_hsqldb" = "yes"; then
10239         AC_MSG_RESULT([external])
10240         SYSTEM_HSQLDB=TRUE
10241         if test -z $HSQLDB_JAR; then
10242             HSQLDB_JAR=/usr/share/java/hsqldb.jar
10243         fi
10244         if ! test -f $HSQLDB_JAR; then
10245                AC_MSG_ERROR(hsqldb.jar not found.)
10246         fi
10247         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10248         export HSQLDB_JAR
10249         if $PERL -e \
10250            'use Archive::Zip;
10251             my $file = "$ENV{'HSQLDB_JAR'}";
10252             my $zip = Archive::Zip->new( $file );
10253             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10254             if ( $mf =~ m/Specification-Version: 1.8.*/ )
10255             {
10256                 push @l, split(/\n/, $mf);
10257                 foreach my $line (@l)
10258                 {
10259                     if ($line =~ m/Specification-Version:/)
10260                     {
10261                         ($t, $version) = split (/:/,$line);
10262                         $version =~ s/^\s//;
10263                         ($a, $b, $c, $d) = split (/\./,$version);
10264                         if ($c == "0" && $d > "8")
10265                         {
10266                             exit 0;
10267                         }
10268                         else
10269                         {
10270                             exit 1;
10271                         }
10272                     }
10273                 }
10274             }
10275             else
10276             {
10277                 exit 1;
10278             }'; then
10279             AC_MSG_RESULT([yes])
10280         else
10281             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10282         fi
10283     else
10284         AC_MSG_RESULT([internal])
10285         SYSTEM_HSQLDB=
10286         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10287         NEED_ANT=TRUE
10288     fi
10289 else
10290     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10291         BUILD_TYPE="$BUILD_TYPE HSQLDB"
10292     fi
10294 AC_SUBST(SYSTEM_HSQLDB)
10295 AC_SUBST(HSQLDB_JAR)
10297 dnl ===================================================================
10298 dnl Check for PostgreSQL stuff
10299 dnl ===================================================================
10300 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10301 if test "x$enable_postgresql_sdbc" != "xno"; then
10302     AC_MSG_RESULT([yes])
10303     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10305     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10306         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10307     fi
10308     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10309         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10310     fi
10312     postgres_interface=""
10313     if test "$with_system_postgresql" = "yes"; then
10314         postgres_interface="external PostgreSQL"
10315         SYSTEM_POSTGRESQL=TRUE
10316         if test "$_os" = Darwin; then
10317             supp_path=''
10318             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10319                 pg_supp_path="$P_SEP$d$pg_supp_path"
10320             done
10321         fi
10322         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10323         if test -n "$PGCONFIG"; then
10324             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10325             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10326         else
10327             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10328               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10329               POSTGRESQL_LIB=$POSTGRESQL_LIBS
10330             ],[
10331               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10332             ])
10333         fi
10334         FilterLibs "${POSTGRESQL_LIB}"
10335         POSTGRESQL_LIB="${filteredlibs}"
10336     else
10337         # if/when anything else than PostgreSQL uses Kerberos,
10338         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10339         WITH_KRB5=
10340         WITH_GSSAPI=
10341         case "$_os" in
10342         Darwin)
10343             # macOS has system MIT Kerberos 5 since 10.4
10344             if test "$with_krb5" != "no"; then
10345                 WITH_KRB5=TRUE
10346                 save_LIBS=$LIBS
10347                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10348                 # that the libraries where these functions are located on macOS will change, is it?
10349                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10350                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10351                 KRB5_LIBS=$LIBS
10352                 LIBS=$save_LIBS
10353                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10354                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10355                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10356                 LIBS=$save_LIBS
10357             fi
10358             if test "$with_gssapi" != "no"; then
10359                 WITH_GSSAPI=TRUE
10360                 save_LIBS=$LIBS
10361                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10362                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10363                 GSSAPI_LIBS=$LIBS
10364                 LIBS=$save_LIBS
10365             fi
10366             ;;
10367         WINNT)
10368             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10369                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10370             fi
10371             ;;
10372         Linux|GNU|*BSD|DragonFly)
10373             if test "$with_krb5" != "no"; then
10374                 WITH_KRB5=TRUE
10375                 save_LIBS=$LIBS
10376                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10377                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10378                 KRB5_LIBS=$LIBS
10379                 LIBS=$save_LIBS
10380                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10381                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10382                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10383                 LIBS=$save_LIBS
10384             fi
10385             if test "$with_gssapi" != "no"; then
10386                 WITH_GSSAPI=TRUE
10387                 save_LIBS=$LIBS
10388                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10389                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10390                 GSSAPI_LIBS=$LIBS
10391                 LIBS=$save_LIBS
10392             fi
10393             ;;
10394         *)
10395             if test "$with_krb5" = "yes"; then
10396                 WITH_KRB5=TRUE
10397                 save_LIBS=$LIBS
10398                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10399                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10400                 KRB5_LIBS=$LIBS
10401                 LIBS=$save_LIBS
10402                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10403                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10404                 KRB5_LIBS="$KRB5_LIBS $LIBS"
10405                 LIBS=$save_LIBS
10406             fi
10407             if test "$with_gssapi" = "yes"; then
10408                 WITH_GSSAPI=TRUE
10409                 save_LIBS=$LIBS
10410                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10411                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10412                 LIBS=$save_LIBS
10413                 GSSAPI_LIBS=$LIBS
10414             fi
10415         esac
10417         if test -n "$with_libpq_path"; then
10418             SYSTEM_POSTGRESQL=TRUE
10419             postgres_interface="external libpq"
10420             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10421             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10422         else
10423             SYSTEM_POSTGRESQL=
10424             postgres_interface="internal"
10425             POSTGRESQL_LIB=""
10426             POSTGRESQL_INC="%OVERRIDE_ME%"
10427             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10428         fi
10429     fi
10431     AC_MSG_CHECKING([PostgreSQL C interface])
10432     AC_MSG_RESULT([$postgres_interface])
10434     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10435         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10436         save_CFLAGS=$CFLAGS
10437         save_CPPFLAGS=$CPPFLAGS
10438         save_LIBS=$LIBS
10439         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10440         LIBS="${LIBS} ${POSTGRESQL_LIB}"
10441         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10442         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10443             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10444         CFLAGS=$save_CFLAGS
10445         CPPFLAGS=$save_CPPFLAGS
10446         LIBS=$save_LIBS
10447     fi
10448     BUILD_POSTGRESQL_SDBC=TRUE
10449 else
10450     AC_MSG_RESULT([no])
10452 AC_SUBST(WITH_KRB5)
10453 AC_SUBST(WITH_GSSAPI)
10454 AC_SUBST(GSSAPI_LIBS)
10455 AC_SUBST(KRB5_LIBS)
10456 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10457 AC_SUBST(SYSTEM_POSTGRESQL)
10458 AC_SUBST(POSTGRESQL_INC)
10459 AC_SUBST(POSTGRESQL_LIB)
10461 dnl ===================================================================
10462 dnl Check for Firebird stuff
10463 dnl ===================================================================
10464 ENABLE_FIREBIRD_SDBC=
10465 if test "$enable_firebird_sdbc" = "yes" ; then
10466     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10468     dnl ===================================================================
10469     dnl Check for system Firebird
10470     dnl ===================================================================
10471     AC_MSG_CHECKING([which Firebird to use])
10472     if test "$with_system_firebird" = "yes"; then
10473         AC_MSG_RESULT([external])
10474         SYSTEM_FIREBIRD=TRUE
10475         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10476         if test -z "$FIREBIRDCONFIG"; then
10477             AC_MSG_NOTICE([No fb_config -- using pkg-config])
10478             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10479                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10480             ])
10481             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10482         else
10483             AC_MSG_NOTICE([fb_config found])
10484             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10485             AC_MSG_CHECKING([for Firebird Client library])
10486             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10487             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10488             FilterLibs "${FIREBIRD_LIBS}"
10489             FIREBIRD_LIBS="${filteredlibs}"
10490         fi
10491         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10492         AC_MSG_CHECKING([Firebird version])
10493         if test -n "${FIREBIRD_VERSION}"; then
10494             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10495             if test "$FIREBIRD_MAJOR" -ge "3"; then
10496                 AC_MSG_RESULT([OK])
10497             else
10498                 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10499             fi
10500         else
10501             save_CFLAGS="${CFLAGS}"
10502             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10503             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10504 #if defined(FB_API_VER) && FB_API_VER == 30
10505 int fb_api_is_30(void) { return 0; }
10506 #else
10507 #error "Wrong Firebird API version"
10508 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10509             CFLAGS="$save_CFLAGS"
10510         fi
10511         ENABLE_FIREBIRD_SDBC=TRUE
10512         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10513     elif test "$enable_database_connectivity" = no; then
10514         AC_MSG_RESULT([none])
10515     elif test "$cross_compiling" = "yes"; then
10516         AC_MSG_RESULT([none])
10517     else
10518         dnl Embedded Firebird has version 3.0
10519         dnl We need libatomic_ops for any non X86/X64 system
10520         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10521             dnl ===================================================================
10522             dnl Check for system libatomic_ops
10523             dnl ===================================================================
10524             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10525             if test "$with_system_libatomic_ops" = "yes"; then
10526                 SYSTEM_LIBATOMIC_OPS=TRUE
10527                 AC_CHECK_HEADERS(atomic_ops.h, [],
10528                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10529             else
10530                 SYSTEM_LIBATOMIC_OPS=
10531                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10532                 LIBATOMIC_OPS_LIBS="-latomic_ops"
10533                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10534             fi
10535         fi
10537         AC_MSG_RESULT([internal])
10538         SYSTEM_FIREBIRD=
10539         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10540         FIREBIRD_LIBS="-lfbclient"
10542         if test "$with_system_libtommath" = "yes"; then
10543             SYSTEM_LIBTOMMATH=TRUE
10544             dnl check for tommath presence
10545             save_LIBS=$LIBS
10546             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10547             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10548             LIBS=$save_LIBS
10549         else
10550             SYSTEM_LIBTOMMATH=
10551             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10552             LIBTOMMATH_LIBS="-ltommath"
10553             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10554         fi
10556         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10557         ENABLE_FIREBIRD_SDBC=TRUE
10558         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10559     fi
10561 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10562 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10563 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10564 AC_SUBST(LIBATOMIC_OPS_LIBS)
10565 AC_SUBST(SYSTEM_FIREBIRD)
10566 AC_SUBST(FIREBIRD_CFLAGS)
10567 AC_SUBST(FIREBIRD_LIBS)
10568 AC_SUBST(SYSTEM_LIBTOMMATH)
10569 AC_SUBST(LIBTOMMATH_CFLAGS)
10570 AC_SUBST(LIBTOMMATH_LIBS)
10572 dnl ===================================================================
10573 dnl Check for system curl
10574 dnl ===================================================================
10575 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10577 dnl ===================================================================
10578 dnl Check for system boost
10579 dnl ===================================================================
10580 AC_MSG_CHECKING([which boost to use])
10581 if test "$with_system_boost" = "yes"; then
10582     AC_MSG_RESULT([external])
10583     SYSTEM_BOOST=TRUE
10584     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10585     AX_BOOST_DATE_TIME
10586     AX_BOOST_FILESYSTEM
10587     AX_BOOST_IOSTREAMS
10588     AX_BOOST_LOCALE
10589     AC_LANG_PUSH([C++])
10590     save_CXXFLAGS=$CXXFLAGS
10591     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10592     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10593        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10594     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10595        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10596     CXXFLAGS=$save_CXXFLAGS
10597     AC_LANG_POP([C++])
10598     # this is in m4/ax_boost_base.m4
10599     FilterLibs "${BOOST_LDFLAGS}"
10600     BOOST_LDFLAGS="${filteredlibs}"
10601 else
10602     AC_MSG_RESULT([internal])
10603     BUILD_TYPE="$BUILD_TYPE BOOST"
10604     SYSTEM_BOOST=
10605     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10606         # use warning-suppressing wrapper headers
10607         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10608     else
10609         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10610     fi
10612 AC_SUBST(SYSTEM_BOOST)
10614 dnl ===================================================================
10615 dnl Check for system mdds
10616 dnl ===================================================================
10617 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10618 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.0 >= 2.0.0])
10620 dnl ===================================================================
10621 dnl Check for system dragonbox
10622 dnl ===================================================================
10623 AC_MSG_CHECKING([which dragonbox to use])
10624 if test "$with_system_dragonbox" = "yes"; then
10625     AC_MSG_RESULT([external])
10626     SYSTEM_DRAGONBOX=TRUE
10627     AC_LANG_PUSH([C++])
10628     save_CPPFLAGS=$CPPFLAGS
10629     # This is where upstream installs to, unfortunately no .pc or so...
10630     DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.0.0
10631     CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10632     AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10633        [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10634     AC_LANG_POP([C++])
10635     CPPFLAGS=$save_CPPFLAGS
10636 else
10637     AC_MSG_RESULT([internal])
10638     BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10639     SYSTEM_DRAGONBOX=
10641 AC_SUBST([SYSTEM_DRAGONBOX])
10642 AC_SUBST([DRAGONBOX_CFLAGS])
10644 dnl ===================================================================
10645 dnl Check for system libfixmath
10646 dnl ===================================================================
10647 AC_MSG_CHECKING([which libfixmath to use])
10648 if test "$with_system_libfixmath" = "yes"; then
10649     AC_MSG_RESULT([external])
10650     SYSTEM_LIBFIXMATH=TRUE
10651     AC_LANG_PUSH([C++])
10652     AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10653        [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10654     AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10655     AC_LANG_POP([C++])
10656 else
10657     AC_MSG_RESULT([internal])
10658     SYSTEM_LIBFIXMATH=
10660 AC_SUBST([SYSTEM_LIBFIXMATH])
10662 dnl ===================================================================
10663 dnl Check for system glm
10664 dnl ===================================================================
10665 AC_MSG_CHECKING([which glm to use])
10666 if test "$with_system_glm" = "yes"; then
10667     AC_MSG_RESULT([external])
10668     SYSTEM_GLM=TRUE
10669     AC_LANG_PUSH([C++])
10670     AC_CHECK_HEADER([glm/glm.hpp], [],
10671        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10672     AC_LANG_POP([C++])
10673 else
10674     AC_MSG_RESULT([internal])
10675     BUILD_TYPE="$BUILD_TYPE GLM"
10676     SYSTEM_GLM=
10677     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10679 AC_SUBST([GLM_CFLAGS])
10680 AC_SUBST([SYSTEM_GLM])
10682 dnl ===================================================================
10683 dnl Check for system odbc
10684 dnl ===================================================================
10685 AC_MSG_CHECKING([which odbc headers to use])
10686 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
10687     AC_MSG_RESULT([external])
10688     SYSTEM_ODBC_HEADERS=TRUE
10690     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10691         save_CPPFLAGS=$CPPFLAGS
10692         find_winsdk
10693         PathFormat "$winsdktest"
10694         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"
10695         AC_CHECK_HEADER(sqlext.h, [],
10696             [AC_MSG_ERROR(odbc not found. install odbc)],
10697             [#include <windows.h>])
10698         CPPFLAGS=$save_CPPFLAGS
10699     else
10700         AC_CHECK_HEADER(sqlext.h, [],
10701             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10702     fi
10703 elif test "$enable_database_connectivity" = no; then
10704     AC_MSG_RESULT([none])
10705 else
10706     AC_MSG_RESULT([internal])
10707     SYSTEM_ODBC_HEADERS=
10709 AC_SUBST(SYSTEM_ODBC_HEADERS)
10711 dnl ===================================================================
10712 dnl Check for system NSS
10713 dnl ===================================================================
10714 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10715     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10716     AC_DEFINE(HAVE_FEATURE_NSS)
10717     ENABLE_NSS=TRUE
10718 elif test $_os != iOS ; then
10719     with_tls=openssl
10721 AC_SUBST(ENABLE_NSS)
10723 dnl ===================================================================
10724 dnl Enable LDAP support
10725 dnl ===================================================================
10727 if test "$test_openldap" = yes; then
10728     AC_MSG_CHECKING([whether to enable LDAP support])
10729     if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10730         AC_MSG_RESULT([yes])
10731         ENABLE_LDAP=TRUE
10732     else
10733         if test "$enable_ldap" != "yes"; then
10734             AC_MSG_RESULT([no])
10735         else
10736             AC_MSG_RESULT([no (needs NSS or system openldap)])
10737         fi
10738     fi
10740 dnl ===================================================================
10741 dnl Check for system openldap
10742 dnl ===================================================================
10744     if test "$ENABLE_LDAP" = TRUE; then
10745         AC_MSG_CHECKING([which openldap library to use])
10746         if test "$with_system_openldap" = yes; then
10747             AC_MSG_RESULT([external])
10748             SYSTEM_OPENLDAP=TRUE
10749             AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10750             AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10751             AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10752         else
10753             AC_MSG_RESULT([internal])
10754             BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10755         fi
10756     fi
10759 AC_SUBST(ENABLE_LDAP)
10760 AC_SUBST(SYSTEM_OPENLDAP)
10762 dnl ===================================================================
10763 dnl Check for TLS/SSL and cryptographic implementation to use
10764 dnl ===================================================================
10765 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10766 if test -n "$with_tls"; then
10767     case $with_tls in
10768     openssl)
10769         AC_DEFINE(USE_TLS_OPENSSL)
10770         TLS=OPENSSL
10771         AC_MSG_RESULT([$TLS])
10773         if test "$enable_openssl" != "yes"; then
10774             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10775         fi
10777         # warn that OpenSSL has been selected but not all TLS code has this option
10778         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10779         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10780         ;;
10781     nss)
10782         AC_DEFINE(USE_TLS_NSS)
10783         TLS=NSS
10784         AC_MSG_RESULT([$TLS])
10785         ;;
10786     no)
10787         AC_MSG_RESULT([none])
10788         AC_MSG_WARN([Skipping TLS/SSL])
10789         ;;
10790     *)
10791         AC_MSG_RESULT([])
10792         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10793 openssl - OpenSSL
10794 nss - Mozilla's Network Security Services (NSS)
10795     ])
10796         ;;
10797     esac
10798 else
10799     # default to using NSS, it results in smaller oox lib
10800     AC_DEFINE(USE_TLS_NSS)
10801     TLS=NSS
10802     AC_MSG_RESULT([$TLS])
10804 AC_SUBST(TLS)
10806 dnl ===================================================================
10807 dnl Check for system sane
10808 dnl ===================================================================
10809 AC_MSG_CHECKING([which sane header to use])
10810 if test "$with_system_sane" = "yes"; then
10811     AC_MSG_RESULT([external])
10812     AC_CHECK_HEADER(sane/sane.h, [],
10813       [AC_MSG_ERROR(sane not found. install sane)], [])
10814 else
10815     AC_MSG_RESULT([internal])
10816     BUILD_TYPE="$BUILD_TYPE SANE"
10819 dnl ===================================================================
10820 dnl Check for system icu
10821 dnl ===================================================================
10822 ICU_MAJOR=72
10823 ICU_MINOR=1
10824 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10825 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10826 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10827 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10828 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10829 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 4.6])
10830 if test "$SYSTEM_ICU" = TRUE; then
10831     AC_LANG_PUSH([C++])
10832     AC_MSG_CHECKING([for unicode/rbbi.h])
10833     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10834     AC_LANG_POP([C++])
10836     ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10837     ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10838     ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10840     if test "$ICU_MAJOR" -ge 50; then
10841         AC_MSG_NOTICE([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10842         ICU_MINOR=
10843     fi
10845     if test "$CROSS_COMPILING" != TRUE; then
10846         # using the system icu tools can lead to version confusion, use the
10847         # ones from the build environment when cross-compiling
10848         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10849         if test -z "$SYSTEM_GENBRK"; then
10850             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10851         fi
10852         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10853         if test -z "$SYSTEM_GENCCODE"; then
10854             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10855         fi
10856         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10857         if test -z "$SYSTEM_GENCMN"; then
10858             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10859         fi
10860         if test "$ICU_MAJOR" -lt 49; then
10861             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10862             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10863             ICU_RECLASSIFIED_HEBREW_LETTER=
10864         fi
10865     fi
10867 if test "$ICU_MAJOR" -ge "59"; then
10868     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10869     # with -std=c++11 but not all external libraries can be built with that,
10870     # for those use a bit-compatible typedef uint16_t UChar; see
10871     # icu/source/common/unicode/umachine.h
10872     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10873 else
10874     ICU_UCHAR_TYPE=""
10876 AC_SUBST(SYSTEM_GENBRK)
10877 AC_SUBST(SYSTEM_GENCCODE)
10878 AC_SUBST(SYSTEM_GENCMN)
10879 AC_SUBST(ICU_MAJOR)
10880 AC_SUBST(ICU_MINOR)
10881 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10882 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10883 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10884 AC_SUBST(ICU_UCHAR_TYPE)
10886 dnl ==================================================================
10887 dnl Breakpad
10888 dnl ==================================================================
10889 DEFAULT_CRASHDUMP_VALUE="true"
10890 AC_MSG_CHECKING([whether to enable breakpad])
10891 if test "$enable_breakpad" != yes; then
10892     AC_MSG_RESULT([no])
10893 else
10894     AC_MSG_RESULT([yes])
10895     ENABLE_BREAKPAD="TRUE"
10896     AC_DEFINE(ENABLE_BREAKPAD)
10897     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10898     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10900     AC_MSG_CHECKING([for disable crash dump])
10901     if test "$enable_crashdump" = no; then
10902         DEFAULT_CRASHDUMP_VALUE="false"
10903         AC_MSG_RESULT([yes])
10904     else
10905        AC_MSG_RESULT([no])
10906     fi
10908     AC_MSG_CHECKING([for crashreport config])
10909     if test "$with_symbol_config" = "no"; then
10910         BREAKPAD_SYMBOL_CONFIG="invalid"
10911         AC_MSG_RESULT([no])
10912     else
10913         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10914         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10915         AC_MSG_RESULT([yes])
10916     fi
10917     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10919 AC_SUBST(ENABLE_BREAKPAD)
10920 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10922 dnl ===================================================================
10923 dnl Orcus
10924 dnl ===================================================================
10925 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10926 if test "$with_system_orcus" != "yes"; then
10927     if test "$SYSTEM_BOOST" = "TRUE"; then
10928         dnl Link with Boost.System
10929         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10930         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10931         dnl in documentation has no effect.
10932         AX_BOOST_SYSTEM
10933     fi
10935 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10936 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10937 AC_SUBST([BOOST_SYSTEM_LIB])
10938 AC_SUBST(SYSTEM_LIBORCUS)
10940 dnl ===================================================================
10941 dnl HarfBuzz
10942 dnl ===================================================================
10944 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10945 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10946 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10948 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10949 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10950 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 2.6.0])
10952 if test "$COM" = "MSC"; then # override the above
10953     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10954     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10957 if test "$with_system_harfbuzz" = "yes"; then
10958     if test "$with_system_graphite" = "no"; then
10959         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10960     fi
10961     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10962     save_LIBS="$LIBS"
10963     save_CFLAGS="$CFLAGS"
10964     LIBS="$LIBS $HARFBUZZ_LIBS"
10965     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10966     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10967     LIBS="$save_LIBS"
10968     CFLAGS="$save_CFLAGS"
10969 else
10970     if test "$with_system_graphite" = "yes"; then
10971         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10972     fi
10975 if test "$USING_X11" = TRUE; then
10976     AC_PATH_X
10977     AC_PATH_XTRA
10978     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10980     if test -z "$x_includes"; then
10981         x_includes="default_x_includes"
10982     fi
10983     if test -z "$x_libraries"; then
10984         x_libraries="default_x_libraries"
10985     fi
10986     CFLAGS="$CFLAGS $X_CFLAGS"
10987     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10988     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10989 else
10990     x_includes="no_x_includes"
10991     x_libraries="no_x_libraries"
10994 if test "$USING_X11" = TRUE; then
10995     dnl ===================================================================
10996     dnl Check for extension headers
10997     dnl ===================================================================
10998     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10999      [#include <X11/extensions/shape.h>])
11001     # vcl needs ICE and SM
11002     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
11003     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
11004         [AC_MSG_ERROR(ICE library not found)])
11005     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
11006     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
11007         [AC_MSG_ERROR(SM library not found)])
11010 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
11011     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
11012     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
11015 dnl ===================================================================
11016 dnl Check for system Xrender
11017 dnl ===================================================================
11018 AC_MSG_CHECKING([whether to use Xrender])
11019 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
11020     AC_MSG_RESULT([yes])
11021     PKG_CHECK_MODULES(XRENDER, xrender)
11022     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11023     FilterLibs "${XRENDER_LIBS}"
11024     XRENDER_LIBS="${filteredlibs}"
11025     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
11026       [AC_MSG_ERROR(libXrender not found or functional)], [])
11027     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
11028       [AC_MSG_ERROR(Xrender not found. install X)], [])
11029 else
11030     AC_MSG_RESULT([no])
11032 AC_SUBST(XRENDER_CFLAGS)
11033 AC_SUBST(XRENDER_LIBS)
11035 dnl ===================================================================
11036 dnl Check for XRandr
11037 dnl ===================================================================
11038 AC_MSG_CHECKING([whether to enable RandR support])
11039 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
11040     AC_MSG_RESULT([yes])
11041     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
11042     if test "$ENABLE_RANDR" != "TRUE"; then
11043         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
11044                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
11045         XRANDR_CFLAGS=" "
11046         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
11047           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
11048         XRANDR_LIBS="-lXrandr "
11049         ENABLE_RANDR="TRUE"
11050     fi
11051     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11052     FilterLibs "${XRANDR_LIBS}"
11053     XRANDR_LIBS="${filteredlibs}"
11054 else
11055     ENABLE_RANDR=""
11056     AC_MSG_RESULT([no])
11058 AC_SUBST(XRANDR_CFLAGS)
11059 AC_SUBST(XRANDR_LIBS)
11060 AC_SUBST(ENABLE_RANDR)
11062 if test -z "$with_webdav"; then
11063     with_webdav=$test_webdav
11066 AC_MSG_CHECKING([for WebDAV support])
11067 case "$with_webdav" in
11069     AC_MSG_RESULT([no])
11070     WITH_WEBDAV=""
11071     ;;
11073     AC_MSG_RESULT([yes])
11074     # curl is already mandatory (almost) and checked elsewhere
11075     if test "$enable_curl" = "no"; then
11076         AC_MSG_ERROR(["--with-webdav conflicts with --disable-curl"])
11077     fi
11078     WITH_WEBDAV=TRUE
11079     ;;
11080 esac
11081 AC_SUBST(WITH_WEBDAV)
11083 dnl ===================================================================
11084 dnl Check for disabling cve_tests
11085 dnl ===================================================================
11086 AC_MSG_CHECKING([whether to execute CVE tests])
11087 # If not explicitly enabled or disabled, default
11088 if test -z "$enable_cve_tests"; then
11089     case "$OS" in
11090     WNT)
11091         # Default cves off for Windows with its wild and wonderful
11092         # variety of AV software kicking in and panicking
11093         enable_cve_tests=no
11094         ;;
11095     *)
11096         # otherwise yes
11097         enable_cve_tests=yes
11098         ;;
11099     esac
11101 if test "$enable_cve_tests" = "no"; then
11102     AC_MSG_RESULT([no])
11103     DISABLE_CVE_TESTS=TRUE
11104     AC_SUBST(DISABLE_CVE_TESTS)
11105 else
11106     AC_MSG_RESULT([yes])
11109 dnl ===================================================================
11110 dnl Check for system openssl
11111 dnl ===================================================================
11112 ENABLE_OPENSSL=
11113 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11114 if test "$enable_openssl" = "yes"; then
11115     AC_MSG_RESULT([no])
11116     ENABLE_OPENSSL=TRUE
11117     if test "$_os" = Darwin ; then
11118         # OpenSSL is deprecated when building for 10.7 or later.
11119         #
11120         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11121         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11123         with_system_openssl=no
11124         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11125     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11126             && test "$with_system_openssl" != "no"; then
11127         with_system_openssl=yes
11128         SYSTEM_OPENSSL=TRUE
11129         OPENSSL_CFLAGS=
11130         OPENSSL_LIBS="-lssl -lcrypto"
11131     else
11132         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11133     fi
11134     if test "$with_system_openssl" = "yes"; then
11135         AC_MSG_CHECKING([whether openssl supports SHA512])
11136         AC_LANG_PUSH([C])
11137         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11138             SHA512_CTX context;
11139 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11140         AC_LANG_POP(C)
11141     fi
11142 else
11143     AC_MSG_RESULT([yes])
11145     # warn that although OpenSSL is disabled, system libraries may depend on it
11146     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11147     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11150 AC_SUBST([ENABLE_OPENSSL])
11152 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11153     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11154         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11155         enable_cipher_openssl_backend=no
11156     else
11157         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11158     fi
11160 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11161 ENABLE_CIPHER_OPENSSL_BACKEND=
11162 if test "$enable_cipher_openssl_backend" = yes; then
11163     AC_MSG_RESULT([yes])
11164     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11165 else
11166     AC_MSG_RESULT([no])
11168 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11170 dnl ===================================================================
11171 dnl Select the crypto backends used by LO
11172 dnl ===================================================================
11174 if test "$build_crypto" = yes; then
11175     if test "$OS" = WNT; then
11176         BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11177         AC_DEFINE([USE_CRYPTO_MSCAPI])
11178     elif test "$ENABLE_NSS" = TRUE; then
11179         BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11180         AC_DEFINE([USE_CRYPTO_NSS])
11181     fi
11184 dnl ===================================================================
11185 dnl Check for system redland
11186 dnl ===================================================================
11187 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11188 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11189 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11190 if test "$with_system_redland" = "yes"; then
11191     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11192             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11193 else
11194     RAPTOR_MAJOR="0"
11195     RASQAL_MAJOR="3"
11196     REDLAND_MAJOR="0"
11198 AC_SUBST(RAPTOR_MAJOR)
11199 AC_SUBST(RASQAL_MAJOR)
11200 AC_SUBST(REDLAND_MAJOR)
11202 dnl ===================================================================
11203 dnl Check for system hunspell
11204 dnl ===================================================================
11205 AC_MSG_CHECKING([which libhunspell to use])
11206 if test "$with_system_hunspell" = "yes"; then
11207     AC_MSG_RESULT([external])
11208     SYSTEM_HUNSPELL=TRUE
11209     AC_LANG_PUSH([C++])
11210     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11211     if test "$HUNSPELL_PC" != "TRUE"; then
11212         AC_CHECK_HEADER(hunspell.hxx, [],
11213             [
11214             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11215             [AC_MSG_ERROR(hunspell headers not found.)], [])
11216             ], [])
11217         AC_CHECK_LIB([hunspell], [main], [:],
11218            [ AC_MSG_ERROR(hunspell library not found.) ], [])
11219         HUNSPELL_LIBS=-lhunspell
11220     fi
11221     AC_LANG_POP([C++])
11222     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11223     FilterLibs "${HUNSPELL_LIBS}"
11224     HUNSPELL_LIBS="${filteredlibs}"
11225 else
11226     AC_MSG_RESULT([internal])
11227     SYSTEM_HUNSPELL=
11228     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11229     if test "$COM" = "MSC"; then
11230         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11231     else
11232         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11233     fi
11234     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11236 AC_SUBST(SYSTEM_HUNSPELL)
11237 AC_SUBST(HUNSPELL_CFLAGS)
11238 AC_SUBST(HUNSPELL_LIBS)
11240 dnl ===================================================================
11241 dnl Check for system zxing
11242 dnl ===================================================================
11243 AC_MSG_CHECKING([whether to use zxing])
11244 if test "$enable_zxing" = "no"; then
11245     AC_MSG_RESULT([no])
11246     ENABLE_ZXING=
11247     SYSTEM_ZXING=
11248 else
11249     AC_MSG_RESULT([yes])
11250     ENABLE_ZXING=TRUE
11251     AC_MSG_CHECKING([which libzxing to use])
11252     if test "$with_system_zxing" = "yes"; then
11253         AC_MSG_RESULT([external])
11254         SYSTEM_ZXING=TRUE
11255         ZXING_CFLAGS=
11256         AC_LANG_PUSH([C++])
11257         save_CXXFLAGS=$CXXFLAGS
11258         save_IFS=$IFS
11259         IFS=$P_SEP
11260         for i in $CPLUS_INCLUDE_PATH /usr/include; do
11261             dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11262             dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11263             dnl unsetting follows the advice at <http://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11264             dnl a=commit;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11265             dnl unsetting IFS."):
11266             IFS=$save_IFS
11267             dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11268             dnl ignore them here:
11269             if test -z "$i"; then
11270                 continue
11271             fi
11272             dnl TODO: White space in $i would cause problems:
11273             CXXFLAGS="$save_CXXFLAGS -I$i/ZXing"
11274             AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11275                 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11276         done
11277         CXXFLAGS=$save_CXXFLAGS
11278         if test -z "$ZXING_CFLAGS"; then
11279             AC_MSG_ERROR(zxing headers not found.)
11280         fi
11281         AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11282             [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11283             [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11284         AC_LANG_POP([C++])
11285         ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11286         FilterLibs "${ZXING_LIBS}"
11287         ZXING_LIBS="${filteredlibs}"
11288     else
11289         AC_MSG_RESULT([internal])
11290         SYSTEM_ZXING=
11291         BUILD_TYPE="$BUILD_TYPE ZXING"
11292     fi
11293     if test "$ENABLE_ZXING" = TRUE; then
11294         AC_DEFINE(ENABLE_ZXING)
11295     fi
11297 AC_SUBST(SYSTEM_ZXING)
11298 AC_SUBST(ENABLE_ZXING)
11299 AC_SUBST(ZXING_CFLAGS)
11300 AC_SUBST(ZXING_LIBS)
11302 dnl ===================================================================
11303 dnl Check for system box2d
11304 dnl ===================================================================
11305 AC_MSG_CHECKING([which box2d to use])
11306 if test "$with_system_box2d" = "yes"; then
11307     AC_MSG_RESULT([external])
11308     SYSTEM_BOX2D=TRUE
11309     AC_LANG_PUSH([C++])
11310     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11311         [BOX2D_H_FOUND='FALSE'])
11312     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11313         _BOX2D_LIB=box2d
11314         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11315     else
11316         # fail this. there's no other alternative to check when we are here.
11317         AC_CHECK_HEADER([Box2D/Box2D.h], [],
11318             [AC_MSG_ERROR(box2d headers not found.)])
11319         _BOX2D_LIB=Box2D
11320         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11321     fi
11322     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11323         [ AC_MSG_ERROR(box2d library not found.) ], [])
11324     BOX2D_LIBS=-l$_BOX2D_LIB
11325     AC_LANG_POP([C++])
11326     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11327     FilterLibs "${BOX2D_LIBS}"
11328     BOX2D_LIBS="${filteredlibs}"
11329 else
11330     AC_MSG_RESULT([internal])
11331     SYSTEM_BOX2D=
11332     BUILD_TYPE="$BUILD_TYPE BOX2D"
11334 AC_SUBST(SYSTEM_BOX2D)
11335 AC_SUBST(BOX2D_CFLAGS)
11336 AC_SUBST(BOX2D_LIBS)
11338 dnl ===================================================================
11339 dnl Checking for altlinuxhyph
11340 dnl ===================================================================
11341 AC_MSG_CHECKING([which altlinuxhyph to use])
11342 if test "$with_system_altlinuxhyph" = "yes"; then
11343     AC_MSG_RESULT([external])
11344     SYSTEM_HYPH=TRUE
11345     AC_CHECK_HEADER(hyphen.h, [],
11346        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11347     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11348        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11349        [#include <hyphen.h>])
11350     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11351         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11352     if test -z "$HYPHEN_LIB"; then
11353         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11354            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11355     fi
11356     if test -z "$HYPHEN_LIB"; then
11357         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11358            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11359     fi
11360 else
11361     AC_MSG_RESULT([internal])
11362     SYSTEM_HYPH=
11363     BUILD_TYPE="$BUILD_TYPE HYPHEN"
11364     if test "$COM" = "MSC"; then
11365         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11366     else
11367         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11368     fi
11370 AC_SUBST(SYSTEM_HYPH)
11371 AC_SUBST(HYPHEN_LIB)
11373 dnl ===================================================================
11374 dnl Checking for mythes
11375 dnl ===================================================================
11376 AC_MSG_CHECKING([which mythes to use])
11377 if test "$with_system_mythes" = "yes"; then
11378     AC_MSG_RESULT([external])
11379     SYSTEM_MYTHES=TRUE
11380     AC_LANG_PUSH([C++])
11381     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11382     if test "$MYTHES_PKGCONFIG" = "no"; then
11383         AC_CHECK_HEADER(mythes.hxx, [],
11384             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11385         AC_CHECK_LIB([mythes-1.2], [main], [:],
11386             [ MYTHES_FOUND=no], [])
11387     if test "$MYTHES_FOUND" = "no"; then
11388         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11389                 [ MYTHES_FOUND=no], [])
11390     fi
11391     if test "$MYTHES_FOUND" = "no"; then
11392         AC_MSG_ERROR([mythes library not found!.])
11393     fi
11394     fi
11395     AC_LANG_POP([C++])
11396     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11397     FilterLibs "${MYTHES_LIBS}"
11398     MYTHES_LIBS="${filteredlibs}"
11399 else
11400     AC_MSG_RESULT([internal])
11401     SYSTEM_MYTHES=
11402     BUILD_TYPE="$BUILD_TYPE MYTHES"
11403     if test "$COM" = "MSC"; then
11404         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11405     else
11406         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11407     fi
11409 AC_SUBST(SYSTEM_MYTHES)
11410 AC_SUBST(MYTHES_CFLAGS)
11411 AC_SUBST(MYTHES_LIBS)
11413 dnl ===================================================================
11414 dnl How should we build the linear programming solver ?
11415 dnl ===================================================================
11417 ENABLE_COINMP=
11418 AC_MSG_CHECKING([whether to build with CoinMP])
11419 if test "$enable_coinmp" != "no"; then
11420     ENABLE_COINMP=TRUE
11421     AC_MSG_RESULT([yes])
11422     if test "$with_system_coinmp" = "yes"; then
11423         SYSTEM_COINMP=TRUE
11424         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11425         FilterLibs "${COINMP_LIBS}"
11426         COINMP_LIBS="${filteredlibs}"
11427     else
11428         BUILD_TYPE="$BUILD_TYPE COINMP"
11429     fi
11430 else
11431     AC_MSG_RESULT([no])
11433 AC_SUBST(ENABLE_COINMP)
11434 AC_SUBST(SYSTEM_COINMP)
11435 AC_SUBST(COINMP_CFLAGS)
11436 AC_SUBST(COINMP_LIBS)
11438 ENABLE_LPSOLVE=
11439 AC_MSG_CHECKING([whether to build with lpsolve])
11440 if test "$enable_lpsolve" != "no"; then
11441     ENABLE_LPSOLVE=TRUE
11442     AC_MSG_RESULT([yes])
11443 else
11444     AC_MSG_RESULT([no])
11446 AC_SUBST(ENABLE_LPSOLVE)
11448 if test "$ENABLE_LPSOLVE" = TRUE; then
11449     AC_MSG_CHECKING([which lpsolve to use])
11450     if test "$with_system_lpsolve" = "yes"; then
11451         AC_MSG_RESULT([external])
11452         SYSTEM_LPSOLVE=TRUE
11453         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11454            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11455         save_LIBS=$LIBS
11456         # some systems need this. Like Ubuntu...
11457         AC_CHECK_LIB(m, floor)
11458         AC_CHECK_LIB(dl, dlopen)
11459         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11460             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11461         LIBS=$save_LIBS
11462     else
11463         AC_MSG_RESULT([internal])
11464         SYSTEM_LPSOLVE=
11465         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11466     fi
11468 AC_SUBST(SYSTEM_LPSOLVE)
11470 dnl ===================================================================
11471 dnl Checking for libexttextcat
11472 dnl ===================================================================
11473 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11474 if test "$with_system_libexttextcat" = "yes"; then
11475     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11477 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11479 dnl ===================================================================
11480 dnl Checking for libnumbertext
11481 dnl ===================================================================
11482 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11483 if test "$with_system_libnumbertext" = "yes"; then
11484     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11485     SYSTEM_LIBNUMBERTEXT=YES
11486 else
11487     SYSTEM_LIBNUMBERTEXT=
11489 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11490 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11492 dnl ***************************************
11493 dnl testing libc version for Linux...
11494 dnl ***************************************
11495 if test "$_os" = "Linux"; then
11496     AC_MSG_CHECKING([whether the libc is recent enough])
11497     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11498     #include <features.h>
11499     #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11500     #error glibc >= 2.1 is required
11501     #endif
11502     ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11505 dnl =========================================
11506 dnl Check for uuidgen
11507 dnl =========================================
11508 if test "$_os" = "WINNT"; then
11509     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11510     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11511     UUIDGEN=uuidgen.exe
11512     AC_SUBST(UUIDGEN)
11513 else
11514     AC_PATH_PROG([UUIDGEN], [uuidgen])
11515     if test -z "$UUIDGEN"; then
11516         AC_MSG_WARN([uuid is needed for building installation sets])
11517     fi
11520 dnl ***************************************
11521 dnl Checking for bison and flex
11522 dnl ***************************************
11523 AC_PATH_PROG(BISON, bison)
11524 if test -z "$BISON"; then
11525     AC_MSG_ERROR([no bison found in \$PATH, install it])
11526 else
11527     AC_MSG_CHECKING([the bison version])
11528     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11529     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11530     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11531     dnl cause
11532     dnl
11533     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]
11534     dnl   typedef union YYSTYPE
11535     dnl           ~~~~~~^~~~~~~
11536     dnl
11537     dnl while at least 3.4.1 is know to be good:
11538     if test "$COMPILER_PLUGINS" = TRUE; then
11539         if test "$_bison_longver" -lt 2004; then
11540             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11541         fi
11542     else
11543         if test "$_bison_longver" -lt 2000; then
11544             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11545         fi
11546     fi
11548 AC_SUBST([BISON])
11550 AC_PATH_PROG(FLEX, flex)
11551 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11552     FLEX=`cygpath -m $FLEX`
11554 if test -z "$FLEX"; then
11555     AC_MSG_ERROR([no flex found in \$PATH, install it])
11556 else
11557     AC_MSG_CHECKING([the flex version])
11558     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11559     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11560         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11561     fi
11563 AC_SUBST([FLEX])
11565 AC_PATH_PROG(DIFF, diff)
11566 if test -z "$DIFF"; then
11567     AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11569 AC_SUBST([DIFF])
11571 AC_PATH_PROG(UNIQ, uniq)
11572 if test -z "$UNIQ"; then
11573     AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11575 AC_SUBST([UNIQ])
11577 dnl ***************************************
11578 dnl Checking for patch
11579 dnl ***************************************
11580 AC_PATH_PROG(PATCH, patch)
11581 if test -z "$PATCH"; then
11582     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11585 dnl On Solaris or macOS, check if --with-gnu-patch was used
11586 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11587     if test -z "$with_gnu_patch"; then
11588         GNUPATCH=$PATCH
11589     else
11590         if test -x "$with_gnu_patch"; then
11591             GNUPATCH=$with_gnu_patch
11592         else
11593             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11594         fi
11595     fi
11597     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11598     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11599         AC_MSG_RESULT([yes])
11600     else
11601         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11602     fi
11603 else
11604     GNUPATCH=$PATCH
11607 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11608     GNUPATCH=`cygpath -m $GNUPATCH`
11611 dnl We also need to check for --with-gnu-cp
11613 if test -z "$with_gnu_cp"; then
11614     # check the place where the good stuff is hidden on Solaris...
11615     if test -x /usr/gnu/bin/cp; then
11616         GNUCP=/usr/gnu/bin/cp
11617     else
11618         AC_PATH_PROGS(GNUCP, gnucp cp)
11619     fi
11620     if test -z $GNUCP; then
11621         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11622     fi
11623 else
11624     if test -x "$with_gnu_cp"; then
11625         GNUCP=$with_gnu_cp
11626     else
11627         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11628     fi
11631 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11632     GNUCP=`cygpath -m $GNUCP`
11635 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11636 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11637     AC_MSG_RESULT([yes])
11638 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11639     AC_MSG_RESULT([yes])
11640 else
11641     case "$build_os" in
11642     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11643         x_GNUCP=[\#]
11644         GNUCP=''
11645         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11646         ;;
11647     *)
11648         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11649         ;;
11650     esac
11653 AC_SUBST(GNUPATCH)
11654 AC_SUBST(GNUCP)
11655 AC_SUBST(x_GNUCP)
11657 dnl ***************************************
11658 dnl testing assembler path
11659 dnl ***************************************
11660 ML_EXE=""
11661 if test "$_os" = "WINNT"; then
11662     case "$WIN_HOST_ARCH" in
11663     x86) assembler=ml.exe ;;
11664     x64) assembler=ml64.exe ;;
11665     arm64) assembler=armasm64.exe ;;
11666     esac
11668     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11669     if test -f "$MSVC_HOST_PATH/$assembler"; then
11670         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11671         AC_MSG_RESULT([$ML_EXE])
11672     else
11673         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11674     fi
11677 AC_SUBST(ML_EXE)
11679 dnl ===================================================================
11680 dnl We need zip and unzip
11681 dnl ===================================================================
11682 AC_PATH_PROG(ZIP, zip)
11683 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11684 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11685     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],,)
11688 AC_PATH_PROG(UNZIP, unzip)
11689 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11691 dnl ===================================================================
11692 dnl Zip must be a specific type for different build types.
11693 dnl ===================================================================
11694 if test $build_os = cygwin; then
11695     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11696         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11697     fi
11700 dnl ===================================================================
11701 dnl We need touch with -h option support.
11702 dnl ===================================================================
11703 AC_PATH_PROG(TOUCH, touch)
11704 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11705 touch "$WARNINGS_FILE"
11706 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11707     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],,)
11710 dnl ===================================================================
11711 dnl Check for system epoxy
11712 dnl ===================================================================
11713 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11714 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11716 dnl ===================================================================
11717 dnl Set vcl option: coordinate device in double or sal_Int32
11718 dnl ===================================================================
11720 AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11721 if test "$enable_float_device_pixel" = yes; then
11722     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11723     AC_MSG_RESULT([double])
11724 else
11725     AC_MSG_RESULT([sal_Int32])
11728 dnl ===================================================================
11729 dnl Show which vclplugs will be built.
11730 dnl ===================================================================
11731 R=""
11733 libo_ENABLE_VCLPLUG([gen])
11734 libo_ENABLE_VCLPLUG([gtk3])
11735 libo_ENABLE_VCLPLUG([gtk3_kde5])
11736 libo_ENABLE_VCLPLUG([gtk4])
11737 libo_ENABLE_VCLPLUG([kf5])
11738 libo_ENABLE_VCLPLUG([qt5])
11739 libo_ENABLE_VCLPLUG([qt6])
11741 if test "$_os" = "WINNT"; then
11742     R="$R win"
11743 elif test "$_os" = "Darwin"; then
11744     R="$R osx"
11745 elif test "$_os" = "iOS"; then
11746     R="ios"
11747 elif test "$_os" = Android; then
11748     R="android"
11751 build_vcl_plugins="$R"
11752 if test -z "$build_vcl_plugins"; then
11753     build_vcl_plugins=" none"
11755 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11756 VCL_PLUGIN_INFO=$R
11757 AC_SUBST([VCL_PLUGIN_INFO])
11759 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11760     AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11763 dnl ===================================================================
11764 dnl Check for GTK libraries
11765 dnl ===================================================================
11767 GTK3_CFLAGS=""
11768 GTK3_LIBS=""
11769 ENABLE_GTKTILEDVIEWER=""
11770 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11771     if test "$with_system_cairo" = no; then
11772         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.'
11773     fi
11774     : ${with_system_cairo:=yes}
11775     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)
11776     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11777     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11778     FilterLibs "${GTK3_LIBS}"
11779     GTK3_LIBS="${filteredlibs}"
11781     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11782     if test "$with_system_epoxy" != "yes"; then
11783         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11784         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11785                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11786     fi
11787 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11788     PathFormat "${with_gtk3_build}/lib/pkgconfig"
11789     if test "$build_os" = "cygwin"; then
11790         dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11791         formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11792     fi
11794     PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11795     PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11796     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11797     FilterLibs "${GTK3_LIBS}"
11798     GTK3_LIBS="${filteredlibs}"
11799     ENABLE_GTKTILEDVIEWER="yes"
11801 AC_SUBST(GTK3_LIBS)
11802 AC_SUBST(GTK3_CFLAGS)
11803 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11805 GTK4_CFLAGS=""
11806 GTK4_LIBS=""
11807 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11808     if test "$with_system_cairo" = no; then
11809         add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11810     fi
11811     : ${with_system_cairo:=yes}
11812     PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11813     GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11814     GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11815     FilterLibs "${GTK4_LIBS}"
11816     GTK4_LIBS="${filteredlibs}"
11818     dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11819     if test "$with_system_epoxy" != "yes"; then
11820         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11821         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11822                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11823     fi
11825 AC_SUBST(GTK4_LIBS)
11826 AC_SUBST(GTK4_CFLAGS)
11828 if test "$enable_introspection" = yes; then
11829     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11830         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11831     else
11832         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11833     fi
11836 dnl ===================================================================
11837 dnl check for dbus support
11838 dnl ===================================================================
11839 ENABLE_DBUS=""
11840 DBUS_CFLAGS=""
11841 DBUS_LIBS=""
11842 DBUS_GLIB_CFLAGS=""
11843 DBUS_GLIB_LIBS=""
11844 DBUS_HAVE_GLIB=""
11846 if test "$enable_dbus" = "no"; then
11847     test_dbus=no
11850 AC_MSG_CHECKING([whether to enable DBUS support])
11851 if test "$test_dbus" = "yes"; then
11852     ENABLE_DBUS="TRUE"
11853     AC_MSG_RESULT([yes])
11854     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11855     AC_DEFINE(ENABLE_DBUS)
11856     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11857     FilterLibs "${DBUS_LIBS}"
11858     DBUS_LIBS="${filteredlibs}"
11860     # Glib is needed for BluetoothServer
11861     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11862     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11863         [
11864             DBUS_HAVE_GLIB="TRUE"
11865             AC_DEFINE(DBUS_HAVE_GLIB,1)
11866         ],
11867         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11868     )
11869 else
11870     AC_MSG_RESULT([no])
11873 AC_SUBST(ENABLE_DBUS)
11874 AC_SUBST(DBUS_CFLAGS)
11875 AC_SUBST(DBUS_LIBS)
11876 AC_SUBST(DBUS_GLIB_CFLAGS)
11877 AC_SUBST(DBUS_GLIB_LIBS)
11878 AC_SUBST(DBUS_HAVE_GLIB)
11880 AC_MSG_CHECKING([whether to enable Impress remote control])
11881 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11882     AC_MSG_RESULT([yes])
11883     ENABLE_SDREMOTE=TRUE
11884     SDREMOTE_ENTITLEMENT="      <key>com.apple.security.network.server</key>
11885         <true/>"
11886     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11888     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11889         # The Bluetooth code doesn't compile with macOS SDK 10.15
11890         if test "$enable_sdremote_bluetooth" = yes; then
11891             AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11892         fi
11893         add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11894         enable_sdremote_bluetooth=no
11895     fi
11896     # If not explicitly enabled or disabled, default
11897     if test -z "$enable_sdremote_bluetooth"; then
11898         case "$OS" in
11899         LINUX|MACOSX|WNT)
11900             # Default to yes for these
11901             enable_sdremote_bluetooth=yes
11902             ;;
11903         *)
11904             # otherwise no
11905             enable_sdremote_bluetooth=no
11906             ;;
11907         esac
11908     fi
11909     # $enable_sdremote_bluetooth is guaranteed non-empty now
11911     if test "$enable_sdremote_bluetooth" != "no"; then
11912         if test "$OS" = "LINUX"; then
11913             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11914                 AC_MSG_RESULT([yes])
11915                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11916                 dnl ===================================================================
11917                 dnl Check for system bluez
11918                 dnl ===================================================================
11919                 AC_MSG_CHECKING([which Bluetooth header to use])
11920                 if test "$with_system_bluez" = "yes"; then
11921                     AC_MSG_RESULT([external])
11922                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11923                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11924                     SYSTEM_BLUEZ=TRUE
11925                 else
11926                     AC_MSG_RESULT([internal])
11927                     SYSTEM_BLUEZ=
11928                 fi
11929             else
11930                 AC_MSG_RESULT([no, dbus disabled])
11931                 ENABLE_SDREMOTE_BLUETOOTH=
11932                 SYSTEM_BLUEZ=
11933             fi
11934         else
11935             AC_MSG_RESULT([yes])
11936             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11937             SYSTEM_BLUEZ=
11938             SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11939         <key>com.apple.security.device.bluetooth</key>
11940         <true/>"
11941         fi
11942     else
11943         AC_MSG_RESULT([no])
11944         ENABLE_SDREMOTE_BLUETOOTH=
11945         SYSTEM_BLUEZ=
11946     fi
11947 else
11948     ENABLE_SDREMOTE=
11949     SYSTEM_BLUEZ=
11950     AC_MSG_RESULT([no])
11952 AC_SUBST(ENABLE_SDREMOTE)
11953 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11954 AC_SUBST(SDREMOTE_ENTITLEMENT)
11955 AC_SUBST(SYSTEM_BLUEZ)
11957 dnl ===================================================================
11958 dnl Check whether to enable GIO support
11959 dnl ===================================================================
11960 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11961     AC_MSG_CHECKING([whether to enable GIO support])
11962     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11963         dnl Need at least 2.26 for the dbus support.
11964         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11965                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11966         if test "$ENABLE_GIO" = "TRUE"; then
11967             AC_DEFINE(ENABLE_GIO)
11968             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11969             FilterLibs "${GIO_LIBS}"
11970             GIO_LIBS="${filteredlibs}"
11971         fi
11972     else
11973         AC_MSG_RESULT([no])
11974     fi
11976 AC_SUBST(ENABLE_GIO)
11977 AC_SUBST(GIO_CFLAGS)
11978 AC_SUBST(GIO_LIBS)
11981 dnl ===================================================================
11983 SPLIT_APP_MODULES=""
11984 if test "$enable_split_app_modules" = "yes"; then
11985     SPLIT_APP_MODULES="TRUE"
11987 AC_SUBST(SPLIT_APP_MODULES)
11989 SPLIT_OPT_FEATURES=""
11990 if test "$enable_split_opt_features" = "yes"; then
11991     SPLIT_OPT_FEATURES="TRUE"
11993 AC_SUBST(SPLIT_OPT_FEATURES)
11995 dnl ===================================================================
11996 dnl Check whether the GStreamer libraries are available.
11997 dnl ===================================================================
11999 ENABLE_GSTREAMER_1_0=""
12001 if test "$test_gstreamer_1_0" = yes; then
12003     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
12004     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
12005         ENABLE_GSTREAMER_1_0="TRUE"
12006         AC_MSG_RESULT([yes])
12007         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
12008         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12009         FilterLibs "${GSTREAMER_1_0_LIBS}"
12010         GSTREAMER_1_0_LIBS="${filteredlibs}"
12011         AC_DEFINE(ENABLE_GSTREAMER_1_0)
12012     else
12013         AC_MSG_RESULT([no])
12014     fi
12016 AC_SUBST(GSTREAMER_1_0_CFLAGS)
12017 AC_SUBST(GSTREAMER_1_0_LIBS)
12018 AC_SUBST(ENABLE_GSTREAMER_1_0)
12020 ENABLE_OPENGL_TRANSITIONS=
12021 ENABLE_OPENGL_CANVAS=
12022 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
12023    : # disable
12024 elif test "$_os" = "Darwin"; then
12025     # We use frameworks on macOS, no need for detail checks
12026     ENABLE_OPENGL_TRANSITIONS=TRUE
12027     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12028     ENABLE_OPENGL_CANVAS=TRUE
12029 elif test $_os = WINNT; then
12030     ENABLE_OPENGL_TRANSITIONS=TRUE
12031     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12032     ENABLE_OPENGL_CANVAS=TRUE
12033 else
12034     if test "$USING_X11" = TRUE; then
12035         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
12036         ENABLE_OPENGL_TRANSITIONS=TRUE
12037         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
12038         ENABLE_OPENGL_CANVAS=TRUE
12039     fi
12042 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
12043 AC_SUBST(ENABLE_OPENGL_CANVAS)
12045 dnl =================================================
12046 dnl Check whether to build with OpenCL support.
12047 dnl =================================================
12049 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
12050     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
12051     # platform (optional at run-time, used through clew).
12052     BUILD_TYPE="$BUILD_TYPE OPENCL"
12053     AC_DEFINE(HAVE_FEATURE_OPENCL)
12056 dnl =================================================
12057 dnl Check whether to build with dconf support.
12058 dnl =================================================
12060 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
12061     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
12062         if test "$enable_dconf" = yes; then
12063             AC_MSG_ERROR([dconf not found])
12064         else
12065             enable_dconf=no
12066         fi])
12068 AC_MSG_CHECKING([whether to enable dconf])
12069 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
12070     DCONF_CFLAGS=
12071     DCONF_LIBS=
12072     ENABLE_DCONF=
12073     AC_MSG_RESULT([no])
12074 else
12075     ENABLE_DCONF=TRUE
12076     AC_DEFINE(ENABLE_DCONF)
12077     AC_MSG_RESULT([yes])
12079 AC_SUBST([DCONF_CFLAGS])
12080 AC_SUBST([DCONF_LIBS])
12081 AC_SUBST([ENABLE_DCONF])
12083 # pdf import?
12084 AC_MSG_CHECKING([whether to build the PDF import feature])
12085 ENABLE_PDFIMPORT=
12086 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12087     AC_MSG_RESULT([yes])
12088     ENABLE_PDFIMPORT=TRUE
12089     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12090 else
12091     AC_MSG_RESULT([no])
12094 # Pdfium?
12095 AC_MSG_CHECKING([whether to build PDFium])
12096 ENABLE_PDFIUM=
12097 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12098     AC_MSG_RESULT([yes])
12099     ENABLE_PDFIUM=TRUE
12100     BUILD_TYPE="$BUILD_TYPE PDFIUM"
12101 else
12102     AC_MSG_RESULT([no])
12104 AC_SUBST(ENABLE_PDFIUM)
12106 if test "$ENABLE_PDFIUM" = "TRUE"; then
12107     AC_MSG_CHECKING([which OpenJPEG library to use])
12108     if test "$with_system_openjpeg" = "yes"; then
12109         SYSTEM_OPENJPEG2=TRUE
12110         AC_MSG_RESULT([external])
12111         PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12112         OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12113         FilterLibs "${OPENJPEG2_LIBS}"
12114         OPENJPEG2_LIBS="${filteredlibs}"
12115     else
12116         SYSTEM_OPENJPEG2=FALSE
12117         AC_MSG_RESULT([internal])
12118     fi
12120     AC_MSG_CHECKING([which Abseil library to use])
12121     if test "$with_system_abseil" = "yes"; then
12122         AC_MSG_RESULT([external])
12123         SYSTEM_ABSEIL=TRUE
12124         AC_LANG_PUSH([C++])
12125         AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12126                         [AC_MSG_ERROR(abseil headers not found.)], [])
12127         AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12128                         [AC_MSG_ERROR(abseil headers not found.)], [])
12129         AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12130                      [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12131         AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12132                      [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12133         ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12134         AC_LANG_POP([C++])
12135         ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12136         FilterLibs "${ABSEIL_LIBS}"
12137         ABSEIL_LIBS="${filteredlibs}"
12138     else
12139         AC_MSG_RESULT([internal])
12140     fi
12142 AC_SUBST(SYSTEM_OPENJPEG2)
12143 AC_SUBST(SYSTEM_ABSEIL)
12144 AC_SUBST(ABSEIL_CFLAGS)
12145 AC_SUBST(ABSEIL_LIBS)
12147 dnl ===================================================================
12148 dnl Check for poppler
12149 dnl ===================================================================
12150 ENABLE_POPPLER=
12151 AC_MSG_CHECKING([whether to build Poppler])
12152 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12153     AC_MSG_RESULT([yes])
12154     ENABLE_POPPLER=TRUE
12155     AC_DEFINE(HAVE_FEATURE_POPPLER)
12156 else
12157     AC_MSG_RESULT([no])
12159 AC_SUBST(ENABLE_POPPLER)
12161 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12162     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12165 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12166     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12169 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12170     dnl ===================================================================
12171     dnl Check for system poppler
12172     dnl ===================================================================
12173     AC_MSG_CHECKING([which PDF import poppler to use])
12174     if test "$with_system_poppler" = "yes"; then
12175         AC_MSG_RESULT([external])
12176         SYSTEM_POPPLER=TRUE
12177         PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12178         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12179         FilterLibs "${POPPLER_LIBS}"
12180         POPPLER_LIBS="${filteredlibs}"
12181     else
12182         AC_MSG_RESULT([internal])
12183         SYSTEM_POPPLER=
12184         BUILD_TYPE="$BUILD_TYPE POPPLER"
12185     fi
12186     AC_DEFINE([ENABLE_PDFIMPORT],1)
12188 AC_SUBST(ENABLE_PDFIMPORT)
12189 AC_SUBST(SYSTEM_POPPLER)
12190 AC_SUBST(POPPLER_CFLAGS)
12191 AC_SUBST(POPPLER_LIBS)
12193 # Skia?
12194 ENABLE_SKIA=
12195 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12196     # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12197     if test "$SYSTEM_FREETYPE" = TRUE; then
12198         PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12199             [skia_freetype_ok=yes],
12200             [skia_freetype_ok=no])
12201     else # internal is ok
12202         skia_freetype_ok=yes
12203     fi
12204     AC_MSG_CHECKING([whether to build Skia])
12205     if test "$skia_freetype_ok" = "yes"; then
12206         if test "$enable_skia" = "debug"; then
12207             AC_MSG_RESULT([yes (debug)])
12208             ENABLE_SKIA_DEBUG=TRUE
12209         else
12210             AC_MSG_RESULT([yes])
12211             ENABLE_SKIA_DEBUG=
12212         fi
12213         ENABLE_SKIA=TRUE
12214         if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12215                 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12216         fi
12218         AC_DEFINE(HAVE_FEATURE_SKIA)
12219         BUILD_TYPE="$BUILD_TYPE SKIA"
12221         if test "$OS" = "MACOSX"; then
12222             AC_DEFINE(SK_SUPPORT_GPU,1)
12223             AC_DEFINE(SK_METAL,1)
12224             SKIA_GPU=METAL
12225             AC_SUBST(SKIA_GPU)
12226         else
12227             AC_DEFINE(SK_SUPPORT_GPU,1)
12228             AC_DEFINE(SK_VULKAN,1)
12229             SKIA_GPU=VULKAN
12230             AC_SUBST(SKIA_GPU)
12231         fi
12233         if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
12234             SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
12235             AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
12236         fi
12237     else
12238         AC_MSG_RESULT([no (freetype too old)])
12239         add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12240     fi
12242 else
12243     AC_MSG_CHECKING([whether to build Skia])
12244     AC_MSG_RESULT([no])
12246 AC_SUBST(ENABLE_SKIA)
12247 AC_SUBST(ENABLE_SKIA_DEBUG)
12249 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12250 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12251 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12252 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12253 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12254 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12255 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12256 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12257 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12258 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12259 HAVE_LO_CLANG_DLLEXPORTINLINES=
12261 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12262     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12263         AC_MSG_CHECKING([for Clang])
12264         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12265     else
12266         if test "$_os" = "WINNT"; then
12267             AC_MSG_CHECKING([for clang-cl])
12268             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12269                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12270             elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12271                 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12272             elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12273                 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12274             fi
12275             if test -n "$LO_CLANG_CC"; then
12276                 dnl explicitly set -m32/-m64
12277                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12278                 LO_CLANG_CXX="$LO_CLANG_CC"
12279                 AC_MSG_RESULT([$LO_CLANG_CC])
12280             else
12281                 AC_MSG_RESULT([no])
12282             fi
12284             AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12285             echo "#include <stdlib.h>" > conftest.c
12286             LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12287                 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12288             rm -f conftest.c conftest.obj
12289             if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12290                 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12291             else
12292                 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12293             fi
12294         else
12295             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12296             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12297         fi
12298     fi
12299     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12300         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12301         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12302         if test "$clang2_ver" -lt 50002; then
12303             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12304             LO_CLANG_CC=
12305             LO_CLANG_CXX=
12306         fi
12307     fi
12308     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12309         save_CXX="$CXX"
12310         CXX="$LO_CLANG_CXX"
12311         AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12312         AC_LANG_PUSH([C++])
12313         save_CXXFLAGS=$CXXFLAGS
12314         CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12315         AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12316                 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12317                 AC_MSG_RESULT([yes])
12318             ], [AC_MSG_RESULT([no])])
12319         CXXFLAGS=$save_CXXFLAGS
12320         AC_LANG_POP([C++])
12321         CXX="$save_CXX"
12322         if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12323             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.])
12324         fi
12325     fi
12326     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12327         # Skia is the default on Windows and Mac, so hard-require Clang.
12328         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12329         if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12330             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12331         else
12332             AC_MSG_WARN([Clang compiler not found.])
12333         fi
12334     else
12336         save_CXX="$CXX"
12337         CXX="$LO_CLANG_CXX"
12338         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12339         flag_sse2=-msse2
12340         flag_ssse3=-mssse3
12341         flag_sse41=-msse4.1
12342         flag_sse42=-msse4.2
12343         flag_avx=-mavx
12344         flag_avx2=-mavx2
12345         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12346         flag_avx512f=-mavx512f
12347         flag_f16c=-mf16c
12348         flag_fma=-mfma
12350         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12351         AC_LANG_PUSH([C++])
12352         save_CXXFLAGS=$CXXFLAGS
12353         CXXFLAGS="$CXXFLAGS $flag_sse2"
12354         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12355             #include <emmintrin.h>
12356             int main () {
12357                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12358                 c = _mm_xor_si128 (a, b);
12359                 return 0;
12360             }
12361             ])],
12362             [can_compile_sse2=yes],
12363             [can_compile_sse2=no])
12364         AC_LANG_POP([C++])
12365         CXXFLAGS=$save_CXXFLAGS
12366         AC_MSG_RESULT([${can_compile_sse2}])
12367         if test "${can_compile_sse2}" = "yes" ; then
12368             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12369         fi
12371         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12372         AC_LANG_PUSH([C++])
12373         save_CXXFLAGS=$CXXFLAGS
12374         CXXFLAGS="$CXXFLAGS $flag_ssse3"
12375         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12376             #include <tmmintrin.h>
12377             int main () {
12378                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12379                 c = _mm_maddubs_epi16 (a, b);
12380                 return 0;
12381             }
12382             ])],
12383             [can_compile_ssse3=yes],
12384             [can_compile_ssse3=no])
12385         AC_LANG_POP([C++])
12386         CXXFLAGS=$save_CXXFLAGS
12387         AC_MSG_RESULT([${can_compile_ssse3}])
12388         if test "${can_compile_ssse3}" = "yes" ; then
12389             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12390         fi
12392         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12393         AC_LANG_PUSH([C++])
12394         save_CXXFLAGS=$CXXFLAGS
12395         CXXFLAGS="$CXXFLAGS $flag_sse41"
12396         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12397             #include <smmintrin.h>
12398             int main () {
12399                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12400                 c = _mm_cmpeq_epi64 (a, b);
12401                 return 0;
12402             }
12403             ])],
12404             [can_compile_sse41=yes],
12405             [can_compile_sse41=no])
12406         AC_LANG_POP([C++])
12407         CXXFLAGS=$save_CXXFLAGS
12408         AC_MSG_RESULT([${can_compile_sse41}])
12409         if test "${can_compile_sse41}" = "yes" ; then
12410             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12411         fi
12413         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12414         AC_LANG_PUSH([C++])
12415         save_CXXFLAGS=$CXXFLAGS
12416         CXXFLAGS="$CXXFLAGS $flag_sse42"
12417         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12418             #include <nmmintrin.h>
12419             int main () {
12420                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12421                 c = _mm_cmpgt_epi64 (a, b);
12422                 return 0;
12423             }
12424             ])],
12425             [can_compile_sse42=yes],
12426             [can_compile_sse42=no])
12427         AC_LANG_POP([C++])
12428         CXXFLAGS=$save_CXXFLAGS
12429         AC_MSG_RESULT([${can_compile_sse42}])
12430         if test "${can_compile_sse42}" = "yes" ; then
12431             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12432         fi
12434         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12435         AC_LANG_PUSH([C++])
12436         save_CXXFLAGS=$CXXFLAGS
12437         CXXFLAGS="$CXXFLAGS $flag_avx"
12438         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12439             #include <immintrin.h>
12440             int main () {
12441                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12442                 c = _mm256_xor_ps(a, b);
12443                 return 0;
12444             }
12445             ])],
12446             [can_compile_avx=yes],
12447             [can_compile_avx=no])
12448         AC_LANG_POP([C++])
12449         CXXFLAGS=$save_CXXFLAGS
12450         AC_MSG_RESULT([${can_compile_avx}])
12451         if test "${can_compile_avx}" = "yes" ; then
12452             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12453         fi
12455         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12456         AC_LANG_PUSH([C++])
12457         save_CXXFLAGS=$CXXFLAGS
12458         CXXFLAGS="$CXXFLAGS $flag_avx2"
12459         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12460             #include <immintrin.h>
12461             int main () {
12462                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12463                 c = _mm256_maddubs_epi16(a, b);
12464                 return 0;
12465             }
12466             ])],
12467             [can_compile_avx2=yes],
12468             [can_compile_avx2=no])
12469         AC_LANG_POP([C++])
12470         CXXFLAGS=$save_CXXFLAGS
12471         AC_MSG_RESULT([${can_compile_avx2}])
12472         if test "${can_compile_avx2}" = "yes" ; then
12473             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12474         fi
12476         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12477         AC_LANG_PUSH([C++])
12478         save_CXXFLAGS=$CXXFLAGS
12479         CXXFLAGS="$CXXFLAGS $flag_avx512"
12480         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12481             #include <immintrin.h>
12482             int main () {
12483                 __m512i a = _mm512_loadu_si512(0);
12484                 __m512d v1 = _mm512_load_pd(0);
12485                 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12486                 __m512d v2 = _mm512_abs_pd(v1);
12487                 return 0;
12488             }
12489             ])],
12490             [can_compile_avx512=yes],
12491             [can_compile_avx512=no])
12492         AC_LANG_POP([C++])
12493         CXXFLAGS=$save_CXXFLAGS
12494         AC_MSG_RESULT([${can_compile_avx512}])
12495         if test "${can_compile_avx512}" = "yes" ; then
12496             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12497             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12498         fi
12500         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12501         AC_LANG_PUSH([C++])
12502         save_CXXFLAGS=$CXXFLAGS
12503         CXXFLAGS="$CXXFLAGS $flag_f16c"
12504         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12505             #include <immintrin.h>
12506             int main () {
12507                 __m128i a = _mm_set1_epi32 (0);
12508                 __m128 c;
12509                 c = _mm_cvtph_ps(a);
12510                 return 0;
12511             }
12512             ])],
12513             [can_compile_f16c=yes],
12514             [can_compile_f16c=no])
12515         AC_LANG_POP([C++])
12516         CXXFLAGS=$save_CXXFLAGS
12517         AC_MSG_RESULT([${can_compile_f16c}])
12518         if test "${can_compile_f16c}" = "yes" ; then
12519             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12520         fi
12522         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12523         AC_LANG_PUSH([C++])
12524         save_CXXFLAGS=$CXXFLAGS
12525         CXXFLAGS="$CXXFLAGS $flag_fma"
12526         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12527             #include <immintrin.h>
12528             int main () {
12529                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12530                 d = _mm256_fmadd_ps(a, b, c);
12531                 return 0;
12532             }
12533             ])],
12534             [can_compile_fma=yes],
12535             [can_compile_fma=no])
12536         AC_LANG_POP([C++])
12537         CXXFLAGS=$save_CXXFLAGS
12538         AC_MSG_RESULT([${can_compile_fma}])
12539         if test "${can_compile_fma}" = "yes" ; then
12540             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12541         fi
12543         CXX="$save_CXX"
12544     fi
12547 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12549 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12550     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12551     AC_LANG_PUSH([C])
12552     save_CC="$CC"
12553     CC="$LO_CLANG_CC"
12554     save_CFLAGS=$CFLAGS
12555     CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12556     dnl an empty program will do, we're checking the compiler flags
12557     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12558                       [use_ccache=yes], [use_ccache=no])
12559     CFLAGS=$save_CFLAGS
12560     CC=$save_CC
12561     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12562         AC_MSG_RESULT([yes])
12563     else
12564         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12565         AC_MSG_RESULT([no])
12566     fi
12567     AC_LANG_POP([C])
12569     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12570     AC_LANG_PUSH([C++])
12571     save_CXX="$CXX"
12572     CXX="$LO_CLANG_CXX"
12573     save_CXXFLAGS=$CXXFLAGS
12574     CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12575     dnl an empty program will do, we're checking the compiler flags
12576     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12577                       [use_ccache=yes], [use_ccache=no])
12578     if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12579         AC_MSG_RESULT([yes])
12580     else
12581         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12582         AC_MSG_RESULT([no])
12583     fi
12584     CXXFLAGS=$save_CXXFLAGS
12585     CXX=$save_CXX
12586     AC_LANG_POP([C++])
12589 AC_SUBST(LO_CLANG_CC)
12590 AC_SUBST(LO_CLANG_CXX)
12591 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12592 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12593 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12594 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12595 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12596 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12597 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12598 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12599 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12600 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12601 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12602 AC_SUBST(CLANG_USE_LD)
12603 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12605 SYSTEM_GPGMEPP=
12607 AC_MSG_CHECKING([whether to enable gpgmepp])
12608 if test "$enable_gpgmepp" = no; then
12609     AC_MSG_RESULT([no])
12610 elif test "$enable_mpl_subset" = "yes"; then
12611     AC_MSG_RESULT([no (MPL only])
12612 elif test "$enable_fuzzers" = "yes"; then
12613     AC_MSG_RESULT([no (oss-fuzz)])
12614 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12615     AC_MSG_RESULT([yes])
12616     dnl ===================================================================
12617     dnl Check for system gpgme
12618     dnl ===================================================================
12619     AC_MSG_CHECKING([which gpgmepp to use])
12620     if test "$with_system_gpgmepp" = "yes"; then
12621         AC_MSG_RESULT([external])
12622         SYSTEM_GPGMEPP=TRUE
12624         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12625         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12626             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12627         AC_CHECK_HEADER(gpgme.h, [],
12628             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12629         AC_CHECK_LIB(gpgmepp, main, [],
12630             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12631         GPGMEPP_LIBS=-lgpgmepp
12632     else
12633         AC_MSG_RESULT([internal])
12634         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12636         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12637         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12638         if test "$_os" != "WINNT"; then
12639             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12640             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12641         fi
12642     fi
12643     ENABLE_GPGMEPP=TRUE
12644     AC_DEFINE([HAVE_FEATURE_GPGME])
12645     AC_PATH_PROG(GPG, gpg)
12646     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12647     # so let's exclude that manually for the moment
12648     if test -n "$GPG" -a "$_os" != "WINNT"; then
12649         # make sure we not only have a working gpgme, but a full working
12650         # gpg installation to run OpenPGP signature verification
12651         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12652     fi
12653     if test "$_os" = "Linux"; then
12654       uid=`id -u`
12655       AC_MSG_CHECKING([for /run/user/$uid])
12656       if test -d /run/user/$uid; then
12657         AC_MSG_RESULT([yes])
12658         AC_PATH_PROG(GPGCONF, gpgconf)
12660         # Older versions of gpgconf are not working as expected, since
12661         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12662         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12663         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12664         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12665         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12666         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12667         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12668           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12669           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12670           if $GPGCONF --dump-options > /dev/null ; then
12671             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12672               AC_MSG_RESULT([yes])
12673               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12674               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12675             else
12676               AC_MSG_RESULT([no])
12677             fi
12678           else
12679             AC_MSG_RESULT([no. missing or broken gpgconf?])
12680           fi
12681         else
12682           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12683         fi
12684       else
12685         AC_MSG_RESULT([no])
12686      fi
12687    fi
12688 else
12689     AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12691 AC_SUBST(ENABLE_GPGMEPP)
12692 AC_SUBST(SYSTEM_GPGMEPP)
12693 AC_SUBST(GPG_ERROR_CFLAGS)
12694 AC_SUBST(GPG_ERROR_LIBS)
12695 AC_SUBST(LIBASSUAN_CFLAGS)
12696 AC_SUBST(LIBASSUAN_LIBS)
12697 AC_SUBST(GPGMEPP_CFLAGS)
12698 AC_SUBST(GPGMEPP_LIBS)
12700 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12701 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12702     AC_MSG_RESULT([yes])
12703     ENABLE_MEDIAWIKI=TRUE
12704     BUILD_TYPE="$BUILD_TYPE XSLTML"
12705     if test  "x$with_java" = "xno"; then
12706         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12707     fi
12708 else
12709     AC_MSG_RESULT([no])
12710     ENABLE_MEDIAWIKI=
12711     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12713 AC_SUBST(ENABLE_MEDIAWIKI)
12715 AC_MSG_CHECKING([whether to build the Report Builder])
12716 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12717     AC_MSG_RESULT([yes])
12718     ENABLE_REPORTBUILDER=TRUE
12719     AC_MSG_CHECKING([which jfreereport libs to use])
12720     if test "$with_system_jfreereport" = "yes"; then
12721         SYSTEM_JFREEREPORT=TRUE
12722         AC_MSG_RESULT([external])
12723         if test -z $SAC_JAR; then
12724             SAC_JAR=/usr/share/java/sac.jar
12725         fi
12726         if ! test -f $SAC_JAR; then
12727              AC_MSG_ERROR(sac.jar not found.)
12728         fi
12730         if test -z $LIBXML_JAR; then
12731             if test -f /usr/share/java/libxml-1.0.0.jar; then
12732                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12733             elif test -f /usr/share/java/libxml.jar; then
12734                 LIBXML_JAR=/usr/share/java/libxml.jar
12735             else
12736                 AC_MSG_ERROR(libxml.jar replacement not found.)
12737             fi
12738         elif ! test -f $LIBXML_JAR; then
12739             AC_MSG_ERROR(libxml.jar not found.)
12740         fi
12742         if test -z $FLUTE_JAR; then
12743             if test -f /usr/share/java/flute-1.3.0.jar; then
12744                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12745             elif test -f /usr/share/java/flute.jar; then
12746                 FLUTE_JAR=/usr/share/java/flute.jar
12747             else
12748                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12749             fi
12750         elif ! test -f $FLUTE_JAR; then
12751             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12752         fi
12754         if test -z $JFREEREPORT_JAR; then
12755             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12756                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12757             elif test -f /usr/share/java/flow-engine.jar; then
12758                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12759             else
12760                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12761             fi
12762         elif ! test -f  $JFREEREPORT_JAR; then
12763                 AC_MSG_ERROR(jfreereport.jar not found.)
12764         fi
12766         if test -z $LIBLAYOUT_JAR; then
12767             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12768                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12769             elif test -f /usr/share/java/liblayout.jar; then
12770                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12771             else
12772                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12773             fi
12774         elif ! test -f $LIBLAYOUT_JAR; then
12775                 AC_MSG_ERROR(liblayout.jar not found.)
12776         fi
12778         if test -z $LIBLOADER_JAR; then
12779             if test -f /usr/share/java/libloader-1.0.0.jar; then
12780                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12781             elif test -f /usr/share/java/libloader.jar; then
12782                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12783             else
12784                 AC_MSG_ERROR(libloader.jar replacement not found.)
12785             fi
12786         elif ! test -f  $LIBLOADER_JAR; then
12787             AC_MSG_ERROR(libloader.jar not found.)
12788         fi
12790         if test -z $LIBFORMULA_JAR; then
12791             if test -f /usr/share/java/libformula-0.2.0.jar; then
12792                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12793             elif test -f /usr/share/java/libformula.jar; then
12794                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12795             else
12796                 AC_MSG_ERROR(libformula.jar replacement not found.)
12797             fi
12798         elif ! test -f $LIBFORMULA_JAR; then
12799                 AC_MSG_ERROR(libformula.jar not found.)
12800         fi
12802         if test -z $LIBREPOSITORY_JAR; then
12803             if test -f /usr/share/java/librepository-1.0.0.jar; then
12804                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12805             elif test -f /usr/share/java/librepository.jar; then
12806                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12807             else
12808                 AC_MSG_ERROR(librepository.jar replacement not found.)
12809             fi
12810         elif ! test -f $LIBREPOSITORY_JAR; then
12811             AC_MSG_ERROR(librepository.jar not found.)
12812         fi
12814         if test -z $LIBFONTS_JAR; then
12815             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12816                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12817             elif test -f /usr/share/java/libfonts.jar; then
12818                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12819             else
12820                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12821             fi
12822         elif ! test -f $LIBFONTS_JAR; then
12823                 AC_MSG_ERROR(libfonts.jar not found.)
12824         fi
12826         if test -z $LIBSERIALIZER_JAR; then
12827             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12828                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12829             elif test -f /usr/share/java/libserializer.jar; then
12830                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12831             else
12832                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12833             fi
12834         elif ! test -f $LIBSERIALIZER_JAR; then
12835                 AC_MSG_ERROR(libserializer.jar not found.)
12836         fi
12838         if test -z $LIBBASE_JAR; then
12839             if test -f /usr/share/java/libbase-1.0.0.jar; then
12840                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12841             elif test -f /usr/share/java/libbase.jar; then
12842                 LIBBASE_JAR=/usr/share/java/libbase.jar
12843             else
12844                 AC_MSG_ERROR(libbase.jar replacement not found.)
12845             fi
12846         elif ! test -f $LIBBASE_JAR; then
12847             AC_MSG_ERROR(libbase.jar not found.)
12848         fi
12850     else
12851         AC_MSG_RESULT([internal])
12852         SYSTEM_JFREEREPORT=
12853         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12854         NEED_ANT=TRUE
12855     fi
12856 else
12857     AC_MSG_RESULT([no])
12858     ENABLE_REPORTBUILDER=
12859     SYSTEM_JFREEREPORT=
12861 AC_SUBST(ENABLE_REPORTBUILDER)
12862 AC_SUBST(SYSTEM_JFREEREPORT)
12863 AC_SUBST(SAC_JAR)
12864 AC_SUBST(LIBXML_JAR)
12865 AC_SUBST(FLUTE_JAR)
12866 AC_SUBST(JFREEREPORT_JAR)
12867 AC_SUBST(LIBBASE_JAR)
12868 AC_SUBST(LIBLAYOUT_JAR)
12869 AC_SUBST(LIBLOADER_JAR)
12870 AC_SUBST(LIBFORMULA_JAR)
12871 AC_SUBST(LIBREPOSITORY_JAR)
12872 AC_SUBST(LIBFONTS_JAR)
12873 AC_SUBST(LIBSERIALIZER_JAR)
12875 # scripting provider for BeanShell?
12876 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12877 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12878     AC_MSG_RESULT([yes])
12879     ENABLE_SCRIPTING_BEANSHELL=TRUE
12881     dnl ===================================================================
12882     dnl Check for system beanshell
12883     dnl ===================================================================
12884     AC_MSG_CHECKING([which beanshell to use])
12885     if test "$with_system_beanshell" = "yes"; then
12886         AC_MSG_RESULT([external])
12887         SYSTEM_BSH=TRUE
12888         if test -z $BSH_JAR; then
12889             BSH_JAR=/usr/share/java/bsh.jar
12890         fi
12891         if ! test -f $BSH_JAR; then
12892             AC_MSG_ERROR(bsh.jar not found.)
12893         fi
12894     else
12895         AC_MSG_RESULT([internal])
12896         SYSTEM_BSH=
12897         BUILD_TYPE="$BUILD_TYPE BSH"
12898     fi
12899 else
12900     AC_MSG_RESULT([no])
12901     ENABLE_SCRIPTING_BEANSHELL=
12902     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12904 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12905 AC_SUBST(SYSTEM_BSH)
12906 AC_SUBST(BSH_JAR)
12908 # scripting provider for JavaScript?
12909 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12910 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12911     AC_MSG_RESULT([yes])
12912     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12914     dnl ===================================================================
12915     dnl Check for system rhino
12916     dnl ===================================================================
12917     AC_MSG_CHECKING([which rhino to use])
12918     if test "$with_system_rhino" = "yes"; then
12919         AC_MSG_RESULT([external])
12920         SYSTEM_RHINO=TRUE
12921         if test -z $RHINO_JAR; then
12922             RHINO_JAR=/usr/share/java/js.jar
12923         fi
12924         if ! test -f $RHINO_JAR; then
12925             AC_MSG_ERROR(js.jar not found.)
12926         fi
12927     else
12928         AC_MSG_RESULT([internal])
12929         SYSTEM_RHINO=
12930         BUILD_TYPE="$BUILD_TYPE RHINO"
12931         NEED_ANT=TRUE
12932     fi
12933 else
12934     AC_MSG_RESULT([no])
12935     ENABLE_SCRIPTING_JAVASCRIPT=
12936     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12938 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12939 AC_SUBST(SYSTEM_RHINO)
12940 AC_SUBST(RHINO_JAR)
12942 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12943 # paths should be added to library search path. So lets put all 64-bit
12944 # platforms there.
12945 supports_multilib=
12946 case "$host_cpu" in
12947 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
12948     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12949         supports_multilib="yes"
12950     fi
12951     ;;
12953     ;;
12954 esac
12956 dnl ===================================================================
12957 dnl QT5 Integration
12958 dnl ===================================================================
12960 QT5_CFLAGS=""
12961 QT5_LIBS=""
12962 QMAKE5="qmake"
12963 MOC5="moc"
12964 QT5_GOBJECT_CFLAGS=""
12965 QT5_GOBJECT_LIBS=""
12966 QT5_HAVE_GOBJECT=""
12967 QT5_PLATFORMS_SRCDIR=""
12968 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12969         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12970         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12971 then
12972     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12973     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12975     if test -n "$supports_multilib"; then
12976         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12977     fi
12979     qt5_test_include="QtWidgets/qapplication.h"
12980     if test "$_os" = "Emscripten"; then
12981         qt5_test_library="libQt5Widgets.a"
12982     else
12983         qt5_test_library="libQt5Widgets.so"
12984     fi
12986     dnl Check for qmake5
12987     if test -n "$QT5DIR"; then
12988         AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12989     else
12990         AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12991     fi
12992     if test "$QMAKE5" = "no"; then
12993         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12994     else
12995         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12996         if test -z "$qmake5_test_ver"; then
12997             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12998         fi
12999         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
13000         qt5_minimal_minor="6"
13001         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
13002             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
13003         else
13004             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
13005         fi
13006     fi
13008     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
13009     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
13010     qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
13011     QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
13013     AC_MSG_CHECKING([for Qt5 headers])
13014     qt5_incdir="no"
13015     for inc_dir in $qt5_incdirs; do
13016         if test -r "$inc_dir/$qt5_test_include"; then
13017             qt5_incdir="$inc_dir"
13018             break
13019         fi
13020     done
13021     AC_MSG_RESULT([$qt5_incdir])
13022     if test "x$qt5_incdir" = "xno"; then
13023         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13024     fi
13025     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
13026     AC_LANG_PUSH([C++])
13027     save_CPPFLAGS=$CPPFLAGS
13028     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
13029     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13030         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13031     CPPFLAGS=$save_CPPFLAGS
13032     AC_LANG_POP([C++])
13034     AC_MSG_CHECKING([for Qt5 libraries])
13035     qt5_libdir="no"
13036     for lib_dir in $qt5_libdirs; do
13037         if test -r "$lib_dir/$qt5_test_library"; then
13038             qt5_libdir="$lib_dir"
13039             break
13040         fi
13041     done
13042     AC_MSG_RESULT([$qt5_libdir])
13043     if test "x$qt5_libdir" = "xno"; then
13044         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
13045     fi
13047     if test "$_os" = "Emscripten"; then
13048         if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13049             QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13050         fi
13051         if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
13052             AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
13053         fi
13055         EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
13056         if ! test -x "$EMSDK_LLVM_NM"; then
13057             AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
13058         fi
13059         if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
13060             AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
13061         fi
13062         QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
13063         if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
13064             AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
13065         fi
13066         if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
13067             AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
13068         fi
13069     fi
13071     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13072     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13073     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13074     if test "$_os" = "Emscripten"; then
13075         QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
13076     fi
13078     if test "$USING_X11" = TRUE; then
13079         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13080         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
13081             QT5_HAVE_XCB_ICCCM=1
13082             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
13083         ],[
13084             AC_MSG_WARN([XCB ICCCM not found, which is needed for old Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)])
13085             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
13086         ])
13087         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13088         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13089         QT5_USING_X11=1
13090         AC_DEFINE(QT5_USING_X11)
13091     fi
13093     dnl Check for Meta Object Compiler
13095     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13096     if test "$MOC5" = "no"; then
13097         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13098 the root of your Qt installation by exporting QT5DIR before running "configure".])
13099     fi
13101     if test "$test_gstreamer_1_0" = yes; then
13102         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13103                 QT5_HAVE_GOBJECT=1
13104                 AC_DEFINE(QT5_HAVE_GOBJECT)
13105             ],
13106             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13107         )
13108     fi
13110 AC_SUBST(QT5_CFLAGS)
13111 AC_SUBST(QT5_LIBS)
13112 AC_SUBST(MOC5)
13113 AC_SUBST(QT5_GOBJECT_CFLAGS)
13114 AC_SUBST(QT5_GOBJECT_LIBS)
13115 AC_SUBST(QT5_HAVE_GOBJECT)
13116 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13118 dnl ===================================================================
13119 dnl QT6 Integration
13120 dnl ===================================================================
13122 QT6_CFLAGS=""
13123 QT6_LIBS=""
13124 QMAKE6="qmake"
13125 MOC6="moc"
13126 QT6_PLATFORMS_SRCDIR=""
13127 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13128 then
13129     qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13130     qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13132     if test -n "$supports_multilib"; then
13133         qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13134     fi
13136     qt6_test_include="QtWidgets/qapplication.h"
13137     if test "$_os" = "Emscripten"; then
13138         qt6_test_library="libQt6Widgets.a"
13139     else
13140         qt6_test_library="libQt6Widgets.so"
13141     fi
13143     dnl Check for qmake6
13144     if test -n "$QT6DIR"; then
13145         AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13146     else
13147         AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13148     fi
13149     if test "$QMAKE6" = "no"; then
13150         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13151     else
13152         qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13153         if test -z "$qmake6_test_ver"; then
13154             AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13155         fi
13156         AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13157     fi
13159     qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13160     qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13161     qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13162     QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13164     AC_MSG_CHECKING([for Qt6 headers])
13165     qt6_incdir="no"
13166     for inc_dir in $qt6_incdirs; do
13167         if test -r "$inc_dir/$qt6_test_include"; then
13168             qt6_incdir="$inc_dir"
13169             break
13170         fi
13171     done
13172     AC_MSG_RESULT([$qt6_incdir])
13173     if test "x$qt6_incdir" = "xno"; then
13174         AC_MSG_ERROR([Qt6 headers not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13175     fi
13176     # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13177     AC_LANG_PUSH([C++])
13178     save_CPPFLAGS=$CPPFLAGS
13179     CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13180     AC_CHECK_HEADER(QtCore/qconfig.h, [],
13181         [AC_MSG_ERROR(qconfig.h header not found.)], [])
13182     CPPFLAGS=$save_CPPFLAGS
13183     AC_LANG_POP([C++])
13185     AC_MSG_CHECKING([for Qt6 libraries])
13186     qt6_libdir="no"
13187     for lib_dir in $qt6_libdirs; do
13188         if test -r "$lib_dir/$qt6_test_library"; then
13189             qt6_libdir="$lib_dir"
13190             break
13191         fi
13192     done
13193     AC_MSG_RESULT([$qt6_libdir])
13194     if test "x$qt6_libdir" = "xno"; then
13195         AC_MSG_ERROR([Qt6 libraries not found.  Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13196     fi
13198     if test "$_os" = "Emscripten"; then
13199         if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13200             QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13201         fi
13202         if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13203             AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13204         fi
13205     fi
13207     QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13208     QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13209     QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13210     if test "$_os" = "Emscripten"; then
13211         QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13212     fi
13214     if test "$USING_X11" = TRUE; then
13215         PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13216         QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13217         QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13218         QT6_USING_X11=1
13219         AC_DEFINE(QT6_USING_X11)
13220     fi
13222     dnl Check for Meta Object Compiler
13224     for lib_dir in $qt6_libdirs; do
13225         if test -z "$qt6_libexec_dirs"; then
13226             qt6_libexec_dirs="$lib_dir/libexec"
13227         else
13228             qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13229         fi
13230     done
13231     AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$qt6_libexec_dirs:$PATH])
13232     if test "$MOC6" = "no"; then
13233         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
13234 the root of your Qt installation by exporting QT6DIR before running "configure".])
13235     fi
13237 AC_SUBST(QT6_CFLAGS)
13238 AC_SUBST(QT6_LIBS)
13239 AC_SUBST(MOC6)
13240 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13242 dnl ===================================================================
13243 dnl KF5 Integration
13244 dnl ===================================================================
13246 KF5_CFLAGS=""
13247 KF5_LIBS=""
13248 KF5_CONFIG="kf5-config"
13249 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13250         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13251 then
13252     if test "$OS" = "HAIKU"; then
13253         haiku_arch="`echo $RTL_ARCH | tr X x`"
13254         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13255         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13256     fi
13258     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13259     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13260     if test -n "$supports_multilib"; then
13261         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13262     fi
13264     kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13265     kf5_test_library="libKF5KIOFileWidgets.so"
13266     kf5_libdirs="$qt5_libdir $kf5_libdirs"
13268     dnl kf5 KDE4 support compatibility installed
13269     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13270     if test "$KF5_CONFIG" != "no"; then
13271         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13272         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13273     fi
13275     dnl Check for KF5 headers
13276     AC_MSG_CHECKING([for KF5 headers])
13277     kf5_incdir="no"
13278     for kf5_check in $kf5_incdirs; do
13279         if test -r "$kf5_check/$kf5_test_include"; then
13280             kf5_incdir="$kf5_check/KF5"
13281             break
13282         fi
13283     done
13284     AC_MSG_RESULT([$kf5_incdir])
13285     if test "x$kf5_incdir" = "xno"; then
13286         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13287     fi
13289     dnl Check for KF5 libraries
13290     AC_MSG_CHECKING([for KF5 libraries])
13291     kf5_libdir="no"
13292     for kf5_check in $kf5_libdirs; do
13293         if test -r "$kf5_check/$kf5_test_library"; then
13294             kf5_libdir="$kf5_check"
13295             break
13296         fi
13297     done
13299     AC_MSG_RESULT([$kf5_libdir])
13300     if test "x$kf5_libdir" = "xno"; then
13301         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13302     fi
13304     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"
13305     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13306     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13308     if test "$USING_X11" = TRUE; then
13309         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13310     fi
13312     AC_LANG_PUSH([C++])
13313     save_CXXFLAGS=$CXXFLAGS
13314     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13315     AC_MSG_CHECKING([whether KDE is >= 5.0])
13316        AC_RUN_IFELSE([AC_LANG_SOURCE([[
13317 #include <kcoreaddons_version.h>
13319 int main(int argc, char **argv) {
13320        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13321        else return 1;
13323        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13324     CXXFLAGS=$save_CXXFLAGS
13325     AC_LANG_POP([C++])
13327 AC_SUBST(KF5_CFLAGS)
13328 AC_SUBST(KF5_LIBS)
13330 dnl ===================================================================
13331 dnl Test whether to include Evolution 2 support
13332 dnl ===================================================================
13333 AC_MSG_CHECKING([whether to enable evolution 2 support])
13334 if test "$enable_evolution2" = yes; then
13335     AC_MSG_RESULT([yes])
13336     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13337     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13338     FilterLibs "${GOBJECT_LIBS}"
13339     GOBJECT_LIBS="${filteredlibs}"
13340     ENABLE_EVOAB2="TRUE"
13341 else
13342     AC_MSG_RESULT([no])
13344 AC_SUBST(ENABLE_EVOAB2)
13345 AC_SUBST(GOBJECT_CFLAGS)
13346 AC_SUBST(GOBJECT_LIBS)
13348 dnl ===================================================================
13349 dnl Test which themes to include
13350 dnl ===================================================================
13351 AC_MSG_CHECKING([which themes to include])
13352 # if none given use default subset of available themes
13353 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13354     with_theme="breeze breeze_dark breeze_dark_svg breeze_svg colibre colibre_svg colibre_dark colibre_dark_svg elementary elementary_svg karasa_jaga karasa_jaga_svg sifr sifr_svg sifr_dark sifr_dark_svg sukapura sukapura_svg"
13357 WITH_THEMES=""
13358 if test "x$with_theme" != "xno"; then
13359     for theme in $with_theme; do
13360         case $theme in
13361         breeze|breeze_dark|breeze_dark_svg|breeze_svg|colibre|colibre_svg|colibre_dark|colibre_dark_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg|sifr|sifr_svg|sifr_dark|sifr_dark_svg|sukapura|sukapura_svg) real_theme="$theme" ;;
13362         default) real_theme=colibre ;;
13363         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13364         esac
13365         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13366     done
13368 AC_MSG_RESULT([$WITH_THEMES])
13369 AC_SUBST([WITH_THEMES])
13370 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13371 for theme in $with_theme; do
13372     case $theme in
13373     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13374     *) ;;
13375     esac
13376 done
13378 ###############################################################################
13379 # Extensions checking
13380 ###############################################################################
13381 AC_MSG_CHECKING([for extensions integration])
13382 if test "x$enable_extension_integration" != "xno"; then
13383     WITH_EXTENSION_INTEGRATION=TRUE
13384     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13385     AC_MSG_RESULT([yes, use integration])
13386 else
13387     WITH_EXTENSION_INTEGRATION=
13388     AC_MSG_RESULT([no, do not integrate])
13390 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13392 dnl Should any extra extensions be included?
13393 dnl There are standalone tests for each of these below.
13394 WITH_EXTRA_EXTENSIONS=
13395 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13397 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13398 if test "x$with_java" != "xno"; then
13399     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13402 AC_MSG_CHECKING([whether to build opens___.ttf])
13403 if test "$enable_build_opensymbol" = "yes"; then
13404     AC_MSG_RESULT([yes])
13405     AC_PATH_PROG(FONTFORGE, fontforge)
13406     if test -z "$FONTFORGE"; then
13407         AC_MSG_ERROR([fontforge not installed])
13408     fi
13409 else
13410     AC_MSG_RESULT([no])
13411     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13413 AC_SUBST(FONTFORGE)
13415 dnl ===================================================================
13416 dnl Test whether to include fonts
13417 dnl ===================================================================
13418 AC_MSG_CHECKING([whether to include third-party fonts])
13419 if test "$with_fonts" != "no"; then
13420     AC_MSG_RESULT([yes])
13421     WITH_FONTS=TRUE
13422     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13423     AC_DEFINE(HAVE_MORE_FONTS)
13424 else
13425     AC_MSG_RESULT([no])
13426     WITH_FONTS=
13427     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13429 AC_SUBST(WITH_FONTS)
13432 dnl ===================================================================
13433 dnl Test whether to enable online update service
13434 dnl ===================================================================
13435 AC_MSG_CHECKING([whether to enable online update])
13436 ENABLE_ONLINE_UPDATE=
13437 ENABLE_ONLINE_UPDATE_MAR=
13438 UPDATE_CONFIG=
13439 if test "$enable_online_update" = ""; then
13440     AC_MSG_RESULT([no])
13441 else
13442     if test "$enable_online_update" = "mar"; then
13443         AC_MSG_RESULT([yes - MAR-based online update])
13444         ENABLE_ONLINE_UPDATE_MAR="TRUE"
13445         if test "$with_update_config" = ""; then
13446             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13447         fi
13448         UPDATE_CONFIG="$with_update_config"
13449         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13450     elif test "$enable_online_update" = "yes"; then
13451         AC_MSG_RESULT([yes])
13452         ENABLE_ONLINE_UPDATE="TRUE"
13453     else
13454         AC_MSG_RESULT([no])
13455     fi
13457 AC_SUBST(ENABLE_ONLINE_UPDATE)
13458 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13459 AC_SUBST(UPDATE_CONFIG)
13462 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13463 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13464     if test "x$with_privacy_policy_url" = "xundefined"; then
13465         AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13466     fi
13468 AC_SUBST(PRIVACY_POLICY_URL)
13469 dnl ===================================================================
13470 dnl Test whether we need bzip2
13471 dnl ===================================================================
13472 SYSTEM_BZIP2=
13473 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13474     AC_MSG_CHECKING([whether to use system bzip2])
13475     if test "$with_system_bzip2" = yes; then
13476         SYSTEM_BZIP2=TRUE
13477         AC_MSG_RESULT([yes])
13478         PKG_CHECK_MODULES(BZIP2, bzip2)
13479         FilterLibs "${BZIP2_LIBS}"
13480         BZIP2_LIBS="${filteredlibs}"
13481     else
13482         AC_MSG_RESULT([no])
13483         BUILD_TYPE="$BUILD_TYPE BZIP2"
13484     fi
13486 AC_SUBST(SYSTEM_BZIP2)
13487 AC_SUBST(BZIP2_CFLAGS)
13488 AC_SUBST(BZIP2_LIBS)
13490 dnl ===================================================================
13491 dnl Test whether to enable extension update
13492 dnl ===================================================================
13493 AC_MSG_CHECKING([whether to enable extension update])
13494 ENABLE_EXTENSION_UPDATE=
13495 if test "x$enable_extension_update" = "xno"; then
13496     AC_MSG_RESULT([no])
13497 else
13498     AC_MSG_RESULT([yes])
13499     ENABLE_EXTENSION_UPDATE="TRUE"
13500     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13501     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13503 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13506 dnl ===================================================================
13507 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13508 dnl ===================================================================
13509 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13510 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13511     AC_MSG_RESULT([no])
13512     ENABLE_SILENT_MSI=
13513 else
13514     AC_MSG_RESULT([yes])
13515     ENABLE_SILENT_MSI=TRUE
13516     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13518 AC_SUBST(ENABLE_SILENT_MSI)
13520 AC_MSG_CHECKING([whether and how to use Xinerama])
13521 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13522     if test "$x_libraries" = "default_x_libraries"; then
13523         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13524         if test "x$XINERAMALIB" = x; then
13525            XINERAMALIB="/usr/lib"
13526         fi
13527     else
13528         XINERAMALIB="$x_libraries"
13529     fi
13530     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13531         # we have both versions, let the user decide but use the dynamic one
13532         # per default
13533         USE_XINERAMA=TRUE
13534         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13535             XINERAMA_LINK=dynamic
13536         else
13537             XINERAMA_LINK=static
13538         fi
13539     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13540         # we have only the dynamic version
13541         USE_XINERAMA=TRUE
13542         XINERAMA_LINK=dynamic
13543     elif test -e "$XINERAMALIB/libXinerama.a"; then
13544         # static version
13545         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13546             USE_XINERAMA=TRUE
13547             XINERAMA_LINK=static
13548         else
13549             USE_XINERAMA=
13550             XINERAMA_LINK=none
13551         fi
13552     else
13553         # no Xinerama
13554         USE_XINERAMA=
13555         XINERAMA_LINK=none
13556     fi
13557     if test "$USE_XINERAMA" = "TRUE"; then
13558         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13559         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13560             [AC_MSG_ERROR(Xinerama header not found.)], [])
13561         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13562         if test "x$XEXTLIB" = x; then
13563            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13564         fi
13565         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13566         if test "$_os" = "FreeBSD"; then
13567             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13568         fi
13569         if test "$_os" = "Linux"; then
13570             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13571         fi
13572         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13573             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13574     else
13575         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13576     fi
13577 else
13578     USE_XINERAMA=
13579     XINERAMA_LINK=none
13580     AC_MSG_RESULT([no])
13582 AC_SUBST(USE_XINERAMA)
13583 AC_SUBST(XINERAMA_LINK)
13585 dnl ===================================================================
13586 dnl Test whether to build cairo or rely on the system version
13587 dnl ===================================================================
13589 if test "$test_cairo" = "yes"; then
13590     AC_MSG_CHECKING([whether to use the system cairo])
13592     : ${with_system_cairo:=$with_system_libs}
13593     if test "$with_system_cairo" = "yes"; then
13594         SYSTEM_CAIRO=TRUE
13595         AC_MSG_RESULT([yes])
13597         PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13598         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13599         FilterLibs "${CAIRO_LIBS}"
13600         CAIRO_LIBS="${filteredlibs}"
13602         if test "$test_xrender" = "yes"; then
13603             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13604             AC_LANG_PUSH([C])
13605             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13606 #ifdef PictStandardA8
13607 #else
13608       return fail;
13609 #endif
13610 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13612             AC_LANG_POP([C])
13613         fi
13614     else
13615         AC_MSG_RESULT([no])
13616         BUILD_TYPE="$BUILD_TYPE CAIRO"
13617     fi
13619     if test "$enable_cairo_canvas" != no; then
13620         AC_DEFINE(ENABLE_CAIRO_CANVAS)
13621         ENABLE_CAIRO_CANVAS=TRUE
13622     fi
13625 AC_SUBST(CAIRO_CFLAGS)
13626 AC_SUBST(CAIRO_LIBS)
13627 AC_SUBST(ENABLE_CAIRO_CANVAS)
13628 AC_SUBST(SYSTEM_CAIRO)
13630 dnl ===================================================================
13631 dnl Test whether to use avahi
13632 dnl ===================================================================
13633 if test "$_os" = "WINNT"; then
13634     # Windows uses bundled mDNSResponder
13635     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13636 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13637     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13638                       [ENABLE_AVAHI="TRUE"])
13639     AC_DEFINE(HAVE_FEATURE_AVAHI)
13640     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13641     FilterLibs "${AVAHI_LIBS}"
13642     AVAHI_LIBS="${filteredlibs}"
13645 AC_SUBST(ENABLE_AVAHI)
13646 AC_SUBST(AVAHI_CFLAGS)
13647 AC_SUBST(AVAHI_LIBS)
13649 dnl ===================================================================
13650 dnl Test whether to use liblangtag
13651 dnl ===================================================================
13652 SYSTEM_LIBLANGTAG=
13653 AC_MSG_CHECKING([whether to use system liblangtag])
13654 if test "$with_system_liblangtag" = yes; then
13655     SYSTEM_LIBLANGTAG=TRUE
13656     AC_MSG_RESULT([yes])
13657     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13658     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13659     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13660     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13661     FilterLibs "${LIBLANGTAG_LIBS}"
13662     LIBLANGTAG_LIBS="${filteredlibs}"
13663 else
13664     SYSTEM_LIBLANGTAG=
13665     AC_MSG_RESULT([no])
13666     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13667     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13668     if test "$COM" = "MSC"; then
13669         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13670     else
13671         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13672     fi
13674 AC_SUBST(SYSTEM_LIBLANGTAG)
13675 AC_SUBST(LIBLANGTAG_CFLAGS)
13676 AC_SUBST(LIBLANGTAG_LIBS)
13678 dnl ===================================================================
13679 dnl Test whether to build libpng or rely on the system version
13680 dnl ===================================================================
13682 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13683 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13684 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13686 dnl ===================================================================
13687 dnl Test whether to build libtiff or rely on the system version
13688 dnl ===================================================================
13690 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13692 dnl ===================================================================
13693 dnl Test whether to build libwebp or rely on the system version
13694 dnl ===================================================================
13696 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13698 dnl ===================================================================
13699 dnl Check for runtime JVM search path
13700 dnl ===================================================================
13701 if test "$ENABLE_JAVA" != ""; then
13702     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13703     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13704         AC_MSG_RESULT([yes])
13705         if ! test -d "$with_jvm_path"; then
13706             AC_MSG_ERROR(["$with_jvm_path" not a directory])
13707         fi
13708         if ! test -d "$with_jvm_path"jvm; then
13709             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13710         fi
13711         JVM_ONE_PATH_CHECK="$with_jvm_path"
13712         AC_SUBST(JVM_ONE_PATH_CHECK)
13713     else
13714         AC_MSG_RESULT([no])
13715     fi
13718 dnl ===================================================================
13719 dnl Test for the presence of Ant and that it works
13720 dnl ===================================================================
13722 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13723     ANT_HOME=; export ANT_HOME
13724     WITH_ANT_HOME=; export WITH_ANT_HOME
13725     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13726         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13727             if test "$_os" = "WINNT"; then
13728                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13729             else
13730                 with_ant_home="$LODE_HOME/opt/ant"
13731             fi
13732         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
13733             with_ant_home="$LODE_HOME/opt/ant"
13734         fi
13735     fi
13736     if test -z "$with_ant_home"; then
13737         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13738     else
13739         if test "$_os" = "WINNT"; then
13740             # AC_PATH_PROGS needs unix path
13741             with_ant_home=`cygpath -u "$with_ant_home"`
13742         fi
13743         AbsolutePath "$with_ant_home"
13744         with_ant_home=$absolute_path
13745         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13746         WITH_ANT_HOME=$with_ant_home
13747         ANT_HOME=$with_ant_home
13748     fi
13750     if test -z "$ANT"; then
13751         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13752     else
13753         # resolve relative or absolute symlink
13754         while test -h "$ANT"; do
13755             a_cwd=`pwd`
13756             a_basename=`basename "$ANT"`
13757             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13758             cd "`dirname "$ANT"`"
13759             cd "`dirname "$a_script"`"
13760             ANT="`pwd`"/"`basename "$a_script"`"
13761             cd "$a_cwd"
13762         done
13764         AC_MSG_CHECKING([if $ANT works])
13765         mkdir -p conftest.dir
13766         a_cwd=$(pwd)
13767         cd conftest.dir
13768         cat > conftest.java << EOF
13769         public class conftest {
13770             int testmethod(int a, int b) {
13771                     return a + b;
13772             }
13773         }
13776         cat > conftest.xml << EOF
13777         <project name="conftest" default="conftest">
13778         <target name="conftest">
13779             <javac srcdir="." includes="conftest.java">
13780             </javac>
13781         </target>
13782         </project>
13785         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13786         if test $? = 0 -a -f ./conftest.class; then
13787             AC_MSG_RESULT([Ant works])
13788             if test -z "$WITH_ANT_HOME"; then
13789                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13790                 if test -z "$ANT_HOME"; then
13791                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13792                 fi
13793             else
13794                 ANT_HOME="$WITH_ANT_HOME"
13795             fi
13796         else
13797             echo "configure: Ant test failed" >&5
13798             cat conftest.java >&5
13799             cat conftest.xml >&5
13800             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13801         fi
13802         cd "$a_cwd"
13803         rm -fr conftest.dir
13804     fi
13805     if test -z "$ANT_HOME"; then
13806         ANT_HOME="NO_ANT_HOME"
13807     else
13808         PathFormat "$ANT_HOME"
13809         ANT_HOME="$formatted_path"
13810         PathFormat "$ANT"
13811         ANT="$formatted_path"
13812     fi
13814     dnl Checking for ant.jar
13815     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13816         AC_MSG_CHECKING([Ant lib directory])
13817         if test -f $ANT_HOME/lib/ant.jar; then
13818             ANT_LIB="$ANT_HOME/lib"
13819         else
13820             if test -f $ANT_HOME/ant.jar; then
13821                 ANT_LIB="$ANT_HOME"
13822             else
13823                 if test -f /usr/share/java/ant.jar; then
13824                     ANT_LIB=/usr/share/java
13825                 else
13826                     if test -f /usr/share/ant-core/lib/ant.jar; then
13827                         ANT_LIB=/usr/share/ant-core/lib
13828                     else
13829                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13830                             ANT_LIB="$ANT_HOME/lib/ant"
13831                         else
13832                             if test -f /usr/share/lib/ant/ant.jar; then
13833                                 ANT_LIB=/usr/share/lib/ant
13834                             else
13835                                 AC_MSG_ERROR([Ant libraries not found!])
13836                             fi
13837                         fi
13838                     fi
13839                 fi
13840             fi
13841         fi
13842         PathFormat "$ANT_LIB"
13843         ANT_LIB="$formatted_path"
13844         AC_MSG_RESULT([Ant lib directory found.])
13845     fi
13847     ant_minver=1.6.0
13848     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13850     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13851     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13852     ant_version_major=`echo $ant_version | cut -d. -f1`
13853     ant_version_minor=`echo $ant_version | cut -d. -f2`
13854     echo "configure: ant_version $ant_version " >&5
13855     echo "configure: ant_version_major $ant_version_major " >&5
13856     echo "configure: ant_version_minor $ant_version_minor " >&5
13857     if test "$ant_version_major" -ge "2"; then
13858         AC_MSG_RESULT([yes, $ant_version])
13859     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13860         AC_MSG_RESULT([yes, $ant_version])
13861     else
13862         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13863     fi
13865     rm -f conftest* core core.* *.core
13867 AC_SUBST(ANT)
13868 AC_SUBST(ANT_HOME)
13869 AC_SUBST(ANT_LIB)
13871 OOO_JUNIT_JAR=
13872 HAMCREST_JAR=
13873 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13874     AC_MSG_CHECKING([for JUnit 4])
13875     if test "$with_junit" = "yes"; then
13876         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13877             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13878         elif test -e /usr/share/java/junit4.jar; then
13879             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13880         else
13881            if test -e /usr/share/lib/java/junit.jar; then
13882               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13883            else
13884               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13885            fi
13886         fi
13887     else
13888         OOO_JUNIT_JAR=$with_junit
13889     fi
13890     if test "$_os" = "WINNT"; then
13891         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13892     fi
13893     printf 'import org.junit.Before;' > conftest.java
13894     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13895         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13896     else
13897         AC_MSG_ERROR(
13898 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13899  specify its pathname via --with-junit=..., or disable it via --without-junit])
13900     fi
13901     rm -f conftest.class conftest.java
13902     if test $OOO_JUNIT_JAR != ""; then
13903         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13904     fi
13906     AC_MSG_CHECKING([for included Hamcrest])
13907     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13908     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13909         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13910     else
13911         AC_MSG_RESULT([Not included])
13912         AC_MSG_CHECKING([for standalone hamcrest jar.])
13913         if test "$with_hamcrest" = "yes"; then
13914             if test -e /usr/share/lib/java/hamcrest.jar; then
13915                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13916             elif test -e /usr/share/java/hamcrest/core.jar; then
13917                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13918             elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13919                 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13920             else
13921                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13922             fi
13923         else
13924             HAMCREST_JAR=$with_hamcrest
13925         fi
13926         if test "$_os" = "WINNT"; then
13927             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13928         fi
13929         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13930             AC_MSG_RESULT([$HAMCREST_JAR])
13931         else
13932             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),
13933                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13934         fi
13935     fi
13936     rm -f conftest.class conftest.java
13938 AC_SUBST(OOO_JUNIT_JAR)
13939 AC_SUBST(HAMCREST_JAR)
13942 AC_SUBST(SCPDEFS)
13945 # check for wget and curl
13947 WGET=
13948 CURL=
13950 if test "$enable_fetch_external" != "no"; then
13952 CURL=`which curl 2>/dev/null`
13954 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13955     # wget new enough?
13956     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13957     if test $? -eq 0; then
13958         WGET=$i
13959         break
13960     fi
13961 done
13963 if test -z "$WGET" -a -z "$CURL"; then
13964     AC_MSG_ERROR([neither wget nor curl found!])
13969 AC_SUBST(WGET)
13970 AC_SUBST(CURL)
13973 # check for sha256sum
13975 SHA256SUM=
13977 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13978     eval "$i -a 256 --version" > /dev/null 2>&1
13979     ret=$?
13980     if test $ret -eq 0; then
13981         SHA256SUM="$i -a 256"
13982         break
13983     fi
13984 done
13986 if test -z "$SHA256SUM"; then
13987     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13988         eval "$i --version" > /dev/null 2>&1
13989         ret=$?
13990         if test $ret -eq 0; then
13991             SHA256SUM=$i
13992             break
13993         fi
13994     done
13997 if test -z "$SHA256SUM"; then
13998     AC_MSG_ERROR([no sha256sum found!])
14001 AC_SUBST(SHA256SUM)
14003 dnl ===================================================================
14004 dnl Dealing with l10n options
14005 dnl ===================================================================
14006 AC_MSG_CHECKING([which languages to be built])
14007 # get list of all languages
14008 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
14009 # the sed command does the following:
14010 #   + if a line ends with a backslash, append the next line to it
14011 #   + adds " on the beginning of the value (after =)
14012 #   + adds " at the end of the value
14013 #   + removes en-US; we want to put it on the beginning
14014 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
14015 [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)]
14016 ALL_LANGS="en-US $completelangiso"
14017 # check the configured localizations
14018 WITH_LANG="$with_lang"
14020 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
14021 # (Norwegian is "nb" and "nn".)
14022 if test "$WITH_LANG" = "no"; then
14023     WITH_LANG=
14026 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
14027     AC_MSG_RESULT([en-US])
14028 else
14029     AC_MSG_RESULT([$WITH_LANG])
14030     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
14031     if test -z "$MSGFMT"; then
14032         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
14033             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
14034         elif test -x "/opt/lo/bin/msgfmt"; then
14035             MSGFMT="/opt/lo/bin/msgfmt"
14036         else
14037             AC_CHECK_PROGS(MSGFMT, [msgfmt])
14038             if test -z "$MSGFMT"; then
14039                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
14040             fi
14041         fi
14042     fi
14043     if test -z "$MSGUNIQ"; then
14044         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
14045             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
14046         elif test -x "/opt/lo/bin/msguniq"; then
14047             MSGUNIQ="/opt/lo/bin/msguniq"
14048         else
14049             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
14050             if test -z "$MSGUNIQ"; then
14051                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
14052             fi
14053         fi
14054     fi
14056 AC_SUBST(MSGFMT)
14057 AC_SUBST(MSGUNIQ)
14058 # check that the list is valid
14059 for lang in $WITH_LANG; do
14060     test "$lang" = "ALL" && continue
14061     # need to check for the exact string, so add space before and after the list of all languages
14062     for vl in $ALL_LANGS; do
14063         if test "$vl" = "$lang"; then
14064            break
14065         fi
14066     done
14067     if test "$vl" != "$lang"; then
14068         # if you're reading this - you prolly quoted your languages remove the quotes ...
14069         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
14070     fi
14071 done
14072 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
14073     echo $WITH_LANG | grep -q en-US
14074     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
14076 # list with substituted ALL
14077 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
14078 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
14079 test "$WITH_LANG" = "en-US" && WITH_LANG=
14080 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14081     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14082     ALL_LANGS=`echo $ALL_LANGS qtz`
14084 AC_SUBST(ALL_LANGS)
14085 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14086 AC_SUBST(WITH_LANG)
14087 AC_SUBST(WITH_LANG_LIST)
14088 AC_SUBST(GIT_NEEDED_SUBMODULES)
14090 WITH_POOR_HELP_LOCALIZATIONS=
14091 if test -d "$SRC_ROOT/translations/source"; then
14092     for l in `ls -1 $SRC_ROOT/translations/source`; do
14093         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14094             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14095         fi
14096     done
14098 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14100 if test -n "$with_locales" -a "$with_locales" != ALL; then
14101     WITH_LOCALES="$with_locales"
14103     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14104     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14105     # config_host/config_locales.h.in
14106     for locale in $WITH_LOCALES; do
14107         lang=${locale%_*}
14109         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14111         case $lang in
14112         hi|mr*ne)
14113             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14114             ;;
14115         bg|ru)
14116             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14117             ;;
14118         esac
14119     done
14120 else
14121     AC_DEFINE(WITH_LOCALE_ALL)
14123 AC_SUBST(WITH_LOCALES)
14125 dnl git submodule update --reference
14126 dnl ===================================================================
14127 if test -n "${GIT_REFERENCE_SRC}"; then
14128     for repo in ${GIT_NEEDED_SUBMODULES}; do
14129         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14130             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14131         fi
14132     done
14134 AC_SUBST(GIT_REFERENCE_SRC)
14136 dnl git submodules linked dirs
14137 dnl ===================================================================
14138 if test -n "${GIT_LINK_SRC}"; then
14139     for repo in ${GIT_NEEDED_SUBMODULES}; do
14140         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14141             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14142         fi
14143     done
14145 AC_SUBST(GIT_LINK_SRC)
14147 dnl branding
14148 dnl ===================================================================
14149 AC_MSG_CHECKING([for alternative branding images directory])
14150 # initialize mapped arrays
14151 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14152 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14154 if test -z "$with_branding" -o "$with_branding" = "no"; then
14155     AC_MSG_RESULT([none])
14156     DEFAULT_BRAND_IMAGES="$brand_files"
14157 else
14158     if ! test -d $with_branding ; then
14159         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14160     else
14161         AC_MSG_RESULT([$with_branding])
14162         CUSTOM_BRAND_DIR="$with_branding"
14163         for lfile in $brand_files
14164         do
14165             if ! test -f $with_branding/$lfile ; then
14166                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14167                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14168             else
14169                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14170             fi
14171         done
14172         check_for_progress="yes"
14173     fi
14175 AC_SUBST([BRAND_INTRO_IMAGES])
14176 AC_SUBST([CUSTOM_BRAND_DIR])
14177 AC_SUBST([CUSTOM_BRAND_IMAGES])
14178 AC_SUBST([DEFAULT_BRAND_IMAGES])
14181 AC_MSG_CHECKING([for 'intro' progress settings])
14182 PROGRESSBARCOLOR=
14183 PROGRESSSIZE=
14184 PROGRESSPOSITION=
14185 PROGRESSFRAMECOLOR=
14186 PROGRESSTEXTCOLOR=
14187 PROGRESSTEXTBASELINE=
14189 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14190     source "$with_branding/progress.conf"
14191     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14192 else
14193     AC_MSG_RESULT([none])
14196 AC_SUBST(PROGRESSBARCOLOR)
14197 AC_SUBST(PROGRESSSIZE)
14198 AC_SUBST(PROGRESSPOSITION)
14199 AC_SUBST(PROGRESSFRAMECOLOR)
14200 AC_SUBST(PROGRESSTEXTCOLOR)
14201 AC_SUBST(PROGRESSTEXTBASELINE)
14204 dnl ===================================================================
14205 dnl Custom build version
14206 dnl ===================================================================
14207 AC_MSG_CHECKING([for extra build ID])
14208 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14209     EXTRA_BUILDID="$with_extra_buildid"
14211 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14212 if test -n "$EXTRA_BUILDID" ; then
14213     AC_MSG_RESULT([$EXTRA_BUILDID])
14214 else
14215     AC_MSG_RESULT([not set])
14217 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14219 OOO_VENDOR=
14220 AC_MSG_CHECKING([for vendor])
14221 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14222     OOO_VENDOR="$USERNAME"
14224     if test -z "$OOO_VENDOR"; then
14225         OOO_VENDOR="$USER"
14226     fi
14228     if test -z "$OOO_VENDOR"; then
14229         OOO_VENDOR="`id -u -n`"
14230     fi
14232     AC_MSG_RESULT([not set, using $OOO_VENDOR])
14233 else
14234     OOO_VENDOR="$with_vendor"
14235     AC_MSG_RESULT([$OOO_VENDOR])
14237 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14238 AC_SUBST(OOO_VENDOR)
14240 if test "$_os" = "Android" ; then
14241     ANDROID_PACKAGE_NAME=
14242     AC_MSG_CHECKING([for Android package name])
14243     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14244         if test -n "$ENABLE_DEBUG"; then
14245             # Default to the package name that makes ndk-gdb happy.
14246             ANDROID_PACKAGE_NAME="org.libreoffice"
14247         else
14248             ANDROID_PACKAGE_NAME="org.example.libreoffice"
14249         fi
14251         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14252     else
14253         ANDROID_PACKAGE_NAME="$with_android_package_name"
14254         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14255     fi
14256     AC_SUBST(ANDROID_PACKAGE_NAME)
14259 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14260 if test "$with_compat_oowrappers" = "yes"; then
14261     WITH_COMPAT_OOWRAPPERS=TRUE
14262     AC_MSG_RESULT(yes)
14263 else
14264     WITH_COMPAT_OOWRAPPERS=
14265     AC_MSG_RESULT(no)
14267 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14269 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14270 AC_MSG_CHECKING([for install dirname])
14271 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14272     INSTALLDIRNAME="$with_install_dirname"
14274 AC_MSG_RESULT([$INSTALLDIRNAME])
14275 AC_SUBST(INSTALLDIRNAME)
14277 AC_MSG_CHECKING([for prefix])
14278 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14279 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14280 PREFIXDIR="$prefix"
14281 AC_MSG_RESULT([$PREFIXDIR])
14282 AC_SUBST(PREFIXDIR)
14284 LIBDIR=[$(eval echo $(eval echo $libdir))]
14285 AC_SUBST(LIBDIR)
14287 DATADIR=[$(eval echo $(eval echo $datadir))]
14288 AC_SUBST(DATADIR)
14290 MANDIR=[$(eval echo $(eval echo $mandir))]
14291 AC_SUBST(MANDIR)
14293 DOCDIR=[$(eval echo $(eval echo $docdir))]
14294 AC_SUBST(DOCDIR)
14296 BINDIR=[$(eval echo $(eval echo $bindir))]
14297 AC_SUBST(BINDIR)
14299 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14300 AC_SUBST(INSTALLDIR)
14302 TESTINSTALLDIR="${BUILDDIR}/test-install"
14303 AC_SUBST(TESTINSTALLDIR)
14306 # ===================================================================
14307 # OAuth2 id and secrets
14308 # ===================================================================
14310 AC_MSG_CHECKING([for Google Drive client id and secret])
14311 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14312     AC_MSG_RESULT([not set])
14313     GDRIVE_CLIENT_ID="\"\""
14314     GDRIVE_CLIENT_SECRET="\"\""
14315 else
14316     AC_MSG_RESULT([set])
14317     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14318     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14320 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14321 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14323 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14324 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14325     AC_MSG_RESULT([not set])
14326     ALFRESCO_CLOUD_CLIENT_ID="\"\""
14327     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14328 else
14329     AC_MSG_RESULT([set])
14330     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14331     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14333 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14334 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14336 AC_MSG_CHECKING([for OneDrive client id and secret])
14337 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14338     AC_MSG_RESULT([not set])
14339     ONEDRIVE_CLIENT_ID="\"\""
14340     ONEDRIVE_CLIENT_SECRET="\"\""
14341 else
14342     AC_MSG_RESULT([set])
14343     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14344     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14346 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14347 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14350 dnl ===================================================================
14351 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14352 dnl --enable-dependency-tracking configure option
14353 dnl ===================================================================
14354 AC_MSG_CHECKING([whether to enable dependency tracking])
14355 if test "$enable_dependency_tracking" = "no"; then
14356     nodep=TRUE
14357     AC_MSG_RESULT([no])
14358 else
14359     AC_MSG_RESULT([yes])
14361 AC_SUBST(nodep)
14363 dnl ===================================================================
14364 dnl Number of CPUs to use during the build
14365 dnl ===================================================================
14366 AC_MSG_CHECKING([for number of processors to use])
14367 # plain --with-parallelism is just the default
14368 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14369     if test "$with_parallelism" = "no"; then
14370         PARALLELISM=0
14371     else
14372         PARALLELISM=$with_parallelism
14373     fi
14374 else
14375     if test "$enable_icecream" = "yes"; then
14376         PARALLELISM="40"
14377     else
14378         case `uname -s` in
14380         Darwin|FreeBSD|NetBSD|OpenBSD)
14381             PARALLELISM=`sysctl -n hw.ncpu`
14382             ;;
14384         Linux)
14385             PARALLELISM=`getconf _NPROCESSORS_ONLN`
14386         ;;
14387         # what else than above does profit here *and* has /proc?
14388         *)
14389             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14390             ;;
14391         esac
14393         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14394         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14395     fi
14398 if test $PARALLELISM -eq 0; then
14399     AC_MSG_RESULT([explicit make -j option needed])
14400 else
14401     AC_MSG_RESULT([$PARALLELISM])
14403 AC_SUBST(PARALLELISM)
14406 # Set up ILIB for MSVC build
14408 ILIB1=
14409 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14410     ILIB="."
14411     if test -n "$JAVA_HOME"; then
14412         ILIB="$ILIB;$JAVA_HOME/lib"
14413     fi
14414     ILIB1=-link
14415     PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14416     ILIB="$ILIB;$formatted_path"
14417     ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14418     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14419     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14420     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14421         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14422         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14423     fi
14424     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14425     ucrtlibpath_formatted=$formatted_path
14426     ILIB="$ILIB;$ucrtlibpath_formatted"
14427     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14428     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14429         PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14430         ILIB="$ILIB;$formatted_path"
14431     else
14432         PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14433         ILIB="$ILIB;$formatted_path"
14434     fi
14436     if test "$cross_compiling" != "yes"; then
14437         ILIB_FOR_BUILD="$ILIB"
14438     fi
14440 AC_SUBST(ILIB)
14441 AC_SUBST(ILIB_FOR_BUILD)
14443 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14444 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14445 dnl from consteval constructor initializing const variable",
14446 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
14447 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14448 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14449 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'",
14450 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14451 dnl constructor in ternary expression (/std:c++latest)", or
14452 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14453 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14454 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14455 dnl && "Ptr must be a pointer to Val type!"' failed.":
14456 AC_LANG_PUSH([C++])
14457 save_CXX=$CXX
14458 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14459     CXX="env LIB=$ILIB $CXX"
14461 save_CXXFLAGS=$CXXFLAGS
14462 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14463 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14464         struct S {
14465             consteval S() { i = 1; }
14466             int i = 0;
14467         };
14468         S const s;
14470         struct S1 { consteval S1(int) {} };
14471         struct S2 {
14472             S1 x;
14473             S2(): x(0) {}
14474         };
14476         struct S3 {
14477             consteval S3() {}
14478             union {
14479                 int a;
14480                 unsigned b = 0;
14481             };
14482         };
14483         void f() { S3(); }
14485         struct S4 { consteval S4() = default; };
14486         void f4(bool b) { b ? S4() : S4(); }
14488         struct S5 {
14489             consteval S5() { c = 0; }
14490             char * f() { return &c; }
14491             union {
14492                 char c;
14493                 int i;
14494             };
14495         };
14496         auto s5 = S5().f();
14497     ], [
14498         return (s.i == 1) ? 0 : 1;
14499     ])], [
14500         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14501         AC_MSG_RESULT([yes])
14502     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14503 CXX=$save_CXX
14504 CXXFLAGS=$save_CXXFLAGS
14505 AC_LANG_POP([C++])
14507 # ===================================================================
14508 # Creating bigger shared library to link against
14509 # ===================================================================
14510 AC_MSG_CHECKING([whether to create huge library])
14511 MERGELIBS=
14513 if test $_os = iOS -o $_os = Android; then
14514     # Never any point in mergelibs for these as we build just static
14515     # libraries anyway...
14516     enable_mergelibs=no
14519 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14520     if test $_os != Linux -a $_os != WINNT; then
14521         add_warning "--enable-mergelibs is not tested for this platform"
14522     fi
14523     MERGELIBS="TRUE"
14524     AC_MSG_RESULT([yes])
14525     AC_DEFINE(ENABLE_MERGELIBS)
14526 else
14527     AC_MSG_RESULT([no])
14529 AC_SUBST([MERGELIBS])
14531 dnl ===================================================================
14532 dnl icerun is a wrapper that stops us spawning tens of processes
14533 dnl locally - for tools that can't be executed on the compile cluster
14534 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14535 dnl ===================================================================
14536 AC_MSG_CHECKING([whether to use icerun wrapper])
14537 ICECREAM_RUN=
14538 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14539     ICECREAM_RUN=icerun
14540     AC_MSG_RESULT([yes])
14541 else
14542     AC_MSG_RESULT([no])
14544 AC_SUBST(ICECREAM_RUN)
14546 dnl ===================================================================
14547 dnl Setup the ICECC_VERSION for the build the same way it was set for
14548 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14549 dnl ===================================================================
14550 x_ICECC_VERSION=[\#]
14551 if test -n "$ICECC_VERSION" ; then
14552     x_ICECC_VERSION=
14554 AC_SUBST(x_ICECC_VERSION)
14555 AC_SUBST(ICECC_VERSION)
14557 dnl ===================================================================
14559 AC_MSG_CHECKING([MPL subset])
14560 MPL_SUBSET=
14562 if test "$enable_mpl_subset" = "yes"; then
14563     warn_report=false
14564     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14565         warn_report=true
14566     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14567         warn_report=true
14568     fi
14569     if test "$warn_report" = "true"; then
14570         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14571     fi
14572     if test "x$enable_postgresql_sdbc" != "xno"; then
14573         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14574     fi
14575     if test "$enable_lotuswordpro" = "yes"; then
14576         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14577     fi
14578     if test -n "$ENABLE_POPPLER"; then
14579         if test "x$SYSTEM_POPPLER" = "x"; then
14580             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14581         fi
14582     fi
14583     # cf. m4/libo_check_extension.m4
14584     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14585         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14586     fi
14587     for theme in $WITH_THEMES; do
14588         case $theme in
14589         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14590             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14591         *) : ;;
14592         esac
14593     done
14595     ENABLE_OPENGL_TRANSITIONS=
14597     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14598         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14599     fi
14601     MPL_SUBSET="TRUE"
14602     AC_DEFINE(MPL_HAVE_SUBSET)
14603     AC_MSG_RESULT([only])
14604 else
14605     AC_MSG_RESULT([no restrictions])
14607 AC_SUBST(MPL_SUBSET)
14609 dnl ===================================================================
14611 AC_MSG_CHECKING([formula logger])
14612 ENABLE_FORMULA_LOGGER=
14614 if test "x$enable_formula_logger" = "xyes"; then
14615     AC_MSG_RESULT([yes])
14616     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14617     ENABLE_FORMULA_LOGGER=TRUE
14618 elif test -n "$ENABLE_DBGUTIL" ; then
14619     AC_MSG_RESULT([yes])
14620     AC_DEFINE(ENABLE_FORMULA_LOGGER)
14621     ENABLE_FORMULA_LOGGER=TRUE
14622 else
14623     AC_MSG_RESULT([no])
14626 AC_SUBST(ENABLE_FORMULA_LOGGER)
14628 dnl ===================================================================
14629 dnl Checking for active Antivirus software.
14630 dnl ===================================================================
14632 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14633     AC_MSG_CHECKING([for active Antivirus software])
14634     PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14635     ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14636     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14637         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14638             AC_MSG_RESULT([found])
14639             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14640             echo $EICAR_STRING > $SRC_ROOT/eicar
14641             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14642             rm $SRC_ROOT/eicar
14643             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14644                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14645             fi
14646             echo $EICAR_STRING > $BUILDDIR/eicar
14647             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14648             rm $BUILDDIR/eicar
14649             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14650                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14651             fi
14652             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"
14653         else
14654             AC_MSG_RESULT([not found])
14655         fi
14656     else
14657         AC_MSG_RESULT([n/a])
14658     fi
14661 dnl ===================================================================
14662 dnl Setting up the environment.
14663 dnl ===================================================================
14664 AC_MSG_NOTICE([setting up the build environment variables...])
14666 AC_SUBST(COMPATH)
14668 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
14669     if test -d "$COMPATH/atlmfc/lib/spectre"; then
14670         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14671         ATL_INCLUDE="$COMPATH/atlmfc/include"
14672     elif test -d "$COMPATH/atlmfc/lib"; then
14673         ATL_LIB="$COMPATH/atlmfc/lib"
14674         ATL_INCLUDE="$COMPATH/atlmfc/include"
14675     else
14676         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14677         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14678     fi
14679     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14680     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14681     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14684 if test "$build_os" = "cygwin"; then
14685     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14686     PathFormat "/usr/bin/find.exe"
14687     FIND="$formatted_path"
14688     PathFormat "/usr/bin/sort.exe"
14689     SORT="$formatted_path"
14690     PathFormat "/usr/bin/grep.exe"
14691     WIN_GREP="$formatted_path"
14692     PathFormat "/usr/bin/ls.exe"
14693     WIN_LS="$formatted_path"
14694     PathFormat "/usr/bin/touch.exe"
14695     WIN_TOUCH="$formatted_path"
14696 else
14697     FIND=find
14698     SORT=sort
14701 AC_SUBST(ATL_INCLUDE)
14702 AC_SUBST(ATL_LIB)
14703 AC_SUBST(FIND)
14704 AC_SUBST(SORT)
14705 AC_SUBST(WIN_GREP)
14706 AC_SUBST(WIN_LS)
14707 AC_SUBST(WIN_TOUCH)
14709 AC_SUBST(BUILD_TYPE)
14711 AC_SUBST(SOLARINC)
14713 PathFormat "$PERL"
14714 PERL="$formatted_path"
14715 AC_SUBST(PERL)
14717 if test -n "$TMPDIR"; then
14718     TEMP_DIRECTORY="$TMPDIR"
14719 else
14720     TEMP_DIRECTORY="/tmp"
14722 if test "$build_os" = "cygwin"; then
14723     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14725 AC_SUBST(TEMP_DIRECTORY)
14727 # setup the PATH for the environment
14728 if test -n "$LO_PATH_FOR_BUILD"; then
14729     LO_PATH="$LO_PATH_FOR_BUILD"
14730     case "$host_os" in
14731     cygwin*|wsl*)
14732         pathmunge "$MSVC_HOST_PATH" "before"
14733         ;;
14734     esac
14735 else
14736     LO_PATH="$PATH"
14738     case "$host_os" in
14740     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14741         if test "$ENABLE_JAVA" != ""; then
14742             pathmunge "$JAVA_HOME/bin" "after"
14743         fi
14744         ;;
14746     cygwin*|wsl*)
14747         # Win32 make needs native paths
14748         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14749             LO_PATH=`cygpath -p -m "$PATH"`
14750         fi
14751         if test "$WIN_BUILD_ARCH" = "x64"; then
14752             # needed for msi packaging
14753             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14754         fi
14755         # .NET 4.6 and higher don't have bin directory
14756         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14757             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14758         fi
14759         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14760         pathmunge "$CSC_PATH" "before"
14761         pathmunge "$MIDL_PATH" "before"
14762         pathmunge "$AL_PATH" "before"
14763         pathmunge "$MSVC_MULTI_PATH" "before"
14764         pathmunge "$MSVC_BUILD_PATH" "before"
14765         if test -n "$MSBUILD_PATH" ; then
14766             pathmunge "$MSBUILD_PATH" "before"
14767         fi
14768         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14769         if test "$ENABLE_JAVA" != ""; then
14770             if test -d "$JAVA_HOME/jre/bin/client"; then
14771                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14772             fi
14773             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14774                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14775             fi
14776             pathmunge "$JAVA_HOME/bin" "before"
14777         fi
14778         pathmunge "$MSVC_HOST_PATH" "before"
14779         ;;
14781     solaris*)
14782         pathmunge "/usr/css/bin" "before"
14783         if test "$ENABLE_JAVA" != ""; then
14784             pathmunge "$JAVA_HOME/bin" "after"
14785         fi
14786         ;;
14787     esac
14790 AC_SUBST(LO_PATH)
14792 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14793 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14794     x_LO_ELFCHECK_ALLOWLIST=
14795 else
14796     x_LO_ELFCHECK_ALLOWLIST=[\#]
14798 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14799 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14801 libo_FUZZ_SUMMARY
14803 # Generate a configuration sha256 we can use for deps
14804 if test -f config_host.mk; then
14805     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14807 if test -f config_host_lang.mk; then
14808     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14811 CFLAGS=$my_original_CFLAGS
14812 CXXFLAGS=$my_original_CXXFLAGS
14813 CPPFLAGS=$my_original_CPPFLAGS
14815 AC_CONFIG_LINKS([include:include])
14817 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14818 # BUILD platform configuration] - otherwise breaks cross building
14819 AC_CONFIG_FILES([config_host.mk
14820                  config_host_lang.mk
14821                  Makefile
14822                  lo.xcent
14823                  bin/bffvalidator.sh
14824                  bin/odfvalidator.sh
14825                  bin/officeotron.sh
14826                  hardened_runtime.xcent
14827                  instsetoo_native/util/openoffice.lst
14828                  sysui/desktop/macosx/Info.plist
14829                  vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14831 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
14832 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14833 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14834 AC_CONFIG_HEADERS([config_host/config_clang.h])
14835 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14836 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14837 AC_CONFIG_HEADERS([config_host/config_eot.h])
14838 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14839 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14840 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14841 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14842 AC_CONFIG_HEADERS([config_host/config_features.h])
14843 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14844 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14845 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14846 AC_CONFIG_HEADERS([config_host/config_folders.h])
14847 AC_CONFIG_HEADERS([config_host/config_fonts.h])
14848 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14849 AC_CONFIG_HEADERS([config_host/config_gio.h])
14850 AC_CONFIG_HEADERS([config_host/config_global.h])
14851 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14852 AC_CONFIG_HEADERS([config_host/config_java.h])
14853 AC_CONFIG_HEADERS([config_host/config_langs.h])
14854 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14855 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14856 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14857 AC_CONFIG_HEADERS([config_host/config_locales.h])
14858 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14859 AC_CONFIG_HEADERS([config_host/config_oox.h])
14860 AC_CONFIG_HEADERS([config_host/config_options.h])
14861 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14862 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14863 AC_CONFIG_HEADERS([config_host/config_skia.h])
14864 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14865 AC_CONFIG_HEADERS([config_host/config_validation.h])
14866 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14867 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14868 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14869 AC_CONFIG_HEADERS([config_host/config_version.h])
14870 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14871 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14872 AC_CONFIG_HEADERS([config_host/config_python.h])
14873 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14874 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
14875 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14876 AC_OUTPUT
14878 if test "$CROSS_COMPILING" = TRUE; then
14879     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14882 # touch the config timestamp file
14883 if test ! -f config_host.mk.stamp; then
14884     echo > config_host.mk.stamp
14885 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14886     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14887 else
14888     echo > config_host.mk.stamp
14891 # touch the config lang timestamp file
14892 if test ! -f config_host_lang.mk.stamp; then
14893     echo > config_host_lang.mk.stamp
14894 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14895     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14896 else
14897     echo > config_host_lang.mk.stamp
14901 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14902         -a "$build_os" = "cygwin"; then
14904 cat << _EOS
14905 ****************************************************************************
14906 WARNING:
14907 Your make version is known to be horribly slow, and hard to debug
14908 problems with. To get a reasonably functional make please do:
14910 to install a pre-compiled binary make for Win32
14912  mkdir -p /opt/lo/bin
14913  cd /opt/lo/bin
14914  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14915  cp make-4.2.1-msvc.exe make
14916  chmod +x make
14918 to install from source:
14919 place yourself in a working directory of you choice.
14921  git clone git://git.savannah.gnu.org/make.git
14923  [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"]
14924  set PATH=%PATH%;C:\Cygwin\bin
14925  [or Cygwin64, if that is what you have]
14926  cd path-to-make-repo-you-cloned-above
14927  build_w32.bat --without-guile
14929 should result in a WinRel/gnumake.exe.
14930 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14932 Then re-run autogen.sh
14934 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14935 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14937 _EOS
14938 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14939     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14944 cat << _EOF
14945 ****************************************************************************
14947 To show information on various make targets and make flags, run:
14948 $GNUMAKE help
14950 To just build, run:
14951 $GNUMAKE
14953 _EOF
14955 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14956     cat << _EOF
14957 After the build has finished successfully, you can immediately run what you built using the command:
14958 _EOF
14960     if test $_os = Darwin; then
14961         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14962     else
14963         echo instdir/program/soffice
14964     fi
14965     cat << _EOF
14967 If you want to run the unit tests, run:
14968 $GNUMAKE check
14970 _EOF
14973 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14974     echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14975     cat "$WARNINGS_FILE_FOR_BUILD"
14976     echo
14979 if test -s "$WARNINGS_FILE"; then
14980     echo "HOST config ($WARNINGS_FILE)"
14981     cat "$WARNINGS_FILE"
14984 # Remove unneeded emconfigure artifacts
14985 rm -f a.out a.wasm a.out.js a.out.wasm
14987 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: