[en-GB] Added 13 words to autocorrect
[LibreOffice.git] / configure.ac
blob78bb7998e62c7a62cc618ed312966cbea5619496
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.2.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
17 AC_PREREQ([2.59])
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19     [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22     AC_MSG_ERROR([You have sourced config_host.mk in this shell.  This may lead to trouble, please run in a fresh (login) shell.])
25 save_CC=$CC
26 save_CXX=$CXX
28 first_arg_basename()
30     for i in $1; do
31         basename "$i"
32         break
33     done
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
39 BUILD_TYPE="LibO"
40 SCPDEFS=""
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
44 FilterLibs()
46     # Return value: $filteredlibs
48     filteredlibs=
49     for f in $1; do
50         case "$f" in
51             # let's start with Fedora's paths for now
52             -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
53                 # ignore it: on UNIXoids it is searched by default anyway
54                 # but if it's given explicitly then it may override other paths
55                 # (on macOS it would be an error to use it instead of SDK)
56                 ;;
57             *)
58                 filteredlibs="$filteredlibs $f"
59                 ;;
60         esac
61     done
64 PathFormat()
66     # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
67     # function is called also on Unix.
68     #
69     # Return value: $formatted_path and $formatted_path_unix.
70     #
71     # $formatted_path is the argument in Windows format, but using forward slashes instead of
72     # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
73     # or shell metacharacters).
74     #
75     # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
76     # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
77     # Unix pathname.
78     #
79     # Errors out if 8.3 names are needed but aren't present for some of the path components.
81     # Examples:
82     #
83     # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
84     #
85     # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
86     #
87     # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
88     #
89     # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
90     #
91     # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
92     #
93     # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
94     #
95     # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97     if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98         printf "PathFormat $1 ==> "
99     fi
101     formatted_path="$1"
102     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
103         if test "$build_os" = "wsl"; then
104             formatted_path=$(echo "$formatted_path" | tr -d '\r')
105         fi
107         pf_conv_to_dos=
108         # spaces,parentheses,brackets,braces are problematic in pathname
109         # so are backslashes
110         case "$formatted_path" in
111             *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
112                 pf_conv_to_dos="yes"
113             ;;
114         esac
115         if test "$pf_conv_to_dos" = "yes"; then
116             if test "$build_os" = "wsl"; then
117                 case "$formatted_path" in
118                     /*)
119                         formatted_path=$(wslpath -w "$formatted_path")
120                         ;;
121                 esac
122                 formatted_path=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$formatted_path")
123             elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
124                 formatted_path=`cygpath -sm "$formatted_path"`
125             else
126                 formatted_path=`cygpath -d "$formatted_path"`
127             fi
128             if test $? -ne 0;  then
129                 AC_MSG_ERROR([path conversion failed for "$1".])
130             fi
131         fi
132         fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
133         fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
134         if test "$fp_count_slash$fp_count_colon" != "00"; then
135             if test "$fp_count_colon" = "0"; then
136                 new_formatted_path=`realpath "$formatted_path"`
137                 if test $? -ne 0;  then
138                     AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
139                 else
140                     formatted_path="$new_formatted_path"
141                 fi
142             fi
143             if test "$build_os" = "wsl"; then
144                 if test "$fp_count_colon" != "0"; then
145                     formatted_path=$(wslpath "$formatted_path")
146                     local final_slash=
147                     case "$formatted_path" in
148                         */)
149                             final_slash=/
150                             ;;
151                     esac
152                     formatted_path=$(wslpath -m $formatted_path)
153                     case "$formatted_path" in
154                         */)
155                             ;;
156                         *)
157                             formatted_path="$formatted_path"$final_slash
158                             ;;
159                     esac
160                 else
161                     formatted_path=$(wslpath -m "$formatted_path")
162                 fi
163             else
164                 formatted_path=`cygpath -m "$formatted_path"`
165             fi
166             if test $? -ne 0;  then
167                 AC_MSG_ERROR([path conversion failed for "$1".])
168             fi
169         fi
170         fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
171         if test "$fp_count_space" != "0"; then
172             AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
173         fi
174     fi
175     if test "$build_os" = "wsl"; then
176         # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
177         formatted_path_unix=$(wslpath "$formatted_path")
178     else
179         # But Cygwin can
180         formatted_path_unix="$formatted_path"
181     fi
184 AbsolutePath()
186     # There appears to be no simple and portable method to get an absolute and
187     # canonical path, so we try creating the directory if does not exist and
188     # utilizing the shell and pwd.
190     # Args: $1: A possibly relative pathname
191     # Return value: $absolute_path
193     local rel="$1"
194     absolute_path=""
195     test ! -e "$rel" && mkdir -p "$rel"
196     if test -d "$rel" ; then
197         cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
198         absolute_path="$(pwd)"
199         cd - > /dev/null
200     else
201         AC_MSG_ERROR([Failed to resolve absolute path.  "$rel" does not exist or is not a directory.])
202     fi
205 rm -f warn
206 have_WARNINGS="no"
207 add_warning()
209     if test "$have_WARNINGS" = "no"; then
210         echo "*************************************" > warn
211         have_WARNINGS="yes"
212         if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
213             dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
214             COLORWARN='*\e@<:@1;33;40m WARNING \e@<:@0m:'
215         else
216             COLORWARN="* WARNING :"
217         fi
218     fi
219     echo "$COLORWARN $@" >> warn
222 dnl Some Mac User have the bad habit of letting a lot of crap
223 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
224 dnl that confuse the build.
225 dnl For the ones that use LODE, let's be nice and protect them
226 dnl from themselves
228 mac_sanitize_path()
230     mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
231 dnl a common but nevertheless necessary thing that may be in a fancy
232 dnl path location is git, so make sure we have it
233     mac_git_path=`which git 2>/dev/null`
234     if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
235         mac_path="$mac_path:`dirname $mac_git_path`"
236     fi
237 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
238 dnl path location is gpg, so make sure we find it
239     mac_gpg_path=`which gpg 2>/dev/null`
240     if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
241         mac_path="$mac_path:`dirname $mac_gpg_path`"
242     fi
243     PATH="$mac_path"
244     unset mac_path
245     unset mac_git_path
246     unset mac_gpg_path
249 echo "********************************************************************"
250 echo "*"
251 echo "*   Running ${PACKAGE_NAME} build configuration."
252 echo "*"
253 echo "********************************************************************"
254 echo ""
256 dnl ===================================================================
257 dnl checks build and host OSes
258 dnl do this before argument processing to allow for platform dependent defaults
259 dnl ===================================================================
261 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
262 # Linux on WSL) trust that.
263 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
264     ac_cv_host="x86_64-pc-wsl"
265     ac_cv_host_cpu="x86_64"
266     ac_cv_host_os="wsl"
267     ac_cv_build="$ac_cv_host"
268     ac_cv_build_cpu="$ac_cv_host_cpu"
269     ac_cv_build_os="$ac_cv_host_os"
271     # Emulation of Cygwin's cygpath command for WSL.
272     cygpath()
273     {
274         if test -n "$UNITTEST_WSL_CYGPATH"; then
275             echo -n cygpath "$@" "==> "
276         fi
278         # Cygwin's real cygpath has a plethora of options but we use only a few here.
279         local args="$@"
280         local opt
281         local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
282         OPTIND=1
284         while getopts dmuwlsp opt; do
285             case "$opt" in
286                 \?)
287                     AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
288                     ;;
289                 ?)
290                     eval opt_$opt=yes
291                     ;;
292             esac
293         done
295         shift $((OPTIND-1))
297         if test $# -ne 1; then
298             AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
299         fi
301         local input="$1"
303         local result
305         if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
306             # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
308             if test -n "$opt_u"; then
309                 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
310             fi
312             case "$input" in
313                 /mnt/*)
314                     # A Windows file in WSL format
315                     input=$(wslpath -w "$input")
316                     ;;
317                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
318                     # Already in Windows format
319                     ;;
320                 /*)
321                     input=$(wslpath -w "$input")
322                     ;;
323                 *)
324                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
325                     ;;
326             esac
327             if test -n "$opt_d" -o -n "$opt_s"; then
328                 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input")
329             fi
330             if test -n "$opt_m"; then
331                 input="${input//\\//}"
332             fi
333             echo "$input"
334         else
335             # Print Unix path
337             case "$input" in
338                 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
339                     wslpath -u "$input"
340                     ;;
341                 /)
342                     echo "$input"
343                     ;;
344                 *)
345                     AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
346                     ;;
347             esac
348         fi
349     }
351     if test -n "$UNITTEST_WSL_CYGPATH"; then
352         BUILDDIR=.
354         # Nothing special with these file names, just arbitrary ones picked to test with
355         cygpath -d /usr/lib64/ld-linux-x86-64.so.2
356         cygpath -w /usr/lib64/ld-linux-x86-64.so.2
357         cygpath -m /usr/lib64/ld-linux-x86-64.so.2
358         cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
359         # At least on my machine for instance this file does have an 8.3 name
360         cygpath -d /mnt/c/windows/WindowsUpdate.log
361         # But for instance this one doesn't
362         cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
363         cygpath -ws /mnt/c/windows/WindowsUpdate.log
364         cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
365         cygpath -ms /mnt/c/windows/WindowsUpdate.log
367         cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
368         cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
370         exit 0
371     fi
374 AC_CANONICAL_HOST
375 AC_CANONICAL_BUILD
377 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
378     BUILDDIR=.
379     GREP=grep
381     # Use of PathFormat must be after AC_CANONICAL_BUILD above
382     PathFormat /
383     printf "$formatted_path , $formatted_path_unix\n"
385     PathFormat $PWD
386     printf "$formatted_path , $formatted_path_unix\n"
388     PathFormat "$PROGRAMFILESX86"
389     printf "$formatted_path , $formatted_path_unix\n"
391     exit 0
394 AC_MSG_CHECKING([for product name])
395 PRODUCTNAME="AC_PACKAGE_NAME"
396 if test -n "$with_product_name" -a "$with_product_name" != no; then
397     PRODUCTNAME="$with_product_name"
399 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
400     PRODUCTNAME="${PRODUCTNAME}Dev"
402 AC_MSG_RESULT([$PRODUCTNAME])
403 AC_SUBST(PRODUCTNAME)
404 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
405 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
407 dnl ===================================================================
408 dnl Our version is defined by the AC_INIT() at the top of this script.
409 dnl ===================================================================
411 AC_MSG_CHECKING([for package version])
412 if test -n "$with_package_version" -a "$with_package_version" != no; then
413     PACKAGE_VERSION="$with_package_version"
415 AC_MSG_RESULT([$PACKAGE_VERSION])
417 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
419 LIBO_VERSION_MAJOR=$1
420 LIBO_VERSION_MINOR=$2
421 LIBO_VERSION_MICRO=$3
422 LIBO_VERSION_PATCH=$4
424 LIBO_VERSION_SUFFIX=$5
426 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
427 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
428 # they get undoubled before actually passed to sed.
429 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
430 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
431 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
432 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
434 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
435 # three non-negative integers. Please find more information about CFBundleVersion at
436 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
438 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
439 # of at most three non-negative integers. Please find more information about
440 # CFBundleShortVersionString at
441 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
443 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
445 if test "$enable_macosx_sandbox" = yes; then
446     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
447     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
448 else
449     MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
450     MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
453 AC_SUBST(LIBO_VERSION_MAJOR)
454 AC_SUBST(LIBO_VERSION_MINOR)
455 AC_SUBST(LIBO_VERSION_MICRO)
456 AC_SUBST(LIBO_VERSION_PATCH)
457 AC_SUBST(LIBO_VERSION_SUFFIX)
458 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
459 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
460 AC_SUBST(MACOSX_BUNDLE_VERSION)
462 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
463 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
464 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
465 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
467 LIBO_THIS_YEAR=`date +%Y`
468 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
470 dnl ===================================================================
471 dnl Product version
472 dnl ===================================================================
473 AC_MSG_CHECKING([for product version])
474 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
475 AC_MSG_RESULT([$PRODUCTVERSION])
476 AC_SUBST(PRODUCTVERSION)
478 AC_PROG_EGREP
479 # AC_PROG_EGREP doesn't set GREP on all systems as well
480 AC_PATH_PROG(GREP, grep)
482 BUILDDIR=`pwd`
483 cd $srcdir
484 SRC_ROOT=`pwd`
485 cd $BUILDDIR
486 x_Cygwin=[\#]
488 dnl ======================================
489 dnl Required GObject introspection version
490 dnl ======================================
491 INTROSPECTION_REQUIRED_VERSION=1.32.0
493 dnl ===================================================================
494 dnl Search all the common names for GNU Make
495 dnl ===================================================================
496 AC_MSG_CHECKING([for GNU Make])
498 # try to use our own make if it is available and GNUMAKE was not already defined
499 if test -z "$GNUMAKE"; then
500     if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
501         GNUMAKE="$LODE_HOME/opt/bin/make"
502     elif test -x "/opt/lo/bin/make"; then
503         GNUMAKE="/opt/lo/bin/make"
504     fi
507 GNUMAKE_WIN_NATIVE=
508 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
509     if test -n "$a"; then
510         $a --version 2> /dev/null | grep GNU  2>&1 > /dev/null
511         if test $? -eq 0;  then
512             if test "$build_os" = "cygwin"; then
513                 if test -n "$($a -v | grep 'Built for Windows')" ; then
514                     GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
515                     GNUMAKE_WIN_NATIVE="TRUE"
516                 else
517                     GNUMAKE=`which $a`
518                 fi
519             else
520                 GNUMAKE=`which $a`
521             fi
522             break
523         fi
524     fi
525 done
526 AC_MSG_RESULT($GNUMAKE)
527 if test -z "$GNUMAKE"; then
528     AC_MSG_ERROR([not found. install GNU Make.])
529 else
530     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
531         AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
532     fi
535 win_short_path_for_make()
537     local short_path="$1"
538     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
539         cygpath -sm "$short_path"
540     else
541         cygpath -u "$(cygpath -d "$short_path")"
542     fi
546 if test "$build_os" = "cygwin"; then
547     PathFormat "$SRC_ROOT"
548     SRC_ROOT="$formatted_path"
549     PathFormat "$BUILDDIR"
550     BUILDDIR="$formatted_path"
551     x_Cygwin=
552     AC_MSG_CHECKING(for explicit COMSPEC)
553     if test -z "$COMSPEC"; then
554         AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
555     else
556         AC_MSG_RESULT([found: $COMSPEC])
557     fi
560 AC_SUBST(SRC_ROOT)
561 AC_SUBST(BUILDDIR)
562 AC_SUBST(x_Cygwin)
563 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
564 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
565 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
567 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
568     AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
571 # need sed in os checks...
572 AC_PATH_PROGS(SED, sed)
573 if test -z "$SED"; then
574     AC_MSG_ERROR([install sed to run this script])
577 # Set the ENABLE_LTO variable
578 # ===================================================================
579 AC_MSG_CHECKING([whether to use link-time optimization])
580 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
581     ENABLE_LTO="TRUE"
582     AC_MSG_RESULT([yes])
583 else
584     ENABLE_LTO=""
585     AC_MSG_RESULT([no])
587 AC_SUBST(ENABLE_LTO)
589 AC_ARG_ENABLE(fuzz-options,
590     AS_HELP_STRING([--enable-fuzz-options],
591         [Randomly enable or disable each of those configurable options
592          that are supposed to be freely selectable without interdependencies,
593          or where bad interaction from interdependencies is automatically avoided.])
596 dnl ===================================================================
597 dnl When building for Android, --with-android-ndk,
598 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
599 dnl mandatory
600 dnl ===================================================================
602 AC_ARG_WITH(android-ndk,
603     AS_HELP_STRING([--with-android-ndk],
604         [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
607 AC_ARG_WITH(android-ndk-toolchain-version,
608     AS_HELP_STRING([--with-android-ndk-toolchain-version],
609         [Specify which toolchain version to use, of those present in the
610         Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
611         with_android_ndk_toolchain_version=clang5.0)
613 AC_ARG_WITH(android-sdk,
614     AS_HELP_STRING([--with-android-sdk],
615         [Specify location of the Android SDK. Mandatory when building for Android.]),
618 AC_ARG_WITH(android-api-level,
619     AS_HELP_STRING([--with-android-api-level],
620         [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
623 ANDROID_NDK_HOME=
624 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
625     with_android_ndk="$SRC_ROOT/external/android-ndk"
627 if test -n "$with_android_ndk"; then
628     eval ANDROID_NDK_HOME=$with_android_ndk
630     # Set up a lot of pre-canned defaults
632     if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then
633         if test ! -f $ANDROID_NDK_HOME/source.properties; then
634             AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.])
635         fi
636         ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
637     else
638         ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
639     fi
640     if test -z "$ANDROID_NDK_VERSION";  then
641         AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
642     fi
643     case $ANDROID_NDK_VERSION in
644     r9*|r10*)
645         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
646         ;;
647     11.1.*|12.1.*|13.1.*|14.1.*)
648         AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
649         ;;
650     16.*|17.*|18.*|19.*|20.*)
651         ;;
652     *)
653         AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
654         add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
655         ;;
656     esac
658     ANDROID_API_LEVEL=16
659     if test -n "$with_android_api_level" ; then
660         ANDROID_API_LEVEL="$with_android_api_level"
661     fi
663     android_cpu=$host_cpu
664     if test $host_cpu = arm; then
665         android_platform_prefix=arm-linux-androideabi
666         android_gnu_prefix=$android_platform_prefix
667         LLVM_TRIPLE=armv7a-linux-androideabi
668         ANDROID_APP_ABI=armeabi-v7a
669         ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
670     elif test $host_cpu = aarch64; then
671         android_platform_prefix=aarch64-linux-android
672         android_gnu_prefix=$android_platform_prefix
673         LLVM_TRIPLE=$android_platform_prefix
674         # minimum android version that supports aarch64
675         if test "$ANDROID_API_LEVEL" -lt "21" ; then
676             ANDROID_API_LEVEL=21
677         fi
678         ANDROID_APP_ABI=arm64-v8a
679     elif test $host_cpu = x86_64; then
680         android_platform_prefix=x86_64-linux-android
681         android_gnu_prefix=$android_platform_prefix
682         LLVM_TRIPLE=$android_platform_prefix
683         # minimum android version that supports x86_64
684         ANDROID_API_LEVEL=21
685         ANDROID_APP_ABI=x86_64
686     else
687         # host_cpu is something like "i386" or "i686" I guess, NDK uses
688         # "x86" in some contexts
689         android_cpu=x86
690         android_platform_prefix=$android_cpu
691         android_gnu_prefix=i686-linux-android
692         LLVM_TRIPLE=$android_gnu_prefix
693         ANDROID_APP_ABI=x86
694     fi
696     case "$with_android_ndk_toolchain_version" in
697     clang5.0)
698         ANDROID_GCC_TOOLCHAIN_VERSION=4.9
699         ;;
700     *)
701         AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
702     esac
704     AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
706     # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
707     # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
708     # manage to link the (app-specific) single huge .so that is built for the app in
709     # android/source/ if there is debug information in a significant part of the object files.
710     # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
711     # all objects have been built with debug information.)
712     case $build_os in
713     linux-gnu*)
714         android_HOST_TAG=linux-x86_64
715         ;;
716     darwin*)
717         android_HOST_TAG=darwin-x86_64
718         ;;
719     *)
720         AC_MSG_ERROR([We only support building for Android from Linux or macOS])
721         # ndk would also support windows and windows-x86_64
722         ;;
723     esac
724     android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG
725     ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
726     dnl TODO: NSS build uses it...
727     ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
728     AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
730     test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
731     test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
732     test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
733     test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
734     test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
736     ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
737     ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
738     if test "$ENABLE_LTO" = TRUE; then
739         # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
740         # $CC and $CXX when building external libraries
741         ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
742     fi
744     ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
746     if test -z "$CC"; then
747         CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
748         CC_BASE="clang"
749     fi
750     if test -z "$CXX"; then
751         CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
752         CXX_BASE="clang++"
753     fi
755     # remember to download the ownCloud Android library later
756     BUILD_TYPE="$BUILD_TYPE OWNCLOUD_ANDROID_LIB"
758 AC_SUBST(ANDROID_NDK_HOME)
759 AC_SUBST(ANDROID_APP_ABI)
760 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
762 dnl ===================================================================
763 dnl --with-android-sdk
764 dnl ===================================================================
765 ANDROID_SDK_HOME=
766 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
767     with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
769 if test -n "$with_android_sdk"; then
770     eval ANDROID_SDK_HOME=$with_android_sdk
771     PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
773 AC_SUBST(ANDROID_SDK_HOME)
775 AC_ARG_ENABLE([android-lok],
776     AS_HELP_STRING([--enable-android-lok],
777         [The Android app from the android/ subdir needs several tweaks all
778          over the place that break the LOK when used in the Online-based
779          Android app.  This switch indicates that the intent of this build is
780          actually the Online-based, non-modified LOK.])
782 ENABLE_ANDROID_LOK=
783 if test -n "$ANDROID_NDK_HOME" ; then
784     if test "$enable_android_lok" = yes; then
785         ENABLE_ANDROID_LOK=TRUE
786         AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
787         AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
788     else
789         AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
790     fi
792 AC_SUBST([ENABLE_ANDROID_LOK])
794 libo_FUZZ_ARG_ENABLE([android-editing],
795     AS_HELP_STRING([--enable-android-editing],
796         [Enable the experimental editing feature on Android.])
798 ENABLE_ANDROID_EDITING=
799 if test "$enable_android_editing" = yes; then
800     ENABLE_ANDROID_EDITING=TRUE
802 AC_SUBST([ENABLE_ANDROID_EDITING])
804 dnl ===================================================================
805 dnl The following is a list of supported systems.
806 dnl Sequential to keep the logic very simple
807 dnl These values may be checked and reset later.
808 dnl ===================================================================
809 #defaults unless the os test overrides this:
810 test_randr=yes
811 test_xrender=yes
812 test_cups=yes
813 test_dbus=yes
814 test_fontconfig=yes
815 test_cairo=no
816 test_gdb_index=no
817 test_split_debug=no
819 # Default values, as such probably valid just for Linux, set
820 # differently below just for Mac OSX, but at least better than
821 # hardcoding these as we used to do. Much of this is duplicated also
822 # in solenv for old build system and for gbuild, ideally we should
823 # perhaps define stuff like this only here in configure.ac?
825 LINKFLAGSSHL="-shared"
826 PICSWITCH="-fpic"
827 DLLPOST=".so"
829 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
831 INSTROOTBASESUFFIX=
832 INSTROOTCONTENTSUFFIX=
833 SDKDIRNAME=sdk
835 HOST_PLATFORM="$host"
837 host_cpu_for_clang="$host_cpu"
839 case "$host_os" in
841 solaris*)
842     build_gstreamer_1_0=yes
843     test_freetype=yes
844     build_skia=yes
845     _os=SunOS
847     dnl ===========================================================
848     dnl Check whether we're using Solaris 10 - SPARC or Intel.
849     dnl ===========================================================
850     AC_MSG_CHECKING([the Solaris operating system release])
851     _os_release=`echo $host_os | $SED -e s/solaris2\.//`
852     if test "$_os_release" -lt "10"; then
853         AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
854     else
855         AC_MSG_RESULT([ok ($_os_release)])
856     fi
858     dnl Check whether we're using a SPARC or i386 processor
859     AC_MSG_CHECKING([the processor type])
860     if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
861         AC_MSG_RESULT([ok ($host_cpu)])
862     else
863         AC_MSG_ERROR([only SPARC and i386 processors are supported])
864     fi
865     ;;
867 linux-gnu*|k*bsd*-gnu*)
868     build_gstreamer_1_0=yes
869     test_kf5=yes
870     test_gtk3_kde5=yes
871     build_skia=yes
872     test_gdb_index=yes
873     test_split_debug=yes
874     if test "$enable_fuzzers" != yes; then
875         test_freetype=yes
876         test_fontconfig=yes
877     else
878         test_freetype=no
879         test_fontconfig=no
880         BUILD_TYPE="$BUILD_TYPE FONTCONFIG FREETYPE"
881     fi
882     _os=Linux
883     ;;
885 gnu)
886     test_randr=no
887     test_xrender=no
888     _os=GNU
889      ;;
891 cygwin*|wsl*)
893     # When building on Windows normally with MSVC under Cygwin,
894     # configure thinks that the host platform (the platform the
895     # built code will run on) is Cygwin, even if it obviously is
896     # Windows, which in Autoconf terminology is called
897     # "mingw32". (Which is misleading as MinGW is the name of the
898     # tool-chain, not an operating system.)
900     # Somewhat confusing, yes. But this configure script doesn't
901     # look at $host etc that much, it mostly uses its own $_os
902     # variable, set here in this case statement.
904     test_cups=no
905     test_dbus=no
906     test_randr=no
907     test_xrender=no
908     test_freetype=no
909     test_fontconfig=no
910     build_skia=yes
911     _os=WINNT
913     DLLPOST=".dll"
914     LINKFLAGSNOUNDEFS=
916     if test "$host_cpu" = "aarch64"; then
917         enable_gpgmepp=no
918         enable_coinmp=no
919         enable_firebird_sdbc=no
920     fi
921     ;;
923 darwin*|macos*) # macOS
924     test_randr=no
925     test_xrender=no
926     test_freetype=no
927     test_fontconfig=no
928     test_dbus=no
929     if test -n "$LODE_HOME" ; then
930         mac_sanitize_path
931         AC_MSG_NOTICE([sanitized the PATH to $PATH])
932     fi
933     _os=Darwin
934     INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
935     INSTROOTCONTENTSUFFIX=/Contents
936     SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
937     # See comment above the case "$host_os"
938     LINKFLAGSSHL="-dynamiclib -single_module"
940     # -fPIC is default
941     PICSWITCH=""
943     DLLPOST=".dylib"
945     # -undefined error is the default
946     LINKFLAGSNOUNDEFS=""
947     case "$host_cpu" in
948     aarch64|arm64)
949         case "$host_os" in
950         macos*)
951             # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
952             # the "macos" part so be sure to use aarch64-apple-darwin for now.
953             HOST_PLATFORM=aarch64-apple-darwin
954             ;;
955         esac
957         # Apple's Clang uses "arm64"
958         host_cpu_for_clang=arm64
959     esac
962 ios*) # iOS
963     test_randr=no
964     test_xrender=no
965     test_freetype=no
966     test_fontconfig=no
967     test_dbus=no
968     if test -n "$LODE_HOME" ; then
969         mac_sanitize_path
970         AC_MSG_NOTICE([sanitized the PATH to $PATH])
971     fi
972     enable_gpgmepp=no
973     _os=iOS
974     test_cups=no
975     enable_mpl_subset=yes
976     enable_lotuswordpro=no
977     enable_coinmp=no
978     enable_lpsolve=no
979     enable_mariadb_sdbc=no
980     enable_postgresql_sdbc=no
981     enable_extension_integration=no
982     enable_report_builder=no
983     with_ppds=no
984     if test "$enable_ios_simulator" = "yes"; then
985         host=x86_64-apple-darwin
986     fi
987     # See comment above the case "$host_os"
988     LINKFLAGSSHL="-dynamiclib -single_module"
990     # -fPIC is default
991     PICSWITCH=""
993     DLLPOST=".dylib"
995     # -undefined error is the default
996     LINKFLAGSNOUNDEFS=""
998     # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
999     # part, so use aarch64-apple-darwin for now.
1000     HOST_PLATFORM=aarch64-apple-darwin
1002     # Apple's Clang uses "arm64"
1003     host_cpu_for_clang=arm64
1006 freebsd*)
1007     build_gstreamer_1_0=yes
1008     test_kf5=yes
1009     test_gtk3_kde5=yes
1010     test_freetype=yes
1011     build_skia=yes
1012     AC_MSG_CHECKING([the FreeBSD operating system release])
1013     if test -n "$with_os_version"; then
1014         OSVERSION="$with_os_version"
1015     else
1016         OSVERSION=`/sbin/sysctl -n kern.osreldate`
1017     fi
1018     AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1019     AC_MSG_CHECKING([which thread library to use])
1020     if test "$OSVERSION" -lt "500016"; then
1021         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1022         PTHREAD_LIBS="-pthread"
1023     elif test "$OSVERSION" -lt "502102"; then
1024         PTHREAD_CFLAGS="-D_THREAD_SAFE"
1025         PTHREAD_LIBS="-lc_r"
1026     else
1027         PTHREAD_CFLAGS=""
1028         PTHREAD_LIBS="-pthread"
1029     fi
1030     AC_MSG_RESULT([$PTHREAD_LIBS])
1031     _os=FreeBSD
1032     ;;
1034 *netbsd*)
1035     build_gstreamer_1_0=yes
1036     test_kf5=yes
1037     test_gtk3_kde5=yes
1038     test_freetype=yes
1039     build_skia=yes
1040     PTHREAD_LIBS="-pthread -lpthread"
1041     _os=NetBSD
1042     ;;
1044 aix*)
1045     test_randr=no
1046     test_freetype=yes
1047     PTHREAD_LIBS=-pthread
1048     _os=AIX
1049     ;;
1051 openbsd*)
1052     test_freetype=yes
1053     PTHREAD_CFLAGS="-D_THREAD_SAFE"
1054     PTHREAD_LIBS="-pthread"
1055     _os=OpenBSD
1056     ;;
1058 dragonfly*)
1059     build_gstreamer_1_0=yes
1060     test_kf5=yes
1061     test_gtk3_kde5=yes
1062     test_freetype=yes
1063     build_skia=yes
1064     PTHREAD_LIBS="-pthread"
1065     _os=DragonFly
1066     ;;
1068 linux-android*)
1069     build_gstreamer_1_0=no
1070     enable_lotuswordpro=no
1071     enable_mpl_subset=yes
1072     enable_coinmp=yes
1073     enable_lpsolve=no
1074     enable_mariadb_sdbc=no
1075     enable_report_builder=no
1076     enable_odk=no
1077     enable_postgresql_sdbc=no
1078     enable_python=no
1079     test_cups=no
1080     test_dbus=no
1081     test_fontconfig=no
1082     test_freetype=no
1083     test_kf5=no
1084     test_qt5=no
1085     test_gtk3_kde5=no
1086     test_randr=no
1087     test_xrender=no
1088     _os=Android
1090     AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
1091     BUILD_TYPE="$BUILD_TYPE CAIRO FONTCONFIG FREETYPE"
1092     ;;
1094 haiku*)
1095     test_cups=no
1096     test_dbus=no
1097     test_randr=no
1098     test_xrender=no
1099     test_freetype=yes
1100     enable_odk=no
1101     enable_gstreamer_1_0=no
1102     enable_coinmp=no
1103     enable_pdfium=no
1104     enable_sdremote=no
1105     enable_postgresql_sdbc=no
1106     enable_firebird_sdbc=no
1107     _os=Haiku
1108     ;;
1111     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1112     ;;
1113 esac
1115 AC_SUBST(HOST_PLATFORM)
1117 if test "$_os" = "Android" ; then
1118     # Verify that the NDK and SDK options are proper
1119     if test -z "$with_android_ndk"; then
1120         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1121     elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1122         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1123     fi
1125     if test -z "$ANDROID_SDK_HOME"; then
1126         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1127     elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1128         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1129     fi
1131     BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1132     if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1133         AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1134                          $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1135                     or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1136         add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1137         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1138         add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1139     fi
1140     if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1141         AC_MSG_WARN([android support repository not found - install with
1142                          $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1143                      to allow the build to download the specified version of the android support libraries])
1144         add_warning "android support repository not found - install with"
1145         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1146         add_warning "to allow the build to download the specified version of the android support libraries"
1147     fi
1150 if test "$_os" = "AIX"; then
1151     AC_PATH_PROG(GAWK, gawk)
1152     if test -z "$GAWK"; then
1153         AC_MSG_ERROR([gawk not found in \$PATH])
1154     fi
1157 AC_SUBST(SDKDIRNAME)
1159 AC_SUBST(PTHREAD_CFLAGS)
1160 AC_SUBST(PTHREAD_LIBS)
1162 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1163 # By default use the ones specified by our build system,
1164 # but explicit override is possible.
1165 AC_MSG_CHECKING(for explicit AFLAGS)
1166 if test -n "$AFLAGS"; then
1167     AC_MSG_RESULT([$AFLAGS])
1168     x_AFLAGS=
1169 else
1170     AC_MSG_RESULT(no)
1171     x_AFLAGS=[\#]
1173 AC_MSG_CHECKING(for explicit CFLAGS)
1174 if test -n "$CFLAGS"; then
1175     AC_MSG_RESULT([$CFLAGS])
1176     x_CFLAGS=
1177 else
1178     AC_MSG_RESULT(no)
1179     x_CFLAGS=[\#]
1181 AC_MSG_CHECKING(for explicit CXXFLAGS)
1182 if test -n "$CXXFLAGS"; then
1183     AC_MSG_RESULT([$CXXFLAGS])
1184     x_CXXFLAGS=
1185 else
1186     AC_MSG_RESULT(no)
1187     x_CXXFLAGS=[\#]
1189 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1190 if test -n "$OBJCFLAGS"; then
1191     AC_MSG_RESULT([$OBJCFLAGS])
1192     x_OBJCFLAGS=
1193 else
1194     AC_MSG_RESULT(no)
1195     x_OBJCFLAGS=[\#]
1197 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1198 if test -n "$OBJCXXFLAGS"; then
1199     AC_MSG_RESULT([$OBJCXXFLAGS])
1200     x_OBJCXXFLAGS=
1201 else
1202     AC_MSG_RESULT(no)
1203     x_OBJCXXFLAGS=[\#]
1205 AC_MSG_CHECKING(for explicit LDFLAGS)
1206 if test -n "$LDFLAGS"; then
1207     AC_MSG_RESULT([$LDFLAGS])
1208     x_LDFLAGS=
1209 else
1210     AC_MSG_RESULT(no)
1211     x_LDFLAGS=[\#]
1213 AC_SUBST(AFLAGS)
1214 AC_SUBST(CFLAGS)
1215 AC_SUBST(CXXFLAGS)
1216 AC_SUBST(OBJCFLAGS)
1217 AC_SUBST(OBJCXXFLAGS)
1218 AC_SUBST(LDFLAGS)
1219 AC_SUBST(x_AFLAGS)
1220 AC_SUBST(x_CFLAGS)
1221 AC_SUBST(x_CXXFLAGS)
1222 AC_SUBST(x_OBJCFLAGS)
1223 AC_SUBST(x_OBJCXXFLAGS)
1224 AC_SUBST(x_LDFLAGS)
1226 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1227 my_original_CFLAGS=$CFLAGS
1228 my_original_CXXFLAGS=$CXXFLAGS
1229 my_original_CPPFLAGS=$CPPFLAGS
1231 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1232 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1233 dnl AC_PROG_CC internally.
1234 if test "$_os" != "WINNT"; then
1235     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1236     save_CFLAGS=$CFLAGS
1237     AC_PROG_CC
1238     CFLAGS=$save_CFLAGS
1239     if test -z "$CC_BASE"; then
1240         CC_BASE=`first_arg_basename "$CC"`
1241     fi
1244 if test "$_os" != "WINNT"; then
1245     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1246 else
1247     ENDIANNESS=little
1249 AC_SUBST(ENDIANNESS)
1251 if test $_os != "WINNT"; then
1252     save_LIBS="$LIBS"
1253     AC_SEARCH_LIBS([dlsym], [dl],
1254         [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1255         [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1256     LIBS="$save_LIBS"
1258 AC_SUBST(DLOPEN_LIBS)
1260 AC_ARG_ENABLE(ios-simulator,
1261     AS_HELP_STRING([--enable-ios-simulator],
1262         [build for iOS simulator])
1265 ###############################################################################
1266 # Extensions switches --enable/--disable
1267 ###############################################################################
1268 # By default these should be enabled unless having extra dependencies.
1269 # If there is extra dependency over configure options then the enable should
1270 # be automagic based on whether the requiring feature is enabled or not.
1271 # All this options change anything only with --enable-extension-integration.
1273 # The name of this option and its help string makes it sound as if
1274 # extensions are built anyway, just not integrated in the installer,
1275 # if you use --disable-extension-integration. Is that really the
1276 # case?
1278 libo_FUZZ_ARG_ENABLE(extension-integration,
1279     AS_HELP_STRING([--disable-extension-integration],
1280         [Disable integration of the built extensions in the installer of the
1281          product. Use this switch to disable the integration.])
1284 AC_ARG_ENABLE(avmedia,
1285     AS_HELP_STRING([--disable-avmedia],
1286         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1289 AC_ARG_ENABLE(database-connectivity,
1290     AS_HELP_STRING([--disable-database-connectivity],
1291         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1294 # This doesn't mean not building (or "integrating") extensions
1295 # (although it probably should; i.e. it should imply
1296 # --disable-extension-integration I guess), it means not supporting
1297 # any extension mechanism at all
1298 libo_FUZZ_ARG_ENABLE(extensions,
1299     AS_HELP_STRING([--disable-extensions],
1300         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1303 AC_ARG_ENABLE(scripting,
1304     AS_HELP_STRING([--disable-scripting],
1305         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1308 # This is mainly for Android and iOS, but could potentially be used in some
1309 # special case otherwise, too, so factored out as a separate setting
1311 AC_ARG_ENABLE(dynamic-loading,
1312     AS_HELP_STRING([--disable-dynamic-loading],
1313         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1316 libo_FUZZ_ARG_ENABLE(report-builder,
1317     AS_HELP_STRING([--disable-report-builder],
1318         [Disable the Report Builder.])
1321 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1322     AS_HELP_STRING([--enable-ext-wiki-publisher],
1323         [Enable the Wiki Publisher extension.])
1326 libo_FUZZ_ARG_ENABLE(lpsolve,
1327     AS_HELP_STRING([--disable-lpsolve],
1328         [Disable compilation of the lp solve solver ])
1330 libo_FUZZ_ARG_ENABLE(coinmp,
1331     AS_HELP_STRING([--disable-coinmp],
1332         [Disable compilation of the CoinMP solver ])
1335 libo_FUZZ_ARG_ENABLE(pdfimport,
1336     AS_HELP_STRING([--disable-pdfimport],
1337         [Disable building the PDF import feature.])
1340 libo_FUZZ_ARG_ENABLE(pdfium,
1341     AS_HELP_STRING([--disable-pdfium],
1342         [Disable building PDFium. Results in unsecure PDF signature verification.])
1345 libo_FUZZ_ARG_ENABLE(skia,
1346     AS_HELP_STRING([--disable-skia],
1347         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1350 ###############################################################################
1352 dnl ---------- *** ----------
1354 libo_FUZZ_ARG_ENABLE(mergelibs,
1355     AS_HELP_STRING([--enable-mergelibs],
1356         [Merge several of the smaller libraries into one big, "merged", one.])
1359 libo_FUZZ_ARG_ENABLE(breakpad,
1360     AS_HELP_STRING([--enable-breakpad],
1361         [Enables breakpad for crash reporting.])
1364 libo_FUZZ_ARG_ENABLE(crashdump,
1365     AS_HELP_STRING([--disable-crashdump],
1366         [Disable dump.ini and dump-file, when --enable-breakpad])
1369 AC_ARG_ENABLE(fetch-external,
1370     AS_HELP_STRING([--disable-fetch-external],
1371         [Disables fetching external tarballs from web sources.])
1374 AC_ARG_ENABLE(fuzzers,
1375     AS_HELP_STRING([--enable-fuzzers],
1376         [Enables building libfuzzer targets for fuzz testing.])
1379 libo_FUZZ_ARG_ENABLE(pch,
1380     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1381         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1382          Using 'system' will include only external headers, 'base' will add also headers
1383          from base modules, 'normal' will also add all headers except from the module built,
1384          'full' will use all suitable headers even from a module itself.])
1387 libo_FUZZ_ARG_ENABLE(epm,
1388     AS_HELP_STRING([--enable-epm],
1389         [LibreOffice includes self-packaging code, that requires epm, however epm is
1390          useless for large scale package building.])
1393 libo_FUZZ_ARG_ENABLE(odk,
1394     AS_HELP_STRING([--disable-odk],
1395         [LibreOffice includes an ODK, office development kit which some packagers may
1396          wish to build without.])
1399 AC_ARG_ENABLE(mpl-subset,
1400     AS_HELP_STRING([--enable-mpl-subset],
1401         [Don't compile any pieces which are not MPL or more liberally licensed])
1404 libo_FUZZ_ARG_ENABLE(evolution2,
1405     AS_HELP_STRING([--enable-evolution2],
1406         [Allows the built-in evolution 2 addressbook connectivity build to be
1407          enabled.])
1410 AC_ARG_ENABLE(avahi,
1411     AS_HELP_STRING([--enable-avahi],
1412         [Determines whether to use Avahi to advertise Impress to remote controls.])
1415 libo_FUZZ_ARG_ENABLE(werror,
1416     AS_HELP_STRING([--enable-werror],
1417         [Turn warnings to errors. (Has no effect in modules where the treating
1418          of warnings as errors is disabled explicitly.)]),
1421 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1422     AS_HELP_STRING([--enable-assert-always-abort],
1423         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1426 libo_FUZZ_ARG_ENABLE(dbgutil,
1427     AS_HELP_STRING([--enable-dbgutil],
1428         [Provide debugging support from --enable-debug and include additional debugging
1429          utilities such as object counting or more expensive checks.
1430          This is the recommended option for developers.
1431          Note that this makes the build ABI incompatible, it is not possible to mix object
1432          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1434 libo_FUZZ_ARG_ENABLE(debug,
1435     AS_HELP_STRING([--enable-debug],
1436         [Include debugging information, disable compiler optimization and inlining plus
1437          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1439 libo_FUZZ_ARG_ENABLE(split-debug,
1440     AS_HELP_STRING([--disable-split-debug],
1441         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1442          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1444 libo_FUZZ_ARG_ENABLE(gdb-index,
1445     AS_HELP_STRING([--disable-gdb-index],
1446         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1447          The feature requires the gold or lld linker.]))
1449 libo_FUZZ_ARG_ENABLE(sal-log,
1450     AS_HELP_STRING([--enable-sal-log],
1451         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1453 libo_FUZZ_ARG_ENABLE(symbols,
1454     AS_HELP_STRING([--enable-symbols],
1455         [Generate debug information.
1456          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1457          otherwise. It is possible to explicitly specify gbuild build targets
1458          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1459          everything in the directory; there is no ordering, more specific overrides
1460          more general, and disabling takes precedence).
1461          Example: --enable-symbols="all -sw/ -Library_sc".]))
1463 libo_FUZZ_ARG_ENABLE(optimized,
1464     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1465         [Whether to compile with optimization flags.
1466          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1467          otherwise. Using 'debug' will try to use only optimizations that should
1468          not interfere with debugging.]))
1470 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1471     AS_HELP_STRING([--disable-runtime-optimizations],
1472         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1473          JVM JIT) that are known to interact badly with certain dynamic analysis
1474          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1475          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1476          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1478 AC_ARG_WITH(valgrind,
1479     AS_HELP_STRING([--with-valgrind],
1480         [Make availability of Valgrind headers a hard requirement.]))
1482 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1483     AS_HELP_STRING([--enable-compiler-plugins],
1484         [Enable compiler plugins that will perform additional checks during
1485          building. Enabled automatically by --enable-dbgutil.
1486          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1487 COMPILER_PLUGINS_DEBUG=
1488 if test "$enable_compiler_plugins" = debug; then
1489     enable_compiler_plugins=yes
1490     COMPILER_PLUGINS_DEBUG=TRUE
1493 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1494     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1495         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1496          relevant in the --disable-compiler-plugins case.]))
1498 libo_FUZZ_ARG_ENABLE(ooenv,
1499     AS_HELP_STRING([--disable-ooenv],
1500         [Disable ooenv for the instdir installation.]))
1502 AC_ARG_ENABLE(lto,
1503     AS_HELP_STRING([--enable-lto],
1504         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1505          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1506          linker. For MSVC, this option is broken at the moment. This is experimental work
1507          in progress that shouldn't be used unless you are working on it.)]))
1509 AC_ARG_ENABLE(python,
1510     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1511         [Enables or disables Python support at run-time.
1512          Also specifies what Python to use at build-time.
1513          'fully-internal' even forces the internal version for uses of Python
1514          during the build.
1515          On macOS the only choices are
1516          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1517          ]))
1519 libo_FUZZ_ARG_ENABLE(gtk3,
1520     AS_HELP_STRING([--disable-gtk3],
1521         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1522 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1524 AC_ARG_ENABLE(introspection,
1525     AS_HELP_STRING([--enable-introspection],
1526         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1527          Linux distributions.)]))
1529 AC_ARG_ENABLE(split-app-modules,
1530     AS_HELP_STRING([--enable-split-app-modules],
1531         [Split file lists for app modules, e.g. base, calc.
1532          Has effect only with make distro-pack-install]),
1535 AC_ARG_ENABLE(split-opt-features,
1536     AS_HELP_STRING([--enable-split-opt-features],
1537         [Split file lists for some optional features, e.g. pyuno, testtool.
1538          Has effect only with make distro-pack-install]),
1541 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1542     AS_HELP_STRING([--disable-cairo-canvas],
1543         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1546 libo_FUZZ_ARG_ENABLE(dbus,
1547     AS_HELP_STRING([--disable-dbus],
1548         [Determines whether to enable features that depend on dbus.
1549          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1550 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1552 libo_FUZZ_ARG_ENABLE(sdremote,
1553     AS_HELP_STRING([--disable-sdremote],
1554         [Determines whether to enable Impress remote control (i.e. the server component).]),
1555 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1557 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1558     AS_HELP_STRING([--disable-sdremote-bluetooth],
1559         [Determines whether to build sdremote with bluetooth support.
1560          Requires dbus on Linux.]))
1562 libo_FUZZ_ARG_ENABLE(gio,
1563     AS_HELP_STRING([--disable-gio],
1564         [Determines whether to use the GIO support.]),
1565 ,test "${enable_gio+set}" = set || enable_gio=yes)
1567 AC_ARG_ENABLE(qt5,
1568     AS_HELP_STRING([--enable-qt5],
1569         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1570          available.]),
1573 AC_ARG_ENABLE(kf5,
1574     AS_HELP_STRING([--enable-kf5],
1575         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1576          KF5 are available.]),
1579 AC_ARG_ENABLE(kde5,
1580     AS_HELP_STRING([--enable-kde5],
1581         [Compatibility switch for the kde5 => kf5 rename. Use --enable-kf5!])
1584 AC_ARG_ENABLE(gtk3_kde5,
1585     AS_HELP_STRING([--enable-gtk3-kde5],
1586         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1587          platforms where Gtk3, Qt5 and Plasma is available.]),
1590 AC_ARG_ENABLE(gui,
1591     AS_HELP_STRING([--disable-gui],
1592         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1593 ,enable_gui=yes)
1595 libo_FUZZ_ARG_ENABLE(randr,
1596     AS_HELP_STRING([--disable-randr],
1597         [Disable RandR support in the vcl project.]),
1598 ,test "${enable_randr+set}" = set || enable_randr=yes)
1600 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1601     AS_HELP_STRING([--disable-gstreamer-1-0],
1602         [Disable building with the gstreamer 1.0 avmedia backend.]),
1603 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1605 libo_FUZZ_ARG_ENABLE(neon,
1606     AS_HELP_STRING([--disable-neon],
1607         [Disable neon and the compilation of webdav binding.]),
1610 libo_FUZZ_ARG_ENABLE([eot],
1611     [AS_HELP_STRING([--enable-eot],
1612         [Enable support for Embedded OpenType fonts.])],
1613 ,test "${enable_eot+set}" = set || enable_eot=no)
1615 libo_FUZZ_ARG_ENABLE(cve-tests,
1616     AS_HELP_STRING([--disable-cve-tests],
1617         [Prevent CVE tests to be executed]),
1620 libo_FUZZ_ARG_ENABLE(chart-tests,
1621     AS_HELP_STRING([--enable-chart-tests],
1622         [Executes chart XShape tests. In a perfect world these tests would be
1623          stable and everyone could run them, in reality it is best to run them
1624          only on a few machines that are known to work and maintained by people
1625          who can judge if a test failure is a regression or not.]),
1628 AC_ARG_ENABLE(build-opensymbol,
1629     AS_HELP_STRING([--enable-build-opensymbol],
1630         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1631          fontforge installed.]),
1634 AC_ARG_ENABLE(dependency-tracking,
1635     AS_HELP_STRING([--enable-dependency-tracking],
1636         [Do not reject slow dependency extractors.])[
1637   --disable-dependency-tracking
1638                           Disables generation of dependency information.
1639                           Speed up one-time builds.],
1642 AC_ARG_ENABLE(icecream,
1643     AS_HELP_STRING([--enable-icecream],
1644         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1645          It defaults to /opt/icecream for the location of the icecream gcc/g++
1646          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1649 AC_ARG_ENABLE(ld,
1650     AS_HELP_STRING([--enable-ld=<linker>],
1651         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1652          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1653          If <linker> contains any ':', the part before the first ':' is used as the value of
1654          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1655          needed for Clang 12).]),
1658 libo_FUZZ_ARG_ENABLE(cups,
1659     AS_HELP_STRING([--disable-cups],
1660         [Do not build cups support.])
1663 AC_ARG_ENABLE(ccache,
1664     AS_HELP_STRING([--disable-ccache],
1665         [Do not try to use ccache automatically.
1666          By default, unless on Windows, we will try to detect if ccache is available; in that case if
1667          CC/CXX are not yet set, and --enable-icecream is not given, we
1668          attempt to use ccache. --disable-ccache disables ccache completely.
1669          Additionally ccache's depend mode is enabled if possible,
1670          use --enable-ccache=nodepend to enable ccache without depend mode.
1674 libo_FUZZ_ARG_ENABLE(online-update,
1675     AS_HELP_STRING([--enable-online-update],
1676         [Enable the online update service that will check for new versions of
1677          LibreOffice. By default, it is enabled on Windows and Mac, disabled on Linux.
1678          If the value is "mar", the experimental Mozilla-like update will be
1679          enabled instead of the traditional update mechanism.]),
1682 AC_ARG_WITH(update-config,
1683     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1684                    [Path to the update config ini file]))
1686 libo_FUZZ_ARG_ENABLE(extension-update,
1687     AS_HELP_STRING([--disable-extension-update],
1688         [Disable possibility to update installed extensions.]),
1691 libo_FUZZ_ARG_ENABLE(release-build,
1692     AS_HELP_STRING([--enable-release-build],
1693         [Enable release build. Note that the "release build" choice is orthogonal to
1694          whether symbols are present, debug info is generated, or optimization
1695          is done.
1696          See http://wiki.documentfoundation.org/Development/DevBuild]),
1699 AC_ARG_ENABLE(windows-build-signing,
1700     AS_HELP_STRING([--enable-windows-build-signing],
1701         [Enable signing of windows binaries (*.exe, *.dll)]),
1704 AC_ARG_ENABLE(silent-msi,
1705     AS_HELP_STRING([--enable-silent-msi],
1706         [Enable MSI with LIMITUI=1 (silent install).]),
1709 AC_ARG_ENABLE(macosx-code-signing,
1710     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1711         [Sign executables, dylibs, frameworks and the app bundle. If you
1712          don't provide an identity the first suitable certificate
1713          in your keychain is used.]),
1716 AC_ARG_ENABLE(macosx-package-signing,
1717     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1718         [Create a .pkg suitable for uploading to the Mac App Store and sign
1719          it. If you don't provide an identity the first suitable certificate
1720          in your keychain is used.]),
1723 AC_ARG_ENABLE(macosx-sandbox,
1724     AS_HELP_STRING([--enable-macosx-sandbox],
1725         [Make the app bundle run in a sandbox. Requires code signing.
1726          Is required by apps distributed in the Mac App Store, and implies
1727          adherence to App Store rules.]),
1730 AC_ARG_WITH(macosx-bundle-identifier,
1731     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1732         [Define the macOS bundle identifier. Default is the somewhat weird
1733          org.libreoffice.script ("script", huh?).]),
1734 ,with_macosx_bundle_identifier=org.libreoffice.script)
1736 AC_ARG_WITH(product-name,
1737     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1738         [Define the product name. Default is AC_PACKAGE_NAME.]),
1739 ,with_product_name=$PRODUCTNAME)
1741 libo_FUZZ_ARG_ENABLE(community-flavor,
1742     AS_HELP_STRING([--disable-community-flavor],
1743         [Disable the Community branding.]),
1746 AC_ARG_WITH(package-version,
1747     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1748         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1751 libo_FUZZ_ARG_ENABLE(readonly-installset,
1752     AS_HELP_STRING([--enable-readonly-installset],
1753         [Prevents any attempts by LibreOffice to write into its installation. That means
1754          at least that no "system-wide" extensions can be added. Partly experimental work in
1755          progress, probably not fully implemented. Always enabled for macOS.]),
1758 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1759     AS_HELP_STRING([--disable-mariadb-sdbc],
1760         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1763 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1764     AS_HELP_STRING([--disable-postgresql-sdbc],
1765         [Disable the build of the PostgreSQL-SDBC driver.])
1768 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1769     AS_HELP_STRING([--disable-lotuswordpro],
1770         [Disable the build of the Lotus Word Pro filter.]),
1771 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1773 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1774     AS_HELP_STRING([--disable-firebird-sdbc],
1775         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1776 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1778 AC_ARG_ENABLE(bogus-pkg-config,
1779     AS_HELP_STRING([--enable-bogus-pkg-config],
1780         [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.]),
1783 AC_ARG_ENABLE(openssl,
1784     AS_HELP_STRING([--disable-openssl],
1785         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1786          components will either use GNUTLS or NSS. Work in progress,
1787          use only if you are hacking on it.]),
1788 ,enable_openssl=yes)
1790 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1791     AS_HELP_STRING([--enable-cipher-openssl-backend],
1792         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1793          Requires --enable-openssl.]))
1795 AC_ARG_ENABLE(library-bin-tar,
1796     AS_HELP_STRING([--enable-library-bin-tar],
1797         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1798         Some libraries can save their build result in a tarball
1799         stored in TARFILE_LOCATION. That binary tarball is
1800         uniquely identified by the source tarball,
1801         the content of the config_host.mk file and the content
1802         of the top-level directory in core for that library
1803         If this option is enabled, then if such a tarfile exist, it will be untarred
1804         instead of the source tarfile, and the build step will be skipped for that
1805         library.
1806         If a proper tarfile does not exist, then the normal source-based
1807         build is done for that library and a proper binary tarfile is created
1808         for the next time.]),
1811 AC_ARG_ENABLE(dconf,
1812     AS_HELP_STRING([--disable-dconf],
1813         [Disable the dconf configuration backend (enabled by default where
1814          available).]))
1816 libo_FUZZ_ARG_ENABLE(formula-logger,
1817     AS_HELP_STRING(
1818         [--enable-formula-logger],
1819         [Enable formula logger for logging formula calculation flow in Calc.]
1820     )
1823 AC_ARG_ENABLE(ldap,
1824     AS_HELP_STRING([--disable-ldap],
1825         [Disable LDAP support.]),
1826 ,enable_ldap=yes)
1828 AC_ARG_ENABLE(opencl,
1829     AS_HELP_STRING([--disable-opencl],
1830         [Disable OpenCL support.]),
1831 ,enable_opencl=yes)
1833 libo_FUZZ_ARG_ENABLE(librelogo,
1834     AS_HELP_STRING([--disable-librelogo],
1835         [Do not build LibreLogo.]),
1836 ,enable_librelogo=yes)
1838 dnl ===================================================================
1839 dnl Optional Packages (--with/without-)
1840 dnl ===================================================================
1842 AC_ARG_WITH(gcc-home,
1843     AS_HELP_STRING([--with-gcc-home],
1844         [Specify the location of gcc/g++ manually. This can be used in conjunction
1845          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1846          non-default path.]),
1849 AC_ARG_WITH(gnu-patch,
1850     AS_HELP_STRING([--with-gnu-patch],
1851         [Specify location of GNU patch on Solaris or FreeBSD.]),
1854 AC_ARG_WITH(build-platform-configure-options,
1855     AS_HELP_STRING([--with-build-platform-configure-options],
1856         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1859 AC_ARG_WITH(gnu-cp,
1860     AS_HELP_STRING([--with-gnu-cp],
1861         [Specify location of GNU cp on Solaris or FreeBSD.]),
1864 AC_ARG_WITH(external-tar,
1865     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1866         [Specify an absolute path of where to find (and store) tarfiles.]),
1867     TARFILE_LOCATION=$withval ,
1870 AC_ARG_WITH(referenced-git,
1871     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1872         [Specify another checkout directory to reference. This makes use of
1873                  git submodule update --reference, and saves a lot of diskspace
1874                  when having multiple trees side-by-side.]),
1875     GIT_REFERENCE_SRC=$withval ,
1878 AC_ARG_WITH(linked-git,
1879     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
1880         [Specify a directory where the repositories of submodules are located.
1881          This uses a method similar to git-new-workdir to get submodules.]),
1882     GIT_LINK_SRC=$withval ,
1885 AC_ARG_WITH(galleries,
1886     AS_HELP_STRING([--with-galleries],
1887         [Specify how galleries should be built. It is possible either to
1888          build these internally from source ("build"),
1889          or to disable them ("no")]),
1892 AC_ARG_WITH(theme,
1893     AS_HELP_STRING([--with-theme="theme1 theme2..."],
1894         [Choose which themes to include. By default those themes with an '*' are included.
1895          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
1896          *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
1899 libo_FUZZ_ARG_WITH(helppack-integration,
1900     AS_HELP_STRING([--without-helppack-integration],
1901         [It will not integrate the helppacks to the installer
1902          of the product. Please use this switch to use the online help
1903          or separate help packages.]),
1906 libo_FUZZ_ARG_WITH(fonts,
1907     AS_HELP_STRING([--without-fonts],
1908         [LibreOffice includes some third-party fonts to provide a reliable basis for
1909          help content, templates, samples, etc. When these fonts are already
1910          known to be available on the system then you should use this option.]),
1913 AC_ARG_WITH(epm,
1914     AS_HELP_STRING([--with-epm],
1915         [Decides which epm to use. Default is to use the one from the system if
1916          one is built. When either this is not there or you say =internal epm
1917          will be built.]),
1920 AC_ARG_WITH(package-format,
1921     AS_HELP_STRING([--with-package-format],
1922         [Specify package format(s) for LibreOffice installation sets. The
1923          implicit --without-package-format leads to no installation sets being
1924          generated. Possible values: aix, archive, bsd, deb, dmg,
1925          installed, msi, pkg, and rpm.
1926          Example: --with-package-format='deb rpm']),
1929 AC_ARG_WITH(tls,
1930     AS_HELP_STRING([--with-tls],
1931         [Decides which TLS/SSL and cryptographic implementations to use for
1932          LibreOffice's code. Notice that this doesn't apply for depending
1933          libraries like "neon", for example. Default is to use NSS
1934          although OpenSSL is also possible. Notice that selecting NSS restricts
1935          the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
1936          restrict by now the usage of NSS in LO's code. Possible values:
1937          openssl, nss. Example: --with-tls="nss"]),
1940 AC_ARG_WITH(system-libs,
1941     AS_HELP_STRING([--with-system-libs],
1942         [Use libraries already on system -- enables all --with-system-* flags.]),
1945 AC_ARG_WITH(system-bzip2,
1946     AS_HELP_STRING([--with-system-bzip2],
1947         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
1948     [with_system_bzip2="$with_system_libs"])
1950 AC_ARG_WITH(system-headers,
1951     AS_HELP_STRING([--with-system-headers],
1952         [Use headers already on system -- enables all --with-system-* flags for
1953          external packages whose headers are the only entities used i.e.
1954          boost/odbc/sane-header(s).]),,
1955     [with_system_headers="$with_system_libs"])
1957 AC_ARG_WITH(system-jars,
1958     AS_HELP_STRING([--without-system-jars],
1959         [When building with --with-system-libs, also the needed jars are expected
1960          on the system. Use this to disable that]),,
1961     [with_system_jars="$with_system_libs"])
1963 AC_ARG_WITH(system-cairo,
1964     AS_HELP_STRING([--with-system-cairo],
1965         [Use cairo libraries already on system.  Happens automatically for
1966          (implicit) --enable-gtk3.]))
1968 AC_ARG_WITH(system-epoxy,
1969     AS_HELP_STRING([--with-system-epoxy],
1970         [Use epoxy libraries already on system.  Happens automatically for
1971          (implicit) --enable-gtk3.]),,
1972        [with_system_epoxy="$with_system_libs"])
1974 AC_ARG_WITH(myspell-dicts,
1975     AS_HELP_STRING([--with-myspell-dicts],
1976         [Adds myspell dictionaries to the LibreOffice installation set]),
1979 AC_ARG_WITH(system-dicts,
1980     AS_HELP_STRING([--without-system-dicts],
1981         [Do not use dictionaries from system paths.]),
1984 AC_ARG_WITH(external-dict-dir,
1985     AS_HELP_STRING([--with-external-dict-dir],
1986         [Specify external dictionary dir.]),
1989 AC_ARG_WITH(external-hyph-dir,
1990     AS_HELP_STRING([--with-external-hyph-dir],
1991         [Specify external hyphenation pattern dir.]),
1994 AC_ARG_WITH(external-thes-dir,
1995     AS_HELP_STRING([--with-external-thes-dir],
1996         [Specify external thesaurus dir.]),
1999 AC_ARG_WITH(system-zlib,
2000     AS_HELP_STRING([--with-system-zlib],
2001         [Use zlib already on system.]),,
2002     [with_system_zlib=auto])
2004 AC_ARG_WITH(system-jpeg,
2005     AS_HELP_STRING([--with-system-jpeg],
2006         [Use jpeg already on system.]),,
2007     [with_system_jpeg="$with_system_libs"])
2009 AC_ARG_WITH(system-clucene,
2010     AS_HELP_STRING([--with-system-clucene],
2011         [Use clucene already on system.]),,
2012     [with_system_clucene="$with_system_libs"])
2014 AC_ARG_WITH(system-expat,
2015     AS_HELP_STRING([--with-system-expat],
2016         [Use expat already on system.]),,
2017     [with_system_expat="$with_system_libs"])
2019 AC_ARG_WITH(system-libxml,
2020     AS_HELP_STRING([--with-system-libxml],
2021         [Use libxml/libxslt already on system.]),,
2022     [with_system_libxml=auto])
2024 AC_ARG_WITH(system-icu,
2025     AS_HELP_STRING([--with-system-icu],
2026         [Use icu already on system.]),,
2027     [with_system_icu="$with_system_libs"])
2029 AC_ARG_WITH(system-ucpp,
2030     AS_HELP_STRING([--with-system-ucpp],
2031         [Use ucpp already on system.]),,
2032     [])
2034 AC_ARG_WITH(system-openldap,
2035     AS_HELP_STRING([--with-system-openldap],
2036         [Use the OpenLDAP LDAP SDK already on system.]),,
2037     [with_system_openldap="$with_system_libs"])
2039 libo_FUZZ_ARG_ENABLE(poppler,
2040     AS_HELP_STRING([--disable-poppler],
2041         [Disable building Poppler.])
2044 AC_ARG_WITH(system-poppler,
2045     AS_HELP_STRING([--with-system-poppler],
2046         [Use system poppler (only needed for PDF import).]),,
2047     [with_system_poppler="$with_system_libs"])
2049 libo_FUZZ_ARG_ENABLE(gpgmepp,
2050     AS_HELP_STRING([--disable-gpgmepp],
2051         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2054 AC_ARG_WITH(system-gpgmepp,
2055     AS_HELP_STRING([--with-system-gpgmepp],
2056         [Use gpgmepp already on system]),,
2057     [with_system_gpgmepp="$with_system_libs"])
2059 AC_ARG_WITH(system-apache-commons,
2060     AS_HELP_STRING([--with-system-apache-commons],
2061         [Use Apache commons libraries already on system.]),,
2062     [with_system_apache_commons="$with_system_jars"])
2064 AC_ARG_WITH(system-mariadb,
2065     AS_HELP_STRING([--with-system-mariadb],
2066         [Use MariaDB/MySQL libraries already on system.]),,
2067     [with_system_mariadb="$with_system_libs"])
2069 AC_ARG_ENABLE(bundle-mariadb,
2070     AS_HELP_STRING([--enable-bundle-mariadb],
2071         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2074 AC_ARG_WITH(system-postgresql,
2075     AS_HELP_STRING([--with-system-postgresql],
2076         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2077          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2078     [with_system_postgresql="$with_system_libs"])
2080 AC_ARG_WITH(libpq-path,
2081     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2082         [Use this PostgreSQL C interface (libpq) installation for building
2083          the PostgreSQL-SDBC extension.]),
2086 AC_ARG_WITH(system-firebird,
2087     AS_HELP_STRING([--with-system-firebird],
2088         [Use Firebird libraries already on system, for building the Firebird-SDBC
2089          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2090     [with_system_firebird="$with_system_libs"])
2092 AC_ARG_WITH(system-libtommath,
2093             AS_HELP_STRING([--with-system-libtommath],
2094                            [Use libtommath already on system]),,
2095             [with_system_libtommath="$with_system_libs"])
2097 AC_ARG_WITH(system-hsqldb,
2098     AS_HELP_STRING([--with-system-hsqldb],
2099         [Use hsqldb already on system.]))
2101 AC_ARG_WITH(hsqldb-jar,
2102     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2103         [Specify path to jarfile manually.]),
2104     HSQLDB_JAR=$withval)
2106 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2107     AS_HELP_STRING([--disable-scripting-beanshell],
2108         [Disable support for scripts in BeanShell.]),
2112 AC_ARG_WITH(system-beanshell,
2113     AS_HELP_STRING([--with-system-beanshell],
2114         [Use beanshell already on system.]),,
2115     [with_system_beanshell="$with_system_jars"])
2117 AC_ARG_WITH(beanshell-jar,
2118     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2119         [Specify path to jarfile manually.]),
2120     BSH_JAR=$withval)
2122 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2123     AS_HELP_STRING([--disable-scripting-javascript],
2124         [Disable support for scripts in JavaScript.]),
2128 AC_ARG_WITH(system-rhino,
2129     AS_HELP_STRING([--with-system-rhino],
2130         [Use rhino already on system.]),,)
2131 #    [with_system_rhino="$with_system_jars"])
2132 # Above is not used as we have different debug interface
2133 # patched into internal rhino. This code needs to be fixed
2134 # before we can enable it by default.
2136 AC_ARG_WITH(rhino-jar,
2137     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2138         [Specify path to jarfile manually.]),
2139     RHINO_JAR=$withval)
2141 AC_ARG_WITH(commons-logging-jar,
2142     AS_HELP_STRING([--with-commons-logging-jar=JARFILE],
2143         [Specify path to jarfile manually.]),
2144     COMMONS_LOGGING_JAR=$withval)
2146 AC_ARG_WITH(system-jfreereport,
2147     AS_HELP_STRING([--with-system-jfreereport],
2148         [Use JFreeReport already on system.]),,
2149     [with_system_jfreereport="$with_system_jars"])
2151 AC_ARG_WITH(sac-jar,
2152     AS_HELP_STRING([--with-sac-jar=JARFILE],
2153         [Specify path to jarfile manually.]),
2154     SAC_JAR=$withval)
2156 AC_ARG_WITH(libxml-jar,
2157     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2158         [Specify path to jarfile manually.]),
2159     LIBXML_JAR=$withval)
2161 AC_ARG_WITH(flute-jar,
2162     AS_HELP_STRING([--with-flute-jar=JARFILE],
2163         [Specify path to jarfile manually.]),
2164     FLUTE_JAR=$withval)
2166 AC_ARG_WITH(jfreereport-jar,
2167     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2168         [Specify path to jarfile manually.]),
2169     JFREEREPORT_JAR=$withval)
2171 AC_ARG_WITH(liblayout-jar,
2172     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2173         [Specify path to jarfile manually.]),
2174     LIBLAYOUT_JAR=$withval)
2176 AC_ARG_WITH(libloader-jar,
2177     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2178         [Specify path to jarfile manually.]),
2179     LIBLOADER_JAR=$withval)
2181 AC_ARG_WITH(libformula-jar,
2182     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2183         [Specify path to jarfile manually.]),
2184     LIBFORMULA_JAR=$withval)
2186 AC_ARG_WITH(librepository-jar,
2187     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2188         [Specify path to jarfile manually.]),
2189     LIBREPOSITORY_JAR=$withval)
2191 AC_ARG_WITH(libfonts-jar,
2192     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2193         [Specify path to jarfile manually.]),
2194     LIBFONTS_JAR=$withval)
2196 AC_ARG_WITH(libserializer-jar,
2197     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2198         [Specify path to jarfile manually.]),
2199     LIBSERIALIZER_JAR=$withval)
2201 AC_ARG_WITH(libbase-jar,
2202     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2203         [Specify path to jarfile manually.]),
2204     LIBBASE_JAR=$withval)
2206 AC_ARG_WITH(system-odbc,
2207     AS_HELP_STRING([--with-system-odbc],
2208         [Use the odbc headers already on system.]),,
2209     [with_system_odbc="auto"])
2211 AC_ARG_WITH(system-sane,
2212     AS_HELP_STRING([--with-system-sane],
2213         [Use sane.h already on system.]),,
2214     [with_system_sane="$with_system_headers"])
2216 AC_ARG_WITH(system-bluez,
2217     AS_HELP_STRING([--with-system-bluez],
2218         [Use bluetooth.h already on system.]),,
2219     [with_system_bluez="$with_system_headers"])
2221 AC_ARG_WITH(system-curl,
2222     AS_HELP_STRING([--with-system-curl],
2223         [Use curl already on system.]),,
2224     [with_system_curl=auto])
2226 AC_ARG_WITH(system-boost,
2227     AS_HELP_STRING([--with-system-boost],
2228         [Use boost already on system.]),,
2229     [with_system_boost="$with_system_headers"])
2231 AC_ARG_WITH(system-glm,
2232     AS_HELP_STRING([--with-system-glm],
2233         [Use glm already on system.]),,
2234     [with_system_glm="$with_system_headers"])
2236 AC_ARG_WITH(system-hunspell,
2237     AS_HELP_STRING([--with-system-hunspell],
2238         [Use libhunspell already on system.]),,
2239     [with_system_hunspell="$with_system_libs"])
2241 libo_FUZZ_ARG_ENABLE(qrcodegen,
2242     AS_HELP_STRING([--disable-qrcodegen],
2243         [Disable use of qrcodegen external library.]))
2245 AC_ARG_WITH(system-qrcodegen,
2246     AS_HELP_STRING([--with-system-qrcodegen],
2247         [Use libqrcodegen already on system.]),,
2248     [with_system_qrcodegen="$with_system_libs"])
2250 AC_ARG_WITH(system-box2d,
2251     AS_HELP_STRING([--with-system-box2d],
2252         [Use box2d already on system.]),,
2253     [with_system_box2d="$with_system_libs"])
2255 AC_ARG_WITH(system-mythes,
2256     AS_HELP_STRING([--with-system-mythes],
2257         [Use mythes already on system.]),,
2258     [with_system_mythes="$with_system_libs"])
2260 AC_ARG_WITH(system-altlinuxhyph,
2261     AS_HELP_STRING([--with-system-altlinuxhyph],
2262         [Use ALTLinuxhyph already on system.]),,
2263     [with_system_altlinuxhyph="$with_system_libs"])
2265 AC_ARG_WITH(system-lpsolve,
2266     AS_HELP_STRING([--with-system-lpsolve],
2267         [Use lpsolve already on system.]),,
2268     [with_system_lpsolve="$with_system_libs"])
2270 AC_ARG_WITH(system-coinmp,
2271     AS_HELP_STRING([--with-system-coinmp],
2272         [Use CoinMP already on system.]),,
2273     [with_system_coinmp="$with_system_libs"])
2275 AC_ARG_WITH(system-liblangtag,
2276     AS_HELP_STRING([--with-system-liblangtag],
2277         [Use liblangtag library already on system.]),,
2278     [with_system_liblangtag="$with_system_libs"])
2280 AC_ARG_WITH(webdav,
2281     AS_HELP_STRING([--with-webdav],
2282         [Specify which library to use for webdav implementation.
2283          Possible values: "neon", "serf", "no". The default value is "neon".
2284          Example: --with-webdav="serf"]),
2285     WITH_WEBDAV=$withval,
2286     WITH_WEBDAV="neon")
2288 AC_ARG_WITH(linker-hash-style,
2289     AS_HELP_STRING([--with-linker-hash-style],
2290         [Use linker with --hash-style=<style> when linking shared objects.
2291          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2292          if supported on the build system, and "sysv" otherwise.]))
2294 AC_ARG_WITH(jdk-home,
2295     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2296         [If you have installed JDK 9 or later on your system please supply the
2297          path here. Note that this is not the location of the java command but the
2298          location of the entire distribution. In case of cross-compiling, this
2299          is the JDK of the host os. Use --with-build-platform-configure-options
2300          to point to a different build platform JDK.]),
2303 AC_ARG_WITH(help,
2304     AS_HELP_STRING([--with-help],
2305         [Enable the build of help. There is a special parameter "common" that
2306          can be used to bundle only the common part, .e.g help-specific icons.
2307          This is useful when you build the helpcontent separately.])
2308     [
2309                           Usage:     --with-help    build the old local help
2310                                  --without-help     no local help (default)
2311                                  --with-help=html   build the new HTML local help
2312                                  --with-help=online build the new HTML online help
2313     ],
2316 AC_ARG_WITH(omindex,
2317    AS_HELP_STRING([--with-omindex],
2318         [Enable the support of xapian-omega index for online help.])
2319    [
2320                          Usage: --with-omindex=server prepare the pages for omindex
2321                                 but let xapian-omega be built in server.
2322                                 --with-omindex=noxap do not prepare online pages
2323                                 for xapian-omega
2324   ],
2327 libo_FUZZ_ARG_WITH(java,
2328     AS_HELP_STRING([--with-java=<java command>],
2329         [Specify the name of the Java interpreter command. Typically "java"
2330          which is the default.
2332          To build without support for Java components, applets, accessibility
2333          or the XML filters written in Java, use --without-java or --with-java=no.]),
2334     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2335     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2338 AC_ARG_WITH(jvm-path,
2339     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2340         [Use a specific JVM search path at runtime.
2341          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2344 AC_ARG_WITH(ant-home,
2345     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2346         [If you have installed Apache Ant on your system, please supply the path here.
2347          Note that this is not the location of the Ant binary but the location
2348          of the entire distribution.]),
2351 AC_ARG_WITH(symbol-config,
2352     AS_HELP_STRING([--with-symbol-config],
2353         [Configuration for the crashreport symbol upload]),
2354         [],
2355         [with_symbol_config=no])
2357 AC_ARG_WITH(export-validation,
2358     AS_HELP_STRING([--without-export-validation],
2359         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2360 ,with_export_validation=auto)
2362 AC_ARG_WITH(bffvalidator,
2363     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2364         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2365          Requires installed Microsoft Office Binary File Format Validator.
2366          Note: export-validation (--with-export-validation) is required to be turned on.
2367          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2368 ,with_bffvalidator=no)
2370 libo_FUZZ_ARG_WITH(junit,
2371     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2372         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2373          --without-junit disables those tests. Not relevant in the --without-java case.]),
2374 ,with_junit=yes)
2376 AC_ARG_WITH(hamcrest,
2377     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2378         [Specifies the hamcrest jar file to use for JUnit-based tests.
2379          --without-junit disables those tests. Not relevant in the --without-java case.]),
2380 ,with_hamcrest=yes)
2382 AC_ARG_WITH(perl-home,
2383     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2384         [If you have installed Perl 5 Distribution, on your system, please
2385          supply the path here. Note that this is not the location of the Perl
2386          binary but the location of the entire distribution.]),
2389 libo_FUZZ_ARG_WITH(doxygen,
2390     AS_HELP_STRING(
2391         [--with-doxygen=<absolute path to doxygen executable>],
2392         [Specifies the doxygen executable to use when generating ODK C/C++
2393          documentation. --without-doxygen disables generation of ODK C/C++
2394          documentation. Not relevant in the --disable-odk case.]),
2395 ,with_doxygen=yes)
2397 AC_ARG_WITH(visual-studio,
2398     AS_HELP_STRING([--with-visual-studio=<2019>],
2399         [Specify which Visual Studio version to use in case several are
2400          installed. Currently only 2019 (default) is supported.]),
2403 AC_ARG_WITH(windows-sdk,
2404     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2405         [Specify which Windows SDK, or "Windows Kit", version to use
2406          in case the one that came with the selected Visual Studio
2407          is not what you want for some reason. Note that not all compiler/SDK
2408          combinations are supported. The intent is that this option should not
2409          be needed.]),
2412 AC_ARG_WITH(lang,
2413     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2414         [Use this option to build LibreOffice with additional UI language support.
2415          English (US) is always included by default.
2416          Separate multiple languages with space.
2417          For all languages, use --with-lang=ALL.]),
2420 AC_ARG_WITH(locales,
2421     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2422         [Use this option to limit the locale information built in.
2423          Separate multiple locales with space.
2424          Very experimental and might well break stuff.
2425          Just a desperate measure to shrink code and data size.
2426          By default all the locales available is included.
2427          This option is completely unrelated to --with-lang.])
2428     [
2429                           Affects also our character encoding conversion
2430                           tables for encodings mainly targeted for a
2431                           particular locale, like EUC-CN and EUC-TW for
2432                           zh, ISO-2022-JP for ja.
2434                           Affects also our add-on break iterator data for
2435                           some languages.
2437                           For the default, all locales, don't use this switch at all.
2438                           Specifying just the language part of a locale means all matching
2439                           locales will be included.
2440     ],
2443 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2444 libo_FUZZ_ARG_WITH(krb5,
2445     AS_HELP_STRING([--with-krb5],
2446         [Enable MIT Kerberos 5 support in modules that support it.
2447          By default automatically enabled on platforms
2448          where a good system Kerberos 5 is available.]),
2451 libo_FUZZ_ARG_WITH(gssapi,
2452     AS_HELP_STRING([--with-gssapi],
2453         [Enable GSSAPI support in modules that support it.
2454          By default automatically enabled on platforms
2455          where a good system GSSAPI is available.]),
2458 AC_ARG_WITH(iwyu,
2459     AS_HELP_STRING([--with-iwyu],
2460         [Use given IWYU binary path to check unneeded includes instead of building.
2461          Use only if you are hacking on it.]),
2464 libo_FUZZ_ARG_WITH(lxml,
2465     AS_HELP_STRING([--without-lxml],
2466         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2467          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2468          report widget classes and ids.]),
2471 libo_FUZZ_ARG_WITH(latest-c++,
2472     AS_HELP_STRING([--with-latest-c++],
2473         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2474          published standard.]),,
2475         [with_latest_c__=no])
2477 dnl ===================================================================
2478 dnl Branding
2479 dnl ===================================================================
2481 AC_ARG_WITH(branding,
2482     AS_HELP_STRING([--with-branding=/path/to/images],
2483         [Use given path to retrieve branding images set.])
2484     [
2485                           Search for intro.png about.svg and logo.svg.
2486                           If any is missing, default ones will be used instead.
2488                           Search also progress.conf for progress
2489                           settings on intro screen :
2491                           PROGRESSBARCOLOR="255,255,255" Set color of
2492                           progress bar. Comma separated RGB decimal values.
2493                           PROGRESSSIZE="407,6" Set size of progress bar.
2494                           Comma separated decimal values (width, height).
2495                           PROGRESSPOSITION="61,317" Set position of progress
2496                           bar from left,top. Comma separated decimal values.
2497                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2498                           bar frame. Comma separated RGB decimal values.
2499                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2500                           bar text. Comma separated RGB decimal values.
2501                           PROGRESSTEXTBASELINE="287" Set vertical position of
2502                           progress bar text from top. Decimal value.
2504                           Default values will be used if not found.
2505     ],
2509 AC_ARG_WITH(extra-buildid,
2510     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2511         [Show addition build identification in about dialog.]),
2515 AC_ARG_WITH(vendor,
2516     AS_HELP_STRING([--with-vendor="John the Builder"],
2517         [Set vendor of the build.]),
2520 AC_ARG_WITH(android-package-name,
2521     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2522         [Set Android package name of the build.]),
2525 AC_ARG_WITH(compat-oowrappers,
2526     AS_HELP_STRING([--with-compat-oowrappers],
2527         [Install oo* wrappers in parallel with
2528          lo* ones to keep backward compatibility.
2529          Has effect only with make distro-pack-install]),
2532 AC_ARG_WITH(os-version,
2533     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2534         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2537 AC_ARG_WITH(idlc-cpp,
2538     AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2539         [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2542 AC_ARG_WITH(parallelism,
2543     AS_HELP_STRING([--with-parallelism],
2544         [Number of jobs to run simultaneously during build. Parallel builds can
2545         save a lot of time on multi-cpu machines. Defaults to the number of
2546         CPUs on the machine, unless you configure --enable-icecream - then to
2547         40.]),
2550 AC_ARG_WITH(all-tarballs,
2551     AS_HELP_STRING([--with-all-tarballs],
2552         [Download all external tarballs unconditionally]))
2554 AC_ARG_WITH(gdrive-client-id,
2555     AS_HELP_STRING([--with-gdrive-client-id],
2556         [Provides the client id of the application for OAuth2 authentication
2557         on Google Drive. If either this or --with-gdrive-client-secret is
2558         empty, the feature will be disabled]),
2561 AC_ARG_WITH(gdrive-client-secret,
2562     AS_HELP_STRING([--with-gdrive-client-secret],
2563         [Provides the client secret of the application for OAuth2
2564         authentication on Google Drive. If either this or
2565         --with-gdrive-client-id is empty, the feature will be disabled]),
2568 AC_ARG_WITH(alfresco-cloud-client-id,
2569     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2570         [Provides the client id of the application for OAuth2 authentication
2571         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2572         empty, the feature will be disabled]),
2575 AC_ARG_WITH(alfresco-cloud-client-secret,
2576     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2577         [Provides the client secret of the application for OAuth2
2578         authentication on Alfresco Cloud. If either this or
2579         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2582 AC_ARG_WITH(onedrive-client-id,
2583     AS_HELP_STRING([--with-onedrive-client-id],
2584         [Provides the client id of the application for OAuth2 authentication
2585         on OneDrive. If either this or --with-onedrive-client-secret is
2586         empty, the feature will be disabled]),
2589 AC_ARG_WITH(onedrive-client-secret,
2590     AS_HELP_STRING([--with-onedrive-client-secret],
2591         [Provides the client secret of the application for OAuth2
2592         authentication on OneDrive. If either this or
2593         --with-onedrive-client-id is empty, the feature will be disabled]),
2595 dnl ===================================================================
2596 dnl Do we want to use pre-build binary tarball for recompile
2597 dnl ===================================================================
2599 if test "$enable_library_bin_tar" = "yes" ; then
2600     USE_LIBRARY_BIN_TAR=TRUE
2601 else
2602     USE_LIBRARY_BIN_TAR=
2604 AC_SUBST(USE_LIBRARY_BIN_TAR)
2606 dnl ===================================================================
2607 dnl Test whether build target is Release Build
2608 dnl ===================================================================
2609 AC_MSG_CHECKING([whether build target is Release Build])
2610 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2611     AC_MSG_RESULT([no])
2612     ENABLE_RELEASE_BUILD=
2613     GET_TASK_ALLOW_ENTITLEMENT='
2614         <!-- We want to be able to debug a hardened process when not building for release -->
2615         <key>com.apple.security.get-task-allow</key>
2616         <true/>'
2617 else
2618     AC_MSG_RESULT([yes])
2619     ENABLE_RELEASE_BUILD=TRUE
2620     GET_TASK_ALLOW_ENTITLEMENT=''
2622 AC_SUBST(ENABLE_RELEASE_BUILD)
2623 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2625 AC_MSG_CHECKING([whether to build a Community flavor])
2626 if test -z "$enable_community_flavor" -o "$enable_community_flavor" == "yes"; then
2627     AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2628     AC_MSG_RESULT([yes])
2629 else
2630     AC_MSG_RESULT([no])
2633 dnl ===================================================================
2634 dnl Test whether to sign Windows Build
2635 dnl ===================================================================
2636 AC_MSG_CHECKING([whether to sign windows build])
2637 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2638     AC_MSG_RESULT([yes])
2639     WINDOWS_BUILD_SIGNING="TRUE"
2640 else
2641     AC_MSG_RESULT([no])
2642     WINDOWS_BUILD_SIGNING="FALSE"
2644 AC_SUBST(WINDOWS_BUILD_SIGNING)
2646 dnl ===================================================================
2647 dnl MacOSX build and runtime environment options
2648 dnl ===================================================================
2650 AC_ARG_WITH(macosx-sdk,
2651     AS_HELP_STRING([--with-macosx-sdk=<version>],
2652         [Prefer a specific SDK for building.])
2653     [
2654                           If the requested SDK is not available, a search for the oldest one will be done.
2655                           With current Xcode versions, only the latest SDK is included, so this option is
2656                           not terribly useful. It works fine to build with a new SDK and run the result
2657                           on an older OS.
2659                           e. g.: --with-macosx-sdk=10.10
2661                           there are 3 options to control the MacOSX build:
2662                           --with-macosx-sdk (referred as 'sdk' below)
2663                           --with-macosx-version-min-required (referred as 'min' below)
2664                           --with-macosx-version-max-allowed (referred as 'max' below)
2666                           the connection between these value and the default they take is as follow:
2667                           ( ? means not specified on the command line, s means the SDK version found,
2668                           constraint: 8 <= x <= y <= z)
2670                           ==========================================
2671                            command line      || config result
2672                           ==========================================
2673                           min  | max  | sdk  || min   | max  | sdk  |
2674                           ?    | ?    | ?    || 10.10 | 10.s | 10.s |
2675                           ?    | ?    | 10.x || 10.10 | 10.x | 10.x |
2676                           ?    | 10.x | ?    || 10.10 | 10.s | 10.s |
2677                           ?    | 10.x | 10.y || 10.10 | 10.x | 10.y |
2678                           10.x | ?    | ?    || 10.x  | 10.s | 10.s |
2679                           10.x | ?    | 10.y || 10.x  | 10.y | 10.y |
2680                           10.x | 10.y | ?    || 10.x  | 10.y | 10.y |
2681                           10.x | 10.y | 10.z || 10.x  | 10.y | 10.z |
2684                           see: http://developer.apple.com/library/mac/#technotes/tn2064/_index.html
2685                           for a detailed technical explanation of these variables
2687                           Note: MACOSX_DEPLOYMENT_TARGET will be set to the value of 'min'.
2688     ],
2691 AC_ARG_WITH(macosx-version-min-required,
2692     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2693         [set the minimum OS version needed to run the built LibreOffice])
2694     [
2695                           e. g.: --with-macosx-version-min-required=10.10
2696                           see --with-macosx-sdk for more info
2697     ],
2700 AC_ARG_WITH(macosx-version-max-allowed,
2701     AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2702         [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2703     [
2704                           e. g.: --with-macosx-version-max-allowed=10.10
2705                           see --with-macosx-sdk for more info
2706     ],
2710 dnl ===================================================================
2711 dnl options for stuff used during cross-compilation build
2712 dnl Not quite superseded by --with-build-platform-configure-options.
2713 dnl TODO: check, if the "force" option is still needed anywhere.
2714 dnl ===================================================================
2716 AC_ARG_WITH(system-icu-for-build,
2717     AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2718         [Use icu already on system for build tools (cross-compilation only).]))
2721 dnl ===================================================================
2722 dnl Check for incompatible options set by fuzzing, and reset those
2723 dnl automatically to working combinations
2724 dnl ===================================================================
2726 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2727         "$enable_dbus" != "$enable_avahi"; then
2728     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2729     enable_avahi=$enable_dbus
2732 add_lopath_after ()
2734     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2735         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2736     fi
2739 add_lopath_before ()
2741     local IFS=${P_SEP}
2742     local path_cleanup
2743     local dir
2744     for dir in $LO_PATH ; do
2745         if test "$dir" != "$1" ; then
2746             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2747         fi
2748     done
2749     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2752 dnl ===================================================================
2753 dnl check for required programs (grep, awk, sed, bash)
2754 dnl ===================================================================
2756 pathmunge ()
2758     local new_path
2759     if test -n "$1"; then
2760         if test "$build_os" = "cygwin"; then
2761             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2762                 PathFormat "$1"
2763                 new_path=`cygpath -sm "$formatted_path"`
2764             else
2765                 PathFormat "$1"
2766                 new_path=`cygpath -u "$formatted_path"`
2767             fi
2768         else
2769             new_path="$1"
2770         fi
2771         if test "$2" = "after"; then
2772             add_lopath_after "$new_path"
2773         else
2774             add_lopath_before "$new_path"
2775         fi
2776     fi
2779 AC_PROG_AWK
2780 AC_PATH_PROG( AWK, $AWK)
2781 if test -z "$AWK"; then
2782     AC_MSG_ERROR([install awk to run this script])
2785 AC_PATH_PROG(BASH, bash)
2786 if test -z "$BASH"; then
2787     AC_MSG_ERROR([bash not found in \$PATH])
2789 AC_SUBST(BASH)
2791 AC_MSG_CHECKING([for GNU or BSD tar])
2792 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2793     $a --version 2> /dev/null | egrep "GNU|bsdtar"  2>&1 > /dev/null
2794     if test $? -eq 0;  then
2795         GNUTAR=$a
2796         break
2797     fi
2798 done
2799 AC_MSG_RESULT($GNUTAR)
2800 if test -z "$GNUTAR"; then
2801     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2803 AC_SUBST(GNUTAR)
2805 AC_MSG_CHECKING([for tar's option to strip components])
2806 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2807 if test $? -eq 0; then
2808     STRIP_COMPONENTS="--strip-components"
2809 else
2810     $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2811     if test $? -eq 0; then
2812         STRIP_COMPONENTS="--strip-path"
2813     else
2814         STRIP_COMPONENTS="unsupported"
2815     fi
2817 AC_MSG_RESULT($STRIP_COMPONENTS)
2818 if test x$STRIP_COMPONENTS = xunsupported; then
2819     AC_MSG_ERROR([you need a tar that is able to strip components.])
2821 AC_SUBST(STRIP_COMPONENTS)
2823 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2824 dnl desktop OSes from "mobile" ones.
2826 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2827 dnl In other words, that when building for an OS that is not a
2828 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2830 dnl Note the direction of the implication; there is no assumption that
2831 dnl cross-compiling would imply a non-desktop OS.
2833 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
2834     BUILD_TYPE="$BUILD_TYPE DESKTOP"
2835     AC_DEFINE(HAVE_FEATURE_DESKTOP)
2836     AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2839 # Whether to build "avmedia" functionality or not.
2841 if test -z "$enable_avmedia"; then
2842     enable_avmedia=yes
2845 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2846 if test "$enable_avmedia" = yes; then
2847     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2848 else
2849     USE_AVMEDIA_DUMMY='TRUE'
2851 AC_SUBST(USE_AVMEDIA_DUMMY)
2853 # Decide whether to build database connectivity stuff (including
2854 # Base) or not. We probably don't want to on non-desktop OSes.
2855 if test -z "$enable_database_connectivity"; then
2856     # --disable-database-connectivity is unfinished work in progress
2857     # and the iOS test app doesn't link if we actually try to use it.
2858     # if test $_os != iOS -a $_os != Android; then
2859     if test $_os != iOS; then
2860         enable_database_connectivity=yes
2861     fi
2864 if test "$enable_database_connectivity" = yes; then
2865     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2866     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2869 if test -z "$enable_extensions"; then
2870     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2871     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2872         enable_extensions=yes
2873     fi
2876 if test "$enable_extensions" = yes; then
2877     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2878     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2881 if test -z "$enable_scripting"; then
2882     # Disable scripting for iOS unless specifically overridden
2883     # with --enable-scripting.
2884     if test $_os != iOS; then
2885         enable_scripting=yes
2886     fi
2889 DISABLE_SCRIPTING=''
2890 if test "$enable_scripting" = yes; then
2891     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2892     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2893 else
2894     DISABLE_SCRIPTING='TRUE'
2895     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2898 if test $_os = iOS -o $_os = Android; then
2899     # Disable dynamic_loading always for iOS and Android
2900     enable_dynamic_loading=no
2901 elif test -z "$enable_dynamic_loading"; then
2902     # Otherwise enable it unless specifically disabled
2903     enable_dynamic_loading=yes
2906 DISABLE_DYNLOADING=''
2907 if test "$enable_dynamic_loading" = yes; then
2908     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
2909 else
2910     DISABLE_DYNLOADING='TRUE'
2912 AC_SUBST(DISABLE_DYNLOADING)
2914 # remember SYSBASE value
2915 AC_SUBST(SYSBASE)
2917 dnl ===================================================================
2918 dnl  Sort out various gallery compilation options
2919 dnl ===================================================================
2920 WITH_GALLERY_BUILD=TRUE
2921 AC_MSG_CHECKING([how to build and package galleries])
2922 if test -n "${with_galleries}"; then
2923     if test "$with_galleries" = "build"; then
2924         AC_MSG_RESULT([build from source images internally])
2925     elif test "$with_galleries" = "no"; then
2926         WITH_GALLERY_BUILD=
2927         AC_MSG_RESULT([disable non-internal gallery build])
2928     else
2929         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
2930     fi
2931 else
2932     if test $_os != iOS -a $_os != Android; then
2933         AC_MSG_RESULT([internal src images for desktop])
2934     else
2935         WITH_GALLERY_BUILD=
2936         AC_MSG_RESULT([disable src image build])
2937     fi
2939 AC_SUBST(WITH_GALLERY_BUILD)
2941 dnl ===================================================================
2942 dnl  Checks if ccache is available
2943 dnl ===================================================================
2944 CCACHE_DEPEND_MODE=
2945 if test "$_os" = "WINNT"; then
2946     # on windows/VC build do not use ccache
2947     CCACHE=""
2948 elif test "$enable_ccache" = "no"; then
2949     CCACHE=""
2950 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
2951     case "%$CC%$CXX%" in
2952     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
2953     # assume that's good then
2954     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
2955         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
2956         CCACHE_DEPEND_MODE=1
2957         ;;
2958     *)
2959         AC_PATH_PROG([CCACHE],[ccache],[not found])
2960         if test "$CCACHE" = "not found"; then
2961             CCACHE=""
2962         else
2963             CCACHE_DEPEND_MODE=1
2964             # Need to check for ccache version: otherwise prevents
2965             # caching of the results (like "-x objective-c++" for Mac)
2966             if test $_os = Darwin -o $_os = iOS; then
2967                 # Check ccache version
2968                 AC_MSG_CHECKING([whether version of ccache is suitable])
2969                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
2970                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
2971                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
2972                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
2973                 else
2974                     AC_MSG_RESULT([no, $CCACHE_VERSION])
2975                     CCACHE=""
2976                     CCACHE_DEPEND_MODE=
2977                 fi
2978             fi
2979         fi
2980         ;;
2981     esac
2982 else
2983     CCACHE=""
2985 if test "$enable_ccache" = "nodepend"; then
2986     CCACHE_DEPEND_MODE=""
2988 AC_SUBST(CCACHE_DEPEND_MODE)
2990 if test "$CCACHE" != ""; then
2991     ccache_size_msg=$([ccache -s | tail -n 1 | sed 's/^[^0-9]*//' | sed -e 's/\.[0-9]*//'])
2992     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
2993     if test "$ccache_size" = ""; then
2994         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
2995         if test "$ccache_size" = ""; then
2996             ccache_size=0
2997         fi
2998         # we could not determine the size or it was less than 1GB -> disable auto-ccache
2999         if test $ccache_size -lt 1024; then
3000             CCACHE=""
3001             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3002             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3003         else
3004             # warn that ccache may be too small for debug build
3005             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3006             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3007         fi
3008     else
3009         if test $ccache_size -lt 5; then
3010             #warn that ccache may be too small for debug build
3011             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3012             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3013         fi
3014     fi
3017 dnl ===================================================================
3018 dnl  Checks for C compiler,
3019 dnl  The check for the C++ compiler is later on.
3020 dnl ===================================================================
3021 if test "$_os" != "WINNT"; then
3022     GCC_HOME_SET="true"
3023     AC_MSG_CHECKING([gcc home])
3024     if test -z "$with_gcc_home"; then
3025         if test "$enable_icecream" = "yes"; then
3026             if test -d "/usr/lib/icecc/bin"; then
3027                 GCC_HOME="/usr/lib/icecc/"
3028             elif test -d "/usr/libexec/icecc/bin"; then
3029                 GCC_HOME="/usr/libexec/icecc/"
3030             elif test -d "/opt/icecream/bin"; then
3031                 GCC_HOME="/opt/icecream/"
3032             else
3033                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3035             fi
3036         else
3037             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3038             GCC_HOME_SET="false"
3039         fi
3040     else
3041         GCC_HOME="$with_gcc_home"
3042     fi
3043     AC_MSG_RESULT($GCC_HOME)
3044     AC_SUBST(GCC_HOME)
3046     if test "$GCC_HOME_SET" = "true"; then
3047         if test -z "$CC"; then
3048             CC="$GCC_HOME/bin/gcc"
3049             CC_BASE="gcc"
3050         fi
3051         if test -z "$CXX"; then
3052             CXX="$GCC_HOME/bin/g++"
3053             CXX_BASE="g++"
3054         fi
3055     fi
3058 COMPATH=`dirname "$CC"`
3059 if test "$COMPATH" = "."; then
3060     AC_PATH_PROGS(COMPATH, $CC)
3061     dnl double square bracket to get single because of M4 quote...
3062     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3064 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3066 dnl ===================================================================
3067 dnl Java support
3068 dnl ===================================================================
3069 AC_MSG_CHECKING([whether to build with Java support])
3070 if test "$with_java" != "no"; then
3071     if test "$DISABLE_SCRIPTING" = TRUE; then
3072         AC_MSG_RESULT([no, overridden by --disable-scripting])
3073         ENABLE_JAVA=""
3074         with_java=no
3075     else
3076         AC_MSG_RESULT([yes])
3077         ENABLE_JAVA="TRUE"
3078         AC_DEFINE(HAVE_FEATURE_JAVA)
3079     fi
3080 else
3081     AC_MSG_RESULT([no])
3082     ENABLE_JAVA=""
3085 AC_SUBST(ENABLE_JAVA)
3087 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3089 dnl ENABLE_JAVA="" indicate no Java support at all
3091 dnl ===================================================================
3092 dnl Check macOS SDK and compiler
3093 dnl ===================================================================
3095 if test $_os = Darwin; then
3097     # If no --with-macosx-sdk option is given, look for one
3099     # The intent is that for "most" Mac-based developers, a suitable
3100     # SDK will be found automatically without any configure options.
3102     # For developers with a current Xcode, the lowest-numbered SDK
3103     # higher than or equal to the minimum required should be found.
3105     AC_MSG_CHECKING([what macOS SDK to use])
3106     for _macosx_sdk in ${with_macosx_sdk-11.1 11.0 10.15 10.14 10.13}; do
3107         MACOSX_SDK_PATH=`xcrun --sdk macosx${_macosx_sdk} --show-sdk-path 2> /dev/null`
3108         if test -d "$MACOSX_SDK_PATH"; then
3109             with_macosx_sdk="${_macosx_sdk}"
3110             break
3111         else
3112             MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${_macosx_sdk}.sdk"
3113             if test -d "$MACOSX_SDK_PATH"; then
3114                 with_macosx_sdk="${_macosx_sdk}"
3115                 break
3116             fi
3117         fi
3118     done
3119     if test ! -d "$MACOSX_SDK_PATH"; then
3120         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3121     fi
3123     AC_MSG_RESULT([SDK $with_macosx_sdk at $MACOSX_SDK_PATH])
3125     case $with_macosx_sdk in
3126     10.13)
3127         MACOSX_SDK_VERSION=101300
3128         ;;
3129     10.14)
3130         MACOSX_SDK_VERSION=101400
3131         ;;
3132     10.15)
3133         MACOSX_SDK_VERSION=101500
3134         ;;
3135     11.0)
3136         MACOSX_SDK_VERSION=110000
3137         ;;
3138     11.1)
3139         MACOSX_SDK_VERSION=110100
3140         ;;
3141     *)
3142         AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value, supported values are 10.13--11.1])
3143         ;;
3144     esac
3146     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3147         AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value for Apple Silicon])
3148     fi
3150     if test "$with_macosx_version_min_required" = "" ; then
3151         if test "$host_cpu" = x86_64; then
3152             with_macosx_version_min_required="10.10";
3153         else
3154             with_macosx_version_min_required="11.0";
3155         fi
3156     fi
3158     if test "$with_macosx_version_max_allowed" = "" ; then
3159         with_macosx_version_max_allowed="$with_macosx_sdk"
3160     fi
3162     # export this so that "xcrun" invocations later return matching values
3163     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3164     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3165     export DEVELOPER_DIR
3166     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3167     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3169     AC_MSG_CHECKING([whether Xcode is new enough])
3170     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3171     my_xcode_ver2=${my_xcode_ver1#Xcode }
3172     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3173     if test "$my_xcode_ver3" -ge 1103; then
3174         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3175     else
3176         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3177     fi
3179     case "$with_macosx_version_min_required" in
3180     10.10)
3181         MAC_OS_X_VERSION_MIN_REQUIRED="101000"
3182         ;;
3183     10.11)
3184         MAC_OS_X_VERSION_MIN_REQUIRED="101100"
3185         ;;
3186     10.12)
3187         MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3188         ;;
3189     10.13)
3190         MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3191         ;;
3192     10.14)
3193         MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3194         ;;
3195     10.15)
3196         MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3197         ;;
3198     10.16)
3199         MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3200         ;;
3201     11.0)
3202         MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3203         ;;
3204     11.1)
3205         MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3206         ;;
3207     *)
3208         AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.10--11.1])
3209         ;;
3210     esac
3212     LIBTOOL=/usr/bin/libtool
3213     INSTALL_NAME_TOOL=install_name_tool
3214     if test -z "$save_CC"; then
3215         stdlib=-stdlib=libc++
3217         AC_MSG_CHECKING([what C compiler to use])
3218         CC="`xcrun -find clang`"
3219         CC_BASE=`first_arg_basename "$CC"`
3220         if test "$host_cpu" = x86_64; then
3221             CC+=" -target x86_64-apple-macos"
3222         else
3223             CC+=" -target arm64-apple-macos"
3224         fi
3225         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3226         AC_MSG_RESULT([$CC])
3228         AC_MSG_CHECKING([what C++ compiler to use])
3229         CXX="`xcrun -find clang++`"
3230         CXX_BASE=`first_arg_basename "$CXX"`
3231         if test "$host_cpu" = x86_64; then
3232             CXX+=" -target x86_64-apple-macos"
3233         else
3234             CXX+=" -target arm64-apple-macos"
3235         fi
3236         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3237         AC_MSG_RESULT([$CXX])
3239         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3240         AR=`xcrun -find ar`
3241         NM=`xcrun -find nm`
3242         STRIP=`xcrun -find strip`
3243         LIBTOOL=`xcrun -find libtool`
3244         RANLIB=`xcrun -find ranlib`
3245     fi
3247     case "$with_macosx_version_max_allowed" in
3248     10.10)
3249         MAC_OS_X_VERSION_MAX_ALLOWED="101000"
3250         ;;
3251     10.11)
3252         MAC_OS_X_VERSION_MAX_ALLOWED="101100"
3253         ;;
3254     10.12)
3255         MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3256         ;;
3257     10.13)
3258         MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3259         ;;
3260     10.14)
3261         MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3262         ;;
3263     10.15)
3264         MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3265         ;;
3266     11.0)
3267         MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3268         ;;
3269     11.1)
3270         MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3271         ;;
3272     *)
3273         AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.10--11.1])
3274         ;;
3275     esac
3277     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3278     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3279         AC_MSG_ERROR([the version minimum required, $MAC_OS_X_VERSION_MIN_REQUIRED, must be <= the version maximum allowed, $MAC_OS_X_VERSION_MAX_ALLOWED])
3280     else
3281         AC_MSG_RESULT([ok])
3282     fi
3284     AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3285     if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3286         AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3287     else
3288         AC_MSG_RESULT([ok])
3289     fi
3290     AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3291     AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3293     AC_MSG_CHECKING([whether to do code signing])
3295     if test "$enable_macosx_code_signing" = yes; then
3296         # By default use the first suitable certificate (?).
3298         # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3299         # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3300         # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3301         # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3302         # "Developer ID Application" one.
3304         identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3305         if test -n "$identity"; then
3306             MACOSX_CODESIGNING_IDENTITY=$identity
3307             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3308             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3309         else
3310             AC_MSG_ERROR([cannot determine identity to use])
3311         fi
3312     elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3313         MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3314         pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3315         AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3316     else
3317         AC_MSG_RESULT([no])
3318     fi
3320     AC_MSG_CHECKING([whether to create a Mac App Store package])
3322     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3323         AC_MSG_RESULT([no])
3324     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3325         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3326     elif test "$enable_macosx_package_signing" = yes; then
3327         # By default use the first suitable certificate.
3328         # It should be a "3rd Party Mac Developer Installer" one
3330         identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3331         if test -n "$identity"; then
3332             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3333             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3334             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3335         else
3336             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3337         fi
3338     else
3339         MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3340         pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3341         AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3342     fi
3344     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3345         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3346     fi
3348     AC_MSG_CHECKING([whether to sandbox the application])
3350     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3351         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3352     elif test "$enable_macosx_sandbox" = yes; then
3353         ENABLE_MACOSX_SANDBOX=TRUE
3354         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3355         AC_MSG_RESULT([yes])
3356     else
3357         AC_MSG_RESULT([no])
3358     fi
3360     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3361     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3362     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3364 AC_SUBST(MACOSX_SDK_PATH)
3365 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3366 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3367 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3368 AC_SUBST(INSTALL_NAME_TOOL)
3369 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3370 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3371 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3372 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3373 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3375 dnl ===================================================================
3376 dnl Check iOS SDK and compiler
3377 dnl ===================================================================
3379 if test $_os = iOS; then
3380     AC_MSG_CHECKING([what iOS SDK to use])
3381     current_sdk_ver=14.4
3382     older_sdk_vers="14.3 14.2 14.1 14.0 13.7 13.6 13.5 13.4 13.2 13.1 13.0 12.4 12.2"
3383     if test "$enable_ios_simulator" = "yes"; then
3384         platform=iPhoneSimulator
3385         versionmin=-mios-simulator-version-min=12.2
3386     else
3387         platform=iPhoneOS
3388         versionmin=-miphoneos-version-min=12.2
3389     fi
3390     xcode_developer=`xcode-select -print-path`
3392     for sdkver in $current_sdk_ver $older_sdk_vers; do
3393         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3394         if test -d $t; then
3395             sysroot=$t
3396             break
3397         fi
3398     done
3400     if test -z "$sysroot"; then
3401         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3402     fi
3404     AC_MSG_RESULT($sysroot)
3406     stdlib="-stdlib=libc++"
3408     AC_MSG_CHECKING([what C compiler to use])
3409     CC="`xcrun -find clang`"
3410     CC_BASE=`first_arg_basename "$CC"`
3411     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3412     AC_MSG_RESULT([$CC])
3414     AC_MSG_CHECKING([what C++ compiler to use])
3415     CXX="`xcrun -find clang++`"
3416     CXX_BASE=`first_arg_basename "$CXX"`
3417     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3418     AC_MSG_RESULT([$CXX])
3420     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3421     AR=`xcrun -find ar`
3422     NM=`xcrun -find nm`
3423     STRIP=`xcrun -find strip`
3424     LIBTOOL=`xcrun -find libtool`
3425     RANLIB=`xcrun -find ranlib`
3428 AC_MSG_CHECKING([whether to treat the installation as read-only])
3430 if test $_os = Darwin; then
3431     enable_readonly_installset=yes
3432 elif test "$enable_extensions" != yes; then
3433     enable_readonly_installset=yes
3435 if test "$enable_readonly_installset" = yes; then
3436     AC_MSG_RESULT([yes])
3437     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3438 else
3439     AC_MSG_RESULT([no])
3442 dnl ===================================================================
3443 dnl Structure of install set
3444 dnl ===================================================================
3446 if test $_os = Darwin; then
3447     LIBO_BIN_FOLDER=MacOS
3448     LIBO_ETC_FOLDER=Resources
3449     LIBO_LIBEXEC_FOLDER=MacOS
3450     LIBO_LIB_FOLDER=Frameworks
3451     LIBO_LIB_PYUNO_FOLDER=Resources
3452     LIBO_SHARE_FOLDER=Resources
3453     LIBO_SHARE_HELP_FOLDER=Resources/help
3454     LIBO_SHARE_JAVA_FOLDER=Resources/java
3455     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3456     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3457     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3458     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3459     LIBO_URE_BIN_FOLDER=MacOS
3460     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3461     LIBO_URE_LIB_FOLDER=Frameworks
3462     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3463     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3464 elif test $_os = WINNT; then
3465     LIBO_BIN_FOLDER=program
3466     LIBO_ETC_FOLDER=program
3467     LIBO_LIBEXEC_FOLDER=program
3468     LIBO_LIB_FOLDER=program
3469     LIBO_LIB_PYUNO_FOLDER=program
3470     LIBO_SHARE_FOLDER=share
3471     LIBO_SHARE_HELP_FOLDER=help
3472     LIBO_SHARE_JAVA_FOLDER=program/classes
3473     LIBO_SHARE_PRESETS_FOLDER=presets
3474     LIBO_SHARE_READMES_FOLDER=readmes
3475     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3476     LIBO_SHARE_SHELL_FOLDER=program/shell
3477     LIBO_URE_BIN_FOLDER=program
3478     LIBO_URE_ETC_FOLDER=program
3479     LIBO_URE_LIB_FOLDER=program
3480     LIBO_URE_MISC_FOLDER=program
3481     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3482 else
3483     LIBO_BIN_FOLDER=program
3484     LIBO_ETC_FOLDER=program
3485     LIBO_LIBEXEC_FOLDER=program
3486     LIBO_LIB_FOLDER=program
3487     LIBO_LIB_PYUNO_FOLDER=program
3488     LIBO_SHARE_FOLDER=share
3489     LIBO_SHARE_HELP_FOLDER=help
3490     LIBO_SHARE_JAVA_FOLDER=program/classes
3491     LIBO_SHARE_PRESETS_FOLDER=presets
3492     LIBO_SHARE_READMES_FOLDER=readmes
3493     if test "$enable_fuzzers" != yes; then
3494         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3495     else
3496         LIBO_SHARE_RESOURCE_FOLDER=resource
3497     fi
3498     LIBO_SHARE_SHELL_FOLDER=program/shell
3499     LIBO_URE_BIN_FOLDER=program
3500     LIBO_URE_ETC_FOLDER=program
3501     LIBO_URE_LIB_FOLDER=program
3502     LIBO_URE_MISC_FOLDER=program
3503     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3505 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3506 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3507 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3508 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3509 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3510 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3511 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3512 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3513 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3514 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3515 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3516 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3517 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3518 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3519 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3520 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3522 # Not all of them needed in config_host.mk, add more if need arises
3523 AC_SUBST(LIBO_BIN_FOLDER)
3524 AC_SUBST(LIBO_ETC_FOLDER)
3525 AC_SUBST(LIBO_LIB_FOLDER)
3526 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3527 AC_SUBST(LIBO_SHARE_FOLDER)
3528 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3529 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3530 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3531 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3532 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3533 AC_SUBST(LIBO_URE_BIN_FOLDER)
3534 AC_SUBST(LIBO_URE_ETC_FOLDER)
3535 AC_SUBST(LIBO_URE_LIB_FOLDER)
3536 AC_SUBST(LIBO_URE_MISC_FOLDER)
3537 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3539 dnl ===================================================================
3540 dnl Windows specific tests and stuff
3541 dnl ===================================================================
3543 reg_get_value()
3545     # Return value: $regvalue
3546     unset regvalue
3548     if test "$build_os" = "wsl"; then
3549         regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3550         return
3551     fi
3553     local _regentry="/proc/registry${1}/${2}"
3554     if test -f "$_regentry"; then
3555         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3556         # Registry keys read via /proc/registry* are always \0 terminated!
3557         local _regvalue=$(tr -d '\0' < "$_regentry")
3558         if test $? -eq 0; then
3559             regvalue=$_regvalue
3560         fi
3561     fi
3564 # Get a value from the 32-bit side of the Registry
3565 reg_get_value_32()
3567     reg_get_value "32" "$1"
3570 # Get a value from the 64-bit side of the Registry
3571 reg_get_value_64()
3573     reg_get_value "64" "$1"
3576 case "$host_os" in
3577 cygwin*|wsl*)
3578     COM=MSC
3579     USING_X11=
3580     OS=WNT
3581     RTL_OS=Windows
3582     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3583         P_SEP=";"
3584     else
3585         P_SEP=:
3586     fi
3587     case "$host_cpu" in
3588     x86_64)
3589         CPUNAME=X86_64
3590         RTL_ARCH=X86_64
3591         PLATFORMID=windows_x86_64
3592         WINDOWS_X64=1
3593         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3594         WIN_HOST_ARCH="x64"
3595         WIN_MULTI_ARCH="x86"
3596         WIN_HOST_BITS=64
3597         ;;
3598     i*86)
3599         CPUNAME=INTEL
3600         RTL_ARCH=x86
3601         PLATFORMID=windows_x86
3602         WIN_HOST_ARCH="x86"
3603         WIN_HOST_BITS=32
3604         WIN_OTHER_ARCH="x64"
3605         ;;
3606     aarch64)
3607         CPUNAME=ARM64
3608         RTL_ARCH=arm64
3609         PLATFORMID=windows_arm64
3610         WINDOWS_X64=1
3611         SCPDEFS="$SCPDEFS -DWINDOWS_ARM64"
3612         WIN_HOST_ARCH="arm64"
3613         WIN_HOST_BITS=64
3614         with_ucrt_dir=no
3615         ;;
3616     *)
3617         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3618         ;;
3619     esac
3621     case "$build_cpu" in
3622     x86_64) WIN_BUILD_ARCH="x64" ;;
3623     i*86) WIN_BUILD_ARCH="x86" ;;
3624     aarch64) WIN_BUILD_ARCH="arm64" ;;
3625     *)
3626         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3627         ;;
3628     esac
3630     SCPDEFS="$SCPDEFS -D_MSC_VER"
3631     ;;
3632 esac
3634 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3635 # other-arch won't, but wouldn't break the build (x64 on x86).
3636 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3637     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3641 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3642     # To allow building Windows multi-arch releases without cross-tooling
3643     if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3644         cross_compiling="yes"
3645     fi
3647 if test "$cross_compiling" = "yes"; then
3648     export CROSS_COMPILING=TRUE
3649 else
3650     CROSS_COMPILING=
3651     BUILD_TYPE="$BUILD_TYPE NATIVE"
3653 AC_SUBST(CROSS_COMPILING)
3655 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3656 # NOTE: must _not_ be used for bundled external libraries!
3657 ISYSTEM=
3658 if test "$GCC" = "yes"; then
3659     AC_MSG_CHECKING( for -isystem )
3660     save_CFLAGS=$CFLAGS
3661     CFLAGS="$CFLAGS -Werror"
3662     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3663     CFLAGS=$save_CFLAGS
3664     if test -n "$ISYSTEM"; then
3665         AC_MSG_RESULT(yes)
3666     else
3667         AC_MSG_RESULT(no)
3668     fi
3670 if test -z "$ISYSTEM"; then
3671     # fall back to using -I
3672     ISYSTEM=-I
3674 AC_SUBST(ISYSTEM)
3676 dnl ===================================================================
3677 dnl  Check which Visual Studio compiler is used
3678 dnl ===================================================================
3680 map_vs_year_to_version()
3682     # Return value: $vsversion
3684     unset vsversion
3686     case $1 in
3687     2019)
3688         vsversion=16;;
3689     *)
3690         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3691     esac
3694 vs_versions_to_check()
3696     # Args: $1 (optional) : versions to check, in the order of preference
3697     # Return value: $vsversions
3699     unset vsversions
3701     if test -n "$1"; then
3702         map_vs_year_to_version "$1"
3703         vsversions=$vsversion
3704     else
3705         # We accept only 2019
3706         vsversions="16"
3707     fi
3710 win_get_env_from_vsvars32bat()
3712     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3713     # Also seems to be located in another directory under the same name: vsvars32.bat
3714     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3715     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3716     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3717     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3718     local result
3719     if test "$build_os" = "wsl"; then
3720         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3721     else
3722         chmod +x $WRAPPERBATCHFILEPATH
3723         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3724     fi
3725     rm -f $WRAPPERBATCHFILEPATH
3726     printf '%s' "$result"
3729 find_ucrt()
3731     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3732     if test -n "$regvalue"; then
3733         PathFormat "$regvalue"
3734         UCRTSDKDIR=$formatted_path_unix
3735         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3736         UCRTVERSION=$regvalue
3737         # Rest if not exist
3738         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3739           UCRTSDKDIR=
3740         fi
3741     fi
3742     if test -z "$UCRTSDKDIR"; then
3743         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3744         ide_env_file="${ide_env_dir}VsDevCmd.bat"
3745         if test -f "$ide_env_file"; then
3746             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3747             UCRTSDKDIR=$formatted_path
3748             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3749             dnl Hack needed at least by tml:
3750             if test "$UCRTVERSION" = 10.0.15063.0 \
3751                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3752                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3753             then
3754                 UCRTVERSION=10.0.14393.0
3755             fi
3756         else
3757           AC_MSG_ERROR([No UCRT found])
3758         fi
3759     fi
3762 find_msvc()
3764     # Find Visual C++ 2019
3765     # Args: $1 (optional) : The VS version year
3766     # Return values: $vctest, $vcyear, $vcnum, $vcnumwithdot, $vcbuildnumber
3768     unset vctest vcnum vcnumwithdot vcbuildnumber
3770     vs_versions_to_check "$1"
3771     if test "$build_os" = wsl; then
3772         vswhere="$PROGRAMFILESX86"
3773     else
3774         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3775     fi
3776     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3777     PathFormat "$vswhere"
3778     vswhere=$formatted_path_unix
3779     for ver in $vsversions; do
3780         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3781         # Fall back to all MS products (this includes VC++ Build Tools)
3782         if ! test -n "$vswhereoutput"; then
3783             AC_MSG_CHECKING([VC++ Build Tools and similar])
3784             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3785         fi
3786         if test -n "$vswhereoutput"; then
3787             PathFormat "$vswhereoutput"
3788             vctest=$formatted_path_unix
3789             break
3790         fi
3791     done
3793     if test -n "$vctest"; then
3794         vcnumwithdot="$ver.0"
3795         case "$vcnumwithdot" in
3796         16.0)
3797             vcyear=2019
3798             vcnum=160
3799             ;;
3800         esac
3801         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3803     fi
3806 test_cl_exe()
3808     AC_MSG_CHECKING([$1 compiler])
3810     CL_EXE_PATH="$2/cl.exe"
3812     if test ! -f "$CL_EXE_PATH"; then
3813         if test "$1" = "multi-arch"; then
3814             AC_MSG_WARN([no compiler (cl.exe) in $2])
3815             return 1
3816         else
3817             AC_MSG_ERROR([no compiler (cl.exe) in $2])
3818         fi
3819     fi
3821     dnl ===========================================================
3822     dnl  Check for the corresponding mspdb*.dll
3823     dnl ===========================================================
3825     # MSVC 15.0 has libraries from 14.0?
3826     mspdbnum="140"
3828     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3829         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3830     fi
3832     # The compiles has to find its shared libraries
3833     OLD_PATH="$PATH"
3834     TEMP_PATH=`cygpath -d "$2"`
3835     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3837     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3838         AC_MSG_ERROR([no compiler (cl.exe) in $2])
3839     fi
3841     PATH="$OLD_PATH"
3843     AC_MSG_RESULT([$CL_EXE_PATH])
3846 SOLARINC=
3847 MSBUILD_PATH=
3848 DEVENV=
3849 if test "$_os" = "WINNT"; then
3850     AC_MSG_CHECKING([Visual C++])
3851     find_msvc "$with_visual_studio"
3852     if test -z "$vctest"; then
3853         if test -n "$with_visual_studio"; then
3854             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3855         else
3856             AC_MSG_ERROR([no Visual Studio 2019 installation found])
3857         fi
3858     fi
3859     AC_MSG_RESULT([])
3861     VC_PRODUCT_DIR="$vctest/VC"
3862     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3864     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3865     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3866         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3867         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3868         if test $? -ne 0; then
3869             WIN_MULTI_ARCH=""
3870             WIN_OTHER_ARCH=""
3871         fi
3872     fi
3874     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3875         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3876         test_cl_exe "build" "$MSVC_BUILD_PATH"
3877     fi
3879     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3880         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3881         test_cl_exe "host" "$MSVC_HOST_PATH"
3882     else
3883         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
3884     fi
3886     AC_MSG_CHECKING([for short pathname of VC product directory])
3887     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
3888     AC_MSG_RESULT([$VC_PRODUCT_DIR])
3890     UCRTSDKDIR=
3891     UCRTVERSION=
3893     AC_MSG_CHECKING([for UCRT location])
3894     find_ucrt
3895     # find_ucrt errors out if it doesn't find it
3896     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
3897     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
3898     ucrtincpath_formatted=$formatted_path
3899     # SOLARINC is used for external modules and must be set too.
3900     # And no, it's not sufficient to set SOLARINC only, as configure
3901     # itself doesn't honour it.
3902     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
3903     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
3904     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
3905     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
3907     AC_SUBST(UCRTSDKDIR)
3908     AC_SUBST(UCRTVERSION)
3910     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
3911     # Find the proper version of MSBuild.exe to use based on the VS version
3912     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
3913     if test -n "$regvalue" ; then
3914         AC_MSG_RESULT([found: $regvalue])
3915         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3916     else
3917         if test "$vcnumwithdot" = "16.0"; then
3918             if test "$WIN_BUILD_ARCH" != "x64"; then
3919                 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
3920             else
3921                 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
3922             fi
3923         else
3924             if test "$WIN_BUILD_ARCH" != "x64"; then
3925                 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin"
3926             else
3927                 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64"
3928             fi
3929         fi
3930         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3931         AC_MSG_RESULT([$regvalue])
3932     fi
3934     # Find the version of devenv.exe
3935     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
3936     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
3937     DEVENV_unix=$(cygpath -u "$DEVENV")
3938     if test ! -e "$DEVENV_unix"; then
3939         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
3940     fi
3942     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
3943     dnl needed when building CLR code:
3944     if test -z "$MSVC_CXX"; then
3945         # This gives us a posix path with 8.3 filename restrictions
3946         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
3947     fi
3949     if test -z "$CC"; then
3950         CC=$MSVC_CXX
3951         CC_BASE=`first_arg_basename "$CC"`
3952     fi
3953     if test -z "$CXX"; then
3954         CXX=$MSVC_CXX
3955         CXX_BASE=`first_arg_basename "$CXX"`
3956     fi
3958     if test -n "$CC"; then
3959         # Remove /cl.exe from CC case insensitive
3960         AC_MSG_NOTICE([found Visual C++ $vcyear])
3962         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
3963         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
3965         PathFormat "$COMPATH"
3966         COMPATH=`win_short_path_for_make "$formatted_path"`
3968         VCVER=$vcnum
3970         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
3971         # are always "better", we list them in reverse chronological order.
3973         case "$vcnum" in
3974         160)
3975             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
3976             ;;
3977         esac
3979         # The expectation is that --with-windows-sdk should not need to be used
3980         if test -n "$with_windows_sdk"; then
3981             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
3982             *" "$with_windows_sdk" "*)
3983                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
3984                 ;;
3985             *)
3986                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
3987                 ;;
3988             esac
3989         fi
3991         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
3992         ac_objext=obj
3993         ac_exeext=exe
3995     else
3996         AC_MSG_ERROR([Visual C++ not found after all, huh])
3997     fi
3999     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4000     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4001         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4002         // between Visual Studio versions and _MSC_VER:
4003         #if _MSC_VER < 1925
4004         #error
4005         #endif
4006     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4008     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4009     # version of the Explorer extension (and maybe other small
4010     # bits, too) needed when installing a 32-bit LibreOffice on a
4011     # 64-bit OS. The 64-bit Explorer extension is a feature that
4012     # has been present since long in OOo. Don't confuse it with
4013     # building LibreOffice itself as 64-bit code.
4015     BUILD_X64=
4016     CXX_X64_BINARY=
4018     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4019         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4020         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4021              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4022         then
4023             BUILD_X64=TRUE
4024             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4025             AC_MSG_RESULT([found])
4026         else
4027             AC_MSG_RESULT([not found])
4028             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4029         fi
4030     elif test "$WIN_HOST_ARCH" = "x64"; then
4031         CXX_X64_BINARY=$CXX
4032     fi
4033     AC_SUBST(BUILD_X64)
4035     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4036     AC_SUBST(CXX_X64_BINARY)
4038     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4039     # needed to support TWAIN scan on both 32- and 64-bit systems
4041     case "$WIN_HOST_ARCH" in
4042     x64)
4043         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4044         if test -n "$CXX_X86_BINARY"; then
4045             BUILD_X86=TRUE
4046             AC_MSG_RESULT([preset])
4047         elif test -n "$WIN_MULTI_ARCH"; then
4048             BUILD_X86=TRUE
4049             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4050             CXX_X86_BINARY+=" /arch:SSE"
4051             AC_MSG_RESULT([found])
4052         else
4053             AC_MSG_RESULT([not found])
4054             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4055         fi
4056         ;;
4057     x86)
4058         BUILD_X86=TRUE
4059         CXX_X86_BINARY=$MSVC_CXX
4060         ;;
4061     esac
4062     AC_SUBST(BUILD_X86)
4063     AC_SUBST(CXX_X86_BINARY)
4065 AC_SUBST(VCVER)
4066 AC_SUBST(DEVENV)
4067 AC_SUBST(MSVC_CXX)
4069 COM_IS_CLANG=
4070 AC_MSG_CHECKING([whether the compiler is actually Clang])
4071 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4072     #ifndef __clang__
4073     you lose
4074     #endif
4075     int foo=42;
4076     ]])],
4077     [AC_MSG_RESULT([yes])
4078      COM_IS_CLANG=TRUE],
4079     [AC_MSG_RESULT([no])])
4080 AC_SUBST(COM_IS_CLANG)
4082 CC_PLAIN=$CC
4083 CLANGVER=
4084 if test "$COM_IS_CLANG" = TRUE; then
4085     AC_MSG_CHECKING([whether Clang is new enough])
4086     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4087         #if !defined __apple_build_version__
4088         #error
4089         #endif
4090         ]])],
4091         [my_apple_clang=yes],[my_apple_clang=])
4092     if test "$my_apple_clang" = yes; then
4093         AC_MSG_RESULT([assumed yes (Apple Clang)])
4094     else
4095         if test "$_os" = WINNT; then
4096             dnl In which case, assume clang-cl:
4097             my_args="/EP /TC"
4098             dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4099             dnl clang-cl:
4100             CC_PLAIN=
4101             for i in $CC; do
4102                 case $i in
4103                 -FIIntrin.h)
4104                     ;;
4105                 *)
4106                     CC_PLAIN="$CC_PLAIN $i"
4107                     ;;
4108                 esac
4109             done
4110         else
4111             my_args="-E -P"
4112         fi
4113         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4114         CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4115         CLANGVER=`echo $clang_version \
4116             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4117         if test "$CLANGVER" -ge 50002; then
4118             AC_MSG_RESULT([yes ($clang_version)])
4119         else
4120             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4121         fi
4122         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4123         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4124     fi
4127 SHOWINCLUDES_PREFIX=
4128 if test "$_os" = WINNT; then
4129     dnl We need to guess the prefix of the -showIncludes output, it can be
4130     dnl localized
4131     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4132     echo "#include <stdlib.h>" > conftest.c
4133     SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4134         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4135     rm -f conftest.c conftest.obj
4136     if test -z "$SHOWINCLUDES_PREFIX"; then
4137         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4138     else
4139         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4140     fi
4142 AC_SUBST(SHOWINCLUDES_PREFIX)
4145 # prefix C with ccache if needed
4147 if test "$CCACHE" != ""; then
4148     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4150     AC_LANG_PUSH([C])
4151     save_CFLAGS=$CFLAGS
4152     CFLAGS="$CFLAGS --ccache-skip -O2"
4153     dnl an empty program will do, we're checking the compiler flags
4154     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4155                       [use_ccache=yes], [use_ccache=no])
4156     CFLAGS=$save_CFLAGS
4157     if test $use_ccache = yes; then
4158         AC_MSG_RESULT([yes])
4159     else
4160         CC="$CCACHE $CC"
4161         CC_BASE="ccache $CC_BASE"
4162         AC_MSG_RESULT([no])
4163     fi
4164     AC_LANG_POP([C])
4167 # ===================================================================
4168 # check various GCC options that Clang does not support now but maybe
4169 # will somewhen in the future, check them even for GCC, so that the
4170 # flags are set
4171 # ===================================================================
4173 HAVE_GCC_GGDB2=
4174 if test "$GCC" = "yes"; then
4175     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4176     save_CFLAGS=$CFLAGS
4177     CFLAGS="$CFLAGS -Werror -ggdb2"
4178     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4179     CFLAGS=$save_CFLAGS
4180     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4181         AC_MSG_RESULT([yes])
4182     else
4183         AC_MSG_RESULT([no])
4184     fi
4186     if test "$host_cpu" = "m68k"; then
4187         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4188         save_CFLAGS=$CFLAGS
4189         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4190         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4191         CFLAGS=$save_CFLAGS
4192         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4193             AC_MSG_RESULT([yes])
4194         else
4195             AC_MSG_ERROR([no])
4196         fi
4197     fi
4199 AC_SUBST(HAVE_GCC_GGDB2)
4201 dnl ===================================================================
4202 dnl  Test the gcc version
4203 dnl ===================================================================
4204 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4205     AC_MSG_CHECKING([the GCC version])
4206     _gcc_version=`$CC -dumpversion`
4207     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4208         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4209     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4211     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4213     if test "$gcc_full_version" -lt 70000; then
4214         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4215     fi
4216 else
4217     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4218     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4219     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4220     # (which reports itself as GCC 4.2.1).
4221     GCC_VERSION=
4223 AC_SUBST(GCC_VERSION)
4225 dnl Set the ENABLE_DBGUTIL variable
4226 dnl ===================================================================
4227 AC_MSG_CHECKING([whether to build with additional debug utilities])
4228 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4229     ENABLE_DBGUTIL="TRUE"
4230     # this is an extra var so it can have different default on different MSVC
4231     # versions (in case there are version specific problems with it)
4232     MSVC_USE_DEBUG_RUNTIME="TRUE"
4234     AC_MSG_RESULT([yes])
4235     # cppunit and graphite expose STL in public headers
4236     if test "$with_system_cppunit" = "yes"; then
4237         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4238     else
4239         with_system_cppunit=no
4240     fi
4241     if test "$with_system_graphite" = "yes"; then
4242         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4243     else
4244         with_system_graphite=no
4245     fi
4246     if test "$with_system_orcus" = "yes"; then
4247         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4248     else
4249         with_system_orcus=no
4250     fi
4251     if test "$with_system_libcmis" = "yes"; then
4252         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4253     else
4254         with_system_libcmis=no
4255     fi
4256     if test "$with_system_hunspell" = "yes"; then
4257         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4258     else
4259         with_system_hunspell=no
4260     fi
4261     if test "$with_system_gpgmepp" = "yes"; then
4262         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4263     else
4264         with_system_gpgmepp=no
4265     fi
4266     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4267     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4268     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4269     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4270     # of those two is using the system variant:
4271     if test "$with_system_libnumbertext" = "yes"; then
4272         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4273     else
4274         with_system_libnumbertext=no
4275     fi
4276     if test "$with_system_libwps" = "yes"; then
4277         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4278     else
4279         with_system_libwps=no
4280     fi
4281 else
4282     ENABLE_DBGUTIL=""
4283     MSVC_USE_DEBUG_RUNTIME=""
4284     AC_MSG_RESULT([no])
4286 AC_SUBST(ENABLE_DBGUTIL)
4287 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4289 dnl Set the ENABLE_DEBUG variable.
4290 dnl ===================================================================
4291 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4292     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4294 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4295     if test -z "$libo_fuzzed_enable_debug"; then
4296         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4297     else
4298         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4299         enable_debug=yes
4300     fi
4303 AC_MSG_CHECKING([whether to do a debug build])
4304 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4305     ENABLE_DEBUG="TRUE"
4306     if test -n "$ENABLE_DBGUTIL" ; then
4307         AC_MSG_RESULT([yes (dbgutil)])
4308     else
4309         AC_MSG_RESULT([yes])
4310     fi
4311 else
4312     ENABLE_DEBUG=""
4313     AC_MSG_RESULT([no])
4315 AC_SUBST(ENABLE_DEBUG)
4317 dnl ===================================================================
4318 dnl Select the linker to use (gold/lld/ld.bfd).
4319 dnl This is done only after compiler checks (need to know if Clang is
4320 dnl used, for different defaults) and after checking if a debug build
4321 dnl is wanted (non-debug builds get the default linker if not explicitly
4322 dnl specified otherwise).
4323 dnl All checks for linker features/options should come after this.
4324 dnl ===================================================================
4325 check_use_ld()
4327     use_ld=-fuse-ld=${1%%:*}
4328     use_ld_path=${1#*:}
4329     if test "$use_ld_path" != "$1"; then
4330         use_ld="$use_ld --ld-path=$use_ld_path"
4331     fi
4332     use_ld_fail_if_error=$2
4333     use_ld_ok=
4334     AC_MSG_CHECKING([for $use_ld linker support])
4335     use_ld_ldflags_save="$LDFLAGS"
4336     LDFLAGS="$LDFLAGS $use_ld"
4337     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4338 #include <stdio.h>
4339         ],[
4340 printf ("hello world\n");
4341         ])], USE_LD=$use_ld, [])
4342     if test -n "$USE_LD"; then
4343         AC_MSG_RESULT( yes )
4344         use_ld_ok=yes
4345     else
4346         if test -n "$use_ld_fail_if_error"; then
4347             AC_MSG_ERROR( no )
4348         else
4349             AC_MSG_RESULT( no )
4350         fi
4351     fi
4352     if test -n "$use_ld_ok"; then
4353         dnl keep the value of LDFLAGS
4354         return 0
4355     fi
4356     LDFLAGS="$use_ld_ldflags_save"
4357     return 1
4359 USE_LD=
4360 if test "$enable_ld" != "no"; then
4361     if test "$GCC" = "yes"; then
4362         if test -n "$enable_ld"; then
4363             check_use_ld "$enable_ld" fail_if_error
4364         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4365             dnl non-debug builds default to the default linker
4366             true
4367         elif test -n "$COM_IS_CLANG"; then
4368             check_use_ld lld
4369             if test $? -ne 0; then
4370                 check_use_ld gold
4371             fi
4372         else
4373             # For gcc first try gold, new versions also support lld.
4374             check_use_ld gold
4375             if test $? -ne 0; then
4376                 check_use_ld lld
4377             fi
4378         fi
4379         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4380         rm conftest.out
4381         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4382         if test -z "$ld_used"; then
4383             ld_used="unknown"
4384         fi
4385         AC_MSG_CHECKING([for linker that is used])
4386         AC_MSG_RESULT([$ld_used])
4387         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4388             if echo "$ld_used" | grep -q "^GNU ld"; then
4389                 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4390                 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4391             fi
4392         fi
4393     else
4394         if test "$enable_ld" = "yes"; then
4395             AC_MSG_ERROR([--enable-ld not supported])
4396         fi
4397     fi
4399 AC_SUBST(USE_LD)
4401 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4402 if test "$GCC" = "yes"; then
4403     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4404     bsymbolic_functions_ldflags_save=$LDFLAGS
4405     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4406     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4407 #include <stdio.h>
4408         ],[
4409 printf ("hello world\n");
4410         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4411     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4412         AC_MSG_RESULT( found )
4413     else
4414         AC_MSG_RESULT( not found )
4415     fi
4416     LDFLAGS=$bsymbolic_functions_ldflags_save
4418 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4420 LD_GC_SECTIONS=
4421 if test "$GCC" = "yes"; then
4422     for flag in "--gc-sections" "-dead_strip"; do
4423         AC_MSG_CHECKING([for $flag linker support])
4424         ldflags_save=$LDFLAGS
4425         LDFLAGS="$LDFLAGS -Wl,$flag"
4426         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4427 #include <stdio.h>
4428             ],[
4429 printf ("hello world\n");
4430             ])],[
4431             LD_GC_SECTIONS="-Wl,$flag"
4432             AC_MSG_RESULT( found )
4433             ], [
4434             AC_MSG_RESULT( not found )
4435             ])
4436         LDFLAGS=$ldflags_save
4437         if test -n "$LD_GC_SECTIONS"; then
4438             break
4439         fi
4440     done
4442 AC_SUBST(LD_GC_SECTIONS)
4444 HAVE_GSPLIT_DWARF=
4445 if test "$enable_split_debug" != no; then
4446     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4447     if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4448         AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4449         save_CFLAGS=$CFLAGS
4450         CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4451         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4452         CFLAGS=$save_CFLAGS
4453         if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4454             AC_MSG_RESULT([yes])
4455         else
4456             if test "$enable_split_debug" = yes; then
4457                 AC_MSG_ERROR([no])
4458             else
4459                 AC_MSG_RESULT([no])
4460             fi
4461         fi
4462     fi
4463     if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4464         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4465         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4466     fi
4468 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4470 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4471 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4472 save_CFLAGS=$CFLAGS
4473 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4474 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4475 CFLAGS=$save_CFLAGS
4476 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4477     AC_MSG_RESULT([yes])
4478 else
4479     AC_MSG_RESULT([no])
4481 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4483 ENABLE_GDB_INDEX=
4484 if test "$enable_gdb_index" != "no"; then
4485     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4486     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -o -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4487         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4488         save_CFLAGS=$CFLAGS
4489         CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4490         have_ggnu_pubnames=
4491         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4492         if test "$have_ggnu_pubnames" != "TRUE"; then
4493             if test "$enable_gdb_index" = "yes"; then
4494                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4495             else
4496                 AC_MSG_RESULT( no )
4497             fi
4498         else
4499             AC_MSG_RESULT( yes )
4500             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4501             ldflags_save=$LDFLAGS
4502             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4503             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4504 #include <stdio.h>
4505                 ],[
4506 printf ("hello world\n");
4507                 ])], ENABLE_GDB_INDEX=TRUE, [])
4508             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4509                 AC_MSG_RESULT( yes )
4510             else
4511                 if test "$enable_gdb_index" = "yes"; then
4512                     AC_MSG_ERROR( no )
4513                 else
4514                     AC_MSG_RESULT( no )
4515                 fi
4516             fi
4517             LDFLAGS=$ldflags_save
4518         fi
4519         CFLAGS=$save_CFLAGS
4520         fi
4521     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4522         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4523         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4524     fi
4526 AC_SUBST(ENABLE_GDB_INDEX)
4528 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4529     enable_sal_log=yes
4531 if test "$enable_sal_log" = yes; then
4532     ENABLE_SAL_LOG=TRUE
4534 AC_SUBST(ENABLE_SAL_LOG)
4536 dnl Check for enable symbols option
4537 dnl ===================================================================
4538 AC_MSG_CHECKING([whether to generate debug information])
4539 if test -z "$enable_symbols"; then
4540     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4541         enable_symbols=yes
4542     else
4543         enable_symbols=no
4544     fi
4546 if test "$enable_symbols" = yes; then
4547     ENABLE_SYMBOLS_FOR=all
4548     AC_MSG_RESULT([yes])
4549 elif test "$enable_symbols" = no; then
4550     ENABLE_SYMBOLS_FOR=
4551     AC_MSG_RESULT([no])
4552 else
4553     # Selective debuginfo.
4554     ENABLE_SYMBOLS_FOR="$enable_symbols"
4555     AC_MSG_RESULT([for "$enable_symbols"])
4557 AC_SUBST(ENABLE_SYMBOLS_FOR)
4559 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4560     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4561     AC_MSG_CHECKING([whether enough memory is available for linking])
4562     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4563     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4564     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4565         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4566     else
4567         AC_MSG_RESULT([yes])
4568     fi
4571 ENABLE_OPTIMIZED=
4572 ENABLE_OPTIMIZED_DEBUG=
4573 AC_MSG_CHECKING([whether to compile with optimization flags])
4574 if test -z "$enable_optimized"; then
4575     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4576         enable_optimized=no
4577     else
4578         enable_optimized=yes
4579     fi
4581 if test "$enable_optimized" = yes; then
4582     ENABLE_OPTIMIZED=TRUE
4583     AC_MSG_RESULT([yes])
4584 elif test "$enable_optimized" = debug; then
4585     ENABLE_OPTIMIZED_DEBUG=TRUE
4586     AC_MSG_RESULT([yes (debug)])
4587     HAVE_GCC_OG=
4588     if test "$GCC" = "yes"; then
4589         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4590         save_CFLAGS=$CFLAGS
4591         CFLAGS="$CFLAGS -Werror -Og"
4592         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4593         CFLAGS=$save_CFLAGS
4594         if test "$HAVE_GCC_OG" = "TRUE"; then
4595             AC_MSG_RESULT([yes])
4596         else
4597             AC_MSG_RESULT([no])
4598         fi
4599     fi
4600     if test -z "$HAVE_GCC_OG"; then
4601         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4602     fi
4603 else
4604     AC_MSG_RESULT([no])
4606 AC_SUBST(ENABLE_OPTIMIZED)
4607 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4610 # determine CPUNAME, OS, ...
4611 # The USING_X11 flag tells whether the host os uses X by default. Can be overridden with the --without-x option.
4613 case "$host_os" in
4615 aix*)
4616     COM=GCC
4617     CPUNAME=POWERPC
4618     USING_X11=TRUE
4619     OS=AIX
4620     RTL_OS=AIX
4621     RTL_ARCH=PowerPC
4622     PLATFORMID=aix_powerpc
4623     P_SEP=:
4624     ;;
4626 cygwin*|wsl*)
4627     # Already handled
4628     ;;
4630 darwin*|macos*)
4631     COM=GCC
4632     USING_X11=
4633     OS=MACOSX
4634     RTL_OS=MacOSX
4635     P_SEP=:
4637     case "$host_cpu" in
4638     aarch64|arm64)
4639         if test "$enable_ios_simulator" = "yes"; then
4640             OS=iOS
4641         else
4642             CPUNAME=AARCH64
4643             RTL_ARCH=AARCH64
4644             PLATFORMID=macosx_arm64
4645         fi
4646         ;;
4647     x86_64)
4648         if test "$enable_ios_simulator" = "yes"; then
4649             OS=iOS
4650         fi
4651         CPUNAME=X86_64
4652         RTL_ARCH=X86_64
4653         PLATFORMID=macosx_x86_64
4654         ;;
4655     *)
4656         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4657         ;;
4658     esac
4659     ;;
4661 ios*)
4662     COM=GCC
4663     USING_X11=
4664     OS=iOS
4665     RTL_OS=iOS
4666     P_SEP=:
4668     case "$host_cpu" in
4669     aarch64|arm64)
4670         if test "$enable_ios_simulator" = "yes"; then
4671             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4672         fi
4673         ;;
4674     *)
4675         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4676         ;;
4677     esac
4678     CPUNAME=AARCH64
4679     RTL_ARCH=AARCH64
4680     PLATFORMID=ios_arm64
4681     ;;
4683 dragonfly*)
4684     COM=GCC
4685     USING_X11=TRUE
4686     OS=DRAGONFLY
4687     RTL_OS=DragonFly
4688     P_SEP=:
4690     case "$host_cpu" in
4691     i*86)
4692         CPUNAME=INTEL
4693         RTL_ARCH=x86
4694         PLATFORMID=dragonfly_x86
4695         ;;
4696     x86_64)
4697         CPUNAME=X86_64
4698         RTL_ARCH=X86_64
4699         PLATFORMID=dragonfly_x86_64
4700         ;;
4701     *)
4702         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4703         ;;
4704     esac
4705     ;;
4707 freebsd*)
4708     COM=GCC
4709     USING_X11=TRUE
4710     RTL_OS=FreeBSD
4711     OS=FREEBSD
4712     P_SEP=:
4714     case "$host_cpu" in
4715     aarch64)
4716         CPUNAME=AARCH64
4717         PLATFORMID=freebsd_aarch64
4718         RTL_ARCH=AARCH64
4719         ;;
4720     i*86)
4721         CPUNAME=INTEL
4722         RTL_ARCH=x86
4723         PLATFORMID=freebsd_x86
4724         ;;
4725     x86_64|amd64)
4726         CPUNAME=X86_64
4727         RTL_ARCH=X86_64
4728         PLATFORMID=freebsd_x86_64
4729         ;;
4730     powerpc64)
4731         CPUNAME=POWERPC64
4732         RTL_ARCH=PowerPC_64
4733         PLATFORMID=freebsd_powerpc64
4734         ;;
4735     powerpc|powerpcspe)
4736         CPUNAME=POWERPC
4737         RTL_ARCH=PowerPC
4738         PLATFORMID=freebsd_powerpc
4739         ;;
4740     *)
4741         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4742         ;;
4743     esac
4744     ;;
4746 haiku*)
4747     COM=GCC
4748     USING_X11=
4749     GUIBASE=haiku
4750     RTL_OS=Haiku
4751     OS=HAIKU
4752     P_SEP=:
4754     case "$host_cpu" in
4755     i*86)
4756         CPUNAME=INTEL
4757         RTL_ARCH=x86
4758         PLATFORMID=haiku_x86
4759         ;;
4760     x86_64|amd64)
4761         CPUNAME=X86_64
4762         RTL_ARCH=X86_64
4763         PLATFORMID=haiku_x86_64
4764         ;;
4765     *)
4766         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4767         ;;
4768     esac
4769     ;;
4771 kfreebsd*)
4772     COM=GCC
4773     USING_X11=TRUE
4774     OS=LINUX
4775     RTL_OS=kFreeBSD
4776     P_SEP=:
4778     case "$host_cpu" in
4780     i*86)
4781         CPUNAME=INTEL
4782         RTL_ARCH=x86
4783         PLATFORMID=kfreebsd_x86
4784         ;;
4785     x86_64)
4786         CPUNAME=X86_64
4787         RTL_ARCH=X86_64
4788         PLATFORMID=kfreebsd_x86_64
4789         ;;
4790     *)
4791         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4792         ;;
4793     esac
4794     ;;
4796 linux-gnu*)
4797     COM=GCC
4798     USING_X11=TRUE
4799     OS=LINUX
4800     RTL_OS=Linux
4801     P_SEP=:
4803     case "$host_cpu" in
4805     aarch64)
4806         CPUNAME=AARCH64
4807         PLATFORMID=linux_aarch64
4808         RTL_ARCH=AARCH64
4809         ;;
4810     alpha)
4811         CPUNAME=AXP
4812         RTL_ARCH=ALPHA
4813         PLATFORMID=linux_alpha
4814         ;;
4815     arm*)
4816         CPUNAME=ARM
4817         EPM_FLAGS="-a arm"
4818         RTL_ARCH=ARM_EABI
4819         PLATFORMID=linux_arm_eabi
4820         case "$host_cpu" in
4821         arm*-linux)
4822             RTL_ARCH=ARM_OABI
4823             PLATFORMID=linux_arm_oabi
4824             ;;
4825         esac
4826         ;;
4827     hppa)
4828         CPUNAME=HPPA
4829         RTL_ARCH=HPPA
4830         EPM_FLAGS="-a hppa"
4831         PLATFORMID=linux_hppa
4832         ;;
4833     i*86)
4834         CPUNAME=INTEL
4835         RTL_ARCH=x86
4836         PLATFORMID=linux_x86
4837         ;;
4838     ia64)
4839         CPUNAME=IA64
4840         RTL_ARCH=IA64
4841         PLATFORMID=linux_ia64
4842         ;;
4843     mips)
4844         CPUNAME=GODSON
4845         RTL_ARCH=MIPS_EB
4846         EPM_FLAGS="-a mips"
4847         PLATFORMID=linux_mips_eb
4848         ;;
4849     mips64)
4850         CPUNAME=GODSON64
4851         RTL_ARCH=MIPS64_EB
4852         EPM_FLAGS="-a mips64"
4853         PLATFORMID=linux_mips64_eb
4854         ;;
4855     mips64el)
4856         CPUNAME=GODSON64
4857         RTL_ARCH=MIPS64_EL
4858         EPM_FLAGS="-a mips64el"
4859         PLATFORMID=linux_mips64_el
4860         ;;
4861     mipsel)
4862         CPUNAME=GODSON
4863         RTL_ARCH=MIPS_EL
4864         EPM_FLAGS="-a mipsel"
4865         PLATFORMID=linux_mips_el
4866         ;;
4867     m68k)
4868         CPUNAME=M68K
4869         RTL_ARCH=M68K
4870         PLATFORMID=linux_m68k
4871         ;;
4872     powerpc)
4873         CPUNAME=POWERPC
4874         RTL_ARCH=PowerPC
4875         PLATFORMID=linux_powerpc
4876         ;;
4877     powerpc64)
4878         CPUNAME=POWERPC64
4879         RTL_ARCH=PowerPC_64
4880         PLATFORMID=linux_powerpc64
4881         ;;
4882     powerpc64le)
4883         CPUNAME=POWERPC64
4884         RTL_ARCH=PowerPC_64_LE
4885         PLATFORMID=linux_powerpc64_le
4886         ;;
4887     sparc)
4888         CPUNAME=SPARC
4889         RTL_ARCH=SPARC
4890         PLATFORMID=linux_sparc
4891         ;;
4892     sparc64)
4893         CPUNAME=SPARC64
4894         RTL_ARCH=SPARC64
4895         PLATFORMID=linux_sparc64
4896         ;;
4897     s390)
4898         CPUNAME=S390
4899         RTL_ARCH=S390
4900         PLATFORMID=linux_s390
4901         ;;
4902     s390x)
4903         CPUNAME=S390X
4904         RTL_ARCH=S390x
4905         PLATFORMID=linux_s390x
4906         ;;
4907     x86_64)
4908         CPUNAME=X86_64
4909         RTL_ARCH=X86_64
4910         PLATFORMID=linux_x86_64
4911         ;;
4912     *)
4913         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4914         ;;
4915     esac
4916     ;;
4918 linux-android*)
4919     COM=GCC
4920     USING_X11=
4921     OS=ANDROID
4922     RTL_OS=Android
4923     P_SEP=:
4925     case "$host_cpu" in
4927     arm|armel)
4928         CPUNAME=ARM
4929         RTL_ARCH=ARM_EABI
4930         PLATFORMID=android_arm_eabi
4931         ;;
4932     aarch64)
4933         CPUNAME=AARCH64
4934         RTL_ARCH=AARCH64
4935         PLATFORMID=android_aarch64
4936         ;;
4937     i*86)
4938         CPUNAME=INTEL
4939         RTL_ARCH=x86
4940         PLATFORMID=android_x86
4941         ;;
4942     x86_64)
4943         CPUNAME=X86_64
4944         RTL_ARCH=X86_64
4945         PLATFORMID=android_x86_64
4946         ;;
4947     *)
4948         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4949         ;;
4950     esac
4951     ;;
4953 *netbsd*)
4954     COM=GCC
4955     USING_X11=TRUE
4956     OS=NETBSD
4957     RTL_OS=NetBSD
4958     P_SEP=:
4960     case "$host_cpu" in
4961     i*86)
4962         CPUNAME=INTEL
4963         RTL_ARCH=x86
4964         PLATFORMID=netbsd_x86
4965         ;;
4966     powerpc)
4967         CPUNAME=POWERPC
4968         RTL_ARCH=PowerPC
4969         PLATFORMID=netbsd_powerpc
4970         ;;
4971     sparc)
4972         CPUNAME=SPARC
4973         RTL_ARCH=SPARC
4974         PLATFORMID=netbsd_sparc
4975         ;;
4976     x86_64)
4977         CPUNAME=X86_64
4978         RTL_ARCH=X86_64
4979         PLATFORMID=netbsd_x86_64
4980         ;;
4981     *)
4982         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4983         ;;
4984     esac
4985     ;;
4987 openbsd*)
4988     COM=GCC
4989     USING_X11=TRUE
4990     OS=OPENBSD
4991     RTL_OS=OpenBSD
4992     P_SEP=:
4994     case "$host_cpu" in
4995     i*86)
4996         CPUNAME=INTEL
4997         RTL_ARCH=x86
4998         PLATFORMID=openbsd_x86
4999         ;;
5000     x86_64)
5001         CPUNAME=X86_64
5002         RTL_ARCH=X86_64
5003         PLATFORMID=openbsd_x86_64
5004         ;;
5005     *)
5006         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5007         ;;
5008     esac
5009     SOLARINC="$SOLARINC -I/usr/local/include"
5010     ;;
5012 solaris*)
5013     COM=GCC
5014     USING_X11=TRUE
5015     OS=SOLARIS
5016     RTL_OS=Solaris
5017     P_SEP=:
5019     case "$host_cpu" in
5020     i*86)
5021         CPUNAME=INTEL
5022         RTL_ARCH=x86
5023         PLATFORMID=solaris_x86
5024         ;;
5025     sparc)
5026         CPUNAME=SPARC
5027         RTL_ARCH=SPARC
5028         PLATFORMID=solaris_sparc
5029         ;;
5030     sparc64)
5031         CPUNAME=SPARC64
5032         RTL_ARCH=SPARC64
5033         PLATFORMID=solaris_sparc64
5034         ;;
5035     *)
5036         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5037         ;;
5038     esac
5039     SOLARINC="$SOLARINC -I/usr/local/include"
5040     ;;
5043     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5044     ;;
5045 esac
5047 if test "$with_x" = "no"; then
5048     AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5051 DISABLE_GUI=""
5052 if test "$enable_gui" = "no"; then
5053     if test "$USING_X11" != TRUE; then
5054         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5055     fi
5056     USING_X11=
5057     DISABLE_GUI=TRUE
5058     AC_DEFINE(HAVE_FEATURE_UI,0)
5059     test_cairo=yes
5061 AC_SUBST(DISABLE_GUI)
5063 WORKDIR="${BUILDDIR}/workdir"
5064 INSTDIR="${BUILDDIR}/instdir"
5065 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5066 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5067 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5068 AC_SUBST(COM)
5069 AC_SUBST(CPUNAME)
5070 AC_SUBST(RTL_OS)
5071 AC_SUBST(RTL_ARCH)
5072 AC_SUBST(EPM_FLAGS)
5073 AC_SUBST(USING_X11)
5074 AC_SUBST([INSTDIR])
5075 AC_SUBST([INSTROOT])
5076 AC_SUBST([INSTROOTBASE])
5077 AC_SUBST(OS)
5078 AC_SUBST(P_SEP)
5079 AC_SUBST(WORKDIR)
5080 AC_SUBST(PLATFORMID)
5081 AC_SUBST(WINDOWS_X64)
5082 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5084 dnl ===================================================================
5085 dnl Test which package format to use
5086 dnl ===================================================================
5087 AC_MSG_CHECKING([which package format to use])
5088 if test -n "$with_package_format" -a "$with_package_format" != no; then
5089     for i in $with_package_format; do
5090         case "$i" in
5091         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5092             ;;
5093         *)
5094             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5095 aix - AIX software distribution
5096 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5097 deb - Debian software distribution
5098 pkg - Solaris software distribution
5099 rpm - RedHat software distribution
5101 LibreOffice additionally supports:
5102 archive - .tar.gz or .zip
5103 dmg - macOS .dmg
5104 installed - installation tree
5105 msi - Windows .msi
5106         ])
5107             ;;
5108         esac
5109     done
5110     # fakeroot is needed to ensure correct file ownerships/permissions
5111     # inside deb packages and tar archives created on Linux and Solaris.
5112     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5113         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5114         if test "$FAKEROOT" = "no"; then
5115             AC_MSG_ERROR(
5116                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5117         fi
5118     fi
5119     PKGFORMAT="$with_package_format"
5120     AC_MSG_RESULT([$PKGFORMAT])
5121 else
5122     PKGFORMAT=
5123     AC_MSG_RESULT([none])
5125 AC_SUBST(PKGFORMAT)
5127 dnl ===================================================================
5128 dnl Set up a different compiler to produce tools to run on the build
5129 dnl machine when doing cross-compilation
5130 dnl ===================================================================
5132 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5133 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5134 if test "$cross_compiling" = "yes"; then
5135     AC_MSG_CHECKING([for BUILD platform configuration])
5136     echo
5137     rm -rf CONF-FOR-BUILD config_build.mk
5138     mkdir CONF-FOR-BUILD
5139     # Here must be listed all files needed when running the configure script. In particular, also
5140     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5141     # keep them in the same order as there.
5142     (cd $SRC_ROOT && tar cf - \
5143         config.guess \
5144         bin/get_config_variables \
5145         solenv/bin/getcompver.awk \
5146         solenv/inc/langlist.mk \
5147         download.lst \
5148         config_host.mk.in \
5149         config_host_lang.mk.in \
5150         Makefile.in \
5151         bin/bffvalidator.sh.in \
5152         bin/odfvalidator.sh.in \
5153         bin/officeotron.sh.in \
5154         hardened_runtime.xcent.in \
5155         instsetoo_native/util/openoffice.lst.in \
5156         config_host/*.in \
5157         sysui/desktop/macosx/Info.plist.in \
5158         .vscode/vs-code-template.code-workspace.in \
5159         ) \
5160     | (cd CONF-FOR-BUILD && tar xf -)
5161     cp configure CONF-FOR-BUILD
5162     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5163     (
5164     unset COM USING_X11 OS CPUNAME
5165     unset CC CXX SYSBASE CFLAGS
5166     unset AR NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5167     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5168     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC PKG_CONFIG_LIBDIR
5169     if test -n "$CC_FOR_BUILD"; then
5170         export CC="$CC_FOR_BUILD"
5171         CC_BASE=`first_arg_basename "$CC"`
5172     fi
5173     if test -n "$CXX_FOR_BUILD"; then
5174         export CXX="$CXX_FOR_BUILD"
5175         CXX_BASE=`first_arg_basename "$CXX"`
5176     fi
5177     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5178     cd CONF-FOR-BUILD
5180     sub_conf_opts=""
5181     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5182     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5183     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5184     if test -n "$ENABLE_JAVA"; then
5185         case "$_os" in
5186         iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5187         Android)
5188             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5189             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5190             ;;
5191         *)
5192             if test -z "$with_jdk_home"; then
5193                 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.])
5194             fi
5195             ;;
5196         esac
5197     else
5198         sub_conf_opts="$sub_conf_opts --without-java"
5199     fi
5200     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5201     test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5202     test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no"
5203     sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options"
5205     # Don't bother having configure look for stuff not needed for the build platform anyway
5206     ./configure \
5207         --build="$build_alias" \
5208         --disable-cups \
5209         --disable-firebird-sdbc \
5210         --disable-gpgmepp \
5211         --disable-gstreamer-1-0 \
5212         --disable-gtk3 \
5213         --disable-mariadb-sdbc \
5214         --disable-online-update \
5215         --disable-opencl \
5216         --disable-pdfimport \
5217         --disable-postgresql-sdbc \
5218         --disable-skia \
5219         --enable-icecream="$enable_icecream" \
5220         --without-doxygen \
5221         --without-webdav \
5222         --with-parallelism="$with_parallelism" \
5223         --with-theme="$with_theme" \
5224         --with-tls=openssl \
5225         $sub_conf_opts \
5226         --srcdir=$srcdir \
5227         2>&1 | sed -e 's/^/    /'
5228     if test [${PIPESTATUS[0]}] -ne 0; then
5229         AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5230     fi
5232     # filter permitted build targets
5233     PERMITTED_BUILD_TARGETS="
5234         AVMEDIA
5235         BOOST
5236         CLUCENE
5237         DBCONNECTIVITY
5238         DESKTOP
5239         DYNLOADING
5240         EPOXY
5241         EXPAT
5242         GLM
5243         GRAPHITE
5244         HARFBUZZ
5245         ICU
5246         LCMS2
5247         LIBJPEG_TURBO
5248         LIBLANGTAG
5249         LibO
5250         LIBFFI
5251         LIBPN
5252         LIBXML2
5253         LIBXSLT
5254         MDDS
5255         NATIVE
5256         OPENSSL
5257         ORCUS
5258         PYTHON
5259         SCRIPTING
5260         ZLIB
5262     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5263     # newlined lists, to use grep as a filter
5264     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5265     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5266     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5267     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5269     cp config_host.mk ../config_build.mk
5270     cp config_host_lang.mk ../config_build_lang.mk
5271     mv config.log ../config.Build.log
5272     mkdir -p ../config_build
5273     mv config_host/*.h ../config_build
5275     # all these will get a _FOR_BUILD postfix
5276     DIRECT_FOR_BUILD_SETTINGS="
5277         CC
5278         CXX
5279         ILIB
5280         JAVA_HOME
5281         JAVAIFLAGS
5282         JDK
5283         LIBO_BIN_FOLDER
5284         LIBO_LIB_FOLDER
5285         LIBO_URE_LIB_FOLDER
5286         LIBO_URE_MISC_FOLDER
5287         OS
5288         SDKDIRNAME
5289         SYSTEM_LIBXML
5290         SYSTEM_LIBXSLT
5292     # these overwrite host config with build config
5293     OVERWRITING_SETTINGS="
5294         ANT
5295         ANT_HOME
5296         ANT_LIB
5297         HSQLDB_USE_JDBC_4_1
5298         JAVA_CLASSPATH_NOT_SET
5299         JAVA_SOURCE_VER
5300         JAVA_TARGET_VER
5301         JAVACFLAGS
5302         JAVACOMPILER
5303         JAVADOC
5304         JAVADOCISGJDOC
5306     # these need some special handling
5307     EXTRA_HANDLED_SETTINGS="
5308         INSTDIR
5309         INSTROOT
5310         PATH
5311         WORKDIR
5313     OLD_PATH=$PATH
5314     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5315     BUILD_PATH=$PATH
5316     PATH=$OLD_PATH
5318     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5319     echo "$line" >>build-config
5321     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5322         VV='$'$V
5323         VV=`eval "echo $VV"`
5324         if test -n "$VV"; then
5325             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5326             echo "$line" >>build-config
5327         fi
5328     done
5330     for V in $OVERWRITING_SETTINGS; do
5331         VV='$'$V
5332         VV=`eval "echo $VV"`
5333         if test -n "$VV"; then
5334             line=${V}='${'${V}:-$VV'}'
5335             echo "$line" >>build-config
5336         fi
5337     done
5339     for V in INSTDIR INSTROOT WORKDIR; do
5340         VV='$'$V
5341         VV=`eval "echo $VV"`
5342         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5343         if test -n "$VV"; then
5344             line="${V}_FOR_BUILD='$VV'"
5345             echo "$line" >>build-config
5346         fi
5347     done
5349     )
5350     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5351     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])
5352     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5353              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5355     eval `cat CONF-FOR-BUILD/build-config`
5357     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5359     rm -rf CONF-FOR-BUILD
5360 else
5361     OS_FOR_BUILD="$OS"
5362     CC_FOR_BUILD="$CC"
5363     CXX_FOR_BUILD="$CXX"
5364     INSTDIR_FOR_BUILD="$INSTDIR"
5365     INSTROOT_FOR_BUILD="$INSTROOT"
5366     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5367     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5368     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5369     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5370     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5371     WORKDIR_FOR_BUILD="$WORKDIR"
5373 AC_SUBST(OS_FOR_BUILD)
5374 AC_SUBST(INSTDIR_FOR_BUILD)
5375 AC_SUBST(INSTROOT_FOR_BUILD)
5376 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5377 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5378 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5379 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5380 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5381 AC_SUBST(WORKDIR_FOR_BUILD)
5382 AC_SUBST(CC_FOR_BUILD)
5383 AC_SUBST(CXX_FOR_BUILD)
5385 dnl ===================================================================
5386 dnl Check for syslog header
5387 dnl ===================================================================
5388 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5390 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5391 dnl ===================================================================
5392 AC_MSG_CHECKING([whether to turn warnings to errors])
5393 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5394     ENABLE_WERROR="TRUE"
5395     PYTHONWARNINGS="error"
5396     AC_MSG_RESULT([yes])
5397 else
5398     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5399         ENABLE_WERROR="TRUE"
5400         PYTHONWARNINGS="error"
5401         AC_MSG_RESULT([yes])
5402     else
5403         AC_MSG_RESULT([no])
5404     fi
5406 AC_SUBST(ENABLE_WERROR)
5407 AC_SUBST(PYTHONWARNINGS)
5409 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5410 dnl ===================================================================
5411 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5412 if test -z "$enable_assert_always_abort"; then
5413    if test "$ENABLE_DEBUG" = TRUE; then
5414        enable_assert_always_abort=yes
5415    else
5416        enable_assert_always_abort=no
5417    fi
5419 if test "$enable_assert_always_abort" = "yes"; then
5420     ASSERT_ALWAYS_ABORT="TRUE"
5421     AC_MSG_RESULT([yes])
5422 else
5423     ASSERT_ALWAYS_ABORT="FALSE"
5424     AC_MSG_RESULT([no])
5426 AC_SUBST(ASSERT_ALWAYS_ABORT)
5428 # Determine whether to use ooenv for the instdir installation
5429 # ===================================================================
5430 if test $_os != "WINNT" -a $_os != "Darwin"; then
5431     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5432     if test "$enable_ooenv" = "no"; then
5433         AC_MSG_RESULT([no])
5434     else
5435         ENABLE_OOENV="TRUE"
5436         AC_MSG_RESULT([yes])
5437     fi
5439 AC_SUBST(ENABLE_OOENV)
5441 if test "$USING_X11" != TRUE; then
5442     # be sure to do not mess with unneeded stuff
5443     test_randr=no
5444     test_xrender=no
5445     test_cups=no
5446     test_dbus=no
5447     build_gstreamer_1_0=no
5448     test_kf5=no
5449     test_qt5=no
5450     test_gtk3_kde5=no
5451     enable_cairo_canvas=no
5454 if test "$OS" = "HAIKU"; then
5455     enable_cairo_canvas=yes
5456     test_kf5=yes
5459 if test "$test_kf5" = "yes" -a "$enable_kde5" = "yes"; then
5460     AC_MSG_WARN([The kde5 VCL plugin was renamed to kf5. Please update your configuration to use --enable-kf5, as --enable-kde5 will be removed after the next major release!])
5461     add_warning "The kde5 VCL plugin was renamed to kf5. Please update your configuration to use --enable-kf5, as --enable-kde5 will be removed after the next major release!"
5462     enable_kf5=yes
5465 if test "$test_kf5" = "yes"; then
5466     test_qt5=yes
5469 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5470     if test "$enable_qt5" = "no"; then
5471         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5472     else
5473         enable_qt5=yes
5474     fi
5477 dnl ===================================================================
5478 dnl check for cups support
5479 dnl ===================================================================
5480 ENABLE_CUPS=""
5482 if test "$enable_cups" = "no"; then
5483     test_cups=no
5486 AC_MSG_CHECKING([whether to enable CUPS support])
5487 if test "$test_cups" = "yes"; then
5488     ENABLE_CUPS="TRUE"
5489     AC_MSG_RESULT([yes])
5491     AC_MSG_CHECKING([whether cups support is present])
5492     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5493     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5494     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5495         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5496     fi
5498 else
5499     AC_MSG_RESULT([no])
5502 AC_SUBST(ENABLE_CUPS)
5504 # fontconfig checks
5505 if test "$test_fontconfig" = "yes"; then
5506     PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5507     SYSTEM_FONTCONFIG=TRUE
5508     FilterLibs "${FONTCONFIG_LIBS}"
5509     FONTCONFIG_LIBS="${filteredlibs}"
5511 AC_SUBST(FONTCONFIG_CFLAGS)
5512 AC_SUBST(FONTCONFIG_LIBS)
5513 AC_SUBST([SYSTEM_FONTCONFIG])
5515 dnl whether to find & fetch external tarballs?
5516 dnl ===================================================================
5517 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5518    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5519        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5520    else
5521        TARFILE_LOCATION="$LODE_HOME/ext_tar"
5522    fi
5524 if test -z "$TARFILE_LOCATION"; then
5525     if test -d "$SRC_ROOT/src" ; then
5526         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5527         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5528     fi
5529     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5530 else
5531     AbsolutePath "$TARFILE_LOCATION"
5532     PathFormat "${absolute_path}"
5533     TARFILE_LOCATION="${formatted_path}"
5535 AC_SUBST(TARFILE_LOCATION)
5537 AC_MSG_CHECKING([whether we want to fetch tarballs])
5538 if test "$enable_fetch_external" != "no"; then
5539     if test "$with_all_tarballs" = "yes"; then
5540         AC_MSG_RESULT([yes, all of them])
5541         DO_FETCH_TARBALLS="ALL"
5542     else
5543         AC_MSG_RESULT([yes, if we use them])
5544         DO_FETCH_TARBALLS="TRUE"
5545     fi
5546 else
5547     AC_MSG_RESULT([no])
5548     DO_FETCH_TARBALLS=
5550 AC_SUBST(DO_FETCH_TARBALLS)
5552 AC_MSG_CHECKING([whether to build help])
5553 if test -n "$with_help" -a "$with_help" != "no" -a $_os != iOS -a $_os != Android; then
5554     BUILD_TYPE="$BUILD_TYPE HELP"
5555     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5556     case "$with_help" in
5557     "html")
5558         ENABLE_HTMLHELP=TRUE
5559         SCPDEFS="$SCPDEFS -DWITH_HELP"
5560         AC_MSG_RESULT([HTML])
5561         ;;
5562     "online")
5563         ENABLE_HTMLHELP=TRUE
5564         HELP_ONLINE=TRUE
5565         AC_MSG_RESULT([HTML])
5566         ;;
5567     yes)
5568         SCPDEFS="$SCPDEFS -DWITH_HELP"
5569         AC_MSG_RESULT([yes])
5570         ;;
5571     *)
5572         AC_MSG_ERROR([Unknown --with-help=$with_help])
5573         ;;
5574     esac
5575 else
5576     AC_MSG_RESULT([no])
5578 AC_SUBST([ENABLE_HTMLHELP])
5579 AC_SUBST([HELP_ONLINE])
5581 AC_MSG_CHECKING([whether to enable xapian-omega support for help])
5582 if test -n "$with_omindex" -a "$with_omindex" != "no" -a $_os != iOS -a $_os != Android; then
5583     BUILD_TYPE="$BUILD_TYPE HELP"
5584     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5585     case "$with_omindex" in
5586     "server")
5587         ENABLE_HTMLHELP=TRUE
5588         HELP_ONLINE=TRUE
5589         HELP_OMINDEX_PAGE=TRUE
5590         AC_MSG_RESULT([SERVER])
5591         ;;
5592     "noxap")
5593         ENABLE_HTMLHELP=TRUE
5594         HELP_ONLINE=TRUE
5595         HELP_OMINDEX_PAGE=FALSE
5596         AC_MSG_RESULT([NOXAP])
5597         ;;
5598     *)
5599         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5600         ;;
5601     esac
5602 else
5603     HELP_OMINDEX_PAGE=FALSE
5604     AC_MSG_RESULT([no])
5606 AC_SUBST([ENABLE_HTMLHELP])
5607 AC_SUBST([HELP_OMINDEX_PAGE])
5608 AC_SUBST([HELP_ONLINE])
5611 dnl Test whether to include MySpell dictionaries
5612 dnl ===================================================================
5613 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5614 if test "$with_myspell_dicts" = "yes"; then
5615     AC_MSG_RESULT([yes])
5616     WITH_MYSPELL_DICTS=TRUE
5617     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5618     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5619 else
5620     AC_MSG_RESULT([no])
5621     WITH_MYSPELL_DICTS=
5623 AC_SUBST(WITH_MYSPELL_DICTS)
5625 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5626 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5627     if test "$with_system_dicts" = yes; then
5628         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5629     fi
5630     with_system_dicts=no
5633 AC_MSG_CHECKING([whether to use dicts from external paths])
5634 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5635     AC_MSG_RESULT([yes])
5636     SYSTEM_DICTS=TRUE
5637     AC_MSG_CHECKING([for spelling dictionary directory])
5638     if test -n "$with_external_dict_dir"; then
5639         DICT_SYSTEM_DIR=file://$with_external_dict_dir
5640     else
5641         DICT_SYSTEM_DIR=file:///usr/share/hunspell
5642         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5643             DICT_SYSTEM_DIR=file:///usr/share/myspell
5644         fi
5645     fi
5646     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5647     AC_MSG_CHECKING([for hyphenation patterns directory])
5648     if test -n "$with_external_hyph_dir"; then
5649         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5650     else
5651         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5652     fi
5653     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5654     AC_MSG_CHECKING([for thesaurus directory])
5655     if test -n "$with_external_thes_dir"; then
5656         THES_SYSTEM_DIR=file://$with_external_thes_dir
5657     else
5658         THES_SYSTEM_DIR=file:///usr/share/mythes
5659     fi
5660     AC_MSG_RESULT([$THES_SYSTEM_DIR])
5661 else
5662     AC_MSG_RESULT([no])
5663     SYSTEM_DICTS=
5665 AC_SUBST(SYSTEM_DICTS)
5666 AC_SUBST(DICT_SYSTEM_DIR)
5667 AC_SUBST(HYPH_SYSTEM_DIR)
5668 AC_SUBST(THES_SYSTEM_DIR)
5670 dnl ===================================================================
5671 dnl Precompiled headers.
5672 ENABLE_PCH=""
5673 AC_MSG_CHECKING([whether to enable pch feature])
5674 if test -z "$enable_pch"; then
5675     if test "$_os" = "WINNT"; then
5676         # Enabled by default on Windows.
5677         enable_pch=yes
5678     else
5679         enable_pch=no
5680     fi
5682 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5683     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5685 if test "$enable_pch" = "system"; then
5686     ENABLE_PCH="1"
5687     AC_MSG_RESULT([yes (system headers)])
5688 elif test "$enable_pch" = "base"; then
5689     ENABLE_PCH="2"
5690     AC_MSG_RESULT([yes (system and base headers)])
5691 elif test "$enable_pch" = "normal"; then
5692     ENABLE_PCH="3"
5693     AC_MSG_RESULT([yes (normal)])
5694 elif test "$enable_pch" = "full"; then
5695     ENABLE_PCH="4"
5696     AC_MSG_RESULT([yes (full)])
5697 elif test "$enable_pch" = "yes"; then
5698     # Pick a suitable default.
5699     if test "$GCC" = "yes"; then
5700         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5701         # while making the PCHs larger and rebuilds more likely.
5702         ENABLE_PCH="2"
5703         AC_MSG_RESULT([yes (system and base headers)])
5704     else
5705         # With MSVC the highest level makes a significant difference,
5706         # and it was the default when there used to be no PCH levels.
5707         ENABLE_PCH="4"
5708         AC_MSG_RESULT([yes (full)])
5709     fi
5710 elif test "$enable_pch" = "no"; then
5711     AC_MSG_RESULT([no])
5712 else
5713     AC_MSG_ERROR([Unknown value for --enable-pch])
5715 AC_SUBST(ENABLE_PCH)
5716 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5717 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5718     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5719     if test "$CCACHE_BIN" != "not found"; then
5720         AC_MSG_CHECKING([ccache version])
5721         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5722         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5723         AC_MSG_RESULT([$CCACHE_VERSION])
5724         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5725         if test "$CCACHE_NUMVER" -gt "030701"; then
5726             AC_MSG_RESULT([yes])
5727         else
5728             AC_MSG_RESULT([no (not newer than 3.7.1)])
5729             CCACHE_DEPEND_MODE=
5730         fi
5731     fi
5734 PCH_INSTANTIATE_TEMPLATES=
5735 if test -n "$ENABLE_PCH"; then
5736     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5737     save_CFLAGS=$CFLAGS
5738     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5739     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5740     CFLAGS=$save_CFLAGS
5741     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5742         AC_MSG_RESULT(yes)
5743     else
5744         AC_MSG_RESULT(no)
5745     fi
5747 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5749 BUILDING_PCH_WITH_OBJ=
5750 if test -n "$ENABLE_PCH"; then
5751     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5752     save_CFLAGS=$CFLAGS
5753     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5754     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5755     CFLAGS=$save_CFLAGS
5756     if test -n "$BUILDING_PCH_WITH_OBJ"; then
5757         AC_MSG_RESULT(yes)
5758     else
5759         AC_MSG_RESULT(no)
5760     fi
5762 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5764 PCH_CODEGEN=
5765 PCH_NO_CODEGEN=
5766 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5767     AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
5768     save_CFLAGS=$CFLAGS
5769     CFLAGS="$CFLAGS -Werror -fpch-codegen"
5770     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5771         [
5772         PCH_CODEGEN="-fpch-codegen"
5773         PCH_NO_CODEGEN="-fno-pch-codegen"
5774         ],[])
5775     CFLAGS=$save_CFLAGS
5776     if test -n "$PCH_CODEGEN"; then
5777         AC_MSG_RESULT(yes)
5778     else
5779         AC_MSG_RESULT(no)
5780     fi
5782 AC_SUBST(PCH_CODEGEN)
5783 AC_SUBST(PCH_NO_CODEGEN)
5784 PCH_DEBUGINFO=
5785 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5786     AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
5787     save_CFLAGS=$CFLAGS
5788     CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
5789     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
5790     CFLAGS=$save_CFLAGS
5791     if test -n "$PCH_DEBUGINFO"; then
5792         AC_MSG_RESULT(yes)
5793     else
5794         AC_MSG_RESULT(no)
5795     fi
5797 AC_SUBST(PCH_DEBUGINFO)
5799 TAB=`printf '\t'`
5801 AC_MSG_CHECKING([the GNU Make version])
5802 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5803 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5804 if test "$_make_longver" -ge "038200"; then
5805     AC_MSG_RESULT([$GNUMAKE $_make_version])
5807 elif test "$_make_longver" -ge "038100"; then
5808     if test "$build_os" = "cygwin"; then
5809         AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5810     fi
5811     AC_MSG_RESULT([$GNUMAKE $_make_version])
5813     dnl ===================================================================
5814     dnl Search all the common names for sha1sum
5815     dnl ===================================================================
5816     AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5817     if test -z "$SHA1SUM"; then
5818         AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5819     elif test "$SHA1SUM" = "openssl"; then
5820         SHA1SUM="openssl sha1"
5821     fi
5822     AC_MSG_CHECKING([for GNU Make bug 20033])
5823     TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
5824     $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
5825 A := \$(wildcard *.a)
5827 .PHONY: all
5828 all: \$(A:.a=.b)
5829 <TAB>@echo survived bug20033.
5831 .PHONY: setup
5832 setup:
5833 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
5835 define d1
5836 @echo lala \$(1)
5837 @sleep 1
5838 endef
5840 define d2
5841 @echo tyty \$(1)
5842 @sleep 1
5843 endef
5845 %.b : %.a
5846 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
5847 <TAB>\$(call d1,\$(CHECKSUM)),\
5848 <TAB>\$(call d2,\$(CHECKSUM)))
5850     if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
5851         no_parallelism_make="YES"
5852         AC_MSG_RESULT([yes, disable parallelism])
5853     else
5854         AC_MSG_RESULT([no, keep parallelism enabled])
5855     fi
5856     rm -rf $TESTGMAKEBUG20033
5857 else
5858     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
5861 # find if gnumake support file function
5862 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
5863 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
5864 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5865     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
5867 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
5868 \$(file >test.txt,Success )
5870 .PHONY: all
5871 all:
5872 <TAB>@cat test.txt
5875 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
5876 if test -f $TESTGMAKEFILEFUNC/test.txt; then
5877     HAVE_GNUMAKE_FILE_FUNC=TRUE
5878     AC_MSG_RESULT([yes])
5879 else
5880     AC_MSG_RESULT([no])
5882 rm -rf $TESTGMAKEFILEFUNC
5883 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
5884 AC_SUBST(GNUMAKE_WIN_NATIVE)
5886 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
5887 STALE_MAKE=
5888 if test "$_make_ver_check" = ""; then
5889    STALE_MAKE=TRUE
5892 HAVE_LD_HASH_STYLE=FALSE
5893 WITH_LINKER_HASH_STYLE=
5894 AC_MSG_CHECKING([for --hash-style gcc linker support])
5895 if test "$GCC" = "yes"; then
5896     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
5897         hash_styles="gnu sysv"
5898     elif test "$with_linker_hash_style" = "no"; then
5899         hash_styles=
5900     else
5901         hash_styles="$with_linker_hash_style"
5902     fi
5904     for hash_style in $hash_styles; do
5905         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
5906         hash_style_ldflags_save=$LDFLAGS
5907         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
5909         AC_RUN_IFELSE([AC_LANG_PROGRAM(
5910             [
5911 #include <stdio.h>
5912             ],[
5913 printf ("");
5914             ])],
5915             [
5916                   HAVE_LD_HASH_STYLE=TRUE
5917                   WITH_LINKER_HASH_STYLE=$hash_style
5918             ],
5919             [HAVE_LD_HASH_STYLE=FALSE],
5920             [HAVE_LD_HASH_STYLE=FALSE])
5921         LDFLAGS=$hash_style_ldflags_save
5922     done
5924     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
5925         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
5926     else
5927         AC_MSG_RESULT( no )
5928     fi
5929     LDFLAGS=$hash_style_ldflags_save
5930 else
5931     AC_MSG_RESULT( no )
5933 AC_SUBST(HAVE_LD_HASH_STYLE)
5934 AC_SUBST(WITH_LINKER_HASH_STYLE)
5936 dnl ===================================================================
5937 dnl Check whether there's a Perl version available.
5938 dnl ===================================================================
5939 if test -z "$with_perl_home"; then
5940     AC_PATH_PROG(PERL, perl)
5941 else
5942     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
5943     _perl_path="$with_perl_home/bin/perl"
5944     if test -x "$_perl_path"; then
5945         PERL=$_perl_path
5946     else
5947         AC_MSG_ERROR([$_perl_path not found])
5948     fi
5951 dnl ===================================================================
5952 dnl Testing for Perl version 5 or greater.
5953 dnl $] is the Perl version variable, it is returned as an integer
5954 dnl ===================================================================
5955 if test "$PERL"; then
5956     AC_MSG_CHECKING([the Perl version])
5957     ${PERL} -e "exit($]);"
5958     _perl_version=$?
5959     if test "$_perl_version" -lt 5; then
5960         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
5961     fi
5962     AC_MSG_RESULT([Perl $_perl_version])
5963 else
5964     AC_MSG_ERROR([Perl not found, install Perl 5])
5967 dnl ===================================================================
5968 dnl Testing for required Perl modules
5969 dnl ===================================================================
5971 AC_MSG_CHECKING([for required Perl modules])
5972 perl_use_string="use Cwd ; use Digest::MD5"
5973 if test "$_os" = "WINNT"; then
5974     if test -n "$PKGFORMAT"; then
5975         for i in $PKGFORMAT; do
5976             case "$i" in
5977             msi)
5978                 # for getting fonts versions to use in MSI
5979                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
5980                 ;;
5981             esac
5982         done
5983     fi
5985 if test "$with_system_hsqldb" = "yes"; then
5986     perl_use_string="$perl_use_string ; use Archive::Zip"
5988 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
5989     # OpenSSL needs that to build
5990     perl_use_string="$perl_use_string ; use FindBin"
5992 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
5993     AC_MSG_RESULT([all modules found])
5994 else
5995     AC_MSG_RESULT([failed to find some modules])
5996     # Find out which modules are missing.
5997     for i in $perl_use_string; do
5998         if test "$i" != "use" -a "$i" != ";"; then
5999             if ! $PERL -e "use $i;">/dev/null 2>&1; then
6000                 missing_perl_modules="$missing_perl_modules $i"
6001             fi
6002         fi
6003     done
6004     AC_MSG_ERROR([
6005     The missing Perl modules are: $missing_perl_modules
6006     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6009 dnl ===================================================================
6010 dnl Check for pkg-config
6011 dnl ===================================================================
6012 if test "$_os" != "WINNT"; then
6013     PKG_PROG_PKG_CONFIG
6016 if test "$_os" != "WINNT"; then
6018     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6019     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6020     # explicitly. Or put /path/to/compiler in PATH yourself.
6022     # Use wrappers for LTO
6023     if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6024         AC_CHECK_TOOL(AR,gcc-ar)
6025         AC_CHECK_TOOL(NM,gcc-nm)
6026         AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6027     else
6028         AC_CHECK_TOOL(AR,ar)
6029         AC_CHECK_TOOL(NM,nm)
6030         AC_CHECK_TOOL(RANLIB,ranlib)
6031     fi
6032     AC_CHECK_TOOL(OBJDUMP,objdump)
6033     AC_CHECK_TOOL(READELF,readelf)
6034     AC_CHECK_TOOL(STRIP,strip)
6035     if test "$_os" = "WINNT"; then
6036         AC_CHECK_TOOL(DLLTOOL,dlltool)
6037         AC_CHECK_TOOL(WINDRES,windres)
6038     fi
6040 AC_SUBST(AR)
6041 AC_SUBST(DLLTOOL)
6042 AC_SUBST(NM)
6043 AC_SUBST(OBJDUMP)
6044 AC_SUBST(PKG_CONFIG)
6045 AC_SUBST(RANLIB)
6046 AC_SUBST(READELF)
6047 AC_SUBST(STRIP)
6048 AC_SUBST(WINDRES)
6050 dnl ===================================================================
6051 dnl pkg-config checks on macOS
6052 dnl ===================================================================
6054 if test $_os = Darwin; then
6055     AC_MSG_CHECKING([for bogus pkg-config])
6056     if test -n "$PKG_CONFIG"; then
6057         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6058             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6059         else
6060             if test "$enable_bogus_pkg_config" = "yes"; then
6061                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6062             else
6063                 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.])
6064             fi
6065         fi
6066     else
6067         AC_MSG_RESULT([no, good])
6068     fi
6071 find_csc()
6073     # Return value: $csctest
6075     unset csctest
6077     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6078     if test -n "$regvalue"; then
6079         csctest=$regvalue
6080         return
6081     fi
6084 find_al()
6086     # Return value: $altest
6088     unset altest
6090     # We need this check to detect 4.6.1 or above.
6091     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6092         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6093         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6094             altest=$regvalue
6095             return
6096         fi
6097     done
6099     for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6100         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6101         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6102             altest=$regvalue
6103             return
6104         fi
6105     done
6108 find_dotnetsdk46()
6110     unset frametest
6112     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6113         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6114         if test -n "$regvalue"; then
6115             frametest=$regvalue
6116             return
6117         fi
6118     done
6121 find_winsdk_version()
6123     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6124     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6126     unset winsdktest winsdkbinsubdir winsdklibsubdir
6128     case "$1" in
6129     8.0|8.0A)
6130         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6131         if test -n "$regvalue"; then
6132             winsdktest=$regvalue
6133             winsdklibsubdir=win8
6134             return
6135         fi
6136         ;;
6137     8.1|8.1A)
6138         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6139         if test -n "$regvalue"; then
6140             winsdktest=$regvalue
6141             winsdklibsubdir=winv6.3
6142             return
6143         fi
6144         ;;
6145     10.0)
6146         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6147         if test -n "$regvalue"; then
6148             winsdktest=$regvalue
6149             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6150             if test -n "$regvalue"; then
6151                 winsdkbinsubdir="$regvalue".0
6152                 winsdklibsubdir=$winsdkbinsubdir
6153                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6154                 local tmppath_unix=$(cygpath -u "$tmppath")
6155                 # test exist the SDK path
6156                 if test -d "$tmppath_unix"; then
6157                    # when path is convertible to a short path then path is okay
6158                    cygpath -d "$tmppath" >/dev/null 2>&1
6159                    if test $? -ne 0; then
6160                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6161                    fi
6162                 else
6163                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6164                 fi
6165             fi
6166             return
6167         fi
6168         ;;
6169     esac
6172 find_winsdk()
6174     # Return value: From find_winsdk_version
6176     unset winsdktest
6178     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6179         find_winsdk_version $ver
6180         if test -n "$winsdktest"; then
6181             return
6182         fi
6183     done
6186 find_msms()
6188     # Return value: $msmdir
6190     AC_MSG_CHECKING([for MSVC merge modules directory])
6191     local my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm
6192     local my_msm_dir
6194     case "$VCVER" in
6195         160)
6196         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6197         ;;
6198     esac
6199     for f in $my_msm_files; do
6200         echo "$as_me:$LINENO: searching for $f" >&5
6201     done
6203     msmdir=
6204     for ver in 14.0 15.0; do
6205         reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir
6206         if test -n "$regvalue"; then
6207             for f in ${my_msm_files}; do
6208                 if test -e "$regvalue/${f}"; then
6209                     msmdir=$regvalue
6210                     break
6211                 fi
6212             done
6213         fi
6214     done
6215     dnl Is the following fallback really necessary, or was it added in response
6216     dnl to never having started Visual Studio on a given machine, so the
6217     dnl registry keys checked above had presumably not yet been created?
6218     dnl Anyway, if it really is necessary, it might be worthwhile to extend it
6219     dnl to also check %CommonProgramFiles(X86)% (typically expanding to
6220     dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles%
6221     dnl expanding to "C:\Program Files\Common Files"), which would need
6222     dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to
6223     dnl obtain its value from cygwin:
6224     if test -z "$msmdir"; then
6225         my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/"
6226         for f in ${my_msm_files}; do
6227             if test -e "$my_msm_dir/${f}"; then
6228                 msmdir=$my_msm_dir
6229             fi
6230         done
6231     fi
6233     dnl Starting from MSVC 15.0, merge modules are located in different directory
6234     case "$VCVER" in
6235     160)
6236         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6237             echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5
6238             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6239             for f in ${my_msm_files}; do
6240                 if test -e "$my_msm_dir/${f}"; then
6241                     msmdir=$my_msm_dir
6242                     break
6243                 fi
6244             done
6245         done
6246         ;;
6247     esac
6249     if test -n "$msmdir"; then
6250         msmdir=`cygpath -m "$msmdir"`
6251         AC_MSG_RESULT([$msmdir])
6252     else
6253         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6254             AC_MSG_FAILURE([not found])
6255         else
6256             AC_MSG_WARN([not found (check config.log)])
6257             add_warning "MSM none of ${my_msm_files} found"
6258         fi
6259     fi
6262 find_msvc_x64_dlls()
6264     # Return value: $msvcdllpath, $msvcdlls
6266     AC_MSG_CHECKING([for MSVC x64 DLL path])
6267     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6268     case "$VCVER" in
6269     160)
6270         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6271             echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5
6272             if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then
6273                 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"
6274                 break
6275             fi
6276             echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5
6277             if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then
6278                 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"
6279                 break
6280             fi
6281         done
6282         ;;
6283     esac
6284     AC_MSG_RESULT([$msvcdllpath])
6285     AC_MSG_CHECKING([for MSVC x64 DLLs])
6286     msvcdlls="msvcp140.dll vcruntime140.dll"
6287     for dll in $msvcdlls; do
6288         if ! test -f "$msvcdllpath/$dll"; then
6289             AC_MSG_FAILURE([missing $dll])
6290         fi
6291     done
6292     AC_MSG_RESULT([found all ($msvcdlls)])
6295 dnl =========================================
6296 dnl Check for the Windows  SDK.
6297 dnl =========================================
6298 if test "$_os" = "WINNT"; then
6299     AC_MSG_CHECKING([for Windows SDK])
6300     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6301         find_winsdk
6302         WINDOWS_SDK_HOME=$winsdktest
6304         # normalize if found
6305         if test -n "$WINDOWS_SDK_HOME"; then
6306             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6307             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6308         fi
6310         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6311     fi
6313     if test -n "$WINDOWS_SDK_HOME"; then
6314         # Remove a possible trailing backslash
6315         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6317         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6318              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6319              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6320             have_windows_sdk_headers=yes
6321         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6322              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6323              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6324             have_windows_sdk_headers=yes
6325         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6326              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6327              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6328             have_windows_sdk_headers=yes
6329         else
6330             have_windows_sdk_headers=no
6331         fi
6333         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6334             have_windows_sdk_libs=yes
6335         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6336             have_windows_sdk_libs=yes
6337         else
6338             have_windows_sdk_libs=no
6339         fi
6341         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6342             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6343 the  Windows SDK are installed.])
6344         fi
6345     fi
6347     if test -z "$WINDOWS_SDK_HOME"; then
6348         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6349     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6350         WINDOWS_SDK_VERSION=80
6351         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6352     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6353         WINDOWS_SDK_VERSION=81
6354         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6355     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6356         WINDOWS_SDK_VERSION=10
6357         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6358     else
6359         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6360     fi
6361     PathFormat "$WINDOWS_SDK_HOME"
6362     WINDOWS_SDK_HOME="$formatted_path"
6363     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6364     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6365         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6366         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6367             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6368         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6369             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6370         fi
6371     fi
6373     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6374     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6375     dnl but not in v8.0), so allow this to be overridden with a
6376     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6377     dnl and configuration error if no WiLangId.vbs is found would arguably be
6378     dnl better, but I do not know under which conditions exactly it is needed by
6379     dnl msiglobal.pm:
6380     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6381         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6382         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6383         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6384             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6385             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6386         fi
6387         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6388             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6389             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6390         fi
6391         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6392             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6393             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6394         fi
6395     fi
6396     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6397         if test -n "$with_package_format" -a "$with_package_format" != no; then
6398             for i in "$with_package_format"; do
6399                 if test "$i" = "msi"; then
6400                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6401                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6402                     fi
6403                 fi
6404             done
6405         fi
6406     fi
6408 AC_SUBST(WINDOWS_SDK_HOME)
6409 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6410 AC_SUBST(WINDOWS_SDK_VERSION)
6411 AC_SUBST(WINDOWS_SDK_WILANGID)
6413 if test "$build_os" = "cygwin"; then
6414     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6415     dnl dir, it also determines that dir's path w/o an arch segment if any,
6416     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6417     AC_MSG_CHECKING([for midl.exe])
6419     find_winsdk
6420     if test -n "$winsdkbinsubdir" \
6421         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6422     then
6423         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6424         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6425     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6426         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6427         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6428     elif test -f "$winsdktest/Bin/midl.exe"; then
6429         MIDL_PATH=$winsdktest/Bin
6430         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6431     fi
6432     if test ! -f "$MIDL_PATH/midl.exe"; then
6433         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6434     else
6435         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6436     fi
6438     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6439     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6441     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6442          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6443          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6444          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6445     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6446          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6447          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6448          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6449     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6450          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6451          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6452          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6453     else
6454         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6455     fi
6457     dnl Check csc.exe
6458     AC_MSG_CHECKING([for csc.exe])
6459     find_csc
6460     if test -f "$csctest/csc.exe"; then
6461         CSC_PATH="$csctest"
6462     fi
6463     if test ! -f "$CSC_PATH/csc.exe"; then
6464         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6465     else
6466         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6467     fi
6469     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6471     dnl Check al.exe
6472     AC_MSG_CHECKING([for al.exe])
6473     find_winsdk
6474     if test -n "$winsdkbinsubdir" \
6475         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6476     then
6477         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6478     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6479         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6480     elif test -f "$winsdktest/Bin/al.exe"; then
6481         AL_PATH="$winsdktest/Bin"
6482     fi
6484     if test -z "$AL_PATH"; then
6485         find_al
6486         if test -f "$altest/bin/al.exe"; then
6487             AL_PATH="$altest/bin"
6488         elif test -f "$altest/al.exe"; then
6489             AL_PATH="$altest"
6490         fi
6491     fi
6492     if test ! -f "$AL_PATH/al.exe"; then
6493         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6494     else
6495         AC_MSG_RESULT([$AL_PATH/al.exe])
6496     fi
6498     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6500     dnl Check mscoree.lib / .NET Framework dir
6501     AC_MSG_CHECKING(.NET Framework)
6502     find_dotnetsdk46
6503     PathFormat "$frametest"
6504     frametest="$formatted_path"
6505     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6506         DOTNET_FRAMEWORK_HOME="$frametest"
6507     else
6508         find_winsdk
6509         if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6510             DOTNET_FRAMEWORK_HOME="$winsdktest"
6511         fi
6512     fi
6513     if test ! -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib" -a ! -f "$DOTNET_FRAMEWORK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib" -a ! -f "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6514         AC_MSG_ERROR([mscoree.lib not found])
6515     fi
6516     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6518     PathFormat "$MIDL_PATH"
6519     MIDL_PATH="$formatted_path"
6521     PathFormat "$AL_PATH"
6522     AL_PATH="$formatted_path"
6524     PathFormat "$DOTNET_FRAMEWORK_HOME"
6525     DOTNET_FRAMEWORK_HOME="$formatted_path"
6527     PathFormat "$CSC_PATH"
6528     CSC_PATH="$formatted_path"
6531 dnl ===================================================================
6532 dnl Testing for C++ compiler and version...
6533 dnl ===================================================================
6535 if test "$_os" != "WINNT"; then
6536     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6537     save_CXXFLAGS=$CXXFLAGS
6538     AC_PROG_CXX
6539     CXXFLAGS=$save_CXXFLAGS
6540     if test -z "$CXX_BASE"; then
6541         CXX_BASE=`first_arg_basename "$CXX"`
6542     fi
6545 dnl check for GNU C++ compiler version
6546 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6547     AC_MSG_CHECKING([the GNU C++ compiler version])
6549     _gpp_version=`$CXX -dumpversion`
6550     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6552     if test "$_gpp_majmin" -lt "700"; then
6553         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6554     else
6555         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6556     fi
6558     dnl see https://code.google.com/p/android/issues/detail?id=41770
6559         glibcxx_threads=no
6560         AC_LANG_PUSH([C++])
6561         AC_REQUIRE_CPP
6562         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6563         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6564             #include <bits/c++config.h>]],[[
6565             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6566             && !defined(_GLIBCXX__PTHREADS) \
6567             && !defined(_GLIBCXX_HAS_GTHREADS)
6568             choke me
6569             #endif
6570         ]])],[AC_MSG_RESULT([yes])
6571         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6572         AC_LANG_POP([C++])
6573         if test $glibcxx_threads = yes; then
6574             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6575         fi
6577 AC_SUBST(BOOST_CXXFLAGS)
6580 # prefx CXX with ccache if needed
6582 if test "$CCACHE" != ""; then
6583     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6584     AC_LANG_PUSH([C++])
6585     save_CXXFLAGS=$CXXFLAGS
6586     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6587     dnl an empty program will do, we're checking the compiler flags
6588     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6589                       [use_ccache=yes], [use_ccache=no])
6590     if test $use_ccache = yes; then
6591         AC_MSG_RESULT([yes])
6592     else
6593         CXX="$CCACHE $CXX"
6594         CXX_BASE="ccache $CXX_BASE"
6595         AC_MSG_RESULT([no])
6596     fi
6597     CXXFLAGS=$save_CXXFLAGS
6598     AC_LANG_POP([C++])
6601 dnl ===================================================================
6602 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6603 dnl ===================================================================
6605 if test "$_os" != "WINNT"; then
6606     AC_PROG_CXXCPP
6608     dnl Check whether there's a C pre-processor.
6609     AC_PROG_CPP
6613 dnl ===================================================================
6614 dnl Find integral type sizes and alignments
6615 dnl ===================================================================
6617 if test "$_os" != "WINNT"; then
6619     AC_CHECK_SIZEOF(long)
6620     AC_CHECK_SIZEOF(short)
6621     AC_CHECK_SIZEOF(int)
6622     AC_CHECK_SIZEOF(long long)
6623     AC_CHECK_SIZEOF(double)
6624     AC_CHECK_SIZEOF(void*)
6626     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6627     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6628     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6629     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6630     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6632     dnl Allow build without AC_CHECK_ALIGNOF, grrr
6633     m4_pattern_allow([AC_CHECK_ALIGNOF])
6634     m4_ifdef([AC_CHECK_ALIGNOF],
6635         [
6636             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6637             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6638             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6639             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6640         ],
6641         [
6642             case "$_os-$host_cpu" in
6643             Linux-i686)
6644                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6645                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6646                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6647                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6648                 ;;
6649             Linux-x86_64)
6650                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6651                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6652                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6653                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6654                 ;;
6655             *)
6656                 if test -z "$ac_cv_alignof_short" -o \
6657                         -z "$ac_cv_alignof_int" -o \
6658                         -z "$ac_cv_alignof_long" -o \
6659                         -z "$ac_cv_alignof_double"; then
6660                    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.])
6661                 fi
6662                 ;;
6663             esac
6664         ])
6666     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6667     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6668     if test $ac_cv_sizeof_long -eq 8; then
6669         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6670     elif test $ac_cv_sizeof_double -eq 8; then
6671         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6672     else
6673         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6674     fi
6676     dnl Check for large file support
6677     AC_SYS_LARGEFILE
6678     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6679         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6680     fi
6681     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6682         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6683     fi
6684 else
6685     # Hardcode for MSVC
6686     SAL_TYPES_SIZEOFSHORT=2
6687     SAL_TYPES_SIZEOFINT=4
6688     SAL_TYPES_SIZEOFLONG=4
6689     SAL_TYPES_SIZEOFLONGLONG=8
6690     if test $WIN_HOST_BITS -eq 32; then
6691         SAL_TYPES_SIZEOFPOINTER=4
6692     else
6693         SAL_TYPES_SIZEOFPOINTER=8
6694     fi
6695     SAL_TYPES_ALIGNMENT2=2
6696     SAL_TYPES_ALIGNMENT4=4
6697     SAL_TYPES_ALIGNMENT8=8
6698     LFS_CFLAGS=''
6700 AC_SUBST(LFS_CFLAGS)
6702 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6703 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6704 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6705 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6706 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6707 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6708 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6709 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6711 dnl ===================================================================
6712 dnl Check whether to enable runtime optimizations
6713 dnl ===================================================================
6714 ENABLE_RUNTIME_OPTIMIZATIONS=
6715 AC_MSG_CHECKING([whether to enable runtime optimizations])
6716 if test -z "$enable_runtime_optimizations"; then
6717     for i in $CC; do
6718         case $i in
6719         -fsanitize=*)
6720             enable_runtime_optimizations=no
6721             break
6722             ;;
6723         esac
6724     done
6726 if test "$enable_runtime_optimizations" != no; then
6727     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6728     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6729     AC_MSG_RESULT([yes])
6730 else
6731     AC_MSG_RESULT([no])
6733 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6735 dnl ===================================================================
6736 dnl Check if valgrind headers are available
6737 dnl ===================================================================
6738 ENABLE_VALGRIND=
6739 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6740     prev_cppflags=$CPPFLAGS
6741     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6742     # or where does it come from?
6743     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6744     AC_CHECK_HEADER([valgrind/valgrind.h],
6745         [ENABLE_VALGRIND=TRUE])
6746     CPPFLAGS=$prev_cppflags
6748 AC_SUBST([ENABLE_VALGRIND])
6749 if test -z "$ENABLE_VALGRIND"; then
6750     if test "$with_valgrind" = yes; then
6751         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6752     fi
6753     VALGRIND_CFLAGS=
6755 AC_SUBST([VALGRIND_CFLAGS])
6758 dnl ===================================================================
6759 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6760 dnl ===================================================================
6762 # We need at least the sys/sdt.h include header.
6763 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6764 if test "$SDT_H_FOUND" = "TRUE"; then
6765     # Found sys/sdt.h header, now make sure the c++ compiler works.
6766     # Old g++ versions had problems with probes in constructors/destructors.
6767     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6768     AC_LANG_PUSH([C++])
6769     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6770     #include <sys/sdt.h>
6771     class ProbeClass
6772     {
6773     private:
6774       int& ref;
6775       const char *name;
6777     public:
6778       ProbeClass(int& v, const char *n) : ref(v), name(n)
6779       {
6780         DTRACE_PROBE2(_test_, cons, name, ref);
6781       }
6783       void method(int min)
6784       {
6785         DTRACE_PROBE3(_test_, meth, name, ref, min);
6786         ref -= min;
6787       }
6789       ~ProbeClass()
6790       {
6791         DTRACE_PROBE2(_test_, dest, name, ref);
6792       }
6793     };
6794     ]],[[
6795     int i = 64;
6796     DTRACE_PROBE1(_test_, call, i);
6797     ProbeClass inst = ProbeClass(i, "call");
6798     inst.method(24);
6799     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6800           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6801     AC_LANG_POP([C++])
6803 AC_CONFIG_HEADERS([config_host/config_probes.h])
6805 dnl ===================================================================
6806 dnl GCC features
6807 dnl ===================================================================
6808 HAVE_GCC_STACK_CLASH_PROTECTION=
6809 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6810     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6811     save_CFLAGS=$CFLAGS
6812     CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
6813     AC_LINK_IFELSE(
6814         [AC_LANG_PROGRAM(, [[return 0;]])],
6815         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6816         [AC_MSG_RESULT([no])])
6817     CFLAGS=$save_CFLAGS
6819     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6820     save_CFLAGS=$CFLAGS
6821     CFLAGS="$CFLAGS -Werror -mno-avx"
6822     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6823     CFLAGS=$save_CFLAGS
6824     if test "$HAVE_GCC_AVX" = "TRUE"; then
6825         AC_MSG_RESULT([yes])
6826     else
6827         AC_MSG_RESULT([no])
6828     fi
6830     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6831     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6832     int v = 0;
6833     if (__sync_add_and_fetch(&v, 1) != 1 ||
6834         __sync_sub_and_fetch(&v, 1) != 0)
6835         return 1;
6836     __sync_synchronize();
6837     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6838         v != 1)
6839         return 1;
6840     return 0;
6841 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6842     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6843         AC_MSG_RESULT([yes])
6844         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
6845     else
6846         AC_MSG_RESULT([no])
6847     fi
6849     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
6850     AC_LANG_PUSH([C++])
6851     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6852             #include <cstddef>
6853             #include <cxxabi.h>
6854             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
6855         ])], [
6856             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
6857             AC_MSG_RESULT([yes])
6858         ], [AC_MSG_RESULT([no])])
6859     AC_LANG_POP([C++])
6861     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
6862     AC_LANG_PUSH([C++])
6863     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6864             #include <cstddef>
6865             #include <cxxabi.h>
6866             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
6867         ])], [
6868             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
6869             AC_MSG_RESULT([yes])
6870         ], [AC_MSG_RESULT([no])])
6871     AC_LANG_POP([C++])
6873     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
6874     AC_LANG_PUSH([C++])
6875     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6876             #include <cxxabi.h>
6877             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
6878         ])], [
6879             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
6880             AC_MSG_RESULT([yes])
6881         ], [AC_MSG_RESULT([no])])
6882     AC_LANG_POP([C++])
6884     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
6885     AC_LANG_PUSH([C++])
6886     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6887             #include <cstddef>
6888             #include <cxxabi.h>
6889             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
6890         ])], [
6891             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
6892             AC_MSG_RESULT([yes])
6893         ], [AC_MSG_RESULT([no])])
6894     AC_LANG_POP([C++])
6896     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
6897     AC_LANG_PUSH([C++])
6898     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6899             #include <cstddef>
6900             #include <cxxabi.h>
6901             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
6902         ])], [
6903             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
6904             AC_MSG_RESULT([yes])
6905         ], [AC_MSG_RESULT([no])])
6906     AC_LANG_POP([C++])
6908     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
6909     AC_LANG_PUSH([C++])
6910     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6911             #include <cxxabi.h>
6912             void * f() { return __cxxabiv1::__cxa_get_globals(); }
6913         ])], [
6914             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
6915             AC_MSG_RESULT([yes])
6916         ], [AC_MSG_RESULT([no])])
6917     AC_LANG_POP([C++])
6919     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
6920     AC_LANG_PUSH([C++])
6921     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6922             #include <cxxabi.h>
6923             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
6924         ])], [
6925             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
6926             AC_MSG_RESULT([yes])
6927         ], [AC_MSG_RESULT([no])])
6928     AC_LANG_POP([C++])
6930     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
6931     AC_LANG_PUSH([C++])
6932     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6933             #include <cxxabi.h>
6934             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
6935         ])], [
6936             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
6937             AC_MSG_RESULT([yes])
6938         ], [AC_MSG_RESULT([no])])
6939     AC_LANG_POP([C++])
6941     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
6942     AC_LANG_PUSH([C++])
6943     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6944             #include <cstddef>
6945             #include <cxxabi.h>
6946             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
6947         ])], [
6948             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
6949             AC_MSG_RESULT([yes])
6950         ], [AC_MSG_RESULT([no])])
6951     AC_LANG_POP([C++])
6953     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
6954     AC_LANG_PUSH([C++])
6955     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6956             #include <cstddef>
6957             #include <cxxabi.h>
6958             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
6959         ])], [
6960             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
6961             AC_MSG_RESULT([yes])
6962         ], [AC_MSG_RESULT([no])])
6963     AC_LANG_POP([C++])
6966 AC_SUBST(HAVE_GCC_AVX)
6967 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
6968 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
6970 dnl ===================================================================
6971 dnl Identify the C++ library
6972 dnl ===================================================================
6974 AC_MSG_CHECKING([what the C++ library is])
6975 AC_LANG_PUSH([C++])
6976 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6977 #include <utility>
6978 #ifndef __GLIBCXX__
6979 foo bar
6980 #endif
6981 ]])],
6982     [CPP_LIBRARY=GLIBCXX
6983      cpp_library_name="GNU libstdc++"
6984     ],
6985     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6986 #include <utility>
6987 #ifndef _LIBCPP_VERSION
6988 foo bar
6989 #endif
6990 ]])],
6991     [CPP_LIBRARY=LIBCPP
6992      cpp_library_name="LLVM libc++"
6993      AC_DEFINE([HAVE_LIBCXX])
6994     ],
6995     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6996 #include <utility>
6997 #ifndef _MSC_VER
6998 foo bar
6999 #endif
7000 ]])],
7001     [CPP_LIBRARY=MSVCRT
7002      cpp_library_name="Microsoft"
7003     ],
7004     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7005 AC_MSG_RESULT([$cpp_library_name])
7006 AC_LANG_POP([C++])
7008 dnl ===================================================================
7009 dnl Check for gperf
7010 dnl ===================================================================
7011 AC_PATH_PROG(GPERF, gperf)
7012 if test -z "$GPERF"; then
7013     AC_MSG_ERROR([gperf not found but needed. Install it.])
7015 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7016     GPERF=`cygpath -m $GPERF`
7018 AC_MSG_CHECKING([whether gperf is new enough])
7019 my_gperf_ver1=$($GPERF --version | head -n 1)
7020 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7021 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7022 if test "$my_gperf_ver3" -ge 301; then
7023     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7024 else
7025     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7027 AC_SUBST(GPERF)
7029 dnl ===================================================================
7030 dnl Check for system libcmis
7031 dnl ===================================================================
7032 # libcmis requires curl and we can't build curl for iOS
7033 if test $_os != iOS; then
7034     libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7035     ENABLE_LIBCMIS=TRUE
7036 else
7037     ENABLE_LIBCMIS=
7039 AC_SUBST(ENABLE_LIBCMIS)
7041 dnl ===================================================================
7042 dnl C++11
7043 dnl ===================================================================
7045 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7046 CXXFLAGS_CXX11=
7047 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7048     if test "$with_latest_c__" = yes; then
7049         CXXFLAGS_CXX11=-std:c++latest
7050     else
7051         CXXFLAGS_CXX11=-std:c++17
7052     fi
7053     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7054 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7055     my_flags='-std=c++17 -std=c++1z'
7056     if test "$with_latest_c__" = yes; then
7057         my_flags="-std=c++2b -std=c++20 -std=c++2a $my_flags"
7058     fi
7059     for flag in $my_flags; do
7060         if test "$COM" = MSC; then
7061             flag="-Xclang $flag"
7062         fi
7063         save_CXXFLAGS=$CXXFLAGS
7064         CXXFLAGS="$CXXFLAGS $flag -Werror"
7065         if test "$SYSTEM_LIBCMIS" = TRUE; then
7066             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7067         fi
7068         AC_LANG_PUSH([C++])
7069         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7070             #include <algorithm>
7071             #include <functional>
7072             #include <vector>
7074             #if defined SYSTEM_LIBCMIS
7075             // See ucb/source/ucp/cmis/auth_provider.hxx:
7076             #if !defined __clang__
7077             #pragma GCC diagnostic push
7078             #pragma GCC diagnostic ignored "-Wdeprecated"
7079             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7080             #endif
7081             #include <libcmis/libcmis.hxx>
7082             #if !defined __clang__
7083             #pragma GCC diagnostic pop
7084             #endif
7085             #endif
7087             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7088                 std::sort(v.begin(), v.end(), fn);
7089             }
7090             ]])],[CXXFLAGS_CXX11=$flag])
7091         AC_LANG_POP([C++])
7092         CXXFLAGS=$save_CXXFLAGS
7093         if test -n "$CXXFLAGS_CXX11"; then
7094             break
7095         fi
7096     done
7098 if test -n "$CXXFLAGS_CXX11"; then
7099     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7100 else
7101     AC_MSG_ERROR(no)
7103 AC_SUBST(CXXFLAGS_CXX11)
7105 if test "$GCC" = "yes"; then
7106     save_CXXFLAGS=$CXXFLAGS
7107     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7108     CHECK_L_ATOMIC
7109     CXXFLAGS=$save_CXXFLAGS
7110     AC_SUBST(ATOMIC_LIB)
7113 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7114 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7115 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7116 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7117 dnl again towards 4.7.2:
7118 if test $CPP_LIBRARY = GLIBCXX; then
7119     AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7120     AC_LANG_PUSH([C++])
7121     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7122 #include <list>
7123 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7124     // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7125     //   GCC 4.7.0: 20120322
7126     //   GCC 4.7.1: 20120614
7127     // and using a range check is not possible as the mapping between
7128     // __GLIBCXX__ values and GCC versions is not monotonic
7129 /* ok */
7130 #else
7131 abi broken
7132 #endif
7133         ]])], [AC_MSG_RESULT(no, ok)],
7134         [AC_MSG_ERROR(yes)])
7135     AC_LANG_POP([C++])
7138 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7139 save_CXXFLAGS=$CXXFLAGS
7140 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7141 AC_LANG_PUSH([C++])
7143 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7144 #include <stddef.h>
7146 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7148 namespace
7150         struct b
7151         {
7152                 int i;
7153                 int j;
7154         };
7156 ]], [[
7157 struct a
7159         int i;
7160         int j;
7162 a thinga[]={{0,0}, {1,1}};
7163 b thingb[]={{0,0}, {1,1}};
7164 size_t i = sizeof(sal_n_array_size(thinga));
7165 size_t j = sizeof(sal_n_array_size(thingb));
7166 return !(i != 0 && j != 0);
7168     ], [ AC_MSG_RESULT(yes) ],
7169     [ AC_MSG_ERROR(no)])
7170 AC_LANG_POP([C++])
7171 CXXFLAGS=$save_CXXFLAGS
7173 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7174 if test "$GCC" = yes; then
7175     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7176     AC_LANG_PUSH([C++])
7177     save_CXXFLAGS=$CXXFLAGS
7178     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7179     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7180     CXXFLAGS=$save_CXXFLAGS
7181     AC_LANG_POP([C++])
7182     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7183         AC_MSG_RESULT([yes])
7184     else
7185         AC_MSG_RESULT([no])
7186     fi
7188 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7190 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
7191 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
7192 dnl from consteval constructor initializing const variable" or
7193 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: â€˜this’ is not a constant
7194 dnl expression' with consteval constructor":
7195 AC_LANG_PUSH([C++])
7196 save_CXXFLAGS=$CXXFLAGS
7197 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7198 AC_RUN_IFELSE([AC_LANG_PROGRAM([
7199         struct S {
7200             consteval S() { i = 1; }
7201             int i = 0;
7202         };
7203         S const s;
7205         struct S1 { consteval S1(int) {} };
7206         struct S2 {
7207             S1 x;
7208             S2(): x(0) {}
7209         };
7210     ], [
7211         return (s.i == 1) ? 0 : 1;
7212     ])], [
7213         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
7214         AC_MSG_RESULT([yes])
7215     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
7216 CXXFLAGS=$save_CXXFLAGS
7217 AC_LANG_POP([C++])
7219 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7220 AC_LANG_PUSH([C++])
7221 save_CXXFLAGS=$CXXFLAGS
7222 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7223 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7224         #include <algorithm>
7225         #include <initializer_list>
7226         #include <vector>
7227         template<typename T> class S {
7228         private:
7229             std::vector<T> v_;
7230         public:
7231             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7232         };
7233         constinit S<int> s{3, 2, 1};
7234     ])], [
7235         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7236         AC_MSG_RESULT([yes])
7237     ], [AC_MSG_RESULT([no])])
7238 CXXFLAGS=$save_CXXFLAGS
7239 AC_LANG_POP([C++])
7241 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7242 AC_LANG_PUSH([C++])
7243 save_CXXFLAGS=$CXXFLAGS
7244 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7245 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7246         #include <span>
7247         #include <type_traits>
7248         // Don't check size_type directly, as it was called index_type before P1872R0:
7249         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7250     ])], [
7251         AC_DEFINE([HAVE_CPP_SPAN],[1])
7252         AC_MSG_RESULT([yes])
7253     ], [AC_MSG_RESULT([no])])
7254 CXXFLAGS=$save_CXXFLAGS
7255 AC_LANG_POP([C++])
7257 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7258 AC_LANG_PUSH([C++])
7259 save_CXXFLAGS=$CXXFLAGS
7260 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7261 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7262         struct S1 { S1(S1 &&); };
7263         struct S2: S1 {};
7264         S1 f(S2 s) { return s; }
7265     ])], [
7266         AC_DEFINE([HAVE_P1155R3],[1])
7267         AC_MSG_RESULT([yes])
7268     ], [AC_MSG_RESULT([no])])
7269 CXXFLAGS=$save_CXXFLAGS
7270 AC_LANG_POP([C++])
7272 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7273 dnl which is included in -Wextra anyway):
7274 HAVE_WDEPRECATED_COPY_DTOR=
7275 if test "$GCC" = yes; then
7276     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7277     AC_LANG_PUSH([C++])
7278     save_CXXFLAGS=$CXXFLAGS
7279     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7280     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7281             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7282             AC_MSG_RESULT([yes])
7283         ], [AC_MSG_RESULT([no])])
7284     CXXFLAGS=$save_CXXFLAGS
7285     AC_LANG_POP([C++])
7287 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7289 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7290 dnl uninitialized warning for code like
7292 dnl   OString f();
7293 dnl   boost::optional<OString> * g(bool b) {
7294 dnl       boost::optional<OString> o;
7295 dnl       if (b) o = f();
7296 dnl       return new boost::optional<OString>(o);
7297 dnl   }
7299 dnl (as is e.g. present, in a slightly more elaborate form, in
7300 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7301 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7302 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7303 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7304     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7305     AC_LANG_PUSH([C++])
7306     save_CXXFLAGS=$CXXFLAGS
7307     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7308     if test "$ENABLE_OPTIMIZED" = TRUE; then
7309         CXXFLAGS="$CXXFLAGS -O2"
7310     else
7311         CXXFLAGS="$CXXFLAGS -O0"
7312     fi
7313     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7314             #include <new>
7315             void f1(int);
7316             struct S1 {
7317                 ~S1() { f1(n); }
7318                 int n = 0;
7319             };
7320             struct S2 {
7321                 S2() {}
7322                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7323                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7324                 void set(S1 s) {
7325                     new (stg) S1(s);
7326                     init = true;
7327                 }
7328                 bool init = false;
7329                 char stg[sizeof (S1)];
7330             } ;
7331             S1 f2();
7332             S2 * f3(bool b) {
7333                 S2 o;
7334                 if (b) o.set(f2());
7335                 return new S2(o);
7336             }
7337         ]])], [AC_MSG_RESULT([no])], [
7338             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7339             AC_MSG_RESULT([yes])
7340         ])
7341     CXXFLAGS=$save_CXXFLAGS
7342     AC_LANG_POP([C++])
7344 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7346 dnl ===================================================================
7347 dnl CPU Intrinsics support - SSE, AVX
7348 dnl ===================================================================
7350 CXXFLAGS_INTRINSICS_SSE2=
7351 CXXFLAGS_INTRINSICS_SSSE3=
7352 CXXFLAGS_INTRINSICS_SSE41=
7353 CXXFLAGS_INTRINSICS_SSE42=
7354 CXXFLAGS_INTRINSICS_AVX=
7355 CXXFLAGS_INTRINSICS_AVX2=
7356 CXXFLAGS_INTRINSICS_AVX512=
7357 CXXFLAGS_INTRINSICS_F16C=
7358 CXXFLAGS_INTRINSICS_FMA=
7360 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7361     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7362     flag_sse2=-msse2
7363     flag_ssse3=-mssse3
7364     flag_sse41=-msse4.1
7365     flag_sse42=-msse4.2
7366     flag_avx=-mavx
7367     flag_avx2=-mavx2
7368     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7369     flag_f16c=-mf16c
7370     flag_fma=-mfma
7371 else
7372     # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7373     # MSVC seems to differentiate only between SSE and SSE2, where in fact
7374     # SSE2 seems to be SSE2+.
7375     # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7376     # is not empty (and can be tested in gbuild).
7377     flag_sse2=-arch:SSE2
7378     flag_ssse3=-arch:SSE2
7379     flag_sse41=-arch:SSE2
7380     flag_sse42=-arch:SSE2
7381     flag_avx=-arch:AVX
7382     flag_avx2=-arch:AVX2
7383     flag_avx512=-arch:AVX512
7384     # These are part of -arch:AVX2
7385     flag_f16c=-arch:AVX2
7386     flag_fma=-arch:AVX2
7389 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7390 AC_LANG_PUSH([C++])
7391 save_CXXFLAGS=$CXXFLAGS
7392 CXXFLAGS="$CXXFLAGS $flag_sse2"
7393 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7394     #include <emmintrin.h>
7395     int main () {
7396         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7397         c = _mm_xor_si128 (a, b);
7398         return 0;
7399     }
7400     ])],
7401     [can_compile_sse2=yes],
7402     [can_compile_sse2=no])
7403 AC_LANG_POP([C++])
7404 CXXFLAGS=$save_CXXFLAGS
7405 AC_MSG_RESULT([${can_compile_sse2}])
7406 if test "${can_compile_sse2}" = "yes" ; then
7407     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7410 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7411 AC_LANG_PUSH([C++])
7412 save_CXXFLAGS=$CXXFLAGS
7413 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7414 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7415     #include <tmmintrin.h>
7416     int main () {
7417         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7418         c = _mm_maddubs_epi16 (a, b);
7419         return 0;
7420     }
7421     ])],
7422     [can_compile_ssse3=yes],
7423     [can_compile_ssse3=no])
7424 AC_LANG_POP([C++])
7425 CXXFLAGS=$save_CXXFLAGS
7426 AC_MSG_RESULT([${can_compile_ssse3}])
7427 if test "${can_compile_ssse3}" = "yes" ; then
7428     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7431 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7432 AC_LANG_PUSH([C++])
7433 save_CXXFLAGS=$CXXFLAGS
7434 CXXFLAGS="$CXXFLAGS $flag_sse41"
7435 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7436     #include <smmintrin.h>
7437     int main () {
7438         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7439         c = _mm_cmpeq_epi64 (a, b);
7440         return 0;
7441     }
7442     ])],
7443     [can_compile_sse41=yes],
7444     [can_compile_sse41=no])
7445 AC_LANG_POP([C++])
7446 CXXFLAGS=$save_CXXFLAGS
7447 AC_MSG_RESULT([${can_compile_sse41}])
7448 if test "${can_compile_sse41}" = "yes" ; then
7449     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7452 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7453 AC_LANG_PUSH([C++])
7454 save_CXXFLAGS=$CXXFLAGS
7455 CXXFLAGS="$CXXFLAGS $flag_sse42"
7456 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7457     #include <nmmintrin.h>
7458     int main () {
7459         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7460         c = _mm_cmpgt_epi64 (a, b);
7461         return 0;
7462     }
7463     ])],
7464     [can_compile_sse42=yes],
7465     [can_compile_sse42=no])
7466 AC_LANG_POP([C++])
7467 CXXFLAGS=$save_CXXFLAGS
7468 AC_MSG_RESULT([${can_compile_sse42}])
7469 if test "${can_compile_sse42}" = "yes" ; then
7470     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7473 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7474 AC_LANG_PUSH([C++])
7475 save_CXXFLAGS=$CXXFLAGS
7476 CXXFLAGS="$CXXFLAGS $flag_avx"
7477 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7478     #include <immintrin.h>
7479     int main () {
7480         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7481         c = _mm256_xor_ps(a, b);
7482         return 0;
7483     }
7484     ])],
7485     [can_compile_avx=yes],
7486     [can_compile_avx=no])
7487 AC_LANG_POP([C++])
7488 CXXFLAGS=$save_CXXFLAGS
7489 AC_MSG_RESULT([${can_compile_avx}])
7490 if test "${can_compile_avx}" = "yes" ; then
7491     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7494 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7495 AC_LANG_PUSH([C++])
7496 save_CXXFLAGS=$CXXFLAGS
7497 CXXFLAGS="$CXXFLAGS $flag_avx2"
7498 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7499     #include <immintrin.h>
7500     int main () {
7501         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7502         c = _mm256_maddubs_epi16(a, b);
7503         return 0;
7504     }
7505     ])],
7506     [can_compile_avx2=yes],
7507     [can_compile_avx2=no])
7508 AC_LANG_POP([C++])
7509 CXXFLAGS=$save_CXXFLAGS
7510 AC_MSG_RESULT([${can_compile_avx2}])
7511 if test "${can_compile_avx2}" = "yes" ; then
7512     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7515 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7516 AC_LANG_PUSH([C++])
7517 save_CXXFLAGS=$CXXFLAGS
7518 CXXFLAGS="$CXXFLAGS $flag_avx512"
7519 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7520     #include <immintrin.h>
7521     int main () {
7522         __m512i a = _mm512_loadu_si512(0);
7523         return 0;
7524     }
7525     ])],
7526     [can_compile_avx512=yes],
7527     [can_compile_avx512=no])
7528 AC_LANG_POP([C++])
7529 CXXFLAGS=$save_CXXFLAGS
7530 AC_MSG_RESULT([${can_compile_avx512}])
7531 if test "${can_compile_avx512}" = "yes" ; then
7532     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7535 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7536 AC_LANG_PUSH([C++])
7537 save_CXXFLAGS=$CXXFLAGS
7538 CXXFLAGS="$CXXFLAGS $flag_f16c"
7539 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7540     #include <immintrin.h>
7541     int main () {
7542         __m128i a = _mm_set1_epi32 (0);
7543         __m128 c;
7544         c = _mm_cvtph_ps(a);
7545         return 0;
7546     }
7547     ])],
7548     [can_compile_f16c=yes],
7549     [can_compile_f16c=no])
7550 AC_LANG_POP([C++])
7551 CXXFLAGS=$save_CXXFLAGS
7552 AC_MSG_RESULT([${can_compile_f16c}])
7553 if test "${can_compile_f16c}" = "yes" ; then
7554     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7557 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7558 AC_LANG_PUSH([C++])
7559 save_CXXFLAGS=$CXXFLAGS
7560 CXXFLAGS="$CXXFLAGS $flag_fma"
7561 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7562     #include <immintrin.h>
7563     int main () {
7564         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7565         d = _mm256_fmadd_ps(a, b, c);
7566         return 0;
7567     }
7568     ])],
7569     [can_compile_fma=yes],
7570     [can_compile_fma=no])
7571 AC_LANG_POP([C++])
7572 CXXFLAGS=$save_CXXFLAGS
7573 AC_MSG_RESULT([${can_compile_fma}])
7574 if test "${can_compile_fma}" = "yes" ; then
7575     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7578 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7579 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7580 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7581 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7582 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7583 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7584 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7585 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7586 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7588 dnl ===================================================================
7589 dnl system stl sanity tests
7590 dnl ===================================================================
7591 if test "$_os" != "WINNT"; then
7593     AC_LANG_PUSH([C++])
7595     save_CPPFLAGS="$CPPFLAGS"
7596     if test -n "$MACOSX_SDK_PATH"; then
7597         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7598     fi
7600     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7601     # only.
7602     if test "$CPP_LIBRARY" = GLIBCXX; then
7603         dnl gcc#19664, gcc#22482, rhbz#162935
7604         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7605         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7606         AC_MSG_RESULT([$stlvisok])
7607         if test "$stlvisok" = "no"; then
7608             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7609         fi
7610     fi
7612     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7613     # when we don't make any dynamic libraries?
7614     if test "$DISABLE_DYNLOADING" = ""; then
7615         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7616         cat > conftestlib1.cc <<_ACEOF
7617 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7618 struct S2: S1<int> { virtual ~S2(); };
7619 S2::~S2() {}
7620 _ACEOF
7621         cat > conftestlib2.cc <<_ACEOF
7622 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7623 struct S2: S1<int> { virtual ~S2(); };
7624 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7625 _ACEOF
7626         gccvisinlineshiddenok=yes
7627         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7628             gccvisinlineshiddenok=no
7629         else
7630             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7631             dnl known to not work with -z defs (unsetting which makes the test
7632             dnl moot, though):
7633             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7634             if test "$COM_IS_CLANG" = TRUE; then
7635                 for i in $CXX $CXXFLAGS; do
7636                     case $i in
7637                     -fsanitize=*)
7638                         my_linkflagsnoundefs=
7639                         break
7640                         ;;
7641                     esac
7642                 done
7643             fi
7644             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7645                 gccvisinlineshiddenok=no
7646             fi
7647         fi
7649         rm -fr libconftest*
7650         AC_MSG_RESULT([$gccvisinlineshiddenok])
7651         if test "$gccvisinlineshiddenok" = "no"; then
7652             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7653         fi
7654     fi
7656    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7657     cat >visibility.cxx <<_ACEOF
7658 #pragma GCC visibility push(hidden)
7659 struct __attribute__ ((visibility ("default"))) TestStruct {
7660   static void Init();
7662 __attribute__ ((visibility ("default"))) void TestFunc() {
7663   TestStruct::Init();
7665 _ACEOF
7666     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7667         gccvisbroken=yes
7668     else
7669         case "$host_cpu" in
7670         i?86|x86_64)
7671             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7672                 gccvisbroken=no
7673             else
7674                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7675                     gccvisbroken=no
7676                 else
7677                     gccvisbroken=yes
7678                 fi
7679             fi
7680             ;;
7681         *)
7682             gccvisbroken=no
7683             ;;
7684         esac
7685     fi
7686     rm -f visibility.s visibility.cxx
7688     AC_MSG_RESULT([$gccvisbroken])
7689     if test "$gccvisbroken" = "yes"; then
7690         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7691     fi
7693     CPPFLAGS="$save_CPPFLAGS"
7695     AC_LANG_POP([C++])
7698 dnl ===================================================================
7699 dnl  Clang++ tests
7700 dnl ===================================================================
7702 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7703 if test "$GCC" = "yes"; then
7704     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7705     AC_LANG_PUSH([C++])
7706     save_CXXFLAGS=$CXXFLAGS
7707     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7708     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7709     CXXFLAGS=$save_CXXFLAGS
7710     AC_LANG_POP([C++])
7711     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7712         AC_MSG_RESULT([yes])
7713     else
7714         AC_MSG_RESULT([no])
7715     fi
7717 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7719 dnl ===================================================================
7720 dnl Compiler plugins
7721 dnl ===================================================================
7723 COMPILER_PLUGINS=
7724 # currently only Clang
7726 if test "$COM_IS_CLANG" != "TRUE"; then
7727     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7728         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7729         enable_compiler_plugins=no
7730     fi
7733 COMPILER_PLUGINS_COM_IS_CLANG=
7734 if test "$COM_IS_CLANG" = "TRUE"; then
7735     if test -n "$enable_compiler_plugins"; then
7736         compiler_plugins="$enable_compiler_plugins"
7737     elif test -n "$ENABLE_DBGUTIL"; then
7738         compiler_plugins=test
7739     else
7740         compiler_plugins=no
7741     fi
7742     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7743         if test "$CLANGVER" -lt 50002; then
7744             if test "$compiler_plugins" = yes; then
7745                 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7746             else
7747                 compiler_plugins=no
7748             fi
7749         fi
7750     fi
7751     if test "$compiler_plugins" != "no"; then
7752         dnl The prefix where Clang resides, override to where Clang resides if
7753         dnl using a source build:
7754         if test -z "$CLANGDIR"; then
7755             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | head -n 1)))))
7756         fi
7757         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7758         if test -z "$COMPILER_PLUGINS_CXX"; then
7759             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7760         fi
7761         clangbindir=$CLANGDIR/bin
7762         if test "$build_os" = "cygwin"; then
7763             clangbindir=$(cygpath -u "$clangbindir")
7764         fi
7765         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
7766         if test -n "$LLVM_CONFIG"; then
7767             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
7768             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
7769             if test -z "$CLANGLIBDIR"; then
7770                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
7771             fi
7772             # Try if clang is built from source (in which case its includes are not together with llvm includes).
7773             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
7774             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
7775             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
7776                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
7777             fi
7778             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
7779             clangobjdir=$($LLVM_CONFIG --obj-root)
7780             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
7781                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
7782             fi
7783         fi
7784         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
7785         AC_LANG_PUSH([C++])
7786         save_CXX=$CXX
7787         save_CXXCPP=$CXXCPP
7788         save_CPPFLAGS=$CPPFLAGS
7789         save_CXXFLAGS=$CXXFLAGS
7790         save_LDFLAGS=$LDFLAGS
7791         save_LIBS=$LIBS
7792         CXX=$COMPILER_PLUGINS_CXX
7793         CXXCPP="$COMPILER_PLUGINS_CXX -E"
7794         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7795         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7796         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
7797             [COMPILER_PLUGINS=TRUE],
7798             [
7799             if test "$compiler_plugins" = "yes"; then
7800                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
7801             else
7802                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
7803                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
7804             fi
7805             ])
7806         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
7807         dnl comment in compilerplugins/Makefile-clang.mk:
7808         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
7809             LDFLAGS=""
7810             AC_MSG_CHECKING([for clang libraries to use])
7811             if test -z "$CLANGTOOLLIBS"; then
7812                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
7813  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
7814                 AC_LINK_IFELSE([
7815                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7816                         [[ clang::FullSourceLoc().dump(); ]])
7817                 ],[CLANGTOOLLIBS="$LIBS"],[])
7818             fi
7819             if test -z "$CLANGTOOLLIBS"; then
7820                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
7821                 AC_LINK_IFELSE([
7822                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7823                         [[ clang::FullSourceLoc().dump(); ]])
7824                 ],[CLANGTOOLLIBS="$LIBS"],[])
7825             fi
7826             AC_MSG_RESULT([$CLANGTOOLLIBS])
7827             if test -z "$CLANGTOOLLIBS"; then
7828                 if test "$compiler_plugins" = "yes"; then
7829                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
7830                 else
7831                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
7832                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
7833                 fi
7834                 COMPILER_PLUGINS=
7835             fi
7836             if test -n "$COMPILER_PLUGINS"; then
7837                 if test -z "$CLANGSYSINCLUDE"; then
7838                     if test -n "$LLVM_CONFIG"; then
7839                         # Path to the clang system headers (no idea if there's a better way to get it).
7840                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
7841                     fi
7842                 fi
7843             fi
7844         fi
7845         CXX=$save_CXX
7846         CXXCPP=$save_CXXCPP
7847         CPPFLAGS=$save_CPPFLAGS
7848         CXXFLAGS=$save_CXXFLAGS
7849         LDFLAGS=$save_LDFLAGS
7850         LIBS="$save_LIBS"
7851         AC_LANG_POP([C++])
7853         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
7854         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7855             #ifndef __clang__
7856             you lose
7857             #endif
7858             int foo=42;
7859             ]])],
7860             [AC_MSG_RESULT([yes])
7861              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
7862             [AC_MSG_RESULT([no])])
7863         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7864     fi
7865 else
7866     if test "$enable_compiler_plugins" = "yes"; then
7867         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
7868     fi
7870 COMPILER_PLUGINS_ANALYZER_PCH=
7871 if test "$enable_compiler_plugins_analyzer_pch" != no; then
7872     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
7874 AC_SUBST(COMPILER_PLUGINS)
7875 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
7876 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7877 AC_SUBST(COMPILER_PLUGINS_CXX)
7878 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
7879 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
7880 AC_SUBST(COMPILER_PLUGINS_DEBUG)
7881 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
7882 AC_SUBST(CLANGDIR)
7883 AC_SUBST(CLANGLIBDIR)
7884 AC_SUBST(CLANGTOOLLIBS)
7885 AC_SUBST(CLANGSYSINCLUDE)
7887 # Plugin to help linker.
7888 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
7889 # This makes --enable-lto build with clang work.
7890 AC_SUBST(LD_PLUGIN)
7892 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
7893 AC_SUBST(HAVE_POSIX_FALLOCATE)
7895 JITC_PROCESSOR_TYPE=""
7896 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
7897     # IBMs JDK needs this...
7898     JITC_PROCESSOR_TYPE=6
7899     export JITC_PROCESSOR_TYPE
7901 AC_SUBST([JITC_PROCESSOR_TYPE])
7903 # Misc Windows Stuff
7904 AC_ARG_WITH(ucrt-dir,
7905     AS_HELP_STRING([--with-ucrt-dir],
7906         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
7907         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
7908         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
7909             Windows6.1-KB2999226-x64.msu
7910             Windows6.1-KB2999226-x86.msu
7911             Windows8.1-KB2999226-x64.msu
7912             Windows8.1-KB2999226-x86.msu
7913             Windows8-RT-KB2999226-x64.msu
7914             Windows8-RT-KB2999226-x86.msu
7915         A zip archive including those files is available from Microsoft site:
7916         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
7919 UCRT_REDISTDIR="$with_ucrt_dir"
7920 if test $_os = "WINNT"; then
7921     find_msvc_x64_dlls
7922     for i in $PKGFORMAT; do
7923         if test "$i" = msi; then
7924             find_msms
7925             break
7926         fi
7927     done
7928     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
7929     MSVC_DLLS="$msvcdlls"
7930     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
7931     # MSVC 15.3 changed it to VC141
7932     if echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
7933         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
7934     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
7935         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
7936     else
7937         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
7938     fi
7940     if test "$UCRT_REDISTDIR" = "no"; then
7941         dnl explicitly disabled
7942         UCRT_REDISTDIR=""
7943     else
7944         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
7945                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
7946                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
7947                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
7948                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
7949                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
7950             UCRT_REDISTDIR=""
7951             if test -n "$PKGFORMAT"; then
7952                for i in $PKGFORMAT; do
7953                    case "$i" in
7954                    msi)
7955                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
7956                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
7957                        ;;
7958                    esac
7959                done
7960             fi
7961         fi
7962     fi
7965 AC_SUBST(UCRT_REDISTDIR)
7966 AC_SUBST(MSVC_DLL_PATH)
7967 AC_SUBST(MSVC_DLLS)
7968 AC_SUBST(MSM_PATH)
7970 dnl ===================================================================
7971 dnl Checks for Java
7972 dnl ===================================================================
7973 if test "$ENABLE_JAVA" != ""; then
7975     # Windows-specific tests
7976     if test "$build_os" = "cygwin"; then
7977         if test -z "$with_jdk_home"; then
7978             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
7979             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
7980             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
7981             if test -n "$regvalue"; then
7982                 ver=$regvalue
7983                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
7984                 reg_jdk_home=$regvalue
7985             fi
7987             if test -f "$reg_jdk_home/lib/jvm.lib" -a -f "$reg_jdk_home/bin/java.exe"; then
7988                 with_jdk_home="$reg_jdk_home"
7989                 howfound="found automatically"
7990             else
7991                 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option pointing to a $WIN_HOST_BITS-bit JDK >= 9])
7992             fi
7993         else
7994             test "$build_os" = "cygwin" && with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
7995             howfound="you passed"
7996         fi
7997     fi
7999     # 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.
8000     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8001     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8002         with_jdk_home=`/usr/libexec/java_home`
8003     fi
8005     JAVA_HOME=; export JAVA_HOME
8006     if test -z "$with_jdk_home"; then
8007         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8008     else
8009         _java_path="$with_jdk_home/bin/$with_java"
8010         dnl Check if there is a Java interpreter at all.
8011         if test -x "$_java_path"; then
8012             JAVAINTERPRETER=$_java_path
8013         else
8014             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8015         fi
8016     fi
8018     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8019     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8020     dnl loaded by java to run JunitTests:
8021     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8022         shortjdkhome=`cygpath -d "$with_jdk_home"`
8023         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
8024             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8025             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8026         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
8027             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8028             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8029         fi
8031         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8032             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8033         fi
8034         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8035     elif test "$cross_compiling" != "yes"; then
8036         case $CPUNAME in
8037             AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8038                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8039                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8040                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8041                 fi
8042                 ;;
8043             *) # assumption: everything else 32-bit
8044                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8045                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8046                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8047                 fi
8048                 ;;
8049         esac
8050     fi
8053 dnl ===================================================================
8054 dnl Checks for JDK.
8055 dnl ===================================================================
8057 # Whether all the complexity here actually is needed any more or not, no idea.
8059 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8060     _gij_longver=0
8061     AC_MSG_CHECKING([the installed JDK])
8062     if test -n "$JAVAINTERPRETER"; then
8063         dnl java -version sends output to stderr!
8064         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8065             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8066         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8067             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8068         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8069             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8070         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8071             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8072         else
8073             JDK=sun
8075             dnl Sun JDK specific tests
8076             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8077             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8079             if test "$_jdk_ver" -lt 10900; then
8080                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8081             fi
8082             if test "$_jdk_ver" -gt 10900; then
8083                 JAVA_CLASSPATH_NOT_SET=TRUE
8084             fi
8086             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8087             if test "$_os" = "WINNT"; then
8088                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8089             fi
8090             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8092             # set to limit VM usage for JunitTests
8093             JAVAIFLAGS=-Xmx64M
8094             # set to limit VM usage for javac
8095             JAVACFLAGS=-J-Xmx128M
8096         fi
8097     else
8098         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8099     fi
8100 else
8101     if test -z "$ENABLE_JAVA"; then
8102         dnl Java disabled
8103         JAVA_HOME=
8104         export JAVA_HOME
8105     elif test "$cross_compiling" = "yes"; then
8106         # Just assume compatibility of build and host JDK
8107         JDK=$JDK_FOR_BUILD
8108         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8109     fi
8112 dnl ===================================================================
8113 dnl Checks for javac
8114 dnl ===================================================================
8115 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8116     javacompiler="javac"
8117     : ${JAVA_SOURCE_VER=8}
8118     : ${JAVA_TARGET_VER=8}
8119     if test -z "$with_jdk_home"; then
8120         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8121     else
8122         _javac_path="$with_jdk_home/bin/$javacompiler"
8123         dnl Check if there is a Java compiler at all.
8124         if test -x "$_javac_path"; then
8125             JAVACOMPILER=$_javac_path
8126         fi
8127     fi
8128     if test -z "$JAVACOMPILER"; then
8129         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8130     fi
8131     if test "$build_os" = "cygwin"; then
8132         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8133             JAVACOMPILER="${JAVACOMPILER}.exe"
8134         fi
8135         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8136     fi
8139 dnl ===================================================================
8140 dnl Checks for javadoc
8141 dnl ===================================================================
8142 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8143     if test -z "$with_jdk_home"; then
8144         AC_PATH_PROG(JAVADOC, javadoc)
8145     else
8146         _javadoc_path="$with_jdk_home/bin/javadoc"
8147         dnl Check if there is a javadoc at all.
8148         if test -x "$_javadoc_path"; then
8149             JAVADOC=$_javadoc_path
8150         else
8151             AC_PATH_PROG(JAVADOC, javadoc)
8152         fi
8153     fi
8154     if test -z "$JAVADOC"; then
8155         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8156     fi
8157     if test "$build_os" = "cygwin"; then
8158         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8159             JAVADOC="${JAVADOC}.exe"
8160         fi
8161         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8162     fi
8164     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8165     JAVADOCISGJDOC="yes"
8166     fi
8168 AC_SUBST(JAVADOC)
8169 AC_SUBST(JAVADOCISGJDOC)
8171 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8172     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8173     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8174         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8175            # try to recover first by looking whether we have an alternative
8176            # system as in Debian or newer SuSEs where following /usr/bin/javac
8177            # over /etc/alternatives/javac leads to the right bindir where we
8178            # just need to strip a bit away to get a valid JAVA_HOME
8179            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8180         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8181             # maybe only one level of symlink (e.g. on Mac)
8182             JAVA_HOME=$(readlink $JAVACOMPILER)
8183             if test "$(dirname $JAVA_HOME)" = "."; then
8184                 # we've got no path to trim back
8185                 JAVA_HOME=""
8186             fi
8187         else
8188             # else warn
8189             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8190             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8191             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8192             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8193         fi
8194         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8195         if test "$JAVA_HOME" != "/usr"; then
8196             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8197                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8198                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8199                 dnl Tiger already returns a JDK path...
8200                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8201             else
8202                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8203                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8204                 dnl that checks which version to run
8205                 if test -f "$JAVA_HOME"; then
8206                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8207                 fi
8208             fi
8209         fi
8210     fi
8211     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8213     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8214     if test -z "$JAVA_HOME"; then
8215         if test "x$with_jdk_home" = "x"; then
8216             cat > findhome.java <<_ACEOF
8217 [import java.io.File;
8219 class findhome
8221     public static void main(String args[])
8222     {
8223         String jrelocation = System.getProperty("java.home");
8224         File jre = new File(jrelocation);
8225         System.out.println(jre.getParent());
8226     }
8228 _ACEOF
8229             AC_MSG_CHECKING([if javac works])
8230             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8231             AC_TRY_EVAL(javac_cmd)
8232             if test $? = 0 -a -f ./findhome.class; then
8233                 AC_MSG_RESULT([javac works])
8234             else
8235                 echo "configure: javac test failed" >&5
8236                 cat findhome.java >&5
8237                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8238             fi
8239             AC_MSG_CHECKING([if gij knows its java.home])
8240             JAVA_HOME=`$JAVAINTERPRETER findhome`
8241             if test $? = 0 -a "$JAVA_HOME" != ""; then
8242                 AC_MSG_RESULT([$JAVA_HOME])
8243             else
8244                 echo "configure: java test failed" >&5
8245                 cat findhome.java >&5
8246                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8247             fi
8248             # clean-up after ourselves
8249             rm -f ./findhome.java ./findhome.class
8250         else
8251             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8252         fi
8253     fi
8255     # now check if $JAVA_HOME is really valid
8256     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8257         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8258             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8259             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8260             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8261             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8262             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8263             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8264         fi
8265     fi
8266     PathFormat "$JAVA_HOME"
8267     JAVA_HOME="$formatted_path"
8270 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8271     "$_os" != Darwin
8272 then
8273     AC_MSG_CHECKING([for JAWT lib])
8274     if test "$_os" = WINNT; then
8275         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8276         JAWTLIB=jawt.lib
8277     else
8278         case "$host_cpu" in
8279         arm*)
8280             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8281             JAVA_ARCH=$my_java_arch
8282             ;;
8283         i*86)
8284             my_java_arch=i386
8285             ;;
8286         m68k)
8287             my_java_arch=m68k
8288             ;;
8289         powerpc)
8290             my_java_arch=ppc
8291             ;;
8292         powerpc64)
8293             my_java_arch=ppc64
8294             ;;
8295         powerpc64le)
8296             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8297             JAVA_ARCH=$my_java_arch
8298             ;;
8299         sparc64)
8300             my_java_arch=sparcv9
8301             ;;
8302         x86_64)
8303             my_java_arch=amd64
8304             ;;
8305         *)
8306             my_java_arch=$host_cpu
8307             ;;
8308         esac
8309         # This is where JDK9 puts the library
8310         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8311             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8312         else
8313             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8314         fi
8315         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8316     fi
8317     AC_MSG_RESULT([$JAWTLIB])
8319 AC_SUBST(JAWTLIB)
8321 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8322     case "$host_os" in
8324     aix*)
8325         JAVAINC="-I$JAVA_HOME/include"
8326         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8327         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8328         ;;
8330     cygwin*|wsl*)
8331         JAVAINC="-I$JAVA_HOME/include/win32"
8332         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8333         ;;
8335     darwin*|macos*)
8336         if test -d "$JAVA_HOME/include/darwin"; then
8337             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8338         else
8339             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8340         fi
8341         ;;
8343     dragonfly*)
8344         JAVAINC="-I$JAVA_HOME/include"
8345         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8346         ;;
8348     freebsd*)
8349         JAVAINC="-I$JAVA_HOME/include"
8350         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8351         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8352         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8353         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8354         ;;
8356     k*bsd*-gnu*)
8357         JAVAINC="-I$JAVA_HOME/include"
8358         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8359         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8360         ;;
8362     linux-gnu*)
8363         JAVAINC="-I$JAVA_HOME/include"
8364         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8365         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8366         ;;
8368     *netbsd*)
8369         JAVAINC="-I$JAVA_HOME/include"
8370         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8371         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8372        ;;
8374     openbsd*)
8375         JAVAINC="-I$JAVA_HOME/include"
8376         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8377         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8378         ;;
8380     solaris*)
8381         JAVAINC="-I$JAVA_HOME/include"
8382         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8383         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8384         ;;
8385     esac
8387 SOLARINC="$SOLARINC $JAVAINC"
8389 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8390     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8391     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8392     JDK_FOR_BUILD=$JDK
8395 AC_SUBST(JAVACFLAGS)
8396 AC_SUBST(JAVACOMPILER)
8397 AC_SUBST(JAVAINTERPRETER)
8398 AC_SUBST(JAVAIFLAGS)
8399 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8400 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8401 AC_SUBST(JAVA_HOME)
8402 AC_SUBST(JAVA_HOME_FOR_BUILD)
8403 AC_SUBST(JDK)
8404 AC_SUBST(JDK_FOR_BUILD)
8405 AC_SUBST(JAVA_SOURCE_VER)
8406 AC_SUBST(JAVA_TARGET_VER)
8409 dnl ===================================================================
8410 dnl Export file validation
8411 dnl ===================================================================
8412 AC_MSG_CHECKING([whether to enable export file validation])
8413 if test "$with_export_validation" != "no"; then
8414     if test -z "$ENABLE_JAVA"; then
8415         if test "$with_export_validation" = "yes"; then
8416             AC_MSG_ERROR([requested, but Java is disabled])
8417         else
8418             AC_MSG_RESULT([no, as Java is disabled])
8419         fi
8420     elif ! test -d "${SRC_ROOT}/schema"; then
8421         if test "$with_export_validation" = "yes"; then
8422             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8423         else
8424             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8425         fi
8426     else
8427         AC_MSG_RESULT([yes])
8428         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8430         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8431         if test -z "$ODFVALIDATOR"; then
8432             # remember to download the ODF toolkit with validator later
8433             AC_MSG_NOTICE([no odfvalidator found, will download it])
8434             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8435             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8437             # and fetch name of odfvalidator jar name from download.lst
8438             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8439             AC_SUBST(ODFVALIDATOR_JAR)
8441             if test -z "$ODFVALIDATOR_JAR"; then
8442                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8443             fi
8444         fi
8445         if test "$build_os" = "cygwin"; then
8446             # In case of Cygwin it will be executed from Windows,
8447             # so we need to run bash and absolute path to validator
8448             # so instead of "odfvalidator" it will be
8449             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8450             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8451         else
8452             ODFVALIDATOR="sh $ODFVALIDATOR"
8453         fi
8454         AC_SUBST(ODFVALIDATOR)
8457         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8458         if test -z "$OFFICEOTRON"; then
8459             # remember to download the officeotron with validator later
8460             AC_MSG_NOTICE([no officeotron found, will download it])
8461             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8462             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8464             # and fetch name of officeotron jar name from download.lst
8465             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8466             AC_SUBST(OFFICEOTRON_JAR)
8468             if test -z "$OFFICEOTRON_JAR"; then
8469                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8470             fi
8471         else
8472             # check version of existing officeotron
8473             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8474             if test 0"$OFFICEOTRON_VER" -lt 704; then
8475                 AC_MSG_ERROR([officeotron too old])
8476             fi
8477         fi
8478         if test "$build_os" = "cygwin"; then
8479             # In case of Cygwin it will be executed from Windows,
8480             # so we need to run bash and absolute path to validator
8481             # so instead of "odfvalidator" it will be
8482             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8483             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8484         else
8485             OFFICEOTRON="sh $OFFICEOTRON"
8486         fi
8487     fi
8488     AC_SUBST(OFFICEOTRON)
8489 else
8490     AC_MSG_RESULT([no])
8493 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8494 if test "$with_bffvalidator" != "no"; then
8495     AC_DEFINE(HAVE_BFFVALIDATOR)
8497     if test "$with_export_validation" = "no"; then
8498         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8499     fi
8501     if test "$with_bffvalidator" = "yes"; then
8502         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8503     else
8504         BFFVALIDATOR="$with_bffvalidator"
8505     fi
8507     if test "$build_os" = "cygwin"; then
8508         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8509             AC_MSG_RESULT($BFFVALIDATOR)
8510         else
8511             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8512         fi
8513     elif test -n "$BFFVALIDATOR"; then
8514         # We are not in Cygwin but need to run Windows binary with wine
8515         AC_PATH_PROGS(WINE, wine)
8517         # so swap in a shell wrapper that converts paths transparently
8518         BFFVALIDATOR_EXE="$BFFVALIDATOR"
8519         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8520         AC_SUBST(BFFVALIDATOR_EXE)
8521         AC_MSG_RESULT($BFFVALIDATOR)
8522     else
8523         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8524     fi
8525     AC_SUBST(BFFVALIDATOR)
8526 else
8527     AC_MSG_RESULT([no])
8530 dnl ===================================================================
8531 dnl Check for C preprocessor to use
8532 dnl ===================================================================
8533 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8534 if test -n "$with_idlc_cpp"; then
8535     AC_MSG_RESULT([$with_idlc_cpp])
8536     AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8537 else
8538     AC_MSG_RESULT([ucpp])
8539     AC_MSG_CHECKING([which ucpp tp use])
8540     if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8541         AC_MSG_RESULT([external])
8542         AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8543     else
8544         AC_MSG_RESULT([internal])
8545         BUILD_TYPE="$BUILD_TYPE UCPP"
8546     fi
8548 AC_SUBST(SYSTEM_UCPP)
8550 dnl ===================================================================
8551 dnl Check for epm (not needed for Windows)
8552 dnl ===================================================================
8553 AC_MSG_CHECKING([whether to enable EPM for packing])
8554 if test "$enable_epm" = "yes"; then
8555     AC_MSG_RESULT([yes])
8556     if test "$_os" != "WINNT"; then
8557         if test $_os = Darwin; then
8558             EPM=internal
8559         elif test -n "$with_epm"; then
8560             EPM=$with_epm
8561         else
8562             AC_PATH_PROG(EPM, epm, no)
8563         fi
8564         if test "$EPM" = "no" -o "$EPM" = "internal"; then
8565             AC_MSG_NOTICE([EPM will be built.])
8566             BUILD_TYPE="$BUILD_TYPE EPM"
8567             EPM=${WORKDIR}/UnpackedTarball/epm/epm
8568         else
8569             # Gentoo has some epm which is something different...
8570             AC_MSG_CHECKING([whether the found epm is the right epm])
8571             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8572                 AC_MSG_RESULT([yes])
8573             else
8574                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8575             fi
8576             AC_MSG_CHECKING([epm version])
8577             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8578             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8579                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8580                 AC_MSG_RESULT([OK, >= 3.7])
8581             else
8582                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8583                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8584             fi
8585         fi
8586     fi
8588     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8589         AC_MSG_CHECKING([for rpm])
8590         for a in "$RPM" rpmbuild rpm; do
8591             $a --usage >/dev/null 2> /dev/null
8592             if test $? -eq 0; then
8593                 RPM=$a
8594                 break
8595             else
8596                 $a --version >/dev/null 2> /dev/null
8597                 if test $? -eq 0; then
8598                     RPM=$a
8599                     break
8600                 fi
8601             fi
8602         done
8603         if test -z "$RPM"; then
8604             AC_MSG_ERROR([not found])
8605         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8606             RPM_PATH=`which $RPM`
8607             AC_MSG_RESULT([$RPM_PATH])
8608             SCPDEFS="$SCPDEFS -DWITH_RPM"
8609         else
8610             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8611         fi
8612     fi
8613     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8614         AC_PATH_PROG(DPKG, dpkg, no)
8615         if test "$DPKG" = "no"; then
8616             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8617         fi
8618     fi
8619     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8620        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8621         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8622             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8623                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8624                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8625                     AC_MSG_RESULT([yes])
8626                 else
8627                     AC_MSG_RESULT([no])
8628                     if echo "$PKGFORMAT" | $GREP -q rpm; then
8629                         _pt="rpm"
8630                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8631                         add_warning "the rpms will need to be installed with --nodeps"
8632                     else
8633                         _pt="pkg"
8634                     fi
8635                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
8636                     add_warning "the ${_pt}s will not be relocatable"
8637                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
8638                                  relocation will work, you need to patch your epm with the
8639                                  patch in epm/epm-3.7.patch or build with
8640                                  --with-epm=internal which will build a suitable epm])
8641                 fi
8642             fi
8643         fi
8644     fi
8645     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8646         AC_PATH_PROG(PKGMK, pkgmk, no)
8647         if test "$PKGMK" = "no"; then
8648             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8649         fi
8650     fi
8651     AC_SUBST(RPM)
8652     AC_SUBST(DPKG)
8653     AC_SUBST(PKGMK)
8654 else
8655     for i in $PKGFORMAT; do
8656         case "$i" in
8657         aix | bsd | deb | pkg | rpm | native | portable)
8658             AC_MSG_ERROR(
8659                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8660             ;;
8661         esac
8662     done
8663     AC_MSG_RESULT([no])
8664     EPM=NO
8666 AC_SUBST(EPM)
8668 ENABLE_LWP=
8669 if test "$enable_lotuswordpro" = "yes"; then
8670     ENABLE_LWP="TRUE"
8672 AC_SUBST(ENABLE_LWP)
8674 dnl ===================================================================
8675 dnl Check for building ODK
8676 dnl ===================================================================
8677 if test "$enable_odk" = no; then
8678     unset DOXYGEN
8679 else
8680     if test "$with_doxygen" = no; then
8681         AC_MSG_CHECKING([for doxygen])
8682         unset DOXYGEN
8683         AC_MSG_RESULT([no])
8684     else
8685         if test "$with_doxygen" = yes; then
8686             AC_PATH_PROG([DOXYGEN], [doxygen])
8687             if test -z "$DOXYGEN"; then
8688                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8689             fi
8690             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8691                 if ! dot -V 2>/dev/null; then
8692                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8693                 fi
8694             fi
8695         else
8696             AC_MSG_CHECKING([for doxygen])
8697             DOXYGEN=$with_doxygen
8698             AC_MSG_RESULT([$DOXYGEN])
8699         fi
8700         if test -n "$DOXYGEN"; then
8701             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8702             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8703             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8704                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8705             fi
8706         fi
8707     fi
8709 AC_SUBST([DOXYGEN])
8711 AC_MSG_CHECKING([whether to build the ODK])
8712 if test "$enable_odk" = "" -o "$enable_odk" != "no"; then
8713     AC_MSG_RESULT([yes])
8714     BUILD_TYPE="$BUILD_TYPE ODK"
8715 else
8716     AC_MSG_RESULT([no])
8719 dnl ===================================================================
8720 dnl Check for system zlib
8721 dnl ===================================================================
8722 if test "$with_system_zlib" = "auto"; then
8723     case "$_os" in
8724     WINNT)
8725         with_system_zlib="$with_system_libs"
8726         ;;
8727     *)
8728         if test "$enable_fuzzers" != "yes"; then
8729             with_system_zlib=yes
8730         else
8731             with_system_zlib=no
8732         fi
8733         ;;
8734     esac
8737 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8738 dnl and has no pkg-config for it at least on some tinderboxes,
8739 dnl so leaving that out for now
8740 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8741 AC_MSG_CHECKING([which zlib to use])
8742 if test "$with_system_zlib" = "yes"; then
8743     AC_MSG_RESULT([external])
8744     SYSTEM_ZLIB=TRUE
8745     AC_CHECK_HEADER(zlib.h, [],
8746         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8747     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8748         [AC_MSG_ERROR(zlib not found or functional)], [])
8749 else
8750     AC_MSG_RESULT([internal])
8751     SYSTEM_ZLIB=
8752     BUILD_TYPE="$BUILD_TYPE ZLIB"
8753     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
8754     ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
8756 AC_SUBST(ZLIB_CFLAGS)
8757 AC_SUBST(ZLIB_LIBS)
8758 AC_SUBST(SYSTEM_ZLIB)
8760 dnl ===================================================================
8761 dnl Check for system jpeg
8762 dnl ===================================================================
8763 AC_MSG_CHECKING([which libjpeg to use])
8764 if test "$with_system_jpeg" = "yes"; then
8765     AC_MSG_RESULT([external])
8766     SYSTEM_LIBJPEG=TRUE
8767     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
8768         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
8769     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
8770         [AC_MSG_ERROR(jpeg library not found or functional)], [])
8771 else
8772     SYSTEM_LIBJPEG=
8773     AC_MSG_RESULT([internal, libjpeg-turbo])
8774     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
8775     LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo"
8776     if test "$COM" = "MSC"; then
8777         LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib"
8778     else
8779         LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg"
8780     fi
8782     case "$host_cpu" in
8783     x86_64 | amd64 | i*86 | x86 | ia32)
8784         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
8785         if test -z "$NASM" -a "$build_os" = "cygwin"; then
8786             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
8787                 NASM="$LODE_HOME/opt/bin/nasm"
8788             elif test -x "/opt/lo/bin/nasm"; then
8789                 NASM="/opt/lo/bin/nasm"
8790             fi
8791         fi
8793         if test -n "$NASM"; then
8794             AC_MSG_CHECKING([for object file format of host system])
8795             case "$host_os" in
8796               cygwin* | mingw* | pw32* | wsl*)
8797                 case "$host_cpu" in
8798                   x86_64)
8799                     objfmt='Win64-COFF'
8800                     ;;
8801                   *)
8802                     objfmt='Win32-COFF'
8803                     ;;
8804                 esac
8805               ;;
8806               msdosdjgpp* | go32*)
8807                 objfmt='COFF'
8808               ;;
8809               os2-emx*) # not tested
8810                 objfmt='MSOMF' # obj
8811               ;;
8812               linux*coff* | linux*oldld*)
8813                 objfmt='COFF' # ???
8814               ;;
8815               linux*aout*)
8816                 objfmt='a.out'
8817               ;;
8818               linux*)
8819                 case "$host_cpu" in
8820                   x86_64)
8821                     objfmt='ELF64'
8822                     ;;
8823                   *)
8824                     objfmt='ELF'
8825                     ;;
8826                 esac
8827               ;;
8828               kfreebsd* | freebsd* | netbsd* | openbsd*)
8829                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
8830                   objfmt='BSD-a.out'
8831                 else
8832                   case "$host_cpu" in
8833                     x86_64 | amd64)
8834                       objfmt='ELF64'
8835                       ;;
8836                     *)
8837                       objfmt='ELF'
8838                       ;;
8839                   esac
8840                 fi
8841               ;;
8842               solaris* | sunos* | sysv* | sco*)
8843                 case "$host_cpu" in
8844                   x86_64)
8845                     objfmt='ELF64'
8846                     ;;
8847                   *)
8848                     objfmt='ELF'
8849                     ;;
8850                 esac
8851               ;;
8852               darwin* | rhapsody* | nextstep* | openstep* | macos*)
8853                 case "$host_cpu" in
8854                   x86_64)
8855                     objfmt='Mach-O64'
8856                     ;;
8857                   *)
8858                     objfmt='Mach-O'
8859                     ;;
8860                 esac
8861               ;;
8862               *)
8863                 objfmt='ELF ?'
8864               ;;
8865             esac
8867             AC_MSG_RESULT([$objfmt])
8868             if test "$objfmt" = 'ELF ?'; then
8869               objfmt='ELF'
8870               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
8871             fi
8873             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
8874             case "$objfmt" in
8875               MSOMF)      NAFLAGS='-fobj -DOBJ32';;
8876               Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
8877               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
8878               COFF)       NAFLAGS='-fcoff -DCOFF';;
8879               a.out)      NAFLAGS='-faout -DAOUT';;
8880               BSD-a.out)  NAFLAGS='-faoutb -DAOUT';;
8881               ELF)        NAFLAGS='-felf -DELF';;
8882               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__';;
8883               RDF)        NAFLAGS='-frdf -DRDF';;
8884               Mach-O)     NAFLAGS='-fmacho -DMACHO';;
8885               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
8886             esac
8887             AC_MSG_RESULT([$NAFLAGS])
8889             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
8890             cat > conftest.asm << EOF
8891             [%line __oline__ "configure"
8892                     section .text
8893                     global  _main,main
8894             _main:
8895             main:   xor     eax,eax
8896                     ret
8897             ]
8899             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
8900             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
8901               AC_MSG_RESULT(yes)
8902             else
8903               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
8904               cat conftest.asm >&AS_MESSAGE_LOG_FD
8905               rm -rf conftest*
8906               AC_MSG_RESULT(no)
8907               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
8908               NASM=""
8909             fi
8911         fi
8913         if test -z "$NASM"; then
8914 cat << _EOS
8915 ****************************************************************************
8916 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
8917 To get one please:
8919 _EOS
8920             if test "$build_os" = "cygwin"; then
8921 cat << _EOS
8922 install a pre-compiled binary for Win32
8924 mkdir -p /opt/lo/bin
8925 cd /opt/lo/bin
8926 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
8927 chmod +x nasm
8929 or get and install one from http://www.nasm.us/
8931 Then re-run autogen.sh
8933 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
8934 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
8936 _EOS
8937             else
8938 cat << _EOS
8939 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
8941 _EOS
8942             fi
8943             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
8944             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
8945         fi
8946       ;;
8947     esac
8950 AC_SUBST(NASM)
8951 AC_SUBST(LIBJPEG_CFLAGS)
8952 AC_SUBST(LIBJPEG_LIBS)
8953 AC_SUBST(SYSTEM_LIBJPEG)
8955 dnl ===================================================================
8956 dnl Check for system clucene
8957 dnl ===================================================================
8958 dnl we should rather be using
8959 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
8960 dnl but the contribs-lib check seems tricky
8961 AC_MSG_CHECKING([which clucene to use])
8962 if test "$with_system_clucene" = "yes"; then
8963     AC_MSG_RESULT([external])
8964     SYSTEM_CLUCENE=TRUE
8965     PKG_CHECK_MODULES(CLUCENE, libclucene-core)
8966     CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
8967     FilterLibs "${CLUCENE_LIBS}"
8968     CLUCENE_LIBS="${filteredlibs}"
8969     AC_LANG_PUSH([C++])
8970     save_CXXFLAGS=$CXXFLAGS
8971     save_CPPFLAGS=$CPPFLAGS
8972     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
8973     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
8974     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
8975     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
8976     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
8977                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
8978     CXXFLAGS=$save_CXXFLAGS
8979     CPPFLAGS=$save_CPPFLAGS
8980     AC_LANG_POP([C++])
8982     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
8983 else
8984     AC_MSG_RESULT([internal])
8985     SYSTEM_CLUCENE=
8986     BUILD_TYPE="$BUILD_TYPE CLUCENE"
8988 AC_SUBST(SYSTEM_CLUCENE)
8989 AC_SUBST(CLUCENE_CFLAGS)
8990 AC_SUBST(CLUCENE_LIBS)
8992 dnl ===================================================================
8993 dnl Check for system expat
8994 dnl ===================================================================
8995 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
8997 dnl ===================================================================
8998 dnl Check for system xmlsec
8999 dnl ===================================================================
9000 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9002 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9003 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9004     ENABLE_EOT="TRUE"
9005     AC_DEFINE([ENABLE_EOT])
9006     AC_MSG_RESULT([yes])
9008     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9009 else
9010     ENABLE_EOT=
9011     AC_MSG_RESULT([no])
9013 AC_SUBST([ENABLE_EOT])
9015 dnl ===================================================================
9016 dnl Check for DLP libs
9017 dnl ===================================================================
9018 AS_IF([test "$COM" = "MSC"],
9019       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9020       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9022 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9024 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9026 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9028 AS_IF([test "$COM" = "MSC"],
9029       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9030       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9032 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9034 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9036 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9037 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9039 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9041 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9043 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9045 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9046 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.17])
9048 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9049 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
9051 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9053 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9054 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9056 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9058 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9060 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9062 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9064 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9065 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9067 dnl ===================================================================
9068 dnl Check for system lcms2
9069 dnl ===================================================================
9070 if test "$with_system_lcms2" != "yes"; then
9071     SYSTEM_LCMS2=
9073 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9074 if test "$GCC" = "yes"; then
9075     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9077 if test "$COM" = "MSC"; then # override the above
9078     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9081 dnl ===================================================================
9082 dnl Check for system cppunit
9083 dnl ===================================================================
9084 if test "$_os" != "Android" ; then
9085     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9088 dnl ===================================================================
9089 dnl Check whether freetype is available
9090 dnl ===================================================================
9091 if test  "$test_freetype" = "yes"; then
9092     AC_MSG_CHECKING([whether freetype is available])
9093     # FreeType has 3 different kinds of versions
9094     # * release, like 2.4.10
9095     # * libtool, like 13.0.7 (this what pkg-config returns)
9096     # * soname
9097     # FreeType's docs/VERSION.DLL provides a table mapping between the three
9098     #
9099     # 9.9.3 is 2.2.0
9100     PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9101     FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9102     FilterLibs "${FREETYPE_LIBS}"
9103     FREETYPE_LIBS="${filteredlibs}"
9104     SYSTEM_FREETYPE=TRUE
9105 else
9106     FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9107     if test "x$ac_config_site_64bit_host" = xYES; then
9108         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9109     else
9110         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9111     fi
9113 AC_SUBST(FREETYPE_CFLAGS)
9114 AC_SUBST(FREETYPE_LIBS)
9115 AC_SUBST([SYSTEM_FREETYPE])
9117 # ===================================================================
9118 # Check for system libxslt
9119 # to prevent incompatibilities between internal libxml2 and external libxslt,
9120 # or vice versa, use with_system_libxml here
9121 # ===================================================================
9122 if test "$with_system_libxml" = "auto"; then
9123     case "$_os" in
9124     WINNT|iOS|Android)
9125         with_system_libxml="$with_system_libs"
9126         ;;
9127     *)
9128         if test "$enable_fuzzers" != "yes"; then
9129             with_system_libxml=yes
9130         else
9131             with_system_libxml=no
9132         fi
9133         ;;
9134     esac
9137 AC_MSG_CHECKING([which libxslt to use])
9138 if test "$with_system_libxml" = "yes"; then
9139     AC_MSG_RESULT([external])
9140     SYSTEM_LIBXSLT=TRUE
9141     if test "$_os" = "Darwin"; then
9142         dnl make sure to use SDK path
9143         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9144         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9145         dnl omit -L/usr/lib
9146         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9147         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9148     else
9149         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9150         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9151         FilterLibs "${LIBXSLT_LIBS}"
9152         LIBXSLT_LIBS="${filteredlibs}"
9153         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9154         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9155         FilterLibs "${LIBEXSLT_LIBS}"
9156         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9157     fi
9159     dnl Check for xsltproc
9160     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9161     if test "$XSLTPROC" = "no"; then
9162         AC_MSG_ERROR([xsltproc is required])
9163     fi
9164 else
9165     AC_MSG_RESULT([internal])
9166     SYSTEM_LIBXSLT=
9167     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9169 AC_SUBST(SYSTEM_LIBXSLT)
9170 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9171     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9173 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9175 AC_SUBST(LIBEXSLT_CFLAGS)
9176 AC_SUBST(LIBEXSLT_LIBS)
9177 AC_SUBST(LIBXSLT_CFLAGS)
9178 AC_SUBST(LIBXSLT_LIBS)
9179 AC_SUBST(XSLTPROC)
9181 # ===================================================================
9182 # Check for system libxml
9183 # ===================================================================
9184 AC_MSG_CHECKING([which libxml to use])
9185 if test "$with_system_libxml" = "yes"; then
9186     AC_MSG_RESULT([external])
9187     SYSTEM_LIBXML=TRUE
9188     if test "$_os" = "Darwin"; then
9189         dnl make sure to use SDK path
9190         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9191         dnl omit -L/usr/lib
9192         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9193     elif test $_os = iOS; then
9194         dnl make sure to use SDK path
9195         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9196         LIBXML_CFLAGS="-I$usr/include/libxml2"
9197         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9198     else
9199         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9200         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9201         FilterLibs "${LIBXML_LIBS}"
9202         LIBXML_LIBS="${filteredlibs}"
9203     fi
9205     dnl Check for xmllint
9206     AC_PATH_PROG(XMLLINT, xmllint, no)
9207     if test "$XMLLINT" = "no"; then
9208         AC_MSG_ERROR([xmllint is required])
9209     fi
9210 else
9211     AC_MSG_RESULT([internal])
9212     SYSTEM_LIBXML=
9213     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9214     if test "$COM" = "MSC"; then
9215         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9216     fi
9217     if test "$COM" = "MSC"; then
9218         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9219     else
9220         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9221         if test "$_os" = Android; then
9222             LIBXML_LIBS="$LIBXML_LIBS -lm"
9223         fi
9224     fi
9225     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9227 AC_SUBST(SYSTEM_LIBXML)
9228 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9229     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9231 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9232 AC_SUBST(LIBXML_CFLAGS)
9233 AC_SUBST(LIBXML_LIBS)
9234 AC_SUBST(XMLLINT)
9236 # =====================================================================
9237 # Checking for a Python interpreter with version >= 3.3.
9238 # Optionally user can pass an option to configure, i. e.
9239 # ./configure PYTHON=/usr/bin/python
9240 # =====================================================================
9241 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9242     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9243     # unless PYTHON is defined as above which allows 'system'
9244     enable_python=internal
9246 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9247     if test -n "$PYTHON"; then
9248         PYTHON_FOR_BUILD=$PYTHON
9249     else
9250         # This allows a lack of system python with no error, we use internal one in that case.
9251         AM_PATH_PYTHON([3.3],, [:])
9252         # Clean PYTHON_VERSION checked below if cross-compiling
9253         PYTHON_VERSION=""
9254         if test "$PYTHON" != ":"; then
9255             PYTHON_FOR_BUILD=$PYTHON
9256         fi
9257     fi
9259 AC_SUBST(PYTHON_FOR_BUILD)
9261 # Checks for Python to use for Pyuno
9262 AC_MSG_CHECKING([which Python to use for Pyuno])
9263 case "$enable_python" in
9264 no|disable)
9265     if test -z $PYTHON_FOR_BUILD; then
9266         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9267         # requirement from the choice whether to include Python stuff in the installer, but why
9268         # bother?
9269         AC_MSG_ERROR([Python is required at build time.])
9270     fi
9271     enable_python=no
9272     AC_MSG_RESULT([none])
9273     ;;
9274 ""|yes|auto)
9275     if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9276         AC_MSG_RESULT([no, overridden by --disable-scripting])
9277         enable_python=no
9278     elif test $build_os = cygwin; then
9279         dnl When building on Windows we don't attempt to use any installed
9280         dnl "system"  Python.
9281         AC_MSG_RESULT([fully internal])
9282         enable_python=internal
9283     elif test "$cross_compiling" = yes; then
9284         AC_MSG_RESULT([system])
9285         enable_python=system
9286     else
9287         # Unset variables set by the above AM_PATH_PYTHON so that
9288         # we actually do check anew.
9289         AC_MSG_RESULT([])
9290         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
9291         AM_PATH_PYTHON([3.3],, [:])
9292         AC_MSG_CHECKING([which Python to use for Pyuno])
9293         if test "$PYTHON" = ":"; then
9294             if test -z "$PYTHON_FOR_BUILD"; then
9295                 AC_MSG_RESULT([fully internal])
9296             else
9297                 AC_MSG_RESULT([internal])
9298             fi
9299             enable_python=internal
9300         else
9301             AC_MSG_RESULT([system])
9302             enable_python=system
9303         fi
9304     fi
9305     ;;
9306 internal)
9307     AC_MSG_RESULT([internal])
9308     ;;
9309 fully-internal)
9310     AC_MSG_RESULT([fully internal])
9311     enable_python=internal
9312     ;;
9313 system)
9314     AC_MSG_RESULT([system])
9315     if test "$_os" = Darwin -a -z "$PYTHON"; then
9316         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9317     fi
9318     ;;
9320     AC_MSG_ERROR([Incorrect --enable-python option])
9321     ;;
9322 esac
9324 if test $enable_python != no; then
9325     BUILD_TYPE="$BUILD_TYPE PYUNO"
9328 if test $enable_python = system; then
9329     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9330         # Fallback: Accept these in the environment, or as set above
9331         # for MacOSX.
9332         :
9333     elif test "$cross_compiling" != yes; then
9334         # Unset variables set by the above AM_PATH_PYTHON so that
9335         # we actually do check anew.
9336         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
9337         # This causes an error if no python command is found
9338         AM_PATH_PYTHON([3.3])
9339         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9340         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9341         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9342         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9343         if test -z "$PKG_CONFIG"; then
9344             PYTHON_CFLAGS="-I$python_include"
9345             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9346         elif $PKG_CONFIG --exists python-$python_version-embed; then
9347             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9348             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9349         elif $PKG_CONFIG --exists python-$python_version; then
9350             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9351             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9352         else
9353             PYTHON_CFLAGS="-I$python_include"
9354             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9355         fi
9356         FilterLibs "${PYTHON_LIBS}"
9357         PYTHON_LIBS="${filteredlibs}"
9358     else
9359         dnl How to find out the cross-compilation Python installation path?
9360         AC_MSG_CHECKING([for python version])
9361         AS_IF([test -n "$PYTHON_VERSION"],
9362               [AC_MSG_RESULT([$PYTHON_VERSION])],
9363               [AC_MSG_RESULT([not found])
9364                AC_MSG_ERROR([no usable python found])])
9365         test -n "$PYTHON_CFLAGS" && break
9366     fi
9368     dnl Check if the headers really work
9369     save_CPPFLAGS="$CPPFLAGS"
9370     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9371     AC_CHECK_HEADER(Python.h)
9372     CPPFLAGS="$save_CPPFLAGS"
9374     # let the PYTHON_FOR_BUILD match the same python installation that
9375     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9376     # better for PythonTests.
9377     PYTHON_FOR_BUILD=$PYTHON
9380 if test "$with_lxml" != no; then
9381     if test -z "$PYTHON_FOR_BUILD"; then
9382         case $build_os in
9383             cygwin)
9384                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9385                 ;;
9386             *)
9387                 if test "$cross_compiling" != yes ; then
9388                     BUILD_TYPE="$BUILD_TYPE LXML"
9389                 fi
9390                 ;;
9391         esac
9392     else
9393         AC_MSG_CHECKING([for python lxml])
9394         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9395             AC_MSG_RESULT([yes])
9396         else
9397             case $build_os in
9398                 cygwin)
9399                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9400                     ;;
9401                 *)
9402                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9403                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9404                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9405                         else
9406                             BUILD_TYPE="$BUILD_TYPE LXML"
9407                             AC_MSG_RESULT([no, using internal lxml])
9408                         fi
9409                     else
9410                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9411                     fi
9412                     ;;
9413             esac
9414         fi
9415     fi
9418 dnl By now enable_python should be "system", "internal" or "no"
9419 case $enable_python in
9420 system)
9421     SYSTEM_PYTHON=TRUE
9423     if test "x$ac_cv_header_Python_h" != "xyes"; then
9424        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9425     fi
9427     AC_LANG_PUSH(C)
9428     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9429     AC_MSG_CHECKING([for correct python library version])
9430        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9431 #include <Python.h>
9433 int main(int argc, char **argv) {
9434    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9435    else return 1;
9437        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9438     AC_LANG_POP(C)
9440     dnl FIXME Check if the Python library can be linked with, too?
9441     ;;
9443 internal)
9444     SYSTEM_PYTHON=
9445     PYTHON_VERSION_MAJOR=3
9446     PYTHON_VERSION_MINOR=8
9447     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.4
9448     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9449         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9450     fi
9451     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9452     BUILD_TYPE="$BUILD_TYPE PYTHON"
9453     if test "$OS" = LINUX -o "$OS" = WNT ; then
9454         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9455     fi
9456     # Embedded Python dies without Home set
9457     if test "$HOME" = ""; then
9458         export HOME=""
9459     fi
9460     ;;
9462     DISABLE_PYTHON=TRUE
9463     SYSTEM_PYTHON=
9464     ;;
9466     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9467     ;;
9468 esac
9470 AC_SUBST(DISABLE_PYTHON)
9471 AC_SUBST(SYSTEM_PYTHON)
9472 AC_SUBST(PYTHON_CFLAGS)
9473 AC_SUBST(PYTHON_LIBS)
9474 AC_SUBST(PYTHON_VERSION)
9475 AC_SUBST(PYTHON_VERSION_MAJOR)
9476 AC_SUBST(PYTHON_VERSION_MINOR)
9478 AC_MSG_CHECKING([whether to build LibreLogo])
9479 case "$enable_python" in
9480 no|disable)
9481     AC_MSG_RESULT([no; Python disabled])
9482     ;;
9484     if test "${enable_librelogo}" = "no"; then
9485         AC_MSG_RESULT([no])
9486     else
9487         AC_MSG_RESULT([yes])
9488         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
9489         AC_DEFINE([ENABLE_LIBRELOGO],1)
9490     fi
9491     ;;
9492 esac
9493 AC_SUBST(ENABLE_LIBRELOGO)
9495 ENABLE_MARIADBC=
9496 MARIADBC_MAJOR=1
9497 MARIADBC_MINOR=0
9498 MARIADBC_MICRO=2
9499 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9500 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9501     ENABLE_MARIADBC=TRUE
9502     AC_MSG_RESULT([yes])
9503     BUILD_TYPE="$BUILD_TYPE MARIADBC"
9504 else
9505     AC_MSG_RESULT([no])
9507 AC_SUBST(ENABLE_MARIADBC)
9508 AC_SUBST(MARIADBC_MAJOR)
9509 AC_SUBST(MARIADBC_MINOR)
9510 AC_SUBST(MARIADBC_MICRO)
9512 if test "$ENABLE_MARIADBC" = "TRUE"; then
9513     dnl ===================================================================
9514     dnl Check for system MariaDB
9515     dnl ===================================================================
9516     AC_MSG_CHECKING([which MariaDB to use])
9517     if test "$with_system_mariadb" = "yes"; then
9518         AC_MSG_RESULT([external])
9519         SYSTEM_MARIADB_CONNECTOR_C=TRUE
9520         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9521         if test -z "$MARIADBCONFIG"; then
9522             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9523             if test -z "$MARIADBCONFIG"; then
9524                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9525                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9526             fi
9527         fi
9528         AC_MSG_CHECKING([MariaDB version])
9529         MARIADB_VERSION=`$MARIADBCONFIG --version`
9530         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9531         if test "$MARIADB_MAJOR" -ge "5"; then
9532             AC_MSG_RESULT([OK])
9533         else
9534             AC_MSG_ERROR([too old, use 5.0.x or later])
9535         fi
9536         AC_MSG_CHECKING([for MariaDB Client library])
9537         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9538         if test "$COM_IS_CLANG" = TRUE; then
9539             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9540         fi
9541         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9542         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9543         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9544         dnl linux32:
9545         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9546             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9547             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9548                 | sed -e 's|/lib64/|/lib/|')
9549         fi
9550         FilterLibs "${MARIADB_LIBS}"
9551         MARIADB_LIBS="${filteredlibs}"
9552         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9553         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9554         if test "$enable_bundle_mariadb" = "yes"; then
9555             AC_MSG_RESULT([yes])
9556             BUNDLE_MARIADB_CONNECTOR_C=TRUE
9557             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9559 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9561 /g' | grep -E '(mysqlclient|mariadb)')
9562             if test "$_os" = "Darwin"; then
9563                 LIBMARIADB=${LIBMARIADB}.dylib
9564             elif test "$_os" = "WINNT"; then
9565                 LIBMARIADB=${LIBMARIADB}.dll
9566             else
9567                 LIBMARIADB=${LIBMARIADB}.so
9568             fi
9569             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9570             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9571             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9572                 AC_MSG_RESULT([found.])
9573                 PathFormat "$LIBMARIADB_PATH"
9574                 LIBMARIADB_PATH="$formatted_path"
9575             else
9576                 AC_MSG_ERROR([not found.])
9577             fi
9578         else
9579             AC_MSG_RESULT([no])
9580             BUNDLE_MARIADB_CONNECTOR_C=
9581         fi
9582     else
9583         AC_MSG_RESULT([internal])
9584         SYSTEM_MARIADB_CONNECTOR_C=
9585         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9586         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9587         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9588     fi
9590     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9591     AC_SUBST(MARIADB_CFLAGS)
9592     AC_SUBST(MARIADB_LIBS)
9593     AC_SUBST(LIBMARIADB)
9594     AC_SUBST(LIBMARIADB_PATH)
9595     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9598 dnl ===================================================================
9599 dnl Check for system hsqldb
9600 dnl ===================================================================
9601 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9602     HSQLDB_USE_JDBC_4_1=
9603     AC_MSG_CHECKING([which hsqldb to use])
9604     if test "$with_system_hsqldb" = "yes"; then
9605         AC_MSG_RESULT([external])
9606         SYSTEM_HSQLDB=TRUE
9607         if test -z $HSQLDB_JAR; then
9608             HSQLDB_JAR=/usr/share/java/hsqldb.jar
9609         fi
9610         if ! test -f $HSQLDB_JAR; then
9611                AC_MSG_ERROR(hsqldb.jar not found.)
9612         fi
9613         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9614         export HSQLDB_JAR
9615         if $PERL -e \
9616            'use Archive::Zip;
9617             my $file = "$ENV{'HSQLDB_JAR'}";
9618             my $zip = Archive::Zip->new( $file );
9619             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9620             if ( $mf =~ m/Specification-Version: 1.8.*/ )
9621             {
9622                 push @l, split(/\n/, $mf);
9623                 foreach my $line (@l)
9624                 {
9625                     if ($line =~ m/Specification-Version:/)
9626                     {
9627                         ($t, $version) = split (/:/,$line);
9628                         $version =~ s/^\s//;
9629                         ($a, $b, $c, $d) = split (/\./,$version);
9630                         if ($c == "0" && $d > "8")
9631                         {
9632                             exit 0;
9633                         }
9634                         else
9635                         {
9636                             exit 1;
9637                         }
9638                     }
9639                 }
9640             }
9641             else
9642             {
9643                 exit 1;
9644             }'; then
9645             AC_MSG_RESULT([yes])
9646         else
9647             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9648         fi
9649     else
9650         AC_MSG_RESULT([internal])
9651         SYSTEM_HSQLDB=
9652         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9653         NEED_ANT=TRUE
9654         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9655         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9656         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9657             AC_MSG_RESULT([yes])
9658             HSQLDB_USE_JDBC_4_1=TRUE
9659         else
9660             AC_MSG_RESULT([no])
9661         fi
9662     fi
9663 else
9664     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9665         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9666     fi
9668 AC_SUBST(SYSTEM_HSQLDB)
9669 AC_SUBST(HSQLDB_JAR)
9670 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9672 dnl ===================================================================
9673 dnl Check for PostgreSQL stuff
9674 dnl ===================================================================
9675 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9676 if test "x$enable_postgresql_sdbc" != "xno"; then
9677     AC_MSG_RESULT([yes])
9678     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9680     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9681         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9682     fi
9683     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9684         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9685     fi
9687     postgres_interface=""
9688     if test "$with_system_postgresql" = "yes"; then
9689         postgres_interface="external PostgreSQL"
9690         SYSTEM_POSTGRESQL=TRUE
9691         if test "$_os" = Darwin; then
9692             supp_path=''
9693             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9694                 pg_supp_path="$P_SEP$d$pg_supp_path"
9695             done
9696         fi
9697         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9698         if test -n "$PGCONFIG"; then
9699             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9700             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9701         else
9702             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9703               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9704               POSTGRESQL_LIB=$POSTGRESQL_LIBS
9705             ],[
9706               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9707             ])
9708         fi
9709         FilterLibs "${POSTGRESQL_LIB}"
9710         POSTGRESQL_LIB="${filteredlibs}"
9711     else
9712         # if/when anything else than PostgreSQL uses Kerberos,
9713         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9714         WITH_KRB5=
9715         WITH_GSSAPI=
9716         case "$_os" in
9717         Darwin)
9718             # macOS has system MIT Kerberos 5 since 10.4
9719             if test "$with_krb5" != "no"; then
9720                 WITH_KRB5=TRUE
9721                 save_LIBS=$LIBS
9722                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9723                 # that the libraries where these functions are located on macOS will change, is it?
9724                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9725                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9726                 KRB5_LIBS=$LIBS
9727                 LIBS=$save_LIBS
9728                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9729                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9730                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9731                 LIBS=$save_LIBS
9732             fi
9733             if test "$with_gssapi" != "no"; then
9734                 WITH_GSSAPI=TRUE
9735                 save_LIBS=$LIBS
9736                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9737                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9738                 GSSAPI_LIBS=$LIBS
9739                 LIBS=$save_LIBS
9740             fi
9741             ;;
9742         WINNT)
9743             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9744                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9745             fi
9746             ;;
9747         Linux|GNU|*BSD|DragonFly)
9748             if test "$with_krb5" != "no"; then
9749                 WITH_KRB5=TRUE
9750                 save_LIBS=$LIBS
9751                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9752                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9753                 KRB5_LIBS=$LIBS
9754                 LIBS=$save_LIBS
9755                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9756                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9757                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9758                 LIBS=$save_LIBS
9759             fi
9760             if test "$with_gssapi" != "no"; then
9761                 WITH_GSSAPI=TRUE
9762                 save_LIBS=$LIBS
9763                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9764                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9765                 GSSAPI_LIBS=$LIBS
9766                 LIBS=$save_LIBS
9767             fi
9768             ;;
9769         *)
9770             if test "$with_krb5" = "yes"; then
9771                 WITH_KRB5=TRUE
9772                 save_LIBS=$LIBS
9773                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9774                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9775                 KRB5_LIBS=$LIBS
9776                 LIBS=$save_LIBS
9777                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9778                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9779                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9780                 LIBS=$save_LIBS
9781             fi
9782             if test "$with_gssapi" = "yes"; then
9783                 WITH_GSSAPI=TRUE
9784                 save_LIBS=$LIBS
9785                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9786                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9787                 LIBS=$save_LIBS
9788                 GSSAPI_LIBS=$LIBS
9789             fi
9790         esac
9792         if test -n "$with_libpq_path"; then
9793             SYSTEM_POSTGRESQL=TRUE
9794             postgres_interface="external libpq"
9795             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
9796             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
9797         else
9798             SYSTEM_POSTGRESQL=
9799             postgres_interface="internal"
9800             POSTGRESQL_LIB=""
9801             POSTGRESQL_INC="%OVERRIDE_ME%"
9802             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
9803         fi
9804     fi
9806     AC_MSG_CHECKING([PostgreSQL C interface])
9807     AC_MSG_RESULT([$postgres_interface])
9809     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
9810         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
9811         save_CFLAGS=$CFLAGS
9812         save_CPPFLAGS=$CPPFLAGS
9813         save_LIBS=$LIBS
9814         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
9815         LIBS="${LIBS} ${POSTGRESQL_LIB}"
9816         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
9817         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
9818             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
9819         CFLAGS=$save_CFLAGS
9820         CPPFLAGS=$save_CPPFLAGS
9821         LIBS=$save_LIBS
9822     fi
9823     BUILD_POSTGRESQL_SDBC=TRUE
9824 else
9825     AC_MSG_RESULT([no])
9827 AC_SUBST(WITH_KRB5)
9828 AC_SUBST(WITH_GSSAPI)
9829 AC_SUBST(GSSAPI_LIBS)
9830 AC_SUBST(KRB5_LIBS)
9831 AC_SUBST(BUILD_POSTGRESQL_SDBC)
9832 AC_SUBST(SYSTEM_POSTGRESQL)
9833 AC_SUBST(POSTGRESQL_INC)
9834 AC_SUBST(POSTGRESQL_LIB)
9836 dnl ===================================================================
9837 dnl Check for Firebird stuff
9838 dnl ===================================================================
9839 ENABLE_FIREBIRD_SDBC=
9840 if test "$enable_firebird_sdbc" = "yes" ; then
9841     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
9843     dnl ===================================================================
9844     dnl Check for system Firebird
9845     dnl ===================================================================
9846     AC_MSG_CHECKING([which Firebird to use])
9847     if test "$with_system_firebird" = "yes"; then
9848         AC_MSG_RESULT([external])
9849         SYSTEM_FIREBIRD=TRUE
9850         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
9851         if test -z "$FIREBIRDCONFIG"; then
9852             AC_MSG_NOTICE([No fb_config -- using pkg-config])
9853             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
9854                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
9855             ])
9856             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
9857         else
9858             AC_MSG_NOTICE([fb_config found])
9859             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
9860             AC_MSG_CHECKING([for Firebird Client library])
9861             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
9862             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
9863             FilterLibs "${FIREBIRD_LIBS}"
9864             FIREBIRD_LIBS="${filteredlibs}"
9865         fi
9866         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
9867         AC_MSG_CHECKING([Firebird version])
9868         if test -n "${FIREBIRD_VERSION}"; then
9869             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
9870             FIREBIRD_MINOR=`echo $FIREBIRD_VERSION | cut -d"." -f2`
9871             if test "$FIREBIRD_MAJOR" -eq "3" -a "$FIREBIRD_MINOR" -eq "0"; then
9872                 AC_MSG_RESULT([OK])
9873             else
9874                 AC_MSG_ERROR([Ensure firebird 3.0.x is installed])
9875             fi
9876         else
9877             save_CFLAGS="${CFLAGS}"
9878             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
9879             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
9880 #if defined(FB_API_VER) && FB_API_VER == 30
9881 int fb_api_is_30(void) { return 0; }
9882 #else
9883 #error "Wrong Firebird API version"
9884 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
9885             CFLAGS="$save_CFLAGS"
9886         fi
9887         ENABLE_FIREBIRD_SDBC=TRUE
9888         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9889     elif test "$enable_database_connectivity" != yes; then
9890         AC_MSG_RESULT([none])
9891     elif test "$cross_compiling" = "yes"; then
9892         AC_MSG_RESULT([none])
9893     else
9894         dnl Embedded Firebird has version 3.0
9895         AC_DEFINE(HAVE_FIREBIRD_30, 1)
9896         dnl We need libatomic_ops for any non X86/X64 system
9897         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
9898             dnl ===================================================================
9899             dnl Check for system libatomic_ops
9900             dnl ===================================================================
9901             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
9902             if test "$with_system_libatomic_ops" = "yes"; then
9903                 SYSTEM_LIBATOMIC_OPS=TRUE
9904                 AC_CHECK_HEADERS(atomic_ops.h, [],
9905                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
9906             else
9907                 SYSTEM_LIBATOMIC_OPS=
9908                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
9909                 LIBATOMIC_OPS_LIBS="-latomic_ops"
9910                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
9911             fi
9912         fi
9914         AC_MSG_RESULT([internal])
9915         SYSTEM_FIREBIRD=
9916         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
9917         FIREBIRD_LIBS="-lfbclient"
9919         if test "$with_system_libtommath" = "yes"; then
9920             SYSTEM_LIBTOMMATH=TRUE
9921             dnl check for tommath presence
9922             save_LIBS=$LIBS
9923             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
9924             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
9925             LIBS=$save_LIBS
9926         else
9927             SYSTEM_LIBTOMMATH=
9928             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
9929             LIBTOMMATH_LIBS="-ltommath"
9930             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
9931         fi
9933         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
9934         ENABLE_FIREBIRD_SDBC=TRUE
9935         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9936     fi
9938 AC_SUBST(ENABLE_FIREBIRD_SDBC)
9939 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
9940 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
9941 AC_SUBST(LIBATOMIC_OPS_LIBS)
9942 AC_SUBST(SYSTEM_FIREBIRD)
9943 AC_SUBST(FIREBIRD_CFLAGS)
9944 AC_SUBST(FIREBIRD_LIBS)
9945 AC_SUBST(SYSTEM_LIBTOMMATH)
9946 AC_SUBST(LIBTOMMATH_CFLAGS)
9947 AC_SUBST(LIBTOMMATH_LIBS)
9949 dnl ===================================================================
9950 dnl Check for system curl
9951 dnl ===================================================================
9952 AC_MSG_CHECKING([which libcurl to use])
9953 if test "$with_system_curl" = "auto"; then
9954     with_system_curl="$with_system_libs"
9957 if test "$with_system_curl" = "yes"; then
9958     AC_MSG_RESULT([external])
9959     SYSTEM_CURL=TRUE
9961     # First try PKGCONFIG and then fall back
9962     PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
9964     if test -n "$CURL_PKG_ERRORS"; then
9965         AC_PATH_PROG(CURLCONFIG, curl-config)
9966         if test -z "$CURLCONFIG"; then
9967             AC_MSG_ERROR([curl development files not found])
9968         fi
9969         CURL_LIBS=`$CURLCONFIG --libs`
9970         FilterLibs "${CURL_LIBS}"
9971         CURL_LIBS="${filteredlibs}"
9972         CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
9973         curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
9975         AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
9976         case $curl_version in
9977         dnl brackets doubled below because Autoconf uses them as m4 quote characters,
9978         dnl so they need to be doubled to end up in the configure script
9979         7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
9980             AC_MSG_RESULT([yes])
9981             ;;
9982         *)
9983             AC_MSG_ERROR([no, you have $curl_version])
9984             ;;
9985         esac
9986     fi
9988     ENABLE_CURL=TRUE
9989 else
9990     AC_MSG_RESULT([internal])
9991     SYSTEM_CURL=
9992     BUILD_TYPE="$BUILD_TYPE CURL"
9993     ENABLE_CURL=TRUE
9995 AC_SUBST(SYSTEM_CURL)
9996 AC_SUBST(CURL_CFLAGS)
9997 AC_SUBST(CURL_LIBS)
9998 AC_SUBST(ENABLE_CURL)
10000 dnl ===================================================================
10001 dnl Check for system boost
10002 dnl ===================================================================
10003 AC_MSG_CHECKING([which boost to use])
10004 if test "$with_system_boost" = "yes"; then
10005     AC_MSG_RESULT([external])
10006     SYSTEM_BOOST=TRUE
10007     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10008     AX_BOOST_DATE_TIME
10009     AX_BOOST_FILESYSTEM
10010     AX_BOOST_IOSTREAMS
10011     AX_BOOST_LOCALE
10012     AC_LANG_PUSH([C++])
10013     save_CXXFLAGS=$CXXFLAGS
10014     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10015     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10016        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10017     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10018        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10019     CXXFLAGS=$save_CXXFLAGS
10020     AC_LANG_POP([C++])
10021     # this is in m4/ax_boost_base.m4
10022     FilterLibs "${BOOST_LDFLAGS}"
10023     BOOST_LDFLAGS="${filteredlibs}"
10024 else
10025     AC_MSG_RESULT([internal])
10026     BUILD_TYPE="$BUILD_TYPE BOOST"
10027     SYSTEM_BOOST=
10028     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10029         # use warning-suppressing wrapper headers
10030         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10031     else
10032         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10033     fi
10035 AC_SUBST(SYSTEM_BOOST)
10037 dnl ===================================================================
10038 dnl Check for system mdds
10039 dnl ===================================================================
10040 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10042 dnl ===================================================================
10043 dnl Check for system glm
10044 dnl ===================================================================
10045 AC_MSG_CHECKING([which glm to use])
10046 if test "$with_system_glm" = "yes"; then
10047     AC_MSG_RESULT([external])
10048     SYSTEM_GLM=TRUE
10049     AC_LANG_PUSH([C++])
10050     AC_CHECK_HEADER([glm/glm.hpp], [],
10051        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10052     AC_LANG_POP([C++])
10053 else
10054     AC_MSG_RESULT([internal])
10055     BUILD_TYPE="$BUILD_TYPE GLM"
10056     SYSTEM_GLM=
10057     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10059 AC_SUBST([GLM_CFLAGS])
10060 AC_SUBST([SYSTEM_GLM])
10062 dnl ===================================================================
10063 dnl Check for system odbc
10064 dnl ===================================================================
10065 AC_MSG_CHECKING([which odbc headers to use])
10066 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
10067     AC_MSG_RESULT([external])
10068     SYSTEM_ODBC_HEADERS=TRUE
10070     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10071         save_CPPFLAGS=$CPPFLAGS
10072         find_winsdk
10073         PathFormat "$winsdktest"
10074         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"
10075         AC_CHECK_HEADER(sqlext.h, [],
10076             [AC_MSG_ERROR(odbc not found. install odbc)],
10077             [#include <windows.h>])
10078         CPPFLAGS=$save_CPPFLAGS
10079     else
10080         AC_CHECK_HEADER(sqlext.h, [],
10081             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10082     fi
10083 elif test "$enable_database_connectivity" != yes; then
10084     AC_MSG_RESULT([none])
10085 else
10086     AC_MSG_RESULT([internal])
10087     SYSTEM_ODBC_HEADERS=
10089 AC_SUBST(SYSTEM_ODBC_HEADERS)
10091 dnl ===================================================================
10092 dnl Enable LDAP support
10093 dnl ===================================================================
10095 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then
10096 AC_MSG_CHECKING([whether to enable LDAP support])
10097     if test "$enable_ldap" != "yes"; then
10098         AC_MSG_RESULT([no])
10099         ENABLE_LDAP=""
10100         enable_ldap=no
10101     else
10102         AC_MSG_RESULT([yes])
10103         ENABLE_LDAP="TRUE"
10104     fi
10106 AC_SUBST(ENABLE_LDAP)
10108 dnl ===================================================================
10109 dnl Check for system openldap
10110 dnl ===================================================================
10112 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then
10113 AC_MSG_CHECKING([which openldap library to use])
10114 if test "$with_system_openldap" = "yes"; then
10115     AC_MSG_RESULT([external])
10116     SYSTEM_OPENLDAP=TRUE
10117     AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10118     AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10119     AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10120 else
10121     AC_MSG_RESULT([internal])
10122     SYSTEM_OPENLDAP=
10123     BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10126 AC_SUBST(SYSTEM_OPENLDAP)
10128 dnl ===================================================================
10129 dnl Check for system NSS
10130 dnl ===================================================================
10131 if test "$enable_fuzzers" != "yes"; then
10132     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10133     AC_DEFINE(HAVE_FEATURE_NSS)
10134     ENABLE_NSS="TRUE"
10135     AC_DEFINE(ENABLE_NSS)
10136 elif test $_os != iOS ; then
10137     with_tls=openssl
10139 AC_SUBST(ENABLE_NSS)
10141 dnl ===================================================================
10142 dnl Check for TLS/SSL and cryptographic implementation to use
10143 dnl ===================================================================
10144 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10145 if test -n "$with_tls"; then
10146     case $with_tls in
10147     openssl)
10148         AC_DEFINE(USE_TLS_OPENSSL)
10149         TLS=OPENSSL
10150         AC_MSG_RESULT([$TLS])
10152         if test "$enable_openssl" != "yes"; then
10153             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10154         fi
10156         # warn that OpenSSL has been selected but not all TLS code has this option
10157         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10158         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10159         ;;
10160     nss)
10161         AC_DEFINE(USE_TLS_NSS)
10162         TLS=NSS
10163         AC_MSG_RESULT([$TLS])
10164         ;;
10165     no)
10166         AC_MSG_RESULT([none])
10167         AC_MSG_WARN([Skipping TLS/SSL])
10168         ;;
10169     *)
10170         AC_MSG_RESULT([])
10171         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10172 openssl - OpenSSL
10173 nss - Mozilla's Network Security Services (NSS)
10174     ])
10175         ;;
10176     esac
10177 else
10178     # default to using NSS, it results in smaller oox lib
10179     AC_DEFINE(USE_TLS_NSS)
10180     TLS=NSS
10181     AC_MSG_RESULT([$TLS])
10183 AC_SUBST(TLS)
10185 dnl ===================================================================
10186 dnl Check for system sane
10187 dnl ===================================================================
10188 AC_MSG_CHECKING([which sane header to use])
10189 if test "$with_system_sane" = "yes"; then
10190     AC_MSG_RESULT([external])
10191     AC_CHECK_HEADER(sane/sane.h, [],
10192       [AC_MSG_ERROR(sane not found. install sane)], [])
10193 else
10194     AC_MSG_RESULT([internal])
10195     BUILD_TYPE="$BUILD_TYPE SANE"
10198 dnl ===================================================================
10199 dnl Check for system icu
10200 dnl ===================================================================
10201 SYSTEM_GENBRK=
10202 SYSTEM_GENCCODE=
10203 SYSTEM_GENCMN=
10205 ICU_MAJOR=68
10206 ICU_MINOR=1
10207 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10208 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10209 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10210 AC_MSG_CHECKING([which icu to use])
10211 if test "$with_system_icu" = "yes"; then
10212     AC_MSG_RESULT([external])
10213     SYSTEM_ICU=TRUE
10214     AC_LANG_PUSH([C++])
10215     AC_MSG_CHECKING([for unicode/rbbi.h])
10216     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10217     AC_LANG_POP([C++])
10219     if test "$cross_compiling" != "yes"; then
10220         PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10221         ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10222         ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10223         ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10224     fi
10226     if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10227         ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10228         ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10229         ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10230         AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10231         if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10232             AC_MSG_RESULT([yes])
10233         else
10234             AC_MSG_RESULT([no])
10235             if test "$with_system_icu_for_build" != "force"; then
10236                 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10237 You can use --with-system-icu-for-build=force to use it anyway.])
10238             fi
10239         fi
10240     fi
10242     if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10243         # using the system icu tools can lead to version confusion, use the
10244         # ones from the build environment when cross-compiling
10245         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10246         if test -z "$SYSTEM_GENBRK"; then
10247             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10248         fi
10249         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10250         if test -z "$SYSTEM_GENCCODE"; then
10251             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10252         fi
10253         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10254         if test -z "$SYSTEM_GENCMN"; then
10255             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10256         fi
10257         if test "$ICU_MAJOR" -ge "49"; then
10258             ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10259             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10260             ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10261         else
10262             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10263             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10264             ICU_RECLASSIFIED_HEBREW_LETTER=
10265         fi
10266     fi
10268     if test "$cross_compiling" = "yes"; then
10269         if test "$ICU_MAJOR" -ge "50"; then
10270             AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10271             ICU_MINOR=""
10272         fi
10273     fi
10274 else
10275     AC_MSG_RESULT([internal])
10276     SYSTEM_ICU=
10277     BUILD_TYPE="$BUILD_TYPE ICU"
10278     # surprisingly set these only for "internal" (to be used by various other
10279     # external libs): the system icu-config is quite unhelpful and spits out
10280     # dozens of weird flags and also default path -I/usr/include
10281     ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10282     ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10284 if test "$ICU_MAJOR" -ge "59"; then
10285     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10286     # with -std=c++11 but not all external libraries can be built with that,
10287     # for those use a bit-compatible typedef uint16_t UChar; see
10288     # icu/source/common/unicode/umachine.h
10289     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10290 else
10291     ICU_UCHAR_TYPE=""
10293 AC_SUBST(SYSTEM_ICU)
10294 AC_SUBST(SYSTEM_GENBRK)
10295 AC_SUBST(SYSTEM_GENCCODE)
10296 AC_SUBST(SYSTEM_GENCMN)
10297 AC_SUBST(ICU_MAJOR)
10298 AC_SUBST(ICU_MINOR)
10299 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10300 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10301 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10302 AC_SUBST(ICU_CFLAGS)
10303 AC_SUBST(ICU_LIBS)
10304 AC_SUBST(ICU_UCHAR_TYPE)
10306 dnl ==================================================================
10307 dnl Breakpad
10308 dnl ==================================================================
10309 DEFAULT_CRASHDUMP_VALUE="true"
10310 AC_MSG_CHECKING([whether to enable breakpad])
10311 if test "$enable_breakpad" != yes; then
10312     AC_MSG_RESULT([no])
10313 else
10314     AC_MSG_RESULT([yes])
10315     ENABLE_BREAKPAD="TRUE"
10316     AC_DEFINE(ENABLE_BREAKPAD)
10317     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10318     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10320     AC_MSG_CHECKING([for disable crash dump])
10321     if test "$enable_crashdump" = no; then
10322         DEFAULT_CRASHDUMP_VALUE="false"
10323         AC_MSG_RESULT([yes])
10324     else
10325        AC_MSG_RESULT([no])
10326     fi
10328     AC_MSG_CHECKING([for crashreport config])
10329     if test "$with_symbol_config" = "no"; then
10330         BREAKPAD_SYMBOL_CONFIG="invalid"
10331         AC_MSG_RESULT([no])
10332     else
10333         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10334         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10335         AC_MSG_RESULT([yes])
10336     fi
10337     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10339 AC_SUBST(ENABLE_BREAKPAD)
10340 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10342 dnl ==================================================================
10343 dnl libfuzzer
10344 dnl ==================================================================
10345 AC_MSG_CHECKING([whether to enable fuzzers])
10346 if test "$enable_fuzzers" != yes; then
10347     AC_MSG_RESULT([no])
10348 else
10349     AC_MSG_RESULT([yes])
10350     ENABLE_FUZZERS="TRUE"
10351     AC_DEFINE([ENABLE_FUZZERS],1)
10352     BUILD_TYPE="$BUILD_TYPE FUZZERS"
10354 AC_SUBST(ENABLE_FUZZERS)
10356 dnl ===================================================================
10357 dnl Orcus
10358 dnl ===================================================================
10359 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
10360 if test "$with_system_orcus" != "yes"; then
10361     if test "$SYSTEM_BOOST" = "TRUE"; then
10362         # ===========================================================
10363         # Determine if we are going to need to link with Boost.System
10364         # ===========================================================
10365         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10366         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10367         dnl in documentation has no effect.
10368         AC_MSG_CHECKING([if we need to link with Boost.System])
10369         AC_LANG_PUSH([C++])
10370         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
10371                 @%:@include <boost/version.hpp>
10372             ]],[[
10373                 #if BOOST_VERSION >= 105000
10374                 #   error yes, we need to link with Boost.System
10375                 #endif
10376             ]])],[
10377                 AC_MSG_RESULT([no])
10378             ],[
10379                 AC_MSG_RESULT([yes])
10380                 AX_BOOST_SYSTEM
10381         ])
10382         AC_LANG_POP([C++])
10383     fi
10385 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10386 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10387 AC_SUBST([BOOST_SYSTEM_LIB])
10388 AC_SUBST(SYSTEM_LIBORCUS)
10390 dnl ===================================================================
10391 dnl HarfBuzz
10392 dnl ===================================================================
10393 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10394                          ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10395                          ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10397 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10398                          ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10399                          ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10401 if test "$COM" = "MSC"; then # override the above
10402     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10403     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10406 if test "$with_system_harfbuzz" = "yes"; then
10407     if test "$with_system_graphite" = "no"; then
10408         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10409     fi
10410     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10411     save_LIBS="$LIBS"
10412     save_CFLAGS="$CFLAGS"
10413     LIBS="$LIBS $HARFBUZZ_LIBS"
10414     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10415     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10416     LIBS="$save_LIBS"
10417     CFLAGS="$save_CFLAGS"
10418 else
10419     if test "$with_system_graphite" = "yes"; then
10420         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10421     fi
10424 AC_MSG_CHECKING([whether to use X11])
10425 dnl ***************************************
10426 dnl testing for X libraries and includes...
10427 dnl ***************************************
10428 if test "$USING_X11" = TRUE; then
10429     AC_DEFINE(HAVE_FEATURE_X11)
10431 AC_MSG_RESULT([$USING_X11])
10433 if test "$USING_X11" = TRUE; then
10434     AC_PATH_X
10435     AC_PATH_XTRA
10436     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10438     if test -z "$x_includes"; then
10439         x_includes="default_x_includes"
10440     fi
10441     if test -z "$x_libraries"; then
10442         x_libraries="default_x_libraries"
10443     fi
10444     CFLAGS="$CFLAGS $X_CFLAGS"
10445     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10446     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10447 else
10448     x_includes="no_x_includes"
10449     x_libraries="no_x_libraries"
10452 if test "$USING_X11" = TRUE; then
10453     dnl ===================================================================
10454     dnl Check for extension headers
10455     dnl ===================================================================
10456     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10457      [#include <X11/extensions/shape.h>])
10459     # vcl needs ICE and SM
10460     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10461     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10462         [AC_MSG_ERROR(ICE library not found)])
10463     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10464     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10465         [AC_MSG_ERROR(SM library not found)])
10468 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10469     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10470     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10473 dnl ===================================================================
10474 dnl Check for system Xrender
10475 dnl ===================================================================
10476 AC_MSG_CHECKING([whether to use Xrender])
10477 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10478     AC_MSG_RESULT([yes])
10479     PKG_CHECK_MODULES(XRENDER, xrender)
10480     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10481     FilterLibs "${XRENDER_LIBS}"
10482     XRENDER_LIBS="${filteredlibs}"
10483     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10484       [AC_MSG_ERROR(libXrender not found or functional)], [])
10485     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10486       [AC_MSG_ERROR(Xrender not found. install X)], [])
10487 else
10488     AC_MSG_RESULT([no])
10490 AC_SUBST(XRENDER_CFLAGS)
10491 AC_SUBST(XRENDER_LIBS)
10493 dnl ===================================================================
10494 dnl Check for XRandr
10495 dnl ===================================================================
10496 AC_MSG_CHECKING([whether to enable RandR support])
10497 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10498     AC_MSG_RESULT([yes])
10499     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10500     if test "$ENABLE_RANDR" != "TRUE"; then
10501         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10502                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10503         XRANDR_CFLAGS=" "
10504         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10505           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10506         XRANDR_LIBS="-lXrandr "
10507         ENABLE_RANDR="TRUE"
10508     fi
10509     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10510     FilterLibs "${XRANDR_LIBS}"
10511     XRANDR_LIBS="${filteredlibs}"
10512 else
10513     ENABLE_RANDR=""
10514     AC_MSG_RESULT([no])
10516 AC_SUBST(XRANDR_CFLAGS)
10517 AC_SUBST(XRANDR_LIBS)
10518 AC_SUBST(ENABLE_RANDR)
10520 if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
10521     if test -z "$WITH_WEBDAV"; then
10522         WITH_WEBDAV="serf"
10523     fi
10525 if test $_os = iOS -o $_os = Android; then
10526     WITH_WEBDAV="no"
10528 AC_MSG_CHECKING([for webdav library])
10529 case "$WITH_WEBDAV" in
10530 serf)
10531     AC_MSG_RESULT([serf])
10532     # Check for system apr-util
10533     libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10534                              ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10535                              ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10536     if test "$COM" = "MSC"; then
10537         APR_LIB_DIR="LibR"
10538         test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10539         APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10540     fi
10542     # Check for system serf
10543     libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"],
10544                              ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"])
10545     if test "$COM" = "MSC"; then
10546         SERF_LIB_DIR="Release"
10547         test -n "${MSVC_USE_DEBUG_RUNTIME}" && SERF_LIB_DIR="Debug"
10548         SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/${SERF_LIB_DIR}/serf-1.lib"
10549     fi
10550     ;;
10551 neon)
10552     AC_MSG_RESULT([neon])
10553     # Check for system neon
10554     libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.1])
10555     if test "$with_system_neon" = "yes"; then
10556         NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10557     else
10558         NEON_VERSION=0311
10559     fi
10560     AC_SUBST(NEON_VERSION)
10561     ;;
10563     AC_MSG_RESULT([none, disabled])
10564     WITH_WEBDAV=""
10565     ;;
10566 esac
10567 AC_SUBST(WITH_WEBDAV)
10569 dnl ===================================================================
10570 dnl Check for disabling cve_tests
10571 dnl ===================================================================
10572 AC_MSG_CHECKING([whether to execute CVE tests])
10573 # If not explicitly enabled or disabled, default
10574 if test -z "$enable_cve_tests"; then
10575     case "$OS" in
10576     WNT)
10577         # Default cves off for Windows with its wild and wonderful
10578         # variety of AV software kicking in and panicking
10579         enable_cve_tests=no
10580         ;;
10581     *)
10582         # otherwise yes
10583         enable_cve_tests=yes
10584         ;;
10585     esac
10587 if test "$enable_cve_tests" = "no"; then
10588     AC_MSG_RESULT([no])
10589     DISABLE_CVE_TESTS=TRUE
10590     AC_SUBST(DISABLE_CVE_TESTS)
10591 else
10592     AC_MSG_RESULT([yes])
10595 dnl ===================================================================
10596 dnl Check for enabling chart XShape tests
10597 dnl ===================================================================
10598 AC_MSG_CHECKING([whether to execute chart XShape tests])
10599 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10600     AC_MSG_RESULT([yes])
10601     ENABLE_CHART_TESTS=TRUE
10602     AC_SUBST(ENABLE_CHART_TESTS)
10603 else
10604     AC_MSG_RESULT([no])
10607 dnl ===================================================================
10608 dnl Check for system openssl
10609 dnl ===================================================================
10610 DISABLE_OPENSSL=
10611 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10612 if test "$enable_openssl" = "yes"; then
10613     AC_MSG_RESULT([no])
10614     if test "$_os" = Darwin ; then
10615         # OpenSSL is deprecated when building for 10.7 or later.
10616         #
10617         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10618         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10620         with_system_openssl=no
10621         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10622     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10623             && test "$with_system_openssl" != "no"; then
10624         with_system_openssl=yes
10625         SYSTEM_OPENSSL=TRUE
10626         OPENSSL_CFLAGS=
10627         OPENSSL_LIBS="-lssl -lcrypto"
10628     else
10629         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10630     fi
10631     if test "$with_system_openssl" = "yes"; then
10632         AC_MSG_CHECKING([whether openssl supports SHA512])
10633         AC_LANG_PUSH([C])
10634         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10635             SHA512_CTX context;
10636 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10637         AC_LANG_POP(C)
10638     fi
10639 else
10640     AC_MSG_RESULT([yes])
10641     DISABLE_OPENSSL=TRUE
10643     # warn that although OpenSSL is disabled, system libraries may depend on it
10644     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10645     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10648 AC_SUBST([DISABLE_OPENSSL])
10650 if test "$enable_cipher_openssl_backend" = yes && test "$DISABLE_OPENSSL" = TRUE; then
10651     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10652         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10653         enable_cipher_openssl_backend=no
10654     else
10655         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10656     fi
10658 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10659 ENABLE_CIPHER_OPENSSL_BACKEND=
10660 if test "$enable_cipher_openssl_backend" = yes; then
10661     AC_MSG_RESULT([yes])
10662     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10663 else
10664     AC_MSG_RESULT([no])
10666 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10668 dnl ===================================================================
10669 dnl Check for building gnutls
10670 dnl ===================================================================
10671 AC_MSG_CHECKING([whether to use gnutls])
10672 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10673     AC_MSG_RESULT([yes])
10674     AM_PATH_LIBGCRYPT()
10675     PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10676         AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10677                       available in the system to use as replacement.]]))
10678     FilterLibs "${LIBGCRYPT_LIBS}"
10679     LIBGCRYPT_LIBS="${filteredlibs}"
10680 else
10681     AC_MSG_RESULT([no])
10684 AC_SUBST([LIBGCRYPT_CFLAGS])
10685 AC_SUBST([LIBGCRYPT_LIBS])
10687 dnl ===================================================================
10688 dnl Check for system redland
10689 dnl ===================================================================
10690 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10691 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10692 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10693 if test "$with_system_redland" = "yes"; then
10694     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10695             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10696 else
10697     RAPTOR_MAJOR="0"
10698     RASQAL_MAJOR="3"
10699     REDLAND_MAJOR="0"
10701 AC_SUBST(RAPTOR_MAJOR)
10702 AC_SUBST(RASQAL_MAJOR)
10703 AC_SUBST(REDLAND_MAJOR)
10705 dnl ===================================================================
10706 dnl Check for system hunspell
10707 dnl ===================================================================
10708 AC_MSG_CHECKING([which libhunspell to use])
10709 if test "$_os" = iOS; then
10710    AC_MSG_RESULT([none])
10711 elif test "$with_system_hunspell" = "yes"; then
10712     AC_MSG_RESULT([external])
10713     SYSTEM_HUNSPELL=TRUE
10714     AC_LANG_PUSH([C++])
10715     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10716     if test "$HUNSPELL_PC" != "TRUE"; then
10717         AC_CHECK_HEADER(hunspell.hxx, [],
10718             [
10719             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10720             [AC_MSG_ERROR(hunspell headers not found.)], [])
10721             ], [])
10722         AC_CHECK_LIB([hunspell], [main], [:],
10723            [ AC_MSG_ERROR(hunspell library not found.) ], [])
10724         HUNSPELL_LIBS=-lhunspell
10725     fi
10726     AC_LANG_POP([C++])
10727     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10728     FilterLibs "${HUNSPELL_LIBS}"
10729     HUNSPELL_LIBS="${filteredlibs}"
10730 else
10731     AC_MSG_RESULT([internal])
10732     SYSTEM_HUNSPELL=
10733     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10734     if test "$COM" = "MSC"; then
10735         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10736     else
10737         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10738     fi
10739     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
10741 AC_SUBST(SYSTEM_HUNSPELL)
10742 AC_SUBST(HUNSPELL_CFLAGS)
10743 AC_SUBST(HUNSPELL_LIBS)
10745 dnl ===================================================================
10746 dnl Check for system qrcodegen
10747 dnl ===================================================================
10748 AC_MSG_CHECKING([whether to use libqrcodegen])
10749 if test "$enable_qrcodegen" = "no"; then
10750     AC_MSG_RESULT([no])
10751     ENABLE_QRCODEGEN=
10752     SYSTEM_QRCODEGEN=
10753 else
10754     AC_MSG_RESULT([yes])
10755     ENABLE_QRCODEGEN=TRUE
10756     AC_MSG_CHECKING([which libqrcodegen to use])
10757     if test "$with_system_qrcodegen" = "yes"; then
10758         AC_MSG_RESULT([external])
10759         SYSTEM_QRCODEGEN=TRUE
10760         AC_LANG_PUSH([C++])
10761         AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
10762             [AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
10763         AC_CHECK_LIB([qrcodegencpp], [main], [:],
10764             [ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
10765         QRCODEGEN_LIBS=-lqrcodegencpp
10766         AC_LANG_POP([C++])
10767         QRCODEGEN_CFLAGS=$(printf '%s' "$QRCODEGEN_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10768         FilterLibs "${QRCODEGEN_LIBS}"
10769         QRCODEGEN_LIBS="${filteredlibs}"
10770     else
10771         AC_MSG_RESULT([internal])
10772         SYSTEM_QRCODEGEN=
10773         BUILD_TYPE="$BUILD_TYPE QRCODEGEN"
10774     fi
10775     if test "$ENABLE_QRCODEGEN" = TRUE; then
10776         AC_DEFINE(ENABLE_QRCODEGEN)
10777     fi
10779 AC_SUBST(SYSTEM_QRCODEGEN)
10780 AC_SUBST(ENABLE_QRCODEGEN)
10781 AC_SUBST(QRCODEGEN_CFLAGS)
10782 AC_SUBST(QRCODEGEN_LIBS)
10784 dnl ===================================================================
10785 dnl Check for system box2d
10786 dnl ===================================================================
10787 AC_MSG_CHECKING([which box2d to use])
10788 if test "$with_system_box2d" = "yes"; then
10789     AC_MSG_RESULT([external])
10790     SYSTEM_BOX2D=TRUE
10791     AC_LANG_PUSH([C++])
10792     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
10793         [BOX2D_H_FOUND='FALSE'])
10794     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
10795         _BOX2D_LIB=box2d
10796         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
10797     else
10798         # fail this. there's no other alternative to check when we are here.
10799         AC_CHECK_HEADER([Box2D/Box2D.h], [],
10800                 [AC_MSG_ERROR(box2d headers not found.)])
10801         _BOX2D_LIB=Box2D
10802         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
10803     fi
10804     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
10805         [ AC_MSG_ERROR(box2d library not found.) ], [])
10806     BOX2D_LIBS=-l$_BOX2D_LIB
10807     AC_LANG_POP([C++])
10808     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10809     FilterLibs "${BOX2D_LIBS}"
10810     BOX2D_LIBS="${filteredlibs}"
10811 else
10812     AC_MSG_RESULT([internal])
10813     SYSTEM_BOX2D=
10814     BUILD_TYPE="$BUILD_TYPE BOX2D"
10816 AC_SUBST(SYSTEM_BOX2D)
10817 AC_SUBST(BOX2D_CFLAGS)
10818 AC_SUBST(BOX2D_LIBS)
10820 dnl ===================================================================
10821 dnl Checking for altlinuxhyph
10822 dnl ===================================================================
10823 AC_MSG_CHECKING([which altlinuxhyph to use])
10824 if test "$with_system_altlinuxhyph" = "yes"; then
10825     AC_MSG_RESULT([external])
10826     SYSTEM_HYPH=TRUE
10827     AC_CHECK_HEADER(hyphen.h, [],
10828        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
10829     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
10830        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
10831        [#include <hyphen.h>])
10832     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
10833         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10834     if test -z "$HYPHEN_LIB"; then
10835         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
10836            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10837     fi
10838     if test -z "$HYPHEN_LIB"; then
10839         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
10840            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10841     fi
10842 else
10843     AC_MSG_RESULT([internal])
10844     SYSTEM_HYPH=
10845     BUILD_TYPE="$BUILD_TYPE HYPHEN"
10846     if test "$COM" = "MSC"; then
10847         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
10848     else
10849         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
10850     fi
10852 AC_SUBST(SYSTEM_HYPH)
10853 AC_SUBST(HYPHEN_LIB)
10855 dnl ===================================================================
10856 dnl Checking for mythes
10857 dnl ===================================================================
10858 AC_MSG_CHECKING([which mythes to use])
10859 if test "$_os" = iOS; then
10860    AC_MSG_RESULT([none])
10861 elif test "$with_system_mythes" = "yes"; then
10862     AC_MSG_RESULT([external])
10863     SYSTEM_MYTHES=TRUE
10864     AC_LANG_PUSH([C++])
10865     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
10866     if test "$MYTHES_PKGCONFIG" = "no"; then
10867         AC_CHECK_HEADER(mythes.hxx, [],
10868             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
10869         AC_CHECK_LIB([mythes-1.2], [main], [:],
10870             [ MYTHES_FOUND=no], [])
10871     if test "$MYTHES_FOUND" = "no"; then
10872         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
10873                 [ MYTHES_FOUND=no], [])
10874     fi
10875     if test "$MYTHES_FOUND" = "no"; then
10876         AC_MSG_ERROR([mythes library not found!.])
10877     fi
10878     fi
10879     AC_LANG_POP([C++])
10880     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10881     FilterLibs "${MYTHES_LIBS}"
10882     MYTHES_LIBS="${filteredlibs}"
10883 else
10884     AC_MSG_RESULT([internal])
10885     SYSTEM_MYTHES=
10886     BUILD_TYPE="$BUILD_TYPE MYTHES"
10887     if test "$COM" = "MSC"; then
10888         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
10889     else
10890         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
10891     fi
10893 AC_SUBST(SYSTEM_MYTHES)
10894 AC_SUBST(MYTHES_CFLAGS)
10895 AC_SUBST(MYTHES_LIBS)
10897 dnl ===================================================================
10898 dnl How should we build the linear programming solver ?
10899 dnl ===================================================================
10901 ENABLE_COINMP=
10902 AC_MSG_CHECKING([whether to build with CoinMP])
10903 if test "$enable_coinmp" != "no"; then
10904     ENABLE_COINMP=TRUE
10905     AC_MSG_RESULT([yes])
10906     if test "$with_system_coinmp" = "yes"; then
10907         SYSTEM_COINMP=TRUE
10908         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
10909         FilterLibs "${COINMP_LIBS}"
10910         COINMP_LIBS="${filteredlibs}"
10911     else
10912         BUILD_TYPE="$BUILD_TYPE COINMP"
10913     fi
10914 else
10915     AC_MSG_RESULT([no])
10917 AC_SUBST(ENABLE_COINMP)
10918 AC_SUBST(SYSTEM_COINMP)
10919 AC_SUBST(COINMP_CFLAGS)
10920 AC_SUBST(COINMP_LIBS)
10922 ENABLE_LPSOLVE=
10923 AC_MSG_CHECKING([whether to build with lpsolve])
10924 if test "$enable_lpsolve" != "no"; then
10925     ENABLE_LPSOLVE=TRUE
10926     AC_MSG_RESULT([yes])
10927 else
10928     AC_MSG_RESULT([no])
10930 AC_SUBST(ENABLE_LPSOLVE)
10932 if test "$ENABLE_LPSOLVE" = TRUE; then
10933     AC_MSG_CHECKING([which lpsolve to use])
10934     if test "$with_system_lpsolve" = "yes"; then
10935         AC_MSG_RESULT([external])
10936         SYSTEM_LPSOLVE=TRUE
10937         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
10938            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
10939         save_LIBS=$LIBS
10940         # some systems need this. Like Ubuntu...
10941         AC_CHECK_LIB(m, floor)
10942         AC_CHECK_LIB(dl, dlopen)
10943         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
10944             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
10945         LIBS=$save_LIBS
10946     else
10947         AC_MSG_RESULT([internal])
10948         SYSTEM_LPSOLVE=
10949         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
10950     fi
10952 AC_SUBST(SYSTEM_LPSOLVE)
10954 dnl ===================================================================
10955 dnl Checking for libexttextcat
10956 dnl ===================================================================
10957 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
10958 if test "$with_system_libexttextcat" = "yes"; then
10959     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
10961 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
10963 dnl ===================================================================
10964 dnl Checking for libnumbertext
10965 dnl ===================================================================
10966 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
10967 if test "$with_system_libnumbertext" = "yes"; then
10968     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
10969     SYSTEM_LIBNUMBERTEXT=YES
10970 else
10971     SYSTEM_LIBNUMBERTEXT=
10972     AC_LANG_PUSH([C++])
10973     save_CPPFLAGS=$CPPFLAGS
10974     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
10975     AC_CHECK_HEADERS([codecvt regex])
10976     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
10977             [ LIBNUMBERTEXT_CFLAGS=''
10978               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
10979                            Enable libnumbertext fallback (missing number to number name conversion).])
10980             ])
10981     CPPFLAGS=$save_CPPFLAGS
10982     AC_LANG_POP([C++])
10984 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
10985 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
10986 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
10988 dnl ***************************************
10989 dnl testing libc version for Linux...
10990 dnl ***************************************
10991 if test "$_os" = "Linux"; then
10992     AC_MSG_CHECKING([whether libc is >= 2.1.1])
10993     exec 6>/dev/null # no output
10994     AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
10995     exec 6>&1 # output on again
10996     if test "$HAVE_LIBC"; then
10997         AC_MSG_RESULT([yes])
10998     else
10999         AC_MSG_ERROR([no, upgrade libc])
11000     fi
11003 dnl =========================================
11004 dnl Check for uuidgen
11005 dnl =========================================
11006 if test "$_os" = "WINNT"; then
11007     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11008     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11009     UUIDGEN=uuidgen.exe
11010     AC_SUBST(UUIDGEN)
11011 else
11012     AC_PATH_PROG([UUIDGEN], [uuidgen])
11013     if test -z "$UUIDGEN"; then
11014         AC_MSG_WARN([uuid is needed for building installation sets])
11015     fi
11018 dnl ***************************************
11019 dnl Checking for bison and flex
11020 dnl ***************************************
11021 AC_PATH_PROG(BISON, bison)
11022 if test -z "$BISON"; then
11023     AC_MSG_ERROR([no bison found in \$PATH, install it])
11024 else
11025     AC_MSG_CHECKING([the bison version])
11026     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11027     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11028     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11029     dnl cause
11030     dnl
11031     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]
11032     dnl   typedef union YYSTYPE
11033     dnl           ~~~~~~^~~~~~~
11034     dnl
11035     dnl while at least 3.4.1 is know to be good:
11036     if test "$COMPILER_PLUGINS" = TRUE; then
11037         if test "$_bison_longver" -lt 2004; then
11038             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11039         fi
11040     else
11041         if test "$_bison_longver" -lt 2000; then
11042             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11043         fi
11044     fi
11046 AC_SUBST([BISON])
11048 AC_PATH_PROG(FLEX, flex)
11049 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11050     FLEX=`cygpath -m $FLEX`
11052 if test -z "$FLEX"; then
11053     AC_MSG_ERROR([no flex found in \$PATH, install it])
11054 else
11055     AC_MSG_CHECKING([the flex version])
11056     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11057     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11058         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11059     fi
11061 AC_SUBST([FLEX])
11062 dnl ***************************************
11063 dnl Checking for patch
11064 dnl ***************************************
11065 AC_PATH_PROG(PATCH, patch)
11066 if test -z "$PATCH"; then
11067     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11070 dnl On Solaris or macOS, check if --with-gnu-patch was used
11071 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11072     if test -z "$with_gnu_patch"; then
11073         GNUPATCH=$PATCH
11074     else
11075         if test -x "$with_gnu_patch"; then
11076             GNUPATCH=$with_gnu_patch
11077         else
11078             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11079         fi
11080     fi
11082     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11083     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11084         AC_MSG_RESULT([yes])
11085     else
11086         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11087     fi
11088 else
11089     GNUPATCH=$PATCH
11092 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11093     GNUPATCH=`cygpath -m $GNUPATCH`
11096 dnl We also need to check for --with-gnu-cp
11098 if test -z "$with_gnu_cp"; then
11099     # check the place where the good stuff is hidden on Solaris...
11100     if test -x /usr/gnu/bin/cp; then
11101         GNUCP=/usr/gnu/bin/cp
11102     else
11103         AC_PATH_PROGS(GNUCP, gnucp cp)
11104     fi
11105     if test -z $GNUCP; then
11106         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11107     fi
11108 else
11109     if test -x "$with_gnu_cp"; then
11110         GNUCP=$with_gnu_cp
11111     else
11112         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11113     fi
11116 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11117     GNUCP=`cygpath -m $GNUCP`
11120 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11121 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11122     AC_MSG_RESULT([yes])
11123 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11124     AC_MSG_RESULT([yes])
11125 else
11126     case "$build_os" in
11127     darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11128         x_GNUCP=[\#]
11129         GNUCP=''
11130         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11131         ;;
11132     *)
11133         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11134         ;;
11135     esac
11138 AC_SUBST(GNUPATCH)
11139 AC_SUBST(GNUCP)
11140 AC_SUBST(x_GNUCP)
11142 dnl ***************************************
11143 dnl testing assembler path
11144 dnl ***************************************
11145 ML_EXE=""
11146 if test "$_os" = "WINNT"; then
11147     case "$WIN_HOST_ARCH" in
11148     x86) assembler=ml.exe ;;
11149     x64) assembler=ml64.exe ;;
11150     arm64) assembler=armasm64.exe ;;
11151     esac
11153     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11154     if test -f "$MSVC_HOST_PATH/$assembler"; then
11155         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11156         AC_MSG_RESULT([$ML_EXE])
11157     else
11158         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11159     fi
11162 AC_SUBST(ML_EXE)
11164 dnl ===================================================================
11165 dnl We need zip and unzip
11166 dnl ===================================================================
11167 AC_PATH_PROG(ZIP, zip)
11168 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11169 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11170     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],,)
11173 AC_PATH_PROG(UNZIP, unzip)
11174 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11176 dnl ===================================================================
11177 dnl Zip must be a specific type for different build types.
11178 dnl ===================================================================
11179 if test $build_os = cygwin; then
11180     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11181         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11182     fi
11185 dnl ===================================================================
11186 dnl We need touch with -h option support.
11187 dnl ===================================================================
11188 AC_PATH_PROG(TOUCH, touch)
11189 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11190 touch warn
11191 if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then
11192     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],,)
11195 dnl ===================================================================
11196 dnl Check for system epoxy
11197 dnl ===================================================================
11198 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11200 dnl ===================================================================
11201 dnl Set vcl option: coordinate device in double or sal_Int32
11202 dnl ===================================================================
11204 dnl disabled for now, we don't want subtle differences between OSs
11205 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11206 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11207 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11208 dnl     AC_MSG_RESULT([double])
11209 dnl else
11210 dnl     AC_MSG_RESULT([sal_Int32])
11211 dnl fi
11213 dnl ===================================================================
11214 dnl Test which vclplugs have to be built.
11215 dnl ===================================================================
11216 R=""
11217 if test "$USING_X11" != TRUE; then
11218     enable_gtk3=no
11221 ENABLE_GTK3=""
11222 if test "x$enable_gtk3" = "xyes"; then
11223     ENABLE_GTK3="TRUE"
11224     AC_DEFINE(ENABLE_GTK3)
11225     R="$R gtk3"
11227 AC_SUBST(ENABLE_GTK3)
11229 ENABLE_GTK3_KDE5=""
11230 if test "x$enable_gtk3_kde5" = "xyes"; then
11231     ENABLE_GTK3_KDE5="TRUE"
11232     AC_DEFINE(ENABLE_GTK3_KDE5)
11233     R="$R gtk3_kde5"
11235 AC_SUBST(ENABLE_GTK3_KDE5)
11237 ENABLE_QT5=""
11238 if test "x$enable_qt5" = "xyes"; then
11239     ENABLE_QT5="TRUE"
11240     AC_DEFINE(ENABLE_QT5)
11241     R="$R qt5"
11243 AC_SUBST(ENABLE_QT5)
11245 ENABLE_KF5=""
11246 if test "x$enable_kf5" = "xyes"; then
11247     ENABLE_KF5="TRUE"
11248     AC_DEFINE(ENABLE_KF5)
11249     R="$R kf5"
11251 AC_SUBST(ENABLE_KF5)
11253 GTK3_CFLAGS=""
11254 GTK3_LIBS=""
11255 if test "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11256     if test "$with_system_cairo" = no; then
11257         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11258     fi
11259     : ${with_system_cairo:=yes}
11260     PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= 3.20 gtk+-unix-print-3.0 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo)
11261     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11262     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11263     FilterLibs "${GTK3_LIBS}"
11264     GTK3_LIBS="${filteredlibs}"
11266     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11267     if test "$with_system_epoxy" != "yes"; then
11268         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11269         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11270                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11271     fi
11273 AC_SUBST(GTK3_LIBS)
11274 AC_SUBST(GTK3_CFLAGS)
11276 if test "$enable_introspection" = yes; then
11277     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11278         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11279     else
11280         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11281     fi
11284 if test "$_os" = "WINNT"; then
11285     R="$R win"
11286 elif test "$_os" = "Darwin"; then
11287     R="$R osx"
11288 elif test "$_os" = "iOS"; then
11289     R="ios (builtin)"
11292 build_vcl_plugins="$R"
11293 if test -z "$build_vcl_plugins"; then
11294     build_vcl_plugins="none"
11296 AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins])
11298 dnl ===================================================================
11299 dnl check for dbus support
11300 dnl ===================================================================
11301 ENABLE_DBUS=""
11302 DBUS_CFLAGS=""
11303 DBUS_LIBS=""
11304 DBUS_GLIB_CFLAGS=""
11305 DBUS_GLIB_LIBS=""
11306 DBUS_HAVE_GLIB=""
11308 if test "$enable_dbus" = "no"; then
11309     test_dbus=no
11312 AC_MSG_CHECKING([whether to enable DBUS support])
11313 if test "$test_dbus" = "yes"; then
11314     ENABLE_DBUS="TRUE"
11315     AC_MSG_RESULT([yes])
11316     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11317     AC_DEFINE(ENABLE_DBUS)
11318     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11319     FilterLibs "${DBUS_LIBS}"
11320     DBUS_LIBS="${filteredlibs}"
11322     # Glib is needed for BluetoothServer
11323     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11324     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11325         [
11326             DBUS_HAVE_GLIB="TRUE"
11327             AC_DEFINE(DBUS_HAVE_GLIB,1)
11328         ],
11329         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11330     )
11331 else
11332     AC_MSG_RESULT([no])
11335 AC_SUBST(ENABLE_DBUS)
11336 AC_SUBST(DBUS_CFLAGS)
11337 AC_SUBST(DBUS_LIBS)
11338 AC_SUBST(DBUS_GLIB_CFLAGS)
11339 AC_SUBST(DBUS_GLIB_LIBS)
11340 AC_SUBST(DBUS_HAVE_GLIB)
11342 AC_MSG_CHECKING([whether to enable Impress remote control])
11343 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11344     AC_MSG_RESULT([yes])
11345     ENABLE_SDREMOTE=TRUE
11346     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11348     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11349         # The Bluetooth code doesn't compile with macOS SDK 10.15
11350         if test "$enable_sdremote_bluetooth" = yes; then
11351             AC_MSG_ERROR([macOS SDK $with_macosx_sdk does not currently support --enable-sdremote-bluetooth])
11352         fi
11353         enable_sdremote_bluetooth=no
11354     fi
11355     # If not explicitly enabled or disabled, default
11356     if test -z "$enable_sdremote_bluetooth"; then
11357         case "$OS" in
11358         LINUX|MACOSX|WNT)
11359             # Default to yes for these
11360             enable_sdremote_bluetooth=yes
11361             ;;
11362         *)
11363             # otherwise no
11364             enable_sdremote_bluetooth=no
11365             ;;
11366         esac
11367     fi
11368     # $enable_sdremote_bluetooth is guaranteed non-empty now
11370     if test "$enable_sdremote_bluetooth" != "no"; then
11371         if test "$OS" = "LINUX"; then
11372             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11373                 AC_MSG_RESULT([yes])
11374                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11375                 dnl ===================================================================
11376                 dnl Check for system bluez
11377                 dnl ===================================================================
11378                 AC_MSG_CHECKING([which Bluetooth header to use])
11379                 if test "$with_system_bluez" = "yes"; then
11380                     AC_MSG_RESULT([external])
11381                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11382                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11383                     SYSTEM_BLUEZ=TRUE
11384                 else
11385                     AC_MSG_RESULT([internal])
11386                     SYSTEM_BLUEZ=
11387                 fi
11388             else
11389                 AC_MSG_RESULT([no, dbus disabled])
11390                 ENABLE_SDREMOTE_BLUETOOTH=
11391                 SYSTEM_BLUEZ=
11392             fi
11393         else
11394             AC_MSG_RESULT([yes])
11395             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11396             SYSTEM_BLUEZ=
11397         fi
11398     else
11399         AC_MSG_RESULT([no])
11400         ENABLE_SDREMOTE_BLUETOOTH=
11401         SYSTEM_BLUEZ=
11402     fi
11403 else
11404     ENABLE_SDREMOTE=
11405     SYSTEM_BLUEZ=
11406     AC_MSG_RESULT([no])
11408 AC_SUBST(ENABLE_SDREMOTE)
11409 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11410 AC_SUBST(SYSTEM_BLUEZ)
11412 dnl ===================================================================
11413 dnl Check whether to enable GIO support
11414 dnl ===================================================================
11415 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11416     AC_MSG_CHECKING([whether to enable GIO support])
11417     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11418         dnl Need at least 2.26 for the dbus support.
11419         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11420                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11421         if test "$ENABLE_GIO" = "TRUE"; then
11422             AC_DEFINE(ENABLE_GIO)
11423             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11424             FilterLibs "${GIO_LIBS}"
11425             GIO_LIBS="${filteredlibs}"
11426         fi
11427     else
11428         AC_MSG_RESULT([no])
11429     fi
11431 AC_SUBST(ENABLE_GIO)
11432 AC_SUBST(GIO_CFLAGS)
11433 AC_SUBST(GIO_LIBS)
11436 dnl ===================================================================
11438 SPLIT_APP_MODULES=""
11439 if test "$enable_split_app_modules" = "yes"; then
11440     SPLIT_APP_MODULES="TRUE"
11442 AC_SUBST(SPLIT_APP_MODULES)
11444 SPLIT_OPT_FEATURES=""
11445 if test "$enable_split_opt_features" = "yes"; then
11446     SPLIT_OPT_FEATURES="TRUE"
11448 AC_SUBST(SPLIT_OPT_FEATURES)
11450 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then
11451     if test "$enable_cairo_canvas" = yes; then
11452         AC_MSG_ERROR([The cairo canvas should not be used for this platform])
11453     fi
11454     enable_cairo_canvas=no
11455 elif test -z "$enable_cairo_canvas"; then
11456     enable_cairo_canvas=yes
11459 ENABLE_CAIRO_CANVAS=""
11460 if test "$enable_cairo_canvas" = "yes"; then
11461     test_cairo=yes
11462     ENABLE_CAIRO_CANVAS="TRUE"
11463     AC_DEFINE(ENABLE_CAIRO_CANVAS)
11465 AC_SUBST(ENABLE_CAIRO_CANVAS)
11467 dnl ===================================================================
11468 dnl Check whether the GStreamer libraries are available.
11469 dnl ===================================================================
11471 ENABLE_GSTREAMER_1_0=""
11473 if test "$build_gstreamer_1_0" = "yes"; then
11475     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11476     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11477         ENABLE_GSTREAMER_1_0="TRUE"
11478         AC_MSG_RESULT([yes])
11479         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11480         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11481         FilterLibs "${GSTREAMER_1_0_LIBS}"
11482         GSTREAMER_1_0_LIBS="${filteredlibs}"
11483         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11484     else
11485         AC_MSG_RESULT([no])
11486     fi
11488 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11489 AC_SUBST(GSTREAMER_1_0_LIBS)
11490 AC_SUBST(ENABLE_GSTREAMER_1_0)
11492 ENABLE_OPENGL_TRANSITIONS=
11493 ENABLE_OPENGL_CANVAS=
11494 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11495    : # disable
11496 elif test "$_os" = "Darwin"; then
11497     # We use frameworks on macOS, no need for detail checks
11498     ENABLE_OPENGL_TRANSITIONS=TRUE
11499     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11500     ENABLE_OPENGL_CANVAS=TRUE
11501 elif test $_os = WINNT; then
11502     ENABLE_OPENGL_TRANSITIONS=TRUE
11503     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11504     ENABLE_OPENGL_CANVAS=TRUE
11505 else
11506     if test "$USING_X11" = TRUE; then
11507         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11508         ENABLE_OPENGL_TRANSITIONS=TRUE
11509         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11510         ENABLE_OPENGL_CANVAS=TRUE
11511     fi
11514 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11515 AC_SUBST(ENABLE_OPENGL_CANVAS)
11517 dnl =================================================
11518 dnl Check whether to build with OpenCL support.
11519 dnl =================================================
11521 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11522     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11523     # platform (optional at run-time, used through clew).
11524     BUILD_TYPE="$BUILD_TYPE OPENCL"
11525     AC_DEFINE(HAVE_FEATURE_OPENCL)
11528 dnl =================================================
11529 dnl Check whether to build with dconf support.
11530 dnl =================================================
11532 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11533     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11534         if test "$enable_dconf" = yes; then
11535             AC_MSG_ERROR([dconf not found])
11536         else
11537             enable_dconf=no
11538         fi])
11540 AC_MSG_CHECKING([whether to enable dconf])
11541 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11542     DCONF_CFLAGS=
11543     DCONF_LIBS=
11544     ENABLE_DCONF=
11545     AC_MSG_RESULT([no])
11546 else
11547     ENABLE_DCONF=TRUE
11548     AC_DEFINE(ENABLE_DCONF)
11549     AC_MSG_RESULT([yes])
11551 AC_SUBST([DCONF_CFLAGS])
11552 AC_SUBST([DCONF_LIBS])
11553 AC_SUBST([ENABLE_DCONF])
11555 # pdf import?
11556 AC_MSG_CHECKING([whether to build the PDF import feature])
11557 ENABLE_PDFIMPORT=
11558 if test $_os != iOS -a \( -z "$enable_pdfimport" -o "$enable_pdfimport" = yes \); then
11559     AC_MSG_RESULT([yes])
11560     ENABLE_PDFIMPORT=TRUE
11561     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11562 else
11563     AC_MSG_RESULT([no])
11566 # Pdfium?
11567 AC_MSG_CHECKING([whether to build PDFium])
11568 ENABLE_PDFIUM=
11569 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11570     AC_MSG_RESULT([yes])
11571     ENABLE_PDFIUM=TRUE
11572     AC_DEFINE(HAVE_FEATURE_PDFIUM)
11573     BUILD_TYPE="$BUILD_TYPE PDFIUM"
11574 else
11575     AC_MSG_RESULT([no])
11577 AC_SUBST(ENABLE_PDFIUM)
11579 dnl ===================================================================
11580 dnl Check for poppler
11581 dnl ===================================================================
11582 ENABLE_POPPLER=
11583 AC_MSG_CHECKING([whether to build Poppler])
11584 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11585     AC_MSG_RESULT([yes])
11586     ENABLE_POPPLER=TRUE
11587     AC_DEFINE(HAVE_FEATURE_POPPLER)
11588 else
11589     AC_MSG_RESULT([no])
11591 AC_SUBST(ENABLE_POPPLER)
11593 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11594     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11597 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11598     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11601 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11602     dnl ===================================================================
11603     dnl Check for system poppler
11604     dnl ===================================================================
11605     AC_MSG_CHECKING([which PDF import poppler to use])
11606     if test "$with_system_poppler" = "yes"; then
11607         AC_MSG_RESULT([external])
11608         SYSTEM_POPPLER=TRUE
11609         PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11610         AC_LANG_PUSH([C++])
11611         save_CXXFLAGS=$CXXFLAGS
11612         save_CPPFLAGS=$CPPFLAGS
11613         CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11614         CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11615         AC_CHECK_HEADER([cpp/poppler-version.h],
11616             [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11617             [])
11618         CXXFLAGS=$save_CXXFLAGS
11619         CPPFLAGS=$save_CPPFLAGS
11620         AC_LANG_POP([C++])
11621         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11623         FilterLibs "${POPPLER_LIBS}"
11624         POPPLER_LIBS="${filteredlibs}"
11625     else
11626         AC_MSG_RESULT([internal])
11627         SYSTEM_POPPLER=
11628         BUILD_TYPE="$BUILD_TYPE POPPLER"
11629         AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11630     fi
11631     AC_DEFINE([ENABLE_PDFIMPORT],1)
11633 AC_SUBST(ENABLE_PDFIMPORT)
11634 AC_SUBST(SYSTEM_POPPLER)
11635 AC_SUBST(POPPLER_CFLAGS)
11636 AC_SUBST(POPPLER_LIBS)
11638 # Skia?
11639 AC_MSG_CHECKING([whether to build Skia])
11640 ENABLE_SKIA=
11641 if test "$enable_skia" != "no" -a "$build_skia" = "yes"; then
11642     if test "$enable_skia" = "debug"; then
11643         AC_MSG_RESULT([yes (debug)])
11644         ENABLE_SKIA_DEBUG=TRUE
11645     else
11646         AC_MSG_RESULT([yes])
11647         ENABLE_SKIA_DEBUG=
11648     fi
11649     ENABLE_SKIA=TRUE
11650     AC_DEFINE(HAVE_FEATURE_SKIA)
11651     BUILD_TYPE="$BUILD_TYPE SKIA"
11652 else
11653     AC_MSG_RESULT([no])
11655 AC_SUBST(ENABLE_SKIA)
11656 AC_SUBST(ENABLE_SKIA_DEBUG)
11658 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11659 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11660 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11661 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11662 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11663 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11664 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11665 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11666 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11668 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE -a ! \( "$_os" = "WINNT" -a "$CPUNAME" = "ARM64" \); then
11669     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11670         AC_MSG_CHECKING([for Clang])
11671         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
11672     else
11673         if test "$_os" = "WINNT"; then
11674             AC_MSG_CHECKING([for clang-cl])
11675             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
11676                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
11677                 dnl explicitly set -m32/-m64
11678                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
11679                 LO_CLANG_CXX="$LO_CLANG_CC"
11680                 AC_MSG_RESULT([$LO_CLANG_CC])
11681             else
11682                 AC_MSG_RESULT([no])
11683             fi
11684         else
11685             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
11686             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
11687         fi
11688     fi
11689     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11690         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
11691         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
11692         if test "$clang2_ver" -lt 50002; then
11693             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
11694             LO_CLANG_CC=
11695             LO_CLANG_CXX=
11696         fi
11697     fi
11698     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
11699         # Skia is the default on Windows, so hard-require Clang.
11700         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
11701         if test "$_os" = "WINNT"; then
11702             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
11703         else
11704             AC_MSG_WARN([Clang compiler not found.])
11705         fi
11706     else
11708         save_CXX="$CXX"
11709         CXX="$LO_CLANG_CXX"
11710         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
11711         flag_sse2=-msse2
11712         flag_ssse3=-mssse3
11713         flag_sse41=-msse4.1
11714         flag_sse42=-msse4.2
11715         flag_avx=-mavx
11716         flag_avx2=-mavx2
11717         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
11718         flag_f16c=-mf16c
11719         flag_fma=-mfma
11721         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
11722         AC_LANG_PUSH([C++])
11723         save_CXXFLAGS=$CXXFLAGS
11724         CXXFLAGS="$CXXFLAGS $flag_sse2"
11725         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11726             #include <emmintrin.h>
11727             int main () {
11728                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11729                 c = _mm_xor_si128 (a, b);
11730                 return 0;
11731             }
11732             ])],
11733             [can_compile_sse2=yes],
11734             [can_compile_sse2=no])
11735         AC_LANG_POP([C++])
11736         CXXFLAGS=$save_CXXFLAGS
11737         AC_MSG_RESULT([${can_compile_sse2}])
11738         if test "${can_compile_sse2}" = "yes" ; then
11739             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
11740         fi
11742         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
11743         AC_LANG_PUSH([C++])
11744         save_CXXFLAGS=$CXXFLAGS
11745         CXXFLAGS="$CXXFLAGS $flag_ssse3"
11746         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11747             #include <tmmintrin.h>
11748             int main () {
11749                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11750                 c = _mm_maddubs_epi16 (a, b);
11751                 return 0;
11752             }
11753             ])],
11754             [can_compile_ssse3=yes],
11755             [can_compile_ssse3=no])
11756         AC_LANG_POP([C++])
11757         CXXFLAGS=$save_CXXFLAGS
11758         AC_MSG_RESULT([${can_compile_ssse3}])
11759         if test "${can_compile_ssse3}" = "yes" ; then
11760             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
11761         fi
11763         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
11764         AC_LANG_PUSH([C++])
11765         save_CXXFLAGS=$CXXFLAGS
11766         CXXFLAGS="$CXXFLAGS $flag_sse41"
11767         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11768             #include <smmintrin.h>
11769             int main () {
11770                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11771                 c = _mm_cmpeq_epi64 (a, b);
11772                 return 0;
11773             }
11774             ])],
11775             [can_compile_sse41=yes],
11776             [can_compile_sse41=no])
11777         AC_LANG_POP([C++])
11778         CXXFLAGS=$save_CXXFLAGS
11779         AC_MSG_RESULT([${can_compile_sse41}])
11780         if test "${can_compile_sse41}" = "yes" ; then
11781             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
11782         fi
11784         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
11785         AC_LANG_PUSH([C++])
11786         save_CXXFLAGS=$CXXFLAGS
11787         CXXFLAGS="$CXXFLAGS $flag_sse42"
11788         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11789             #include <nmmintrin.h>
11790             int main () {
11791                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11792                 c = _mm_cmpgt_epi64 (a, b);
11793                 return 0;
11794             }
11795             ])],
11796             [can_compile_sse42=yes],
11797             [can_compile_sse42=no])
11798         AC_LANG_POP([C++])
11799         CXXFLAGS=$save_CXXFLAGS
11800         AC_MSG_RESULT([${can_compile_sse42}])
11801         if test "${can_compile_sse42}" = "yes" ; then
11802             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
11803         fi
11805         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
11806         AC_LANG_PUSH([C++])
11807         save_CXXFLAGS=$CXXFLAGS
11808         CXXFLAGS="$CXXFLAGS $flag_avx"
11809         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11810             #include <immintrin.h>
11811             int main () {
11812                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
11813                 c = _mm256_xor_ps(a, b);
11814                 return 0;
11815             }
11816             ])],
11817             [can_compile_avx=yes],
11818             [can_compile_avx=no])
11819         AC_LANG_POP([C++])
11820         CXXFLAGS=$save_CXXFLAGS
11821         AC_MSG_RESULT([${can_compile_avx}])
11822         if test "${can_compile_avx}" = "yes" ; then
11823             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
11824         fi
11826         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
11827         AC_LANG_PUSH([C++])
11828         save_CXXFLAGS=$CXXFLAGS
11829         CXXFLAGS="$CXXFLAGS $flag_avx2"
11830         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11831             #include <immintrin.h>
11832             int main () {
11833                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
11834                 c = _mm256_maddubs_epi16(a, b);
11835                 return 0;
11836             }
11837             ])],
11838             [can_compile_avx2=yes],
11839             [can_compile_avx2=no])
11840         AC_LANG_POP([C++])
11841         CXXFLAGS=$save_CXXFLAGS
11842         AC_MSG_RESULT([${can_compile_avx2}])
11843         if test "${can_compile_avx2}" = "yes" ; then
11844             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
11845         fi
11847         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
11848         AC_LANG_PUSH([C++])
11849         save_CXXFLAGS=$CXXFLAGS
11850         CXXFLAGS="$CXXFLAGS $flag_avx512"
11851         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11852             #include <immintrin.h>
11853             int main () {
11854                 __m512i a = _mm512_loadu_si512(0);
11855                 return 0;
11856             }
11857             ])],
11858             [can_compile_avx512=yes],
11859             [can_compile_avx512=no])
11860         AC_LANG_POP([C++])
11861         CXXFLAGS=$save_CXXFLAGS
11862         AC_MSG_RESULT([${can_compile_avx512}])
11863         if test "${can_compile_avx512}" = "yes" ; then
11864             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
11865         fi
11867         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
11868         AC_LANG_PUSH([C++])
11869         save_CXXFLAGS=$CXXFLAGS
11870         CXXFLAGS="$CXXFLAGS $flag_f16c"
11871         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11872             #include <immintrin.h>
11873             int main () {
11874                 __m128i a = _mm_set1_epi32 (0);
11875                 __m128 c;
11876                 c = _mm_cvtph_ps(a);
11877                 return 0;
11878             }
11879             ])],
11880             [can_compile_f16c=yes],
11881             [can_compile_f16c=no])
11882         AC_LANG_POP([C++])
11883         CXXFLAGS=$save_CXXFLAGS
11884         AC_MSG_RESULT([${can_compile_f16c}])
11885         if test "${can_compile_f16c}" = "yes" ; then
11886             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
11887         fi
11889         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
11890         AC_LANG_PUSH([C++])
11891         save_CXXFLAGS=$CXXFLAGS
11892         CXXFLAGS="$CXXFLAGS $flag_fma"
11893         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11894             #include <immintrin.h>
11895             int main () {
11896                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
11897                 d = _mm256_fmadd_ps(a, b, c);
11898                 return 0;
11899             }
11900             ])],
11901             [can_compile_fma=yes],
11902             [can_compile_fma=no])
11903         AC_LANG_POP([C++])
11904         CXXFLAGS=$save_CXXFLAGS
11905         AC_MSG_RESULT([${can_compile_fma}])
11906         if test "${can_compile_fma}" = "yes" ; then
11907             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
11908         fi
11910         CXX="$save_CXX"
11911     fi
11914 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
11916 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11917     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
11918     AC_LANG_PUSH([C])
11919     save_CC="$CC"
11920     CC="$LO_CLANG_CC"
11921     save_CFLAGS=$CFLAGS
11922     CFLAGS="$CFLAGS --ccache-skip -O2"
11923     dnl an empty program will do, we're checking the compiler flags
11924     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11925                       [use_ccache=yes], [use_ccache=no])
11926     CFLAGS=$save_CFLAGS
11927     CC=$save_CC
11928     if test $use_ccache = yes; then
11929         AC_MSG_RESULT([yes])
11930     else
11931         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
11932         AC_MSG_RESULT([no])
11933     fi
11934     AC_LANG_POP([C])
11936     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
11937     AC_LANG_PUSH([C++])
11938     save_CXX="$CXX"
11939     CXX="$LO_CLANG_CXX"
11940     save_CXXFLAGS=$CXXFLAGS
11941     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
11942     dnl an empty program will do, we're checking the compiler flags
11943     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11944                       [use_ccache=yes], [use_ccache=no])
11945     if test $use_ccache = yes; then
11946         AC_MSG_RESULT([yes])
11947     else
11948         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
11949         AC_MSG_RESULT([no])
11950     fi
11951     CXXFLAGS=$save_CXXFLAGS
11952     CXX=$save_CXX
11953     AC_LANG_POP([C++])
11956 AC_SUBST(LO_CLANG_CC)
11957 AC_SUBST(LO_CLANG_CXX)
11958 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
11959 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
11960 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
11961 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
11962 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
11963 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
11964 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
11965 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
11966 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
11967 AC_SUBST(CLANG_USE_LD)
11969 SYSTEM_GPGMEPP=
11971 if test "$enable_gpgmepp" = no; then
11972     AC_MSG_CHECKING([whether to enable gpgmepp])
11973     AC_MSG_RESULT([no])
11974 elif test "$enable_mpl_subset" = "yes"; then
11975     AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
11976     AC_MSG_RESULT([yes])
11977 elif test "$enable_fuzzers" = "yes"; then
11978     AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
11979     AC_MSG_RESULT([yes])
11980 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
11981     dnl ===================================================================
11982     dnl Check for system gpgme
11983     dnl ===================================================================
11984     AC_MSG_CHECKING([which gpgmepp to use])
11985     if test "$with_system_gpgmepp" = "yes"; then
11986         AC_MSG_RESULT([external])
11987         SYSTEM_GPGMEPP=TRUE
11989         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
11990         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
11991             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
11992         # progress_callback is the only func with plain C linkage
11993         # checking for it also filters out older, KDE-dependent libgpgmepp versions
11994         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
11995             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
11996         AC_CHECK_HEADER(gpgme.h, [],
11997             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
11998     else
11999         AC_MSG_RESULT([internal])
12000         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12001         AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12003         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12004         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12005         if test "$_os" != "WINNT"; then
12006             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12007             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12008         fi
12009     fi
12010     ENABLE_GPGMEPP=TRUE
12011     AC_DEFINE([HAVE_FEATURE_GPGME])
12012     AC_PATH_PROG(GPG, gpg)
12013     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12014     # so let's exclude that manually for the moment
12015     if test -n "$GPG" -a "$_os" != "WINNT"; then
12016         # make sure we not only have a working gpgme, but a full working
12017         # gpg installation to run OpenPGP signature verification
12018         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12019     fi
12020     if test "$_os" = "Linux"; then
12021       uid=`id -u`
12022       AC_MSG_CHECKING([for /run/user/$uid])
12023       if test -d /run/user/$uid; then
12024         AC_MSG_RESULT([yes])
12025         AC_PATH_PROG(GPGCONF, gpgconf)
12027         # Older versions of gpgconf are not working as expected, since
12028         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12029         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12030         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12031         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12032         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12033         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12034         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12035           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12036           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12037           if $GPGCONF --dump-options > /dev/null ; then
12038             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12039               AC_MSG_RESULT([yes])
12040               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12041               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12042             else
12043               AC_MSG_RESULT([no])
12044             fi
12045           else
12046             AC_MSG_RESULT([no. missing or broken gpgconf?])
12047           fi
12048         else
12049           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12050         fi
12051       else
12052         AC_MSG_RESULT([no])
12053      fi
12054    fi
12056 AC_SUBST(ENABLE_GPGMEPP)
12057 AC_SUBST(SYSTEM_GPGMEPP)
12058 AC_SUBST(GPG_ERROR_CFLAGS)
12059 AC_SUBST(GPG_ERROR_LIBS)
12060 AC_SUBST(LIBASSUAN_CFLAGS)
12061 AC_SUBST(LIBASSUAN_LIBS)
12062 AC_SUBST(GPGMEPP_CFLAGS)
12063 AC_SUBST(GPGMEPP_LIBS)
12065 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12066 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12067     AC_MSG_RESULT([yes])
12068     ENABLE_MEDIAWIKI=TRUE
12069     BUILD_TYPE="$BUILD_TYPE XSLTML"
12070     if test  "x$with_java" = "xno"; then
12071         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12072     fi
12073 else
12074     AC_MSG_RESULT([no])
12075     ENABLE_MEDIAWIKI=
12076     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12078 AC_SUBST(ENABLE_MEDIAWIKI)
12080 AC_MSG_CHECKING([whether to build the Report Builder])
12081 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12082     AC_MSG_RESULT([yes])
12083     ENABLE_REPORTBUILDER=TRUE
12084     AC_MSG_CHECKING([which jfreereport libs to use])
12085     if test "$with_system_jfreereport" = "yes"; then
12086         SYSTEM_JFREEREPORT=TRUE
12087         AC_MSG_RESULT([external])
12088         if test -z $SAC_JAR; then
12089             SAC_JAR=/usr/share/java/sac.jar
12090         fi
12091         if ! test -f $SAC_JAR; then
12092              AC_MSG_ERROR(sac.jar not found.)
12093         fi
12095         if test -z $LIBXML_JAR; then
12096             if test -f /usr/share/java/libxml-1.0.0.jar; then
12097                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12098             elif test -f /usr/share/java/libxml.jar; then
12099                 LIBXML_JAR=/usr/share/java/libxml.jar
12100             else
12101                 AC_MSG_ERROR(libxml.jar replacement not found.)
12102             fi
12103         elif ! test -f $LIBXML_JAR; then
12104             AC_MSG_ERROR(libxml.jar not found.)
12105         fi
12107         if test -z $FLUTE_JAR; then
12108             if test -f /usr/share/java/flute-1.3.0.jar; then
12109                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12110             elif test -f /usr/share/java/flute.jar; then
12111                 FLUTE_JAR=/usr/share/java/flute.jar
12112             else
12113                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12114             fi
12115         elif ! test -f $FLUTE_JAR; then
12116             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12117         fi
12119         if test -z $JFREEREPORT_JAR; then
12120             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12121                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12122             elif test -f /usr/share/java/flow-engine.jar; then
12123                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12124             else
12125                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12126             fi
12127         elif ! test -f  $JFREEREPORT_JAR; then
12128                 AC_MSG_ERROR(jfreereport.jar not found.)
12129         fi
12131         if test -z $LIBLAYOUT_JAR; then
12132             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12133                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12134             elif test -f /usr/share/java/liblayout.jar; then
12135                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12136             else
12137                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12138             fi
12139         elif ! test -f $LIBLAYOUT_JAR; then
12140                 AC_MSG_ERROR(liblayout.jar not found.)
12141         fi
12143         if test -z $LIBLOADER_JAR; then
12144             if test -f /usr/share/java/libloader-1.0.0.jar; then
12145                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12146             elif test -f /usr/share/java/libloader.jar; then
12147                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12148             else
12149                 AC_MSG_ERROR(libloader.jar replacement not found.)
12150             fi
12151         elif ! test -f  $LIBLOADER_JAR; then
12152             AC_MSG_ERROR(libloader.jar not found.)
12153         fi
12155         if test -z $LIBFORMULA_JAR; then
12156             if test -f /usr/share/java/libformula-0.2.0.jar; then
12157                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12158             elif test -f /usr/share/java/libformula.jar; then
12159                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12160             else
12161                 AC_MSG_ERROR(libformula.jar replacement not found.)
12162             fi
12163         elif ! test -f $LIBFORMULA_JAR; then
12164                 AC_MSG_ERROR(libformula.jar not found.)
12165         fi
12167         if test -z $LIBREPOSITORY_JAR; then
12168             if test -f /usr/share/java/librepository-1.0.0.jar; then
12169                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12170             elif test -f /usr/share/java/librepository.jar; then
12171                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12172             else
12173                 AC_MSG_ERROR(librepository.jar replacement not found.)
12174             fi
12175         elif ! test -f $LIBREPOSITORY_JAR; then
12176             AC_MSG_ERROR(librepository.jar not found.)
12177         fi
12179         if test -z $LIBFONTS_JAR; then
12180             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12181                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12182             elif test -f /usr/share/java/libfonts.jar; then
12183                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12184             else
12185                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12186             fi
12187         elif ! test -f $LIBFONTS_JAR; then
12188                 AC_MSG_ERROR(libfonts.jar not found.)
12189         fi
12191         if test -z $LIBSERIALIZER_JAR; then
12192             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12193                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12194             elif test -f /usr/share/java/libserializer.jar; then
12195                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12196             else
12197                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12198             fi
12199         elif ! test -f $LIBSERIALIZER_JAR; then
12200                 AC_MSG_ERROR(libserializer.jar not found.)
12201         fi
12203         if test -z $LIBBASE_JAR; then
12204             if test -f /usr/share/java/libbase-1.0.0.jar; then
12205                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12206             elif test -f /usr/share/java/libbase.jar; then
12207                 LIBBASE_JAR=/usr/share/java/libbase.jar
12208             else
12209                 AC_MSG_ERROR(libbase.jar replacement not found.)
12210             fi
12211         elif ! test -f $LIBBASE_JAR; then
12212             AC_MSG_ERROR(libbase.jar not found.)
12213         fi
12215     else
12216         AC_MSG_RESULT([internal])
12217         SYSTEM_JFREEREPORT=
12218         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12219         NEED_ANT=TRUE
12220     fi
12221 else
12222     AC_MSG_RESULT([no])
12223     ENABLE_REPORTBUILDER=
12224     SYSTEM_JFREEREPORT=
12226 AC_SUBST(ENABLE_REPORTBUILDER)
12227 AC_SUBST(SYSTEM_JFREEREPORT)
12228 AC_SUBST(SAC_JAR)
12229 AC_SUBST(LIBXML_JAR)
12230 AC_SUBST(FLUTE_JAR)
12231 AC_SUBST(JFREEREPORT_JAR)
12232 AC_SUBST(LIBBASE_JAR)
12233 AC_SUBST(LIBLAYOUT_JAR)
12234 AC_SUBST(LIBLOADER_JAR)
12235 AC_SUBST(LIBFORMULA_JAR)
12236 AC_SUBST(LIBREPOSITORY_JAR)
12237 AC_SUBST(LIBFONTS_JAR)
12238 AC_SUBST(LIBSERIALIZER_JAR)
12240 # this has to be here because both the Wiki Publisher and the SRB use
12241 # commons-logging
12242 COMMONS_LOGGING_VERSION=1.2
12243 if test "$ENABLE_REPORTBUILDER" = "TRUE"; then
12244     AC_MSG_CHECKING([which Apache commons-* libs to use])
12245     if test "$with_system_apache_commons" = "yes"; then
12246         SYSTEM_APACHE_COMMONS=TRUE
12247         AC_MSG_RESULT([external])
12248         if test -z $COMMONS_LOGGING_JAR; then
12249             if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then
12250                COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar
12251            elif test -f /usr/share/java/commons-logging.jar; then
12252                 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar
12253             else
12254                 AC_MSG_ERROR(commons-logging.jar replacement not found.)
12255             fi
12256         elif ! test -f $COMMONS_LOGGING_JAR; then
12257             AC_MSG_ERROR(commons-logging.jar not found.)
12258         fi
12259     else
12260         AC_MSG_RESULT([internal])
12261         SYSTEM_APACHE_COMMONS=
12262         BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS"
12263         NEED_ANT=TRUE
12264     fi
12266 AC_SUBST(SYSTEM_APACHE_COMMONS)
12267 AC_SUBST(COMMONS_LOGGING_JAR)
12268 AC_SUBST(COMMONS_LOGGING_VERSION)
12270 # scripting provider for BeanShell?
12271 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12272 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12273     AC_MSG_RESULT([yes])
12274     ENABLE_SCRIPTING_BEANSHELL=TRUE
12276     dnl ===================================================================
12277     dnl Check for system beanshell
12278     dnl ===================================================================
12279     AC_MSG_CHECKING([which beanshell to use])
12280     if test "$with_system_beanshell" = "yes"; then
12281         AC_MSG_RESULT([external])
12282         SYSTEM_BSH=TRUE
12283         if test -z $BSH_JAR; then
12284             BSH_JAR=/usr/share/java/bsh.jar
12285         fi
12286         if ! test -f $BSH_JAR; then
12287             AC_MSG_ERROR(bsh.jar not found.)
12288         fi
12289     else
12290         AC_MSG_RESULT([internal])
12291         SYSTEM_BSH=
12292         BUILD_TYPE="$BUILD_TYPE BSH"
12293     fi
12294 else
12295     AC_MSG_RESULT([no])
12296     ENABLE_SCRIPTING_BEANSHELL=
12297     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12299 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12300 AC_SUBST(SYSTEM_BSH)
12301 AC_SUBST(BSH_JAR)
12303 # scripting provider for JavaScript?
12304 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12305 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12306     AC_MSG_RESULT([yes])
12307     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12309     dnl ===================================================================
12310     dnl Check for system rhino
12311     dnl ===================================================================
12312     AC_MSG_CHECKING([which rhino to use])
12313     if test "$with_system_rhino" = "yes"; then
12314         AC_MSG_RESULT([external])
12315         SYSTEM_RHINO=TRUE
12316         if test -z $RHINO_JAR; then
12317             RHINO_JAR=/usr/share/java/js.jar
12318         fi
12319         if ! test -f $RHINO_JAR; then
12320             AC_MSG_ERROR(js.jar not found.)
12321         fi
12322     else
12323         AC_MSG_RESULT([internal])
12324         SYSTEM_RHINO=
12325         BUILD_TYPE="$BUILD_TYPE RHINO"
12326         NEED_ANT=TRUE
12327     fi
12328 else
12329     AC_MSG_RESULT([no])
12330     ENABLE_SCRIPTING_JAVASCRIPT=
12331     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12333 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12334 AC_SUBST(SYSTEM_RHINO)
12335 AC_SUBST(RHINO_JAR)
12337 # This is only used in Qt5/KF5 checks to determine if /usr/lib64
12338 # paths should be added to library search path. So lets put all 64-bit
12339 # platforms there.
12340 supports_multilib=
12341 case "$host_cpu" in
12342 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12343     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12344         supports_multilib="yes"
12345     fi
12346     ;;
12348     ;;
12349 esac
12351 dnl ===================================================================
12352 dnl QT5 Integration
12353 dnl ===================================================================
12355 QT5_CFLAGS=""
12356 QT5_LIBS=""
12357 QMAKE5="qmake"
12358 MOC5="moc"
12359 QT5_GOBJECT_CFLAGS=""
12360 QT5_GOBJECT_LIBS=""
12361 QT5_HAVE_GOBJECT=""
12362 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12363         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12364         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12365 then
12366     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12367     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12369     if test -n "$supports_multilib"; then
12370         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12371     fi
12373     qt5_test_include="QtWidgets/qapplication.h"
12374     qt5_test_library="libQt5Widgets.so"
12376     dnl Check for qmake5
12377     AC_PATH_PROGS( QMAKE5, [qmake-qt5 qmake], no, [$QT5DIR/bin:$PATH])
12378     if test "$QMAKE5" = "no"; then
12379         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12380     else
12381         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12382         if test -z "$qmake5_test_ver"; then
12383             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12384         fi
12385         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12386         qt5_minimal_minor="6"
12387         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12388             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12389         else
12390             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12391         fi
12392     fi
12394     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12395     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12397     AC_MSG_CHECKING([for Qt5 headers])
12398     qt5_incdir="no"
12399     for inc_dir in $qt5_incdirs; do
12400         if test -r "$inc_dir/$qt5_test_include"; then
12401             qt5_incdir="$inc_dir"
12402             break
12403         fi
12404     done
12405     AC_MSG_RESULT([$qt5_incdir])
12406     if test "x$qt5_incdir" = "xno"; then
12407         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12408     fi
12409     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12410     AC_LANG_PUSH([C++])
12411     save_CPPFLAGS=$CPPFLAGS
12412     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12413     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12414         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12415     CPPFLAGS=$save_CPPFLAGS
12416     AC_LANG_POP([C++])
12418     AC_MSG_CHECKING([for Qt5 libraries])
12419     qt5_libdir="no"
12420     for lib_dir in $qt5_libdirs; do
12421         if test -r "$lib_dir/$qt5_test_library"; then
12422             qt5_libdir="$lib_dir"
12423             break
12424         fi
12425     done
12426     AC_MSG_RESULT([$qt5_libdir])
12427     if test "x$qt5_libdir" = "xno"; then
12428         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12429     fi
12431     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12432     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12433     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12435     if test "$USING_X11" = TRUE; then
12436         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12437         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12438             QT5_HAVE_XCB_ICCCM=1
12439             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12440         ],[
12441             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)])
12442             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12443         ])
12444         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12445         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12446         QT5_USING_X11=1
12447         AC_DEFINE(QT5_USING_X11)
12448     fi
12450     dnl Check for Meta Object Compiler
12452     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12453     if test "$MOC5" = "no"; then
12454         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12455 the root of your Qt installation by exporting QT5DIR before running "configure".])
12456     fi
12458     if test "$build_gstreamer_1_0" = "yes"; then
12459         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12460                 QT5_HAVE_GOBJECT=1
12461                 AC_DEFINE(QT5_HAVE_GOBJECT)
12462             ],
12463             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12464         )
12465     fi
12467 AC_SUBST(QT5_CFLAGS)
12468 AC_SUBST(QT5_LIBS)
12469 AC_SUBST(MOC5)
12470 AC_SUBST(QT5_GOBJECT_CFLAGS)
12471 AC_SUBST(QT5_GOBJECT_LIBS)
12472 AC_SUBST(QT5_HAVE_GOBJECT)
12474 dnl ===================================================================
12475 dnl KF5 Integration
12476 dnl ===================================================================
12478 KF5_CFLAGS=""
12479 KF5_LIBS=""
12480 KF5_CONFIG="kf5-config"
12481 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12482         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12483 then
12484     if test "$OS" = "HAIKU"; then
12485         haiku_arch="`echo $RTL_ARCH | tr X x`"
12486         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12487         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12488     fi
12490     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12491     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12492     if test -n "$supports_multilib"; then
12493         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12494     fi
12496     kf5_test_include="KF5/kcoreaddons_version.h"
12497     kf5_test_library="libKF5CoreAddons.so"
12498     kf5_libdirs="$qt5_libdir $kf5_libdirs"
12500     dnl kf5 KDE4 support compatibility installed
12501     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12502     if test "$KF5_CONFIG" != "no"; then
12503         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12504         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12505     fi
12507     dnl Check for KF5 headers
12508     AC_MSG_CHECKING([for KF5 headers])
12509     kf5_incdir="no"
12510     for kf5_check in $kf5_incdirs; do
12511         if test -r "$kf5_check/$kf5_test_include"; then
12512             kf5_incdir="$kf5_check/KF5"
12513             break
12514         fi
12515     done
12516     AC_MSG_RESULT([$kf5_incdir])
12517     if test "x$kf5_incdir" = "xno"; then
12518         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12519     fi
12521     dnl Check for KF5 libraries
12522     AC_MSG_CHECKING([for KF5 libraries])
12523     kf5_libdir="no"
12524     for kf5_check in $kf5_libdirs; do
12525         if test -r "$kf5_check/$kf5_test_library"; then
12526             kf5_libdir="$kf5_check"
12527             break
12528         fi
12529     done
12531     AC_MSG_RESULT([$kf5_libdir])
12532     if test "x$kf5_libdir" = "xno"; then
12533         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12534     fi
12536     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"
12537     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12538     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12540     if test "$USING_X11" = TRUE; then
12541         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
12542     fi
12544     AC_LANG_PUSH([C++])
12545     save_CXXFLAGS=$CXXFLAGS
12546     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
12547     AC_MSG_CHECKING([whether KDE is >= 5.0])
12548        AC_RUN_IFELSE([AC_LANG_SOURCE([[
12549 #include <kcoreaddons_version.h>
12551 int main(int argc, char **argv) {
12552        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
12553        else return 1;
12555        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
12556     CXXFLAGS=$save_CXXFLAGS
12557     AC_LANG_POP([C++])
12559 AC_SUBST(KF5_CFLAGS)
12560 AC_SUBST(KF5_LIBS)
12562 dnl ===================================================================
12563 dnl Test whether to include Evolution 2 support
12564 dnl ===================================================================
12565 AC_MSG_CHECKING([whether to enable evolution 2 support])
12566 if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then
12567     AC_MSG_RESULT([yes])
12568     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
12569     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12570     FilterLibs "${GOBJECT_LIBS}"
12571     GOBJECT_LIBS="${filteredlibs}"
12572     ENABLE_EVOAB2="TRUE"
12573 else
12574     ENABLE_EVOAB2=""
12575     AC_MSG_RESULT([no])
12577 AC_SUBST(ENABLE_EVOAB2)
12578 AC_SUBST(GOBJECT_CFLAGS)
12579 AC_SUBST(GOBJECT_LIBS)
12581 dnl ===================================================================
12582 dnl Test which themes to include
12583 dnl ===================================================================
12584 AC_MSG_CHECKING([which themes to include])
12585 # if none given use default subset of available themes
12586 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
12587     with_theme="breeze breeze_dark breeze_dark_svg breeze_svg colibre colibre_svg elementary elementary_svg karasa_jaga karasa_jaga_svg sifr sifr_svg sifr_dark sifr_dark_svg sukapura sukapura_svg"
12590 WITH_THEMES=""
12591 if test "x$with_theme" != "xno"; then
12592     for theme in $with_theme; do
12593         case $theme in
12594         breeze|breeze_dark|breeze_dark_svg|breeze_svg|colibre|colibre_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg|sifr|sifr_svg|sifr_dark|sifr_dark_svg|sukapura|sukapura_svg) real_theme="$theme" ;;
12595         default) real_theme=colibre ;;
12596         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
12597         esac
12598         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
12599     done
12601 AC_MSG_RESULT([$WITH_THEMES])
12602 AC_SUBST([WITH_THEMES])
12603 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
12604 for theme in $with_theme; do
12605     case $theme in
12606     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
12607     *) ;;
12608     esac
12609 done
12611 dnl ===================================================================
12612 dnl Test whether to integrate helppacks into the product's installer
12613 dnl ===================================================================
12614 AC_MSG_CHECKING([for helppack integration])
12615 if test "$with_helppack_integration" = "no"; then
12616     AC_MSG_RESULT([no integration])
12617 else
12618     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
12619     AC_MSG_RESULT([integration])
12622 ###############################################################################
12623 # Extensions checking
12624 ###############################################################################
12625 AC_MSG_CHECKING([for extensions integration])
12626 if test "x$enable_extension_integration" != "xno"; then
12627     WITH_EXTENSION_INTEGRATION=TRUE
12628     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
12629     AC_MSG_RESULT([yes, use integration])
12630 else
12631     WITH_EXTENSION_INTEGRATION=
12632     AC_MSG_RESULT([no, do not integrate])
12634 AC_SUBST(WITH_EXTENSION_INTEGRATION)
12636 dnl Should any extra extensions be included?
12637 dnl There are standalone tests for each of these below.
12638 WITH_EXTRA_EXTENSIONS=
12639 AC_SUBST([WITH_EXTRA_EXTENSIONS])
12641 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
12642 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
12643 if test "x$with_java" != "xno"; then
12644     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
12645     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
12648 AC_MSG_CHECKING([whether to build opens___.ttf])
12649 if test "$enable_build_opensymbol" = "yes"; then
12650     AC_MSG_RESULT([yes])
12651     AC_PATH_PROG(FONTFORGE, fontforge)
12652     if test -z "$FONTFORGE"; then
12653         AC_MSG_ERROR([fontforge not installed])
12654     fi
12655 else
12656     AC_MSG_RESULT([no])
12657     OPENSYMBOL_TTF=f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
12658     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
12660 AC_SUBST(OPENSYMBOL_TTF)
12661 AC_SUBST(FONTFORGE)
12663 dnl ===================================================================
12664 dnl Test whether to include fonts
12665 dnl ===================================================================
12666 AC_MSG_CHECKING([whether to include third-party fonts])
12667 if test "$with_fonts" != "no"; then
12668     AC_MSG_RESULT([yes])
12669     WITH_FONTS=TRUE
12670     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
12671     AC_DEFINE(HAVE_MORE_FONTS)
12672 else
12673     AC_MSG_RESULT([no])
12674     WITH_FONTS=
12675     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
12677 AC_SUBST(WITH_FONTS)
12680 dnl ===================================================================
12681 dnl Test whether to enable online update service
12682 dnl ===================================================================
12683 AC_MSG_CHECKING([whether to enable online update])
12684 ENABLE_ONLINE_UPDATE=
12685 ENABLE_ONLINE_UPDATE_MAR=
12686 UPDATE_CONFIG=
12687 if test "$enable_online_update" = ""; then
12688     if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12689         AC_MSG_RESULT([yes])
12690         ENABLE_ONLINE_UPDATE="TRUE"
12691     else
12692         AC_MSG_RESULT([no])
12693     fi
12694 else
12695     if test "$enable_online_update" = "mar"; then
12696         AC_MSG_RESULT([yes - MAR-based online update])
12697         ENABLE_ONLINE_UPDATE_MAR="TRUE"
12698         if test "$with_update_config" = ""; then
12699             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
12700         fi
12701         UPDATE_CONFIG="$with_update_config"
12702         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
12703     elif test "$enable_online_update" = "yes"; then
12704         AC_MSG_RESULT([yes])
12705         ENABLE_ONLINE_UPDATE="TRUE"
12706     else
12707         AC_MSG_RESULT([no])
12708     fi
12710 AC_SUBST(ENABLE_ONLINE_UPDATE)
12711 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
12712 AC_SUBST(UPDATE_CONFIG)
12714 dnl ===================================================================
12715 dnl Test whether we need bzip2
12716 dnl ===================================================================
12717 SYSTEM_BZIP2=
12718 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
12719     AC_MSG_CHECKING([whether to use system bzip2])
12720     if test "$with_system_bzip2" = yes; then
12721         SYSTEM_BZIP2=TRUE
12722         AC_MSG_RESULT([yes])
12723         PKG_CHECK_MODULES(BZIP2, bzip2)
12724         FilterLibs "${BZIP2_LIBS}"
12725         BZIP2_LIBS="${filteredlibs}"
12726     else
12727         AC_MSG_RESULT([no])
12728         BUILD_TYPE="$BUILD_TYPE BZIP2"
12729     fi
12731 AC_SUBST(SYSTEM_BZIP2)
12732 AC_SUBST(BZIP2_CFLAGS)
12733 AC_SUBST(BZIP2_LIBS)
12735 dnl ===================================================================
12736 dnl Test whether to enable extension update
12737 dnl ===================================================================
12738 AC_MSG_CHECKING([whether to enable extension update])
12739 ENABLE_EXTENSION_UPDATE=
12740 if test "x$enable_extension_update" = "xno"; then
12741     AC_MSG_RESULT([no])
12742 else
12743     AC_MSG_RESULT([yes])
12744     ENABLE_EXTENSION_UPDATE="TRUE"
12745     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
12746     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
12748 AC_SUBST(ENABLE_EXTENSION_UPDATE)
12751 dnl ===================================================================
12752 dnl Test whether to create MSI with LIMITUI=1 (silent install)
12753 dnl ===================================================================
12754 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
12755 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
12756     AC_MSG_RESULT([no])
12757     ENABLE_SILENT_MSI=
12758 else
12759     AC_MSG_RESULT([yes])
12760     ENABLE_SILENT_MSI=TRUE
12761     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
12763 AC_SUBST(ENABLE_SILENT_MSI)
12765 AC_MSG_CHECKING([whether and how to use Xinerama])
12766 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
12767     if test "$x_libraries" = "default_x_libraries"; then
12768         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
12769         if test "x$XINERAMALIB" = x; then
12770            XINERAMALIB="/usr/lib"
12771         fi
12772     else
12773         XINERAMALIB="$x_libraries"
12774     fi
12775     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
12776         # we have both versions, let the user decide but use the dynamic one
12777         # per default
12778         USE_XINERAMA=TRUE
12779         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
12780             XINERAMA_LINK=dynamic
12781         else
12782             XINERAMA_LINK=static
12783         fi
12784     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
12785         # we have only the dynamic version
12786         USE_XINERAMA=TRUE
12787         XINERAMA_LINK=dynamic
12788     elif test -e "$XINERAMALIB/libXinerama.a"; then
12789         # static version
12790         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
12791             USE_XINERAMA=TRUE
12792             XINERAMA_LINK=static
12793         else
12794             USE_XINERAMA=
12795             XINERAMA_LINK=none
12796         fi
12797     else
12798         # no Xinerama
12799         USE_XINERAMA=
12800         XINERAMA_LINK=none
12801     fi
12802     if test "$USE_XINERAMA" = "TRUE"; then
12803         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
12804         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
12805             [AC_MSG_ERROR(Xinerama header not found.)], [])
12806         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
12807         if test "x$XEXTLIB" = x; then
12808            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
12809         fi
12810         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
12811         if test "$_os" = "FreeBSD"; then
12812             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
12813         fi
12814         if test "$_os" = "Linux"; then
12815             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
12816         fi
12817         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
12818             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
12819     else
12820         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
12821     fi
12822 else
12823     USE_XINERAMA=
12824     XINERAMA_LINK=none
12825     AC_MSG_RESULT([no])
12827 AC_SUBST(USE_XINERAMA)
12828 AC_SUBST(XINERAMA_LINK)
12830 dnl ===================================================================
12831 dnl Test whether to build cairo or rely on the system version
12832 dnl ===================================================================
12834 if test "$USING_X11" = TRUE; then
12835     # Used in vcl/Library_vclplug_gen.mk
12836     test_cairo=yes
12839 if test "$test_cairo" = "yes"; then
12840     AC_MSG_CHECKING([whether to use the system cairo])
12842     : ${with_system_cairo:=$with_system_libs}
12843     if test "$with_system_cairo" = "yes"; then
12844         SYSTEM_CAIRO=TRUE
12845         AC_MSG_RESULT([yes])
12847         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
12848         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12849         FilterLibs "${CAIRO_LIBS}"
12850         CAIRO_LIBS="${filteredlibs}"
12852         if test "$test_xrender" = "yes"; then
12853             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
12854             AC_LANG_PUSH([C])
12855             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
12856 #ifdef PictStandardA8
12857 #else
12858       return fail;
12859 #endif
12860 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
12862             AC_LANG_POP([C])
12863         fi
12864     else
12865         SYSTEM_CAIRO=
12866         AC_MSG_RESULT([no])
12868         BUILD_TYPE="$BUILD_TYPE CAIRO"
12869     fi
12872 AC_SUBST(SYSTEM_CAIRO)
12873 AC_SUBST(CAIRO_CFLAGS)
12874 AC_SUBST(CAIRO_LIBS)
12876 dnl ===================================================================
12877 dnl Test whether to use avahi
12878 dnl ===================================================================
12879 if test "$_os" = "WINNT"; then
12880     # Windows uses bundled mDNSResponder
12881     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
12882 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
12883     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
12884                       [ENABLE_AVAHI="TRUE"])
12885     AC_DEFINE(HAVE_FEATURE_AVAHI)
12886     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12887     FilterLibs "${AVAHI_LIBS}"
12888     AVAHI_LIBS="${filteredlibs}"
12891 AC_SUBST(ENABLE_AVAHI)
12892 AC_SUBST(AVAHI_CFLAGS)
12893 AC_SUBST(AVAHI_LIBS)
12895 dnl ===================================================================
12896 dnl Test whether to use liblangtag
12897 dnl ===================================================================
12898 SYSTEM_LIBLANGTAG=
12899 AC_MSG_CHECKING([whether to use system liblangtag])
12900 if test "$with_system_liblangtag" = yes; then
12901     SYSTEM_LIBLANGTAG=TRUE
12902     AC_MSG_RESULT([yes])
12903     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
12904     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
12905     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
12906     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12907     FilterLibs "${LIBLANGTAG_LIBS}"
12908     LIBLANGTAG_LIBS="${filteredlibs}"
12909 else
12910     SYSTEM_LIBLANGTAG=
12911     AC_MSG_RESULT([no])
12912     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
12913     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
12914     if test "$COM" = "MSC"; then
12915         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
12916     else
12917         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
12918     fi
12920 AC_SUBST(SYSTEM_LIBLANGTAG)
12921 AC_SUBST(LIBLANGTAG_CFLAGS)
12922 AC_SUBST(LIBLANGTAG_LIBS)
12924 dnl ===================================================================
12925 dnl Test whether to build libpng or rely on the system version
12926 dnl ===================================================================
12928 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
12930 dnl ===================================================================
12931 dnl Check for runtime JVM search path
12932 dnl ===================================================================
12933 if test "$ENABLE_JAVA" != ""; then
12934     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
12935     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
12936         AC_MSG_RESULT([yes])
12937         if ! test -d "$with_jvm_path"; then
12938             AC_MSG_ERROR(["$with_jvm_path" not a directory])
12939         fi
12940         if ! test -d "$with_jvm_path"jvm; then
12941             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
12942         fi
12943         JVM_ONE_PATH_CHECK="$with_jvm_path"
12944         AC_SUBST(JVM_ONE_PATH_CHECK)
12945     else
12946         AC_MSG_RESULT([no])
12947     fi
12950 dnl ===================================================================
12951 dnl Test for the presence of Ant and that it works
12952 dnl ===================================================================
12954 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
12955     ANT_HOME=; export ANT_HOME
12956     WITH_ANT_HOME=; export WITH_ANT_HOME
12957     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
12958         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
12959             if test "$_os" = "WINNT"; then
12960                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
12961             else
12962                 with_ant_home="$LODE_HOME/opt/ant"
12963             fi
12964         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
12965             with_ant_home="$LODE_HOME/opt/ant"
12966         fi
12967     fi
12968     if test -z "$with_ant_home"; then
12969         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
12970     else
12971         if test "$_os" = "WINNT"; then
12972             # AC_PATH_PROGS needs unix path
12973             with_ant_home=`cygpath -u "$with_ant_home"`
12974         fi
12975         AbsolutePath "$with_ant_home"
12976         with_ant_home=$absolute_path
12977         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
12978         WITH_ANT_HOME=$with_ant_home
12979         ANT_HOME=$with_ant_home
12980     fi
12982     if test -z "$ANT"; then
12983         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
12984     else
12985         # resolve relative or absolute symlink
12986         while test -h "$ANT"; do
12987             a_cwd=`pwd`
12988             a_basename=`basename "$ANT"`
12989             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
12990             cd "`dirname "$ANT"`"
12991             cd "`dirname "$a_script"`"
12992             ANT="`pwd`"/"`basename "$a_script"`"
12993             cd "$a_cwd"
12994         done
12996         AC_MSG_CHECKING([if $ANT works])
12997         mkdir -p conftest.dir
12998         a_cwd=$(pwd)
12999         cd conftest.dir
13000         cat > conftest.java << EOF
13001         public class conftest {
13002             int testmethod(int a, int b) {
13003                     return a + b;
13004             }
13005         }
13008         cat > conftest.xml << EOF
13009         <project name="conftest" default="conftest">
13010         <target name="conftest">
13011             <javac srcdir="." includes="conftest.java">
13012             </javac>
13013         </target>
13014         </project>
13017         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13018         if test $? = 0 -a -f ./conftest.class; then
13019             AC_MSG_RESULT([Ant works])
13020             if test -z "$WITH_ANT_HOME"; then
13021                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13022                 if test -z "$ANT_HOME"; then
13023                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13024                 fi
13025             else
13026                 ANT_HOME="$WITH_ANT_HOME"
13027             fi
13028         else
13029             echo "configure: Ant test failed" >&5
13030             cat conftest.java >&5
13031             cat conftest.xml >&5
13032             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13033         fi
13034         cd "$a_cwd"
13035         rm -fr conftest.dir
13036     fi
13037     if test -z "$ANT_HOME"; then
13038         ANT_HOME="NO_ANT_HOME"
13039     else
13040         PathFormat "$ANT_HOME"
13041         ANT_HOME="$formatted_path"
13042         PathFormat "$ANT"
13043         ANT="$formatted_path"
13044     fi
13046     dnl Checking for ant.jar
13047     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13048         AC_MSG_CHECKING([Ant lib directory])
13049         if test -f $ANT_HOME/lib/ant.jar; then
13050             ANT_LIB="$ANT_HOME/lib"
13051         else
13052             if test -f $ANT_HOME/ant.jar; then
13053                 ANT_LIB="$ANT_HOME"
13054             else
13055                 if test -f /usr/share/java/ant.jar; then
13056                     ANT_LIB=/usr/share/java
13057                 else
13058                     if test -f /usr/share/ant-core/lib/ant.jar; then
13059                         ANT_LIB=/usr/share/ant-core/lib
13060                     else
13061                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13062                             ANT_LIB="$ANT_HOME/lib/ant"
13063                         else
13064                             if test -f /usr/share/lib/ant/ant.jar; then
13065                                 ANT_LIB=/usr/share/lib/ant
13066                             else
13067                                 AC_MSG_ERROR([Ant libraries not found!])
13068                             fi
13069                         fi
13070                     fi
13071                 fi
13072             fi
13073         fi
13074         PathFormat "$ANT_LIB"
13075         ANT_LIB="$formatted_path"
13076         AC_MSG_RESULT([Ant lib directory found.])
13077     fi
13079     ant_minver=1.6.0
13080     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13082     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13083     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13084     ant_version_major=`echo $ant_version | cut -d. -f1`
13085     ant_version_minor=`echo $ant_version | cut -d. -f2`
13086     echo "configure: ant_version $ant_version " >&5
13087     echo "configure: ant_version_major $ant_version_major " >&5
13088     echo "configure: ant_version_minor $ant_version_minor " >&5
13089     if test "$ant_version_major" -ge "2"; then
13090         AC_MSG_RESULT([yes, $ant_version])
13091     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13092         AC_MSG_RESULT([yes, $ant_version])
13093     else
13094         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13095     fi
13097     rm -f conftest* core core.* *.core
13099 AC_SUBST(ANT)
13100 AC_SUBST(ANT_HOME)
13101 AC_SUBST(ANT_LIB)
13103 OOO_JUNIT_JAR=
13104 HAMCREST_JAR=
13105 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13106     AC_MSG_CHECKING([for JUnit 4])
13107     if test "$with_junit" = "yes"; then
13108         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13109             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13110         elif test -e /usr/share/java/junit4.jar; then
13111             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13112         else
13113            if test -e /usr/share/lib/java/junit.jar; then
13114               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13115            else
13116               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13117            fi
13118         fi
13119     else
13120         OOO_JUNIT_JAR=$with_junit
13121     fi
13122     if test "$_os" = "WINNT"; then
13123         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13124     fi
13125     printf 'import org.junit.Before;' > conftest.java
13126     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13127         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13128     else
13129         AC_MSG_ERROR(
13130 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13131  specify its pathname via --with-junit=..., or disable it via --without-junit])
13132     fi
13133     rm -f conftest.class conftest.java
13134     if test $OOO_JUNIT_JAR != ""; then
13135         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13136     fi
13138     AC_MSG_CHECKING([for included Hamcrest])
13139     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13140     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13141         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13142     else
13143         AC_MSG_RESULT([Not included])
13144         AC_MSG_CHECKING([for standalone hamcrest jar.])
13145         if test "$with_hamcrest" = "yes"; then
13146             if test -e /usr/share/lib/java/hamcrest.jar; then
13147                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13148             elif test -e /usr/share/java/hamcrest/core.jar; then
13149                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13150             else
13151                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13152             fi
13153         else
13154             HAMCREST_JAR=$with_hamcrest
13155         fi
13156         if test "$_os" = "WINNT"; then
13157             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13158         fi
13159         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13160             AC_MSG_RESULT([$HAMCREST_JAR])
13161         else
13162             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),
13163                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13164         fi
13165     fi
13166     rm -f conftest.class conftest.java
13168 AC_SUBST(OOO_JUNIT_JAR)
13169 AC_SUBST(HAMCREST_JAR)
13172 AC_SUBST(SCPDEFS)
13175 # check for wget and curl
13177 WGET=
13178 CURL=
13180 if test "$enable_fetch_external" != "no"; then
13182 CURL=`which curl 2>/dev/null`
13184 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13185     # wget new enough?
13186     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13187     if test $? -eq 0; then
13188         WGET=$i
13189         break
13190     fi
13191 done
13193 if test -z "$WGET" -a -z "$CURL"; then
13194     AC_MSG_ERROR([neither wget nor curl found!])
13199 AC_SUBST(WGET)
13200 AC_SUBST(CURL)
13203 # check for sha256sum
13205 SHA256SUM=
13207 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13208     eval "$i -a 256 --version" > /dev/null 2>&1
13209     ret=$?
13210     if test $ret -eq 0; then
13211         SHA256SUM="$i -a 256"
13212         break
13213     fi
13214 done
13216 if test -z "$SHA256SUM"; then
13217     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13218         eval "$i --version" > /dev/null 2>&1
13219         ret=$?
13220         if test $ret -eq 0; then
13221             SHA256SUM=$i
13222             break
13223         fi
13224     done
13227 if test -z "$SHA256SUM"; then
13228     AC_MSG_ERROR([no sha256sum found!])
13231 AC_SUBST(SHA256SUM)
13233 dnl ===================================================================
13234 dnl Dealing with l10n options
13235 dnl ===================================================================
13236 AC_MSG_CHECKING([which languages to be built])
13237 # get list of all languages
13238 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13239 # the sed command does the following:
13240 #   + if a line ends with a backslash, append the next line to it
13241 #   + adds " on the beginning of the value (after =)
13242 #   + adds " at the end of the value
13243 #   + removes en-US; we want to put it on the beginning
13244 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13245 [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)]
13246 ALL_LANGS="en-US $completelangiso"
13247 # check the configured localizations
13248 WITH_LANG="$with_lang"
13250 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13251 # (Norwegian is "nb" and "nn".)
13252 if test "$WITH_LANG" = "no"; then
13253     WITH_LANG=
13256 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13257     AC_MSG_RESULT([en-US])
13258 else
13259     AC_MSG_RESULT([$WITH_LANG])
13260     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13261     if test -z "$MSGFMT"; then
13262         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13263             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13264         elif test -x "/opt/lo/bin/msgfmt"; then
13265             MSGFMT="/opt/lo/bin/msgfmt"
13266         else
13267             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13268             if test -z "$MSGFMT"; then
13269                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13270             fi
13271         fi
13272     fi
13273     if test -z "$MSGUNIQ"; then
13274         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13275             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13276         elif test -x "/opt/lo/bin/msguniq"; then
13277             MSGUNIQ="/opt/lo/bin/msguniq"
13278         else
13279             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13280             if test -z "$MSGUNIQ"; then
13281                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13282             fi
13283         fi
13284     fi
13286 AC_SUBST(MSGFMT)
13287 AC_SUBST(MSGUNIQ)
13288 # check that the list is valid
13289 for lang in $WITH_LANG; do
13290     test "$lang" = "ALL" && continue
13291     # need to check for the exact string, so add space before and after the list of all languages
13292     for vl in $ALL_LANGS; do
13293         if test "$vl" = "$lang"; then
13294            break
13295         fi
13296     done
13297     if test "$vl" != "$lang"; then
13298         # if you're reading this - you prolly quoted your languages remove the quotes ...
13299         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13300     fi
13301 done
13302 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13303     echo $WITH_LANG | grep -q en-US
13304     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13306 # list with substituted ALL
13307 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13308 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13309 test "$WITH_LANG" = "en-US" && WITH_LANG=
13310 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13311     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13312     ALL_LANGS=`echo $ALL_LANGS qtz`
13314 AC_SUBST(ALL_LANGS)
13315 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13316 AC_SUBST(WITH_LANG)
13317 AC_SUBST(WITH_LANG_LIST)
13318 AC_SUBST(GIT_NEEDED_SUBMODULES)
13320 WITH_POOR_HELP_LOCALIZATIONS=
13321 if test -d "$SRC_ROOT/translations/source"; then
13322     for l in `ls -1 $SRC_ROOT/translations/source`; do
13323         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13324             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13325         fi
13326     done
13328 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13330 if test -n "$with_locales"; then
13331     WITH_LOCALES="$with_locales"
13333     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13334     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13335     # config_host/config_locales.h.in
13336     for locale in $WITH_LOCALES; do
13337         lang=${locale%_*}
13339         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13341         case $lang in
13342         hi|mr*ne)
13343             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13344             ;;
13345         bg|ru)
13346             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13347             ;;
13348         esac
13349     done
13350 else
13351     AC_DEFINE(WITH_LOCALE_ALL)
13353 AC_SUBST(WITH_LOCALES)
13355 dnl git submodule update --reference
13356 dnl ===================================================================
13357 if test -n "${GIT_REFERENCE_SRC}"; then
13358     for repo in ${GIT_NEEDED_SUBMODULES}; do
13359         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13360             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13361         fi
13362     done
13364 AC_SUBST(GIT_REFERENCE_SRC)
13366 dnl git submodules linked dirs
13367 dnl ===================================================================
13368 if test -n "${GIT_LINK_SRC}"; then
13369     for repo in ${GIT_NEEDED_SUBMODULES}; do
13370         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13371             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13372         fi
13373     done
13375 AC_SUBST(GIT_LINK_SRC)
13377 dnl branding
13378 dnl ===================================================================
13379 AC_MSG_CHECKING([for alternative branding images directory])
13380 # initialize mapped arrays
13381 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13382 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13384 if test -z "$with_branding" -o "$with_branding" = "no"; then
13385     AC_MSG_RESULT([none])
13386     DEFAULT_BRAND_IMAGES="$brand_files"
13387 else
13388     if ! test -d $with_branding ; then
13389         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13390     else
13391         AC_MSG_RESULT([$with_branding])
13392         CUSTOM_BRAND_DIR="$with_branding"
13393         for lfile in $brand_files
13394         do
13395             if ! test -f $with_branding/$lfile ; then
13396                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13397                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13398             else
13399                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13400             fi
13401         done
13402         check_for_progress="yes"
13403     fi
13405 AC_SUBST([BRAND_INTRO_IMAGES])
13406 AC_SUBST([CUSTOM_BRAND_DIR])
13407 AC_SUBST([CUSTOM_BRAND_IMAGES])
13408 AC_SUBST([DEFAULT_BRAND_IMAGES])
13411 AC_MSG_CHECKING([for 'intro' progress settings])
13412 PROGRESSBARCOLOR=
13413 PROGRESSSIZE=
13414 PROGRESSPOSITION=
13415 PROGRESSFRAMECOLOR=
13416 PROGRESSTEXTCOLOR=
13417 PROGRESSTEXTBASELINE=
13419 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13420     source "$with_branding/progress.conf"
13421     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13422 else
13423     AC_MSG_RESULT([none])
13426 AC_SUBST(PROGRESSBARCOLOR)
13427 AC_SUBST(PROGRESSSIZE)
13428 AC_SUBST(PROGRESSPOSITION)
13429 AC_SUBST(PROGRESSFRAMECOLOR)
13430 AC_SUBST(PROGRESSTEXTCOLOR)
13431 AC_SUBST(PROGRESSTEXTBASELINE)
13434 dnl ===================================================================
13435 dnl Custom build version
13436 dnl ===================================================================
13437 AC_MSG_CHECKING([for extra build ID])
13438 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13439     EXTRA_BUILDID="$with_extra_buildid"
13441 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13442 if test -n "$EXTRA_BUILDID" ; then
13443     AC_MSG_RESULT([$EXTRA_BUILDID])
13444 else
13445     AC_MSG_RESULT([not set])
13447 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13449 OOO_VENDOR=
13450 AC_MSG_CHECKING([for vendor])
13451 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13452     OOO_VENDOR="$USERNAME"
13454     if test -z "$OOO_VENDOR"; then
13455         OOO_VENDOR="$USER"
13456     fi
13458     if test -z "$OOO_VENDOR"; then
13459         OOO_VENDOR="`id -u -n`"
13460     fi
13462     AC_MSG_RESULT([not set, using $OOO_VENDOR])
13463 else
13464     OOO_VENDOR="$with_vendor"
13465     AC_MSG_RESULT([$OOO_VENDOR])
13467 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13468 AC_SUBST(OOO_VENDOR)
13470 if test "$_os" = "Android" ; then
13471     ANDROID_PACKAGE_NAME=
13472     AC_MSG_CHECKING([for Android package name])
13473     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13474         if test -n "$ENABLE_DEBUG"; then
13475             # Default to the package name that makes ndk-gdb happy.
13476             ANDROID_PACKAGE_NAME="org.libreoffice"
13477         else
13478             ANDROID_PACKAGE_NAME="org.example.libreoffice"
13479         fi
13481         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13482     else
13483         ANDROID_PACKAGE_NAME="$with_android_package_name"
13484         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13485     fi
13486     AC_SUBST(ANDROID_PACKAGE_NAME)
13489 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13490 if test "$with_compat_oowrappers" = "yes"; then
13491     WITH_COMPAT_OOWRAPPERS=TRUE
13492     AC_MSG_RESULT(yes)
13493 else
13494     WITH_COMPAT_OOWRAPPERS=
13495     AC_MSG_RESULT(no)
13497 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13499 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13500 AC_MSG_CHECKING([for install dirname])
13501 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13502     INSTALLDIRNAME="$with_install_dirname"
13504 AC_MSG_RESULT([$INSTALLDIRNAME])
13505 AC_SUBST(INSTALLDIRNAME)
13507 AC_MSG_CHECKING([for prefix])
13508 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13509 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13510 PREFIXDIR="$prefix"
13511 AC_MSG_RESULT([$PREFIXDIR])
13512 AC_SUBST(PREFIXDIR)
13514 LIBDIR=[$(eval echo $(eval echo $libdir))]
13515 AC_SUBST(LIBDIR)
13517 DATADIR=[$(eval echo $(eval echo $datadir))]
13518 AC_SUBST(DATADIR)
13520 MANDIR=[$(eval echo $(eval echo $mandir))]
13521 AC_SUBST(MANDIR)
13523 DOCDIR=[$(eval echo $(eval echo $docdir))]
13524 AC_SUBST(DOCDIR)
13526 BINDIR=[$(eval echo $(eval echo $bindir))]
13527 AC_SUBST(BINDIR)
13529 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
13530 AC_SUBST(INSTALLDIR)
13532 TESTINSTALLDIR="${BUILDDIR}/test-install"
13533 AC_SUBST(TESTINSTALLDIR)
13536 # ===================================================================
13537 # OAuth2 id and secrets
13538 # ===================================================================
13540 AC_MSG_CHECKING([for Google Drive client id and secret])
13541 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
13542     AC_MSG_RESULT([not set])
13543     GDRIVE_CLIENT_ID="\"\""
13544     GDRIVE_CLIENT_SECRET="\"\""
13545 else
13546     AC_MSG_RESULT([set])
13547     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
13548     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
13550 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
13551 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
13553 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
13554 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
13555     AC_MSG_RESULT([not set])
13556     ALFRESCO_CLOUD_CLIENT_ID="\"\""
13557     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
13558 else
13559     AC_MSG_RESULT([set])
13560     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
13561     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
13563 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
13564 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
13566 AC_MSG_CHECKING([for OneDrive client id and secret])
13567 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
13568     AC_MSG_RESULT([not set])
13569     ONEDRIVE_CLIENT_ID="\"\""
13570     ONEDRIVE_CLIENT_SECRET="\"\""
13571 else
13572     AC_MSG_RESULT([set])
13573     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
13574     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
13576 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
13577 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
13580 dnl ===================================================================
13581 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
13582 dnl --enable-dependency-tracking configure option
13583 dnl ===================================================================
13584 AC_MSG_CHECKING([whether to enable dependency tracking])
13585 if test "$enable_dependency_tracking" = "no"; then
13586     nodep=TRUE
13587     AC_MSG_RESULT([no])
13588 else
13589     AC_MSG_RESULT([yes])
13591 AC_SUBST(nodep)
13593 dnl ===================================================================
13594 dnl Number of CPUs to use during the build
13595 dnl ===================================================================
13596 AC_MSG_CHECKING([for number of processors to use])
13597 # plain --with-parallelism is just the default
13598 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
13599     if test "$with_parallelism" = "no"; then
13600         PARALLELISM=0
13601     else
13602         PARALLELISM=$with_parallelism
13603     fi
13604 else
13605     if test "$enable_icecream" = "yes"; then
13606         PARALLELISM="40"
13607     else
13608         case `uname -s` in
13610         Darwin|FreeBSD|NetBSD|OpenBSD)
13611             PARALLELISM=`sysctl -n hw.ncpu`
13612             ;;
13614         Linux)
13615             PARALLELISM=`getconf _NPROCESSORS_ONLN`
13616         ;;
13617         # what else than above does profit here *and* has /proc?
13618         *)
13619             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
13620             ;;
13621         esac
13623         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
13624         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
13625     fi
13628 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
13629     if test -z "$with_parallelism"; then
13630             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
13631             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
13632             PARALLELISM="1"
13633     else
13634         add_warning "make 3.81 is prone to crashes with parallelism > 1. Since --with-parallelism was explicitly given, it is honored, but do not complain when make segfaults on you."
13635     fi
13638 if test $PARALLELISM -eq 0; then
13639     AC_MSG_RESULT([explicit make -j option needed])
13640 else
13641     AC_MSG_RESULT([$PARALLELISM])
13643 AC_SUBST(PARALLELISM)
13645 IWYU_PATH="$with_iwyu"
13646 AC_SUBST(IWYU_PATH)
13647 if test ! -z "$IWYU_PATH"; then
13648     if test ! -f "$IWYU_PATH"; then
13649         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
13650     fi
13654 # Set up ILIB for MSVC build
13656 ILIB1=
13657 if test "$build_os" = "cygwin"; then
13658     ILIB="."
13659     if test -n "$JAVA_HOME"; then
13660         ILIB="$ILIB;$JAVA_HOME/lib"
13661     fi
13662     ILIB1=-link
13663     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
13664     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
13665     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13666     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13667     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
13668         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13669         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13670     fi
13671     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
13672     ucrtlibpath_formatted=$formatted_path
13673     ILIB="$ILIB;$ucrtlibpath_formatted"
13674     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
13675     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
13676         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
13677     else
13678         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
13679     fi
13681     if test "$cross_compiling" != "yes"; then
13682         ILIB_FOR_BUILD="$ILIB"
13683     fi
13685 AC_SUBST(ILIB)
13686 AC_SUBST(ILIB_FOR_BUILD)
13688 # ===================================================================
13689 # Creating bigger shared library to link against
13690 # ===================================================================
13691 AC_MSG_CHECKING([whether to create huge library])
13692 MERGELIBS=
13694 if test $_os = iOS -o $_os = Android; then
13695     # Never any point in mergelibs for these as we build just static
13696     # libraries anyway...
13697     enable_mergelibs=no
13700 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
13701     if test $_os != Linux -a $_os != WINNT; then
13702         add_warning "--enable-mergelibs is not tested for this platform"
13703     fi
13704     MERGELIBS="TRUE"
13705     AC_MSG_RESULT([yes])
13706     AC_DEFINE(ENABLE_MERGELIBS)
13707 else
13708     AC_MSG_RESULT([no])
13710 AC_SUBST([MERGELIBS])
13712 dnl ===================================================================
13713 dnl icerun is a wrapper that stops us spawning tens of processes
13714 dnl locally - for tools that can't be executed on the compile cluster
13715 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
13716 dnl ===================================================================
13717 AC_MSG_CHECKING([whether to use icerun wrapper])
13718 ICECREAM_RUN=
13719 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
13720     ICECREAM_RUN=icerun
13721     AC_MSG_RESULT([yes])
13722 else
13723     AC_MSG_RESULT([no])
13725 AC_SUBST(ICECREAM_RUN)
13727 dnl ===================================================================
13728 dnl Setup the ICECC_VERSION for the build the same way it was set for
13729 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
13730 dnl ===================================================================
13731 x_ICECC_VERSION=[\#]
13732 if test -n "$ICECC_VERSION" ; then
13733     x_ICECC_VERSION=
13735 AC_SUBST(x_ICECC_VERSION)
13736 AC_SUBST(ICECC_VERSION)
13738 dnl ===================================================================
13740 AC_MSG_CHECKING([MPL subset])
13741 MPL_SUBSET=
13743 if test "$enable_mpl_subset" = "yes"; then
13744     warn_report=false
13745     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
13746         warn_report=true
13747     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
13748         warn_report=true
13749     fi
13750     if test "$warn_report" = "true"; then
13751         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
13752     fi
13753     if test "x$enable_postgresql_sdbc" != "xno"; then
13754         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
13755     fi
13756     if test "$enable_lotuswordpro" = "yes"; then
13757         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
13758     fi
13759     if test "$WITH_WEBDAV" = "neon"; then
13760         AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
13761     fi
13762     if test -n "$ENABLE_POPPLER"; then
13763         if test "x$SYSTEM_POPPLER" = "x"; then
13764             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
13765         fi
13766     fi
13767     # cf. m4/libo_check_extension.m4
13768     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
13769         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
13770     fi
13771     for theme in $WITH_THEMES; do
13772         case $theme in
13773         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
13774             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
13775         *) : ;;
13776         esac
13777     done
13779     ENABLE_OPENGL_TRANSITIONS=
13781     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
13782         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
13783     fi
13785     MPL_SUBSET="TRUE"
13786     AC_DEFINE(MPL_HAVE_SUBSET)
13787     AC_MSG_RESULT([only])
13788 else
13789     AC_MSG_RESULT([no restrictions])
13791 AC_SUBST(MPL_SUBSET)
13793 dnl ===================================================================
13795 AC_MSG_CHECKING([formula logger])
13796 ENABLE_FORMULA_LOGGER=
13798 if test "x$enable_formula_logger" = "xyes"; then
13799     AC_MSG_RESULT([yes])
13800     AC_DEFINE(ENABLE_FORMULA_LOGGER)
13801     ENABLE_FORMULA_LOGGER=TRUE
13802 elif test -n "$ENABLE_DBGUTIL" ; then
13803     AC_MSG_RESULT([yes])
13804     AC_DEFINE(ENABLE_FORMULA_LOGGER)
13805     ENABLE_FORMULA_LOGGER=TRUE
13806 else
13807     AC_MSG_RESULT([no])
13810 AC_SUBST(ENABLE_FORMULA_LOGGER)
13812 dnl ===================================================================
13813 dnl Checking for active Antivirus software.
13814 dnl ===================================================================
13816 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
13817     AC_MSG_CHECKING([for active Antivirus software])
13818     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
13819     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
13820         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
13821             AC_MSG_RESULT([found])
13822             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
13823             echo $EICAR_STRING > $SRC_ROOT/eicar
13824             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
13825             rm $SRC_ROOT/eicar
13826             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13827                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13828             fi
13829             echo $EICAR_STRING > $BUILDDIR/eicar
13830             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
13831             rm $BUILDDIR/eicar
13832             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13833                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13834             fi
13835             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"
13836         else
13837             AC_MSG_RESULT([not found])
13838         fi
13839     else
13840         AC_MSG_RESULT([n/a])
13841     fi
13844 dnl ===================================================================
13845 dnl Setting up the environment.
13846 dnl ===================================================================
13847 AC_MSG_NOTICE([setting up the build environment variables...])
13849 AC_SUBST(COMPATH)
13851 if test "$build_os" = "cygwin"; then
13852     if test -d "$COMPATH/atlmfc/lib/spectre"; then
13853         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
13854         ATL_INCLUDE="$COMPATH/atlmfc/include"
13855     elif test -d "$COMPATH/atlmfc/lib"; then
13856         ATL_LIB="$COMPATH/atlmfc/lib"
13857         ATL_INCLUDE="$COMPATH/atlmfc/include"
13858     else
13859         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
13860         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
13861     fi
13862     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
13863     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
13864     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
13866     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
13867     PathFormat "/usr/bin/find.exe"
13868     FIND="$formatted_path"
13869     PathFormat "/usr/bin/sort.exe"
13870     SORT="$formatted_path"
13871     PathFormat "/usr/bin/grep.exe"
13872     WIN_GREP="$formatted_path"
13873     PathFormat "/usr/bin/ls.exe"
13874     WIN_LS="$formatted_path"
13875     PathFormat "/usr/bin/touch.exe"
13876     WIN_TOUCH="$formatted_path"
13877 else
13878     FIND=find
13879     SORT=sort
13882 AC_SUBST(ATL_INCLUDE)
13883 AC_SUBST(ATL_LIB)
13884 AC_SUBST(FIND)
13885 AC_SUBST(SORT)
13886 AC_SUBST(WIN_GREP)
13887 AC_SUBST(WIN_LS)
13888 AC_SUBST(WIN_TOUCH)
13890 AC_SUBST(BUILD_TYPE)
13892 AC_SUBST(SOLARINC)
13894 PathFormat "$PERL"
13895 PERL="$formatted_path"
13896 AC_SUBST(PERL)
13898 if test -n "$TMPDIR"; then
13899     TEMP_DIRECTORY="$TMPDIR"
13900 else
13901     TEMP_DIRECTORY="/tmp"
13903 if test "$build_os" = "cygwin"; then
13904     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
13906 AC_SUBST(TEMP_DIRECTORY)
13908 # setup the PATH for the environment
13909 if test -n "$LO_PATH_FOR_BUILD"; then
13910     LO_PATH="$LO_PATH_FOR_BUILD"
13911     case "$host_os" in
13912     cygwin*|wsl*)
13913         pathmunge "$MSVC_HOST_PATH" "before"
13914         ;;
13915     esac
13916 else
13917     LO_PATH="$PATH"
13919     case "$host_os" in
13921     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
13922         if test "$ENABLE_JAVA" != ""; then
13923             pathmunge "$JAVA_HOME/bin" "after"
13924         fi
13925         ;;
13927     cygwin*|wsl*)
13928         # Win32 make needs native paths
13929         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
13930             LO_PATH=`cygpath -p -m "$PATH"`
13931         fi
13932         if test "$WIN_BUILD_ARCH" = "x64"; then
13933             # needed for msi packaging
13934             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
13935         fi
13936         # .NET 4.6 and higher don't have bin directory
13937         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
13938             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
13939         fi
13940         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
13941         pathmunge "$CSC_PATH" "before"
13942         pathmunge "$MIDL_PATH" "before"
13943         pathmunge "$AL_PATH" "before"
13944         pathmunge "$MSVC_MULTI_PATH" "before"
13945         pathmunge "$MSVC_BUILD_PATH" "before"
13946         if test -n "$MSBUILD_PATH" ; then
13947             pathmunge "$MSBUILD_PATH" "before"
13948         fi
13949         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
13950         if test "$ENABLE_JAVA" != ""; then
13951             if test -d "$JAVA_HOME/jre/bin/client"; then
13952                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
13953             fi
13954             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
13955                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
13956             fi
13957             pathmunge "$JAVA_HOME/bin" "before"
13958         fi
13959         pathmunge "$MSVC_HOST_PATH" "before"
13960         ;;
13962     solaris*)
13963         pathmunge "/usr/css/bin" "before"
13964         if test "$ENABLE_JAVA" != ""; then
13965             pathmunge "$JAVA_HOME/bin" "after"
13966         fi
13967         ;;
13968     esac
13971 AC_SUBST(LO_PATH)
13973 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
13974 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
13975     x_LO_ELFCHECK_ALLOWLIST=
13976 else
13977     x_LO_ELFCHECK_ALLOWLIST=[\#]
13979 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
13980 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
13982 libo_FUZZ_SUMMARY
13984 # Generate a configuration sha256 we can use for deps
13985 if test -f config_host.mk; then
13986     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
13988 if test -f config_host_lang.mk; then
13989     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
13992 CFLAGS=$my_original_CFLAGS
13993 CXXFLAGS=$my_original_CXXFLAGS
13994 CPPFLAGS=$my_original_CPPFLAGS
13996 AC_CONFIG_LINKS([include:include])
13998 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
13999 # BUILD platform configuration] - otherwise breaks cross building
14000 AC_CONFIG_FILES([config_host.mk
14001                  config_host_lang.mk
14002                  Makefile
14003                  bin/bffvalidator.sh
14004                  bin/odfvalidator.sh
14005                  bin/officeotron.sh
14006                  hardened_runtime.xcent
14007                  instsetoo_native/util/openoffice.lst
14008                  sysui/desktop/macosx/Info.plist
14009                  vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in])
14010 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14011 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14012 AC_CONFIG_HEADERS([config_host/config_clang.h])
14013 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14014 AC_CONFIG_HEADERS([config_host/config_eot.h])
14015 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14016 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14017 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14018 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14019 AC_CONFIG_HEADERS([config_host/config_features.h])
14020 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14021 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14022 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14023 AC_CONFIG_HEADERS([config_host/config_folders.h])
14024 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14025 AC_CONFIG_HEADERS([config_host/config_gio.h])
14026 AC_CONFIG_HEADERS([config_host/config_global.h])
14027 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14028 AC_CONFIG_HEADERS([config_host/config_java.h])
14029 AC_CONFIG_HEADERS([config_host/config_langs.h])
14030 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14031 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14032 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14033 AC_CONFIG_HEADERS([config_host/config_locales.h])
14034 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14035 AC_CONFIG_HEADERS([config_host/config_oox.h])
14036 AC_CONFIG_HEADERS([config_host/config_options.h])
14037 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14038 AC_CONFIG_HEADERS([config_host/config_qrcodegen.h])
14039 AC_CONFIG_HEADERS([config_host/config_skia.h])
14040 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14041 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14042 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14043 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14044 AC_CONFIG_HEADERS([config_host/config_version.h])
14045 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14046 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14047 AC_CONFIG_HEADERS([config_host/config_python.h])
14048 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14049 AC_OUTPUT
14051 if test "$CROSS_COMPILING" = TRUE; then
14052     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14055 # touch the config timestamp file
14056 if test ! -f config_host.mk.stamp; then
14057     echo > config_host.mk.stamp
14058 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14059     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14060 else
14061     echo > config_host.mk.stamp
14064 # touch the config lang timestamp file
14065 if test ! -f config_host_lang.mk.stamp; then
14066     echo > config_host_lang.mk.stamp
14067 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14068     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14069 else
14070     echo > config_host_lang.mk.stamp
14074 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14075         -a "$build_os" = "cygwin"; then
14077 cat << _EOS
14078 ****************************************************************************
14079 WARNING:
14080 Your make version is known to be horribly slow, and hard to debug
14081 problems with. To get a reasonably functional make please do:
14083 to install a pre-compiled binary make for Win32
14085  mkdir -p /opt/lo/bin
14086  cd /opt/lo/bin
14087  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14088  cp make-4.2.1-msvc.exe make
14089  chmod +x make
14091 to install from source:
14092 place yourself in a working directory of you choice.
14094  git clone git://git.savannah.gnu.org/make.git
14096  [go to Start menu, open "Visual Studio 2019", click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14097  set PATH=%PATH%;C:\Cygwin\bin
14098  [or Cygwin64, if that is what you have]
14099  cd path-to-make-repo-you-cloned-above
14100  build_w32.bat --without-guile
14102 should result in a WinRel/gnumake.exe.
14103 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14105 Then re-run autogen.sh
14107 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14108 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14110 _EOS
14111 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14112     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14117 cat << _EOF
14118 ****************************************************************************
14120 To build, run:
14121 $GNUMAKE
14123 To view some help, run:
14124 $GNUMAKE help
14126 _EOF
14128 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14129     cat << _EOF
14130 After the build has finished successfully, you can immediately run what you built using the command:
14131 _EOF
14133     if test $_os = Darwin; then
14134         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14135     else
14136         echo instdir/program/soffice
14137     fi
14138     cat << _EOF
14140 If you want to run the smoketest, run:
14141 $GNUMAKE check
14143 _EOF
14146 if test -f warn; then
14147     cat warn
14148     rm warn
14151 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: