tdf#138907 sw TitlePageDlg: Goto correct (existing) page
[LibreOffice.git] / configure.ac
blob53c393bbc067172b8c6d4b6b9c97c1eafc67ce6b
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.3
3382     older_sdk_vers="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 "$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*)
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; then
9242     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9243     enable_python=internal
9245 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9246     if test -n "$PYTHON"; then
9247         PYTHON_FOR_BUILD=$PYTHON
9248     else
9249         # This allows a lack of system python with no error, we use internal one in that case.
9250         AM_PATH_PYTHON([3.3],, [:])
9251         # Clean PYTHON_VERSION checked below if cross-compiling
9252         PYTHON_VERSION=""
9253         if test "$PYTHON" != ":"; then
9254             PYTHON_FOR_BUILD=$PYTHON
9255         fi
9256     fi
9258 AC_SUBST(PYTHON_FOR_BUILD)
9260 # Checks for Python to use for Pyuno
9261 AC_MSG_CHECKING([which Python to use for Pyuno])
9262 case "$enable_python" in
9263 no|disable)
9264     if test -z $PYTHON_FOR_BUILD; then
9265         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9266         # requirement from the choice whether to include Python stuff in the installer, but why
9267         # bother?
9268         AC_MSG_ERROR([Python is required at build time.])
9269     fi
9270     enable_python=no
9271     AC_MSG_RESULT([none])
9272     ;;
9273 ""|yes|auto)
9274     if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9275         AC_MSG_RESULT([no, overridden by --disable-scripting])
9276         enable_python=no
9277     elif test $build_os = cygwin; then
9278         dnl When building on Windows we don't attempt to use any installed
9279         dnl "system"  Python.
9280         AC_MSG_RESULT([fully internal])
9281         enable_python=internal
9282     elif test "$cross_compiling" = yes; then
9283         AC_MSG_RESULT([system])
9284         enable_python=system
9285     else
9286         # Unset variables set by the above AM_PATH_PYTHON so that
9287         # we actually do check anew.
9288         AC_MSG_RESULT([])
9289         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
9290         AM_PATH_PYTHON([3.3],, [:])
9291         AC_MSG_CHECKING([which Python to use for Pyuno])
9292         if test "$PYTHON" = ":"; then
9293             if test -z "$PYTHON_FOR_BUILD"; then
9294                 AC_MSG_RESULT([fully internal])
9295             else
9296                 AC_MSG_RESULT([internal])
9297             fi
9298             enable_python=internal
9299         else
9300             AC_MSG_RESULT([system])
9301             enable_python=system
9302         fi
9303     fi
9304     ;;
9305 internal)
9306     AC_MSG_RESULT([internal])
9307     ;;
9308 fully-internal)
9309     AC_MSG_RESULT([fully internal])
9310     enable_python=internal
9311     ;;
9312 system)
9313     AC_MSG_RESULT([system])
9314     if test "$_os" = Darwin; then
9315         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9316     fi
9317     ;;
9319     AC_MSG_ERROR([Incorrect --enable-python option])
9320     ;;
9321 esac
9323 if test $enable_python != no; then
9324     BUILD_TYPE="$BUILD_TYPE PYUNO"
9327 if test $enable_python = system; then
9328     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9329         # Fallback: Accept these in the environment, or as set above
9330         # for MacOSX.
9331         :
9332     elif test "$cross_compiling" != yes; then
9333         # Unset variables set by the above AM_PATH_PYTHON so that
9334         # we actually do check anew.
9335         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
9336         # This causes an error if no python command is found
9337         AM_PATH_PYTHON([3.3])
9338         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9339         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9340         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9341         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9342         if test -z "$PKG_CONFIG"; then
9343             PYTHON_CFLAGS="-I$python_include"
9344             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9345         elif $PKG_CONFIG --exists python-$python_version-embed; then
9346             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9347             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9348         elif $PKG_CONFIG --exists python-$python_version; then
9349             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9350             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9351         else
9352             PYTHON_CFLAGS="-I$python_include"
9353             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9354         fi
9355         FilterLibs "${PYTHON_LIBS}"
9356         PYTHON_LIBS="${filteredlibs}"
9357     else
9358         dnl How to find out the cross-compilation Python installation path?
9359         AC_MSG_CHECKING([for python version])
9360         AS_IF([test -n "$PYTHON_VERSION"],
9361               [AC_MSG_RESULT([$PYTHON_VERSION])],
9362               [AC_MSG_RESULT([not found])
9363                AC_MSG_ERROR([no usable python found])])
9364         test -n "$PYTHON_CFLAGS" && break
9365     fi
9367     dnl Check if the headers really work
9368     save_CPPFLAGS="$CPPFLAGS"
9369     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9370     AC_CHECK_HEADER(Python.h)
9371     CPPFLAGS="$save_CPPFLAGS"
9373     # let the PYTHON_FOR_BUILD match the same python installation that
9374     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9375     # better for PythonTests.
9376     PYTHON_FOR_BUILD=$PYTHON
9379 if test "$with_lxml" != no; then
9380     if test -z "$PYTHON_FOR_BUILD"; then
9381         case $build_os in
9382             cygwin)
9383                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9384                 ;;
9385             *)
9386                 if test "$cross_compiling" != yes ; then
9387                     BUILD_TYPE="$BUILD_TYPE LXML"
9388                 fi
9389                 ;;
9390         esac
9391     else
9392         AC_MSG_CHECKING([for python lxml])
9393         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9394             AC_MSG_RESULT([yes])
9395         else
9396             case $build_os in
9397                 cygwin)
9398                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9399                     ;;
9400                 *)
9401                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9402                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9403                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9404                         else
9405                             BUILD_TYPE="$BUILD_TYPE LXML"
9406                             AC_MSG_RESULT([no, using internal lxml])
9407                         fi
9408                     else
9409                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9410                     fi
9411                     ;;
9412             esac
9413         fi
9414     fi
9417 dnl By now enable_python should be "system", "internal" or "no"
9418 case $enable_python in
9419 system)
9420     SYSTEM_PYTHON=TRUE
9422     if test "x$ac_cv_header_Python_h" != "xyes"; then
9423        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9424     fi
9426     AC_LANG_PUSH(C)
9427     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9428     AC_MSG_CHECKING([for correct python library version])
9429        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9430 #include <Python.h>
9432 int main(int argc, char **argv) {
9433    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9434    else return 1;
9436        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9437     AC_LANG_POP(C)
9439     dnl FIXME Check if the Python library can be linked with, too?
9440     ;;
9442 internal)
9443     SYSTEM_PYTHON=
9444     PYTHON_VERSION_MAJOR=3
9445     PYTHON_VERSION_MINOR=8
9446     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.4
9447     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9448         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9449     fi
9450     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9451     BUILD_TYPE="$BUILD_TYPE PYTHON"
9452     if test "$OS" = LINUX -o "$OS" = WNT ; then
9453         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9454     fi
9455     # Embedded Python dies without Home set
9456     if test "$HOME" = ""; then
9457         export HOME=""
9458     fi
9459     ;;
9461     DISABLE_PYTHON=TRUE
9462     SYSTEM_PYTHON=
9463     ;;
9465     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9466     ;;
9467 esac
9469 AC_SUBST(DISABLE_PYTHON)
9470 AC_SUBST(SYSTEM_PYTHON)
9471 AC_SUBST(PYTHON_CFLAGS)
9472 AC_SUBST(PYTHON_LIBS)
9473 AC_SUBST(PYTHON_VERSION)
9474 AC_SUBST(PYTHON_VERSION_MAJOR)
9475 AC_SUBST(PYTHON_VERSION_MINOR)
9477 AC_MSG_CHECKING([whether to build LibreLogo])
9478 case "$enable_python" in
9479 no|disable)
9480     AC_MSG_RESULT([no; Python disabled])
9481     ;;
9483     if test "${enable_librelogo}" = "no"; then
9484         AC_MSG_RESULT([no])
9485     else
9486         AC_MSG_RESULT([yes])
9487         BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
9488         AC_DEFINE([ENABLE_LIBRELOGO],1)
9489     fi
9490     ;;
9491 esac
9492 AC_SUBST(ENABLE_LIBRELOGO)
9494 ENABLE_MARIADBC=
9495 MARIADBC_MAJOR=1
9496 MARIADBC_MINOR=0
9497 MARIADBC_MICRO=2
9498 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9499 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9500     ENABLE_MARIADBC=TRUE
9501     AC_MSG_RESULT([yes])
9502     BUILD_TYPE="$BUILD_TYPE MARIADBC"
9503 else
9504     AC_MSG_RESULT([no])
9506 AC_SUBST(ENABLE_MARIADBC)
9507 AC_SUBST(MARIADBC_MAJOR)
9508 AC_SUBST(MARIADBC_MINOR)
9509 AC_SUBST(MARIADBC_MICRO)
9511 if test "$ENABLE_MARIADBC" = "TRUE"; then
9512     dnl ===================================================================
9513     dnl Check for system MariaDB
9514     dnl ===================================================================
9515     AC_MSG_CHECKING([which MariaDB to use])
9516     if test "$with_system_mariadb" = "yes"; then
9517         AC_MSG_RESULT([external])
9518         SYSTEM_MARIADB_CONNECTOR_C=TRUE
9519         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9520         if test -z "$MARIADBCONFIG"; then
9521             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9522             if test -z "$MARIADBCONFIG"; then
9523                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9524                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9525             fi
9526         fi
9527         AC_MSG_CHECKING([MariaDB version])
9528         MARIADB_VERSION=`$MARIADBCONFIG --version`
9529         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9530         if test "$MARIADB_MAJOR" -ge "5"; then
9531             AC_MSG_RESULT([OK])
9532         else
9533             AC_MSG_ERROR([too old, use 5.0.x or later])
9534         fi
9535         AC_MSG_CHECKING([for MariaDB Client library])
9536         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9537         if test "$COM_IS_CLANG" = TRUE; then
9538             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9539         fi
9540         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9541         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9542         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9543         dnl linux32:
9544         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9545             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9546             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9547                 | sed -e 's|/lib64/|/lib/|')
9548         fi
9549         FilterLibs "${MARIADB_LIBS}"
9550         MARIADB_LIBS="${filteredlibs}"
9551         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9552         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9553         if test "$enable_bundle_mariadb" = "yes"; then
9554             AC_MSG_RESULT([yes])
9555             BUNDLE_MARIADB_CONNECTOR_C=TRUE
9556             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9558 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9560 /g' | grep -E '(mysqlclient|mariadb)')
9561             if test "$_os" = "Darwin"; then
9562                 LIBMARIADB=${LIBMARIADB}.dylib
9563             elif test "$_os" = "WINNT"; then
9564                 LIBMARIADB=${LIBMARIADB}.dll
9565             else
9566                 LIBMARIADB=${LIBMARIADB}.so
9567             fi
9568             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9569             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9570             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9571                 AC_MSG_RESULT([found.])
9572                 PathFormat "$LIBMARIADB_PATH"
9573                 LIBMARIADB_PATH="$formatted_path"
9574             else
9575                 AC_MSG_ERROR([not found.])
9576             fi
9577         else
9578             AC_MSG_RESULT([no])
9579             BUNDLE_MARIADB_CONNECTOR_C=
9580         fi
9581     else
9582         AC_MSG_RESULT([internal])
9583         SYSTEM_MARIADB_CONNECTOR_C=
9584         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9585         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9586         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9587     fi
9589     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9590     AC_SUBST(MARIADB_CFLAGS)
9591     AC_SUBST(MARIADB_LIBS)
9592     AC_SUBST(LIBMARIADB)
9593     AC_SUBST(LIBMARIADB_PATH)
9594     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9597 dnl ===================================================================
9598 dnl Check for system hsqldb
9599 dnl ===================================================================
9600 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9601     HSQLDB_USE_JDBC_4_1=
9602     AC_MSG_CHECKING([which hsqldb to use])
9603     if test "$with_system_hsqldb" = "yes"; then
9604         AC_MSG_RESULT([external])
9605         SYSTEM_HSQLDB=TRUE
9606         if test -z $HSQLDB_JAR; then
9607             HSQLDB_JAR=/usr/share/java/hsqldb.jar
9608         fi
9609         if ! test -f $HSQLDB_JAR; then
9610                AC_MSG_ERROR(hsqldb.jar not found.)
9611         fi
9612         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9613         export HSQLDB_JAR
9614         if $PERL -e \
9615            'use Archive::Zip;
9616             my $file = "$ENV{'HSQLDB_JAR'}";
9617             my $zip = Archive::Zip->new( $file );
9618             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9619             if ( $mf =~ m/Specification-Version: 1.8.*/ )
9620             {
9621                 push @l, split(/\n/, $mf);
9622                 foreach my $line (@l)
9623                 {
9624                     if ($line =~ m/Specification-Version:/)
9625                     {
9626                         ($t, $version) = split (/:/,$line);
9627                         $version =~ s/^\s//;
9628                         ($a, $b, $c, $d) = split (/\./,$version);
9629                         if ($c == "0" && $d > "8")
9630                         {
9631                             exit 0;
9632                         }
9633                         else
9634                         {
9635                             exit 1;
9636                         }
9637                     }
9638                 }
9639             }
9640             else
9641             {
9642                 exit 1;
9643             }'; then
9644             AC_MSG_RESULT([yes])
9645         else
9646             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9647         fi
9648     else
9649         AC_MSG_RESULT([internal])
9650         SYSTEM_HSQLDB=
9651         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9652         NEED_ANT=TRUE
9653         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9654         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9655         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9656             AC_MSG_RESULT([yes])
9657             HSQLDB_USE_JDBC_4_1=TRUE
9658         else
9659             AC_MSG_RESULT([no])
9660         fi
9661     fi
9662 else
9663     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9664         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9665     fi
9667 AC_SUBST(SYSTEM_HSQLDB)
9668 AC_SUBST(HSQLDB_JAR)
9669 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9671 dnl ===================================================================
9672 dnl Check for PostgreSQL stuff
9673 dnl ===================================================================
9674 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9675 if test "x$enable_postgresql_sdbc" != "xno"; then
9676     AC_MSG_RESULT([yes])
9677     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9679     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9680         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9681     fi
9682     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9683         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9684     fi
9686     postgres_interface=""
9687     if test "$with_system_postgresql" = "yes"; then
9688         postgres_interface="external PostgreSQL"
9689         SYSTEM_POSTGRESQL=TRUE
9690         if test "$_os" = Darwin; then
9691             supp_path=''
9692             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9693                 pg_supp_path="$P_SEP$d$pg_supp_path"
9694             done
9695         fi
9696         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9697         if test -n "$PGCONFIG"; then
9698             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9699             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9700         else
9701             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9702               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9703               POSTGRESQL_LIB=$POSTGRESQL_LIBS
9704             ],[
9705               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9706             ])
9707         fi
9708         FilterLibs "${POSTGRESQL_LIB}"
9709         POSTGRESQL_LIB="${filteredlibs}"
9710     else
9711         # if/when anything else than PostgreSQL uses Kerberos,
9712         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9713         WITH_KRB5=
9714         WITH_GSSAPI=
9715         case "$_os" in
9716         Darwin)
9717             # macOS has system MIT Kerberos 5 since 10.4
9718             if test "$with_krb5" != "no"; then
9719                 WITH_KRB5=TRUE
9720                 save_LIBS=$LIBS
9721                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9722                 # that the libraries where these functions are located on macOS will change, is it?
9723                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9724                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9725                 KRB5_LIBS=$LIBS
9726                 LIBS=$save_LIBS
9727                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9728                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9729                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9730                 LIBS=$save_LIBS
9731             fi
9732             if test "$with_gssapi" != "no"; then
9733                 WITH_GSSAPI=TRUE
9734                 save_LIBS=$LIBS
9735                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9736                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9737                 GSSAPI_LIBS=$LIBS
9738                 LIBS=$save_LIBS
9739             fi
9740             ;;
9741         WINNT)
9742             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9743                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9744             fi
9745             ;;
9746         Linux|GNU|*BSD|DragonFly)
9747             if test "$with_krb5" != "no"; then
9748                 WITH_KRB5=TRUE
9749                 save_LIBS=$LIBS
9750                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9751                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9752                 KRB5_LIBS=$LIBS
9753                 LIBS=$save_LIBS
9754                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9755                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9756                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9757                 LIBS=$save_LIBS
9758             fi
9759             if test "$with_gssapi" != "no"; then
9760                 WITH_GSSAPI=TRUE
9761                 save_LIBS=$LIBS
9762                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9763                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9764                 GSSAPI_LIBS=$LIBS
9765                 LIBS=$save_LIBS
9766             fi
9767             ;;
9768         *)
9769             if test "$with_krb5" = "yes"; then
9770                 WITH_KRB5=TRUE
9771                 save_LIBS=$LIBS
9772                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9773                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9774                 KRB5_LIBS=$LIBS
9775                 LIBS=$save_LIBS
9776                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9777                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9778                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9779                 LIBS=$save_LIBS
9780             fi
9781             if test "$with_gssapi" = "yes"; then
9782                 WITH_GSSAPI=TRUE
9783                 save_LIBS=$LIBS
9784                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9785                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9786                 LIBS=$save_LIBS
9787                 GSSAPI_LIBS=$LIBS
9788             fi
9789         esac
9791         if test -n "$with_libpq_path"; then
9792             SYSTEM_POSTGRESQL=TRUE
9793             postgres_interface="external libpq"
9794             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
9795             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
9796         else
9797             SYSTEM_POSTGRESQL=
9798             postgres_interface="internal"
9799             POSTGRESQL_LIB=""
9800             POSTGRESQL_INC="%OVERRIDE_ME%"
9801             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
9802         fi
9803     fi
9805     AC_MSG_CHECKING([PostgreSQL C interface])
9806     AC_MSG_RESULT([$postgres_interface])
9808     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
9809         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
9810         save_CFLAGS=$CFLAGS
9811         save_CPPFLAGS=$CPPFLAGS
9812         save_LIBS=$LIBS
9813         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
9814         LIBS="${LIBS} ${POSTGRESQL_LIB}"
9815         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
9816         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
9817             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
9818         CFLAGS=$save_CFLAGS
9819         CPPFLAGS=$save_CPPFLAGS
9820         LIBS=$save_LIBS
9821     fi
9822     BUILD_POSTGRESQL_SDBC=TRUE
9823 else
9824     AC_MSG_RESULT([no])
9826 AC_SUBST(WITH_KRB5)
9827 AC_SUBST(WITH_GSSAPI)
9828 AC_SUBST(GSSAPI_LIBS)
9829 AC_SUBST(KRB5_LIBS)
9830 AC_SUBST(BUILD_POSTGRESQL_SDBC)
9831 AC_SUBST(SYSTEM_POSTGRESQL)
9832 AC_SUBST(POSTGRESQL_INC)
9833 AC_SUBST(POSTGRESQL_LIB)
9835 dnl ===================================================================
9836 dnl Check for Firebird stuff
9837 dnl ===================================================================
9838 ENABLE_FIREBIRD_SDBC=
9839 if test "$enable_firebird_sdbc" = "yes" ; then
9840     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
9842     dnl ===================================================================
9843     dnl Check for system Firebird
9844     dnl ===================================================================
9845     AC_MSG_CHECKING([which Firebird to use])
9846     if test "$with_system_firebird" = "yes"; then
9847         AC_MSG_RESULT([external])
9848         SYSTEM_FIREBIRD=TRUE
9849         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
9850         if test -z "$FIREBIRDCONFIG"; then
9851             AC_MSG_NOTICE([No fb_config -- using pkg-config])
9852             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
9853                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
9854             ])
9855             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
9856         else
9857             AC_MSG_NOTICE([fb_config found])
9858             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
9859             AC_MSG_CHECKING([for Firebird Client library])
9860             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
9861             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
9862             FilterLibs "${FIREBIRD_LIBS}"
9863             FIREBIRD_LIBS="${filteredlibs}"
9864         fi
9865         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
9866         AC_MSG_CHECKING([Firebird version])
9867         if test -n "${FIREBIRD_VERSION}"; then
9868             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
9869             FIREBIRD_MINOR=`echo $FIREBIRD_VERSION | cut -d"." -f2`
9870             if test "$FIREBIRD_MAJOR" -eq "3" -a "$FIREBIRD_MINOR" -eq "0"; then
9871                 AC_MSG_RESULT([OK])
9872             else
9873                 AC_MSG_ERROR([Ensure firebird 3.0.x is installed])
9874             fi
9875         else
9876             save_CFLAGS="${CFLAGS}"
9877             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
9878             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
9879 #if defined(FB_API_VER) && FB_API_VER == 30
9880 int fb_api_is_30(void) { return 0; }
9881 #else
9882 #error "Wrong Firebird API version"
9883 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
9884             CFLAGS="$save_CFLAGS"
9885         fi
9886         ENABLE_FIREBIRD_SDBC=TRUE
9887         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9888     elif test "$enable_database_connectivity" != yes; then
9889         AC_MSG_RESULT([none])
9890     elif test "$cross_compiling" = "yes"; then
9891         AC_MSG_RESULT([none])
9892     else
9893         dnl Embedded Firebird has version 3.0
9894         AC_DEFINE(HAVE_FIREBIRD_30, 1)
9895         dnl We need libatomic_ops for any non X86/X64 system
9896         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
9897             dnl ===================================================================
9898             dnl Check for system libatomic_ops
9899             dnl ===================================================================
9900             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
9901             if test "$with_system_libatomic_ops" = "yes"; then
9902                 SYSTEM_LIBATOMIC_OPS=TRUE
9903                 AC_CHECK_HEADERS(atomic_ops.h, [],
9904                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
9905             else
9906                 SYSTEM_LIBATOMIC_OPS=
9907                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
9908                 LIBATOMIC_OPS_LIBS="-latomic_ops"
9909                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
9910             fi
9911         fi
9913         AC_MSG_RESULT([internal])
9914         SYSTEM_FIREBIRD=
9915         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
9916         FIREBIRD_LIBS="-lfbclient"
9918         if test "$with_system_libtommath" = "yes"; then
9919             SYSTEM_LIBTOMMATH=TRUE
9920             dnl check for tommath presence
9921             save_LIBS=$LIBS
9922             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
9923             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
9924             LIBS=$save_LIBS
9925         else
9926             SYSTEM_LIBTOMMATH=
9927             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
9928             LIBTOMMATH_LIBS="-ltommath"
9929             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
9930         fi
9932         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
9933         ENABLE_FIREBIRD_SDBC=TRUE
9934         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9935     fi
9937 AC_SUBST(ENABLE_FIREBIRD_SDBC)
9938 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
9939 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
9940 AC_SUBST(LIBATOMIC_OPS_LIBS)
9941 AC_SUBST(SYSTEM_FIREBIRD)
9942 AC_SUBST(FIREBIRD_CFLAGS)
9943 AC_SUBST(FIREBIRD_LIBS)
9944 AC_SUBST(SYSTEM_LIBTOMMATH)
9945 AC_SUBST(LIBTOMMATH_CFLAGS)
9946 AC_SUBST(LIBTOMMATH_LIBS)
9948 dnl ===================================================================
9949 dnl Check for system curl
9950 dnl ===================================================================
9951 AC_MSG_CHECKING([which libcurl to use])
9952 if test "$with_system_curl" = "auto"; then
9953     with_system_curl="$with_system_libs"
9956 if test "$with_system_curl" = "yes"; then
9957     AC_MSG_RESULT([external])
9958     SYSTEM_CURL=TRUE
9960     # First try PKGCONFIG and then fall back
9961     PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
9963     if test -n "$CURL_PKG_ERRORS"; then
9964         AC_PATH_PROG(CURLCONFIG, curl-config)
9965         if test -z "$CURLCONFIG"; then
9966             AC_MSG_ERROR([curl development files not found])
9967         fi
9968         CURL_LIBS=`$CURLCONFIG --libs`
9969         FilterLibs "${CURL_LIBS}"
9970         CURL_LIBS="${filteredlibs}"
9971         CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
9972         curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
9974         AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
9975         case $curl_version in
9976         dnl brackets doubled below because Autoconf uses them as m4 quote characters,
9977         dnl so they need to be doubled to end up in the configure script
9978         7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
9979             AC_MSG_RESULT([yes])
9980             ;;
9981         *)
9982             AC_MSG_ERROR([no, you have $curl_version])
9983             ;;
9984         esac
9985     fi
9987     ENABLE_CURL=TRUE
9988 else
9989     AC_MSG_RESULT([internal])
9990     SYSTEM_CURL=
9991     BUILD_TYPE="$BUILD_TYPE CURL"
9992     ENABLE_CURL=TRUE
9994 AC_SUBST(SYSTEM_CURL)
9995 AC_SUBST(CURL_CFLAGS)
9996 AC_SUBST(CURL_LIBS)
9997 AC_SUBST(ENABLE_CURL)
9999 dnl ===================================================================
10000 dnl Check for system boost
10001 dnl ===================================================================
10002 AC_MSG_CHECKING([which boost to use])
10003 if test "$with_system_boost" = "yes"; then
10004     AC_MSG_RESULT([external])
10005     SYSTEM_BOOST=TRUE
10006     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10007     AX_BOOST_DATE_TIME
10008     AX_BOOST_FILESYSTEM
10009     AX_BOOST_IOSTREAMS
10010     AX_BOOST_LOCALE
10011     AC_LANG_PUSH([C++])
10012     save_CXXFLAGS=$CXXFLAGS
10013     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10014     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10015        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10016     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10017        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10018     CXXFLAGS=$save_CXXFLAGS
10019     AC_LANG_POP([C++])
10020     # this is in m4/ax_boost_base.m4
10021     FilterLibs "${BOOST_LDFLAGS}"
10022     BOOST_LDFLAGS="${filteredlibs}"
10023 else
10024     AC_MSG_RESULT([internal])
10025     BUILD_TYPE="$BUILD_TYPE BOOST"
10026     SYSTEM_BOOST=
10027     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10028         # use warning-suppressing wrapper headers
10029         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10030     else
10031         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10032     fi
10034 AC_SUBST(SYSTEM_BOOST)
10036 dnl ===================================================================
10037 dnl Check for system mdds
10038 dnl ===================================================================
10039 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10041 dnl ===================================================================
10042 dnl Check for system glm
10043 dnl ===================================================================
10044 AC_MSG_CHECKING([which glm to use])
10045 if test "$with_system_glm" = "yes"; then
10046     AC_MSG_RESULT([external])
10047     SYSTEM_GLM=TRUE
10048     AC_LANG_PUSH([C++])
10049     AC_CHECK_HEADER([glm/glm.hpp], [],
10050        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10051     AC_LANG_POP([C++])
10052 else
10053     AC_MSG_RESULT([internal])
10054     BUILD_TYPE="$BUILD_TYPE GLM"
10055     SYSTEM_GLM=
10056     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10058 AC_SUBST([GLM_CFLAGS])
10059 AC_SUBST([SYSTEM_GLM])
10061 dnl ===================================================================
10062 dnl Check for system odbc
10063 dnl ===================================================================
10064 AC_MSG_CHECKING([which odbc headers to use])
10065 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
10066     AC_MSG_RESULT([external])
10067     SYSTEM_ODBC_HEADERS=TRUE
10069     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10070         save_CPPFLAGS=$CPPFLAGS
10071         find_winsdk
10072         PathFormat "$winsdktest"
10073         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"
10074         AC_CHECK_HEADER(sqlext.h, [],
10075             [AC_MSG_ERROR(odbc not found. install odbc)],
10076             [#include <windows.h>])
10077         CPPFLAGS=$save_CPPFLAGS
10078     else
10079         AC_CHECK_HEADER(sqlext.h, [],
10080             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10081     fi
10082 elif test "$enable_database_connectivity" != yes; then
10083     AC_MSG_RESULT([none])
10084 else
10085     AC_MSG_RESULT([internal])
10086     SYSTEM_ODBC_HEADERS=
10088 AC_SUBST(SYSTEM_ODBC_HEADERS)
10090 dnl ===================================================================
10091 dnl Enable LDAP support
10092 dnl ===================================================================
10094 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then
10095 AC_MSG_CHECKING([whether to enable LDAP support])
10096     if test "$enable_ldap" != "yes"; then
10097         AC_MSG_RESULT([no])
10098         ENABLE_LDAP=""
10099         enable_ldap=no
10100     else
10101         AC_MSG_RESULT([yes])
10102         ENABLE_LDAP="TRUE"
10103     fi
10105 AC_SUBST(ENABLE_LDAP)
10107 dnl ===================================================================
10108 dnl Check for system openldap
10109 dnl ===================================================================
10111 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then
10112 AC_MSG_CHECKING([which openldap library to use])
10113 if test "$with_system_openldap" = "yes"; then
10114     AC_MSG_RESULT([external])
10115     SYSTEM_OPENLDAP=TRUE
10116     AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10117     AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10118     AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10119 else
10120     AC_MSG_RESULT([internal])
10121     SYSTEM_OPENLDAP=
10122     BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10125 AC_SUBST(SYSTEM_OPENLDAP)
10127 dnl ===================================================================
10128 dnl Check for system NSS
10129 dnl ===================================================================
10130 if test "$enable_fuzzers" != "yes"; then
10131     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10132     AC_DEFINE(HAVE_FEATURE_NSS)
10133     ENABLE_NSS="TRUE"
10134     AC_DEFINE(ENABLE_NSS)
10135 elif test $_os != iOS ; then
10136     with_tls=openssl
10138 AC_SUBST(ENABLE_NSS)
10140 dnl ===================================================================
10141 dnl Check for TLS/SSL and cryptographic implementation to use
10142 dnl ===================================================================
10143 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10144 if test -n "$with_tls"; then
10145     case $with_tls in
10146     openssl)
10147         AC_DEFINE(USE_TLS_OPENSSL)
10148         TLS=OPENSSL
10149         AC_MSG_RESULT([$TLS])
10151         if test "$enable_openssl" != "yes"; then
10152             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10153         fi
10155         # warn that OpenSSL has been selected but not all TLS code has this option
10156         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10157         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10158         ;;
10159     nss)
10160         AC_DEFINE(USE_TLS_NSS)
10161         TLS=NSS
10162         AC_MSG_RESULT([$TLS])
10163         ;;
10164     no)
10165         AC_MSG_RESULT([none])
10166         AC_MSG_WARN([Skipping TLS/SSL])
10167         ;;
10168     *)
10169         AC_MSG_RESULT([])
10170         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10171 openssl - OpenSSL
10172 nss - Mozilla's Network Security Services (NSS)
10173     ])
10174         ;;
10175     esac
10176 else
10177     # default to using NSS, it results in smaller oox lib
10178     AC_DEFINE(USE_TLS_NSS)
10179     TLS=NSS
10180     AC_MSG_RESULT([$TLS])
10182 AC_SUBST(TLS)
10184 dnl ===================================================================
10185 dnl Check for system sane
10186 dnl ===================================================================
10187 AC_MSG_CHECKING([which sane header to use])
10188 if test "$with_system_sane" = "yes"; then
10189     AC_MSG_RESULT([external])
10190     AC_CHECK_HEADER(sane/sane.h, [],
10191       [AC_MSG_ERROR(sane not found. install sane)], [])
10192 else
10193     AC_MSG_RESULT([internal])
10194     BUILD_TYPE="$BUILD_TYPE SANE"
10197 dnl ===================================================================
10198 dnl Check for system icu
10199 dnl ===================================================================
10200 SYSTEM_GENBRK=
10201 SYSTEM_GENCCODE=
10202 SYSTEM_GENCMN=
10204 ICU_MAJOR=68
10205 ICU_MINOR=1
10206 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10207 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10208 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10209 AC_MSG_CHECKING([which icu to use])
10210 if test "$with_system_icu" = "yes"; then
10211     AC_MSG_RESULT([external])
10212     SYSTEM_ICU=TRUE
10213     AC_LANG_PUSH([C++])
10214     AC_MSG_CHECKING([for unicode/rbbi.h])
10215     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10216     AC_LANG_POP([C++])
10218     if test "$cross_compiling" != "yes"; then
10219         PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10220         ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10221         ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10222         ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10223     fi
10225     if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10226         ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10227         ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10228         ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10229         AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10230         if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10231             AC_MSG_RESULT([yes])
10232         else
10233             AC_MSG_RESULT([no])
10234             if test "$with_system_icu_for_build" != "force"; then
10235                 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10236 You can use --with-system-icu-for-build=force to use it anyway.])
10237             fi
10238         fi
10239     fi
10241     if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10242         # using the system icu tools can lead to version confusion, use the
10243         # ones from the build environment when cross-compiling
10244         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10245         if test -z "$SYSTEM_GENBRK"; then
10246             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10247         fi
10248         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10249         if test -z "$SYSTEM_GENCCODE"; then
10250             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10251         fi
10252         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10253         if test -z "$SYSTEM_GENCMN"; then
10254             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10255         fi
10256         if test "$ICU_MAJOR" -ge "49"; then
10257             ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10258             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10259             ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10260         else
10261             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10262             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10263             ICU_RECLASSIFIED_HEBREW_LETTER=
10264         fi
10265     fi
10267     if test "$cross_compiling" = "yes"; then
10268         if test "$ICU_MAJOR" -ge "50"; then
10269             AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10270             ICU_MINOR=""
10271         fi
10272     fi
10273 else
10274     AC_MSG_RESULT([internal])
10275     SYSTEM_ICU=
10276     BUILD_TYPE="$BUILD_TYPE ICU"
10277     # surprisingly set these only for "internal" (to be used by various other
10278     # external libs): the system icu-config is quite unhelpful and spits out
10279     # dozens of weird flags and also default path -I/usr/include
10280     ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10281     ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10283 if test "$ICU_MAJOR" -ge "59"; then
10284     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10285     # with -std=c++11 but not all external libraries can be built with that,
10286     # for those use a bit-compatible typedef uint16_t UChar; see
10287     # icu/source/common/unicode/umachine.h
10288     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10289 else
10290     ICU_UCHAR_TYPE=""
10292 AC_SUBST(SYSTEM_ICU)
10293 AC_SUBST(SYSTEM_GENBRK)
10294 AC_SUBST(SYSTEM_GENCCODE)
10295 AC_SUBST(SYSTEM_GENCMN)
10296 AC_SUBST(ICU_MAJOR)
10297 AC_SUBST(ICU_MINOR)
10298 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10299 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10300 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10301 AC_SUBST(ICU_CFLAGS)
10302 AC_SUBST(ICU_LIBS)
10303 AC_SUBST(ICU_UCHAR_TYPE)
10305 dnl ==================================================================
10306 dnl Breakpad
10307 dnl ==================================================================
10308 DEFAULT_CRASHDUMP_VALUE="true"
10309 AC_MSG_CHECKING([whether to enable breakpad])
10310 if test "$enable_breakpad" != yes; then
10311     AC_MSG_RESULT([no])
10312 else
10313     AC_MSG_RESULT([yes])
10314     ENABLE_BREAKPAD="TRUE"
10315     AC_DEFINE(ENABLE_BREAKPAD)
10316     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10317     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10319     AC_MSG_CHECKING([for disable crash dump])
10320     if test "$enable_crashdump" = no; then
10321         DEFAULT_CRASHDUMP_VALUE="false"
10322         AC_MSG_RESULT([yes])
10323     else
10324        AC_MSG_RESULT([no])
10325     fi
10327     AC_MSG_CHECKING([for crashreport config])
10328     if test "$with_symbol_config" = "no"; then
10329         BREAKPAD_SYMBOL_CONFIG="invalid"
10330         AC_MSG_RESULT([no])
10331     else
10332         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10333         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10334         AC_MSG_RESULT([yes])
10335     fi
10336     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10338 AC_SUBST(ENABLE_BREAKPAD)
10339 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10341 dnl ==================================================================
10342 dnl libfuzzer
10343 dnl ==================================================================
10344 AC_MSG_CHECKING([whether to enable fuzzers])
10345 if test "$enable_fuzzers" != yes; then
10346     AC_MSG_RESULT([no])
10347 else
10348     AC_MSG_RESULT([yes])
10349     ENABLE_FUZZERS="TRUE"
10350     AC_DEFINE([ENABLE_FUZZERS],1)
10351     BUILD_TYPE="$BUILD_TYPE FUZZERS"
10353 AC_SUBST(ENABLE_FUZZERS)
10355 dnl ===================================================================
10356 dnl Orcus
10357 dnl ===================================================================
10358 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
10359 if test "$with_system_orcus" != "yes"; then
10360     if test "$SYSTEM_BOOST" = "TRUE"; then
10361         # ===========================================================
10362         # Determine if we are going to need to link with Boost.System
10363         # ===========================================================
10364         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10365         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10366         dnl in documentation has no effect.
10367         AC_MSG_CHECKING([if we need to link with Boost.System])
10368         AC_LANG_PUSH([C++])
10369         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
10370                 @%:@include <boost/version.hpp>
10371             ]],[[
10372                 #if BOOST_VERSION >= 105000
10373                 #   error yes, we need to link with Boost.System
10374                 #endif
10375             ]])],[
10376                 AC_MSG_RESULT([no])
10377             ],[
10378                 AC_MSG_RESULT([yes])
10379                 AX_BOOST_SYSTEM
10380         ])
10381         AC_LANG_POP([C++])
10382     fi
10384 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10385 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10386 AC_SUBST([BOOST_SYSTEM_LIB])
10387 AC_SUBST(SYSTEM_LIBORCUS)
10389 dnl ===================================================================
10390 dnl HarfBuzz
10391 dnl ===================================================================
10392 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10393                          ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10394                          ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10396 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10397                          ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10398                          ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10400 if test "$COM" = "MSC"; then # override the above
10401     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10402     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10405 if test "$with_system_harfbuzz" = "yes"; then
10406     if test "$with_system_graphite" = "no"; then
10407         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10408     fi
10409     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10410     save_LIBS="$LIBS"
10411     save_CFLAGS="$CFLAGS"
10412     LIBS="$LIBS $HARFBUZZ_LIBS"
10413     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10414     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10415     LIBS="$save_LIBS"
10416     CFLAGS="$save_CFLAGS"
10417 else
10418     if test "$with_system_graphite" = "yes"; then
10419         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10420     fi
10423 AC_MSG_CHECKING([whether to use X11])
10424 dnl ***************************************
10425 dnl testing for X libraries and includes...
10426 dnl ***************************************
10427 if test "$USING_X11" = TRUE; then
10428     AC_DEFINE(HAVE_FEATURE_X11)
10430 AC_MSG_RESULT([$USING_X11])
10432 if test "$USING_X11" = TRUE; then
10433     AC_PATH_X
10434     AC_PATH_XTRA
10435     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10437     if test -z "$x_includes"; then
10438         x_includes="default_x_includes"
10439     fi
10440     if test -z "$x_libraries"; then
10441         x_libraries="default_x_libraries"
10442     fi
10443     CFLAGS="$CFLAGS $X_CFLAGS"
10444     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10445     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10446 else
10447     x_includes="no_x_includes"
10448     x_libraries="no_x_libraries"
10451 if test "$USING_X11" = TRUE; then
10452     dnl ===================================================================
10453     dnl Check for extension headers
10454     dnl ===================================================================
10455     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10456      [#include <X11/extensions/shape.h>])
10458     # vcl needs ICE and SM
10459     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10460     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10461         [AC_MSG_ERROR(ICE library not found)])
10462     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10463     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10464         [AC_MSG_ERROR(SM library not found)])
10467 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10468     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10469     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10472 dnl ===================================================================
10473 dnl Check for system Xrender
10474 dnl ===================================================================
10475 AC_MSG_CHECKING([whether to use Xrender])
10476 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10477     AC_MSG_RESULT([yes])
10478     PKG_CHECK_MODULES(XRENDER, xrender)
10479     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10480     FilterLibs "${XRENDER_LIBS}"
10481     XRENDER_LIBS="${filteredlibs}"
10482     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10483       [AC_MSG_ERROR(libXrender not found or functional)], [])
10484     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10485       [AC_MSG_ERROR(Xrender not found. install X)], [])
10486 else
10487     AC_MSG_RESULT([no])
10489 AC_SUBST(XRENDER_CFLAGS)
10490 AC_SUBST(XRENDER_LIBS)
10492 dnl ===================================================================
10493 dnl Check for XRandr
10494 dnl ===================================================================
10495 AC_MSG_CHECKING([whether to enable RandR support])
10496 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10497     AC_MSG_RESULT([yes])
10498     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10499     if test "$ENABLE_RANDR" != "TRUE"; then
10500         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10501                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10502         XRANDR_CFLAGS=" "
10503         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10504           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10505         XRANDR_LIBS="-lXrandr "
10506         ENABLE_RANDR="TRUE"
10507     fi
10508     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10509     FilterLibs "${XRANDR_LIBS}"
10510     XRANDR_LIBS="${filteredlibs}"
10511 else
10512     ENABLE_RANDR=""
10513     AC_MSG_RESULT([no])
10515 AC_SUBST(XRANDR_CFLAGS)
10516 AC_SUBST(XRANDR_LIBS)
10517 AC_SUBST(ENABLE_RANDR)
10519 if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
10520     if test -z "$WITH_WEBDAV"; then
10521         WITH_WEBDAV="serf"
10522     fi
10524 if test $_os = iOS -o $_os = Android; then
10525     WITH_WEBDAV="no"
10527 AC_MSG_CHECKING([for webdav library])
10528 case "$WITH_WEBDAV" in
10529 serf)
10530     AC_MSG_RESULT([serf])
10531     # Check for system apr-util
10532     libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10533                              ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10534                              ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10535     if test "$COM" = "MSC"; then
10536         APR_LIB_DIR="LibR"
10537         test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10538         APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10539     fi
10541     # Check for system serf
10542     libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"],
10543                              ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"])
10544     if test "$COM" = "MSC"; then
10545         SERF_LIB_DIR="Release"
10546         test -n "${MSVC_USE_DEBUG_RUNTIME}" && SERF_LIB_DIR="Debug"
10547         SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/${SERF_LIB_DIR}/serf-1.lib"
10548     fi
10549     ;;
10550 neon)
10551     AC_MSG_RESULT([neon])
10552     # Check for system neon
10553     libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.1])
10554     if test "$with_system_neon" = "yes"; then
10555         NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10556     else
10557         NEON_VERSION=0311
10558     fi
10559     AC_SUBST(NEON_VERSION)
10560     ;;
10562     AC_MSG_RESULT([none, disabled])
10563     WITH_WEBDAV=""
10564     ;;
10565 esac
10566 AC_SUBST(WITH_WEBDAV)
10568 dnl ===================================================================
10569 dnl Check for disabling cve_tests
10570 dnl ===================================================================
10571 AC_MSG_CHECKING([whether to execute CVE tests])
10572 # If not explicitly enabled or disabled, default
10573 if test -z "$enable_cve_tests"; then
10574     case "$OS" in
10575     WNT)
10576         # Default cves off for Windows with its wild and wonderful
10577         # variety of AV software kicking in and panicking
10578         enable_cve_tests=no
10579         ;;
10580     *)
10581         # otherwise yes
10582         enable_cve_tests=yes
10583         ;;
10584     esac
10586 if test "$enable_cve_tests" = "no"; then
10587     AC_MSG_RESULT([no])
10588     DISABLE_CVE_TESTS=TRUE
10589     AC_SUBST(DISABLE_CVE_TESTS)
10590 else
10591     AC_MSG_RESULT([yes])
10594 dnl ===================================================================
10595 dnl Check for enabling chart XShape tests
10596 dnl ===================================================================
10597 AC_MSG_CHECKING([whether to execute chart XShape tests])
10598 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10599     AC_MSG_RESULT([yes])
10600     ENABLE_CHART_TESTS=TRUE
10601     AC_SUBST(ENABLE_CHART_TESTS)
10602 else
10603     AC_MSG_RESULT([no])
10606 dnl ===================================================================
10607 dnl Check for system openssl
10608 dnl ===================================================================
10609 DISABLE_OPENSSL=
10610 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10611 if test "$enable_openssl" = "yes"; then
10612     AC_MSG_RESULT([no])
10613     if test "$_os" = Darwin ; then
10614         # OpenSSL is deprecated when building for 10.7 or later.
10615         #
10616         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10617         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10619         with_system_openssl=no
10620         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10621     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10622             && test "$with_system_openssl" != "no"; then
10623         with_system_openssl=yes
10624         SYSTEM_OPENSSL=TRUE
10625         OPENSSL_CFLAGS=
10626         OPENSSL_LIBS="-lssl -lcrypto"
10627     else
10628         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10629     fi
10630     if test "$with_system_openssl" = "yes"; then
10631         AC_MSG_CHECKING([whether openssl supports SHA512])
10632         AC_LANG_PUSH([C])
10633         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10634             SHA512_CTX context;
10635 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10636         AC_LANG_POP(C)
10637     fi
10638 else
10639     AC_MSG_RESULT([yes])
10640     DISABLE_OPENSSL=TRUE
10642     # warn that although OpenSSL is disabled, system libraries may depend on it
10643     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10644     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10647 AC_SUBST([DISABLE_OPENSSL])
10649 if test "$enable_cipher_openssl_backend" = yes && test "$DISABLE_OPENSSL" = TRUE; then
10650     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10651         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10652         enable_cipher_openssl_backend=no
10653     else
10654         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10655     fi
10657 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10658 ENABLE_CIPHER_OPENSSL_BACKEND=
10659 if test "$enable_cipher_openssl_backend" = yes; then
10660     AC_MSG_RESULT([yes])
10661     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10662 else
10663     AC_MSG_RESULT([no])
10665 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10667 dnl ===================================================================
10668 dnl Check for building gnutls
10669 dnl ===================================================================
10670 AC_MSG_CHECKING([whether to use gnutls])
10671 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10672     AC_MSG_RESULT([yes])
10673     AM_PATH_LIBGCRYPT()
10674     PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10675         AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10676                       available in the system to use as replacement.]]))
10677     FilterLibs "${LIBGCRYPT_LIBS}"
10678     LIBGCRYPT_LIBS="${filteredlibs}"
10679 else
10680     AC_MSG_RESULT([no])
10683 AC_SUBST([LIBGCRYPT_CFLAGS])
10684 AC_SUBST([LIBGCRYPT_LIBS])
10686 dnl ===================================================================
10687 dnl Check for system redland
10688 dnl ===================================================================
10689 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10690 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10691 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10692 if test "$with_system_redland" = "yes"; then
10693     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10694             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10695 else
10696     RAPTOR_MAJOR="0"
10697     RASQAL_MAJOR="3"
10698     REDLAND_MAJOR="0"
10700 AC_SUBST(RAPTOR_MAJOR)
10701 AC_SUBST(RASQAL_MAJOR)
10702 AC_SUBST(REDLAND_MAJOR)
10704 dnl ===================================================================
10705 dnl Check for system hunspell
10706 dnl ===================================================================
10707 AC_MSG_CHECKING([which libhunspell to use])
10708 if test "$_os" = iOS; then
10709    AC_MSG_RESULT([none])
10710 elif test "$with_system_hunspell" = "yes"; then
10711     AC_MSG_RESULT([external])
10712     SYSTEM_HUNSPELL=TRUE
10713     AC_LANG_PUSH([C++])
10714     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10715     if test "$HUNSPELL_PC" != "TRUE"; then
10716         AC_CHECK_HEADER(hunspell.hxx, [],
10717             [
10718             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10719             [AC_MSG_ERROR(hunspell headers not found.)], [])
10720             ], [])
10721         AC_CHECK_LIB([hunspell], [main], [:],
10722            [ AC_MSG_ERROR(hunspell library not found.) ], [])
10723         HUNSPELL_LIBS=-lhunspell
10724     fi
10725     AC_LANG_POP([C++])
10726     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10727     FilterLibs "${HUNSPELL_LIBS}"
10728     HUNSPELL_LIBS="${filteredlibs}"
10729 else
10730     AC_MSG_RESULT([internal])
10731     SYSTEM_HUNSPELL=
10732     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10733     if test "$COM" = "MSC"; then
10734         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10735     else
10736         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10737     fi
10738     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
10740 AC_SUBST(SYSTEM_HUNSPELL)
10741 AC_SUBST(HUNSPELL_CFLAGS)
10742 AC_SUBST(HUNSPELL_LIBS)
10744 dnl ===================================================================
10745 dnl Check for system qrcodegen
10746 dnl ===================================================================
10747 AC_MSG_CHECKING([whether to use libqrcodegen])
10748 if test "$enable_qrcodegen" = "no"; then
10749     AC_MSG_RESULT([no])
10750     ENABLE_QRCODEGEN=
10751     SYSTEM_QRCODEGEN=
10752 else
10753     AC_MSG_RESULT([yes])
10754     ENABLE_QRCODEGEN=TRUE
10755     AC_MSG_CHECKING([which libqrcodegen to use])
10756     if test "$with_system_qrcodegen" = "yes"; then
10757         AC_MSG_RESULT([external])
10758         SYSTEM_QRCODEGEN=TRUE
10759         AC_LANG_PUSH([C++])
10760         AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
10761             [AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
10762         AC_CHECK_LIB([qrcodegencpp], [main], [:],
10763             [ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
10764         QRCODEGEN_LIBS=-lqrcodegencpp
10765         AC_LANG_POP([C++])
10766         QRCODEGEN_CFLAGS=$(printf '%s' "$QRCODEGEN_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10767         FilterLibs "${QRCODEGEN_LIBS}"
10768         QRCODEGEN_LIBS="${filteredlibs}"
10769     else
10770         AC_MSG_RESULT([internal])
10771         SYSTEM_QRCODEGEN=
10772         BUILD_TYPE="$BUILD_TYPE QRCODEGEN"
10773     fi
10774     if test "$ENABLE_QRCODEGEN" = TRUE; then
10775         AC_DEFINE(ENABLE_QRCODEGEN)
10776     fi
10778 AC_SUBST(SYSTEM_QRCODEGEN)
10779 AC_SUBST(ENABLE_QRCODEGEN)
10780 AC_SUBST(QRCODEGEN_CFLAGS)
10781 AC_SUBST(QRCODEGEN_LIBS)
10783 dnl ===================================================================
10784 dnl Check for system box2d
10785 dnl ===================================================================
10786 AC_MSG_CHECKING([which box2d to use])
10787 if test "$with_system_box2d" = "yes"; then
10788     AC_MSG_RESULT([external])
10789     SYSTEM_BOX2D=TRUE
10790     AC_LANG_PUSH([C++])
10791     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
10792         [BOX2D_H_FOUND='FALSE'])
10793     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
10794         _BOX2D_LIB=box2d
10795         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
10796     else
10797         # fail this. there's no other alternative to check when we are here.
10798         AC_CHECK_HEADER([Box2D/Box2D.h], [],
10799                 [AC_MSG_ERROR(box2d headers not found.)])
10800         _BOX2D_LIB=Box2D
10801         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
10802     fi
10803     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
10804         [ AC_MSG_ERROR(box2d library not found.) ], [])
10805     BOX2D_LIBS=-l$_BOX2D_LIB
10806     AC_LANG_POP([C++])
10807     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10808     FilterLibs "${BOX2D_LIBS}"
10809     BOX2D_LIBS="${filteredlibs}"
10810 else
10811     AC_MSG_RESULT([internal])
10812     SYSTEM_BOX2D=
10813     BUILD_TYPE="$BUILD_TYPE BOX2D"
10815 AC_SUBST(SYSTEM_BOX2D)
10816 AC_SUBST(BOX2D_CFLAGS)
10817 AC_SUBST(BOX2D_LIBS)
10819 dnl ===================================================================
10820 dnl Checking for altlinuxhyph
10821 dnl ===================================================================
10822 AC_MSG_CHECKING([which altlinuxhyph to use])
10823 if test "$with_system_altlinuxhyph" = "yes"; then
10824     AC_MSG_RESULT([external])
10825     SYSTEM_HYPH=TRUE
10826     AC_CHECK_HEADER(hyphen.h, [],
10827        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
10828     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
10829        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
10830        [#include <hyphen.h>])
10831     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
10832         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10833     if test -z "$HYPHEN_LIB"; then
10834         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
10835            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10836     fi
10837     if test -z "$HYPHEN_LIB"; then
10838         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
10839            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10840     fi
10841 else
10842     AC_MSG_RESULT([internal])
10843     SYSTEM_HYPH=
10844     BUILD_TYPE="$BUILD_TYPE HYPHEN"
10845     if test "$COM" = "MSC"; then
10846         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
10847     else
10848         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
10849     fi
10851 AC_SUBST(SYSTEM_HYPH)
10852 AC_SUBST(HYPHEN_LIB)
10854 dnl ===================================================================
10855 dnl Checking for mythes
10856 dnl ===================================================================
10857 AC_MSG_CHECKING([which mythes to use])
10858 if test "$_os" = iOS; then
10859    AC_MSG_RESULT([none])
10860 elif test "$with_system_mythes" = "yes"; then
10861     AC_MSG_RESULT([external])
10862     SYSTEM_MYTHES=TRUE
10863     AC_LANG_PUSH([C++])
10864     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
10865     if test "$MYTHES_PKGCONFIG" = "no"; then
10866         AC_CHECK_HEADER(mythes.hxx, [],
10867             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
10868         AC_CHECK_LIB([mythes-1.2], [main], [:],
10869             [ MYTHES_FOUND=no], [])
10870     if test "$MYTHES_FOUND" = "no"; then
10871         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
10872                 [ MYTHES_FOUND=no], [])
10873     fi
10874     if test "$MYTHES_FOUND" = "no"; then
10875         AC_MSG_ERROR([mythes library not found!.])
10876     fi
10877     fi
10878     AC_LANG_POP([C++])
10879     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10880     FilterLibs "${MYTHES_LIBS}"
10881     MYTHES_LIBS="${filteredlibs}"
10882 else
10883     AC_MSG_RESULT([internal])
10884     SYSTEM_MYTHES=
10885     BUILD_TYPE="$BUILD_TYPE MYTHES"
10886     if test "$COM" = "MSC"; then
10887         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
10888     else
10889         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
10890     fi
10892 AC_SUBST(SYSTEM_MYTHES)
10893 AC_SUBST(MYTHES_CFLAGS)
10894 AC_SUBST(MYTHES_LIBS)
10896 dnl ===================================================================
10897 dnl How should we build the linear programming solver ?
10898 dnl ===================================================================
10900 ENABLE_COINMP=
10901 AC_MSG_CHECKING([whether to build with CoinMP])
10902 if test "$enable_coinmp" != "no"; then
10903     ENABLE_COINMP=TRUE
10904     AC_MSG_RESULT([yes])
10905     if test "$with_system_coinmp" = "yes"; then
10906         SYSTEM_COINMP=TRUE
10907         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
10908         FilterLibs "${COINMP_LIBS}"
10909         COINMP_LIBS="${filteredlibs}"
10910     else
10911         BUILD_TYPE="$BUILD_TYPE COINMP"
10912     fi
10913 else
10914     AC_MSG_RESULT([no])
10916 AC_SUBST(ENABLE_COINMP)
10917 AC_SUBST(SYSTEM_COINMP)
10918 AC_SUBST(COINMP_CFLAGS)
10919 AC_SUBST(COINMP_LIBS)
10921 ENABLE_LPSOLVE=
10922 AC_MSG_CHECKING([whether to build with lpsolve])
10923 if test "$enable_lpsolve" != "no"; then
10924     ENABLE_LPSOLVE=TRUE
10925     AC_MSG_RESULT([yes])
10926 else
10927     AC_MSG_RESULT([no])
10929 AC_SUBST(ENABLE_LPSOLVE)
10931 if test "$ENABLE_LPSOLVE" = TRUE; then
10932     AC_MSG_CHECKING([which lpsolve to use])
10933     if test "$with_system_lpsolve" = "yes"; then
10934         AC_MSG_RESULT([external])
10935         SYSTEM_LPSOLVE=TRUE
10936         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
10937            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
10938         save_LIBS=$LIBS
10939         # some systems need this. Like Ubuntu...
10940         AC_CHECK_LIB(m, floor)
10941         AC_CHECK_LIB(dl, dlopen)
10942         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
10943             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
10944         LIBS=$save_LIBS
10945     else
10946         AC_MSG_RESULT([internal])
10947         SYSTEM_LPSOLVE=
10948         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
10949     fi
10951 AC_SUBST(SYSTEM_LPSOLVE)
10953 dnl ===================================================================
10954 dnl Checking for libexttextcat
10955 dnl ===================================================================
10956 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
10957 if test "$with_system_libexttextcat" = "yes"; then
10958     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
10960 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
10962 dnl ===================================================================
10963 dnl Checking for libnumbertext
10964 dnl ===================================================================
10965 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
10966 if test "$with_system_libnumbertext" = "yes"; then
10967     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
10968     SYSTEM_LIBNUMBERTEXT=YES
10969 else
10970     SYSTEM_LIBNUMBERTEXT=
10971     AC_LANG_PUSH([C++])
10972     save_CPPFLAGS=$CPPFLAGS
10973     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
10974     AC_CHECK_HEADERS([codecvt regex])
10975     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
10976             [ LIBNUMBERTEXT_CFLAGS=''
10977               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
10978                            Enable libnumbertext fallback (missing number to number name conversion).])
10979             ])
10980     CPPFLAGS=$save_CPPFLAGS
10981     AC_LANG_POP([C++])
10983 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
10984 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
10985 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
10987 dnl ***************************************
10988 dnl testing libc version for Linux...
10989 dnl ***************************************
10990 if test "$_os" = "Linux"; then
10991     AC_MSG_CHECKING([whether libc is >= 2.1.1])
10992     exec 6>/dev/null # no output
10993     AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
10994     exec 6>&1 # output on again
10995     if test "$HAVE_LIBC"; then
10996         AC_MSG_RESULT([yes])
10997     else
10998         AC_MSG_ERROR([no, upgrade libc])
10999     fi
11002 dnl =========================================
11003 dnl Check for uuidgen
11004 dnl =========================================
11005 if test "$_os" = "WINNT"; then
11006     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11007     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11008     UUIDGEN=uuidgen.exe
11009     AC_SUBST(UUIDGEN)
11010 else
11011     AC_PATH_PROG([UUIDGEN], [uuidgen])
11012     if test -z "$UUIDGEN"; then
11013         AC_MSG_WARN([uuid is needed for building installation sets])
11014     fi
11017 dnl ***************************************
11018 dnl Checking for bison and flex
11019 dnl ***************************************
11020 AC_PATH_PROG(BISON, bison)
11021 if test -z "$BISON"; then
11022     AC_MSG_ERROR([no bison found in \$PATH, install it])
11023 else
11024     AC_MSG_CHECKING([the bison version])
11025     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11026     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11027     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11028     dnl cause
11029     dnl
11030     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]
11031     dnl   typedef union YYSTYPE
11032     dnl           ~~~~~~^~~~~~~
11033     dnl
11034     dnl while at least 3.4.1 is know to be good:
11035     if test "$COMPILER_PLUGINS" = TRUE; then
11036         if test "$_bison_longver" -lt 2004; then
11037             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11038         fi
11039     else
11040         if test "$_bison_longver" -lt 2000; then
11041             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11042         fi
11043     fi
11045 AC_SUBST([BISON])
11047 AC_PATH_PROG(FLEX, flex)
11048 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11049     FLEX=`cygpath -m $FLEX`
11051 if test -z "$FLEX"; then
11052     AC_MSG_ERROR([no flex found in \$PATH, install it])
11053 else
11054     AC_MSG_CHECKING([the flex version])
11055     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11056     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11057         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11058     fi
11060 AC_SUBST([FLEX])
11061 dnl ***************************************
11062 dnl Checking for patch
11063 dnl ***************************************
11064 AC_PATH_PROG(PATCH, patch)
11065 if test -z "$PATCH"; then
11066     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11069 dnl On Solaris or macOS, check if --with-gnu-patch was used
11070 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11071     if test -z "$with_gnu_patch"; then
11072         GNUPATCH=$PATCH
11073     else
11074         if test -x "$with_gnu_patch"; then
11075             GNUPATCH=$with_gnu_patch
11076         else
11077             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11078         fi
11079     fi
11081     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11082     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11083         AC_MSG_RESULT([yes])
11084     else
11085         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11086     fi
11087 else
11088     GNUPATCH=$PATCH
11091 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11092     GNUPATCH=`cygpath -m $GNUPATCH`
11095 dnl We also need to check for --with-gnu-cp
11097 if test -z "$with_gnu_cp"; then
11098     # check the place where the good stuff is hidden on Solaris...
11099     if test -x /usr/gnu/bin/cp; then
11100         GNUCP=/usr/gnu/bin/cp
11101     else
11102         AC_PATH_PROGS(GNUCP, gnucp cp)
11103     fi
11104     if test -z $GNUCP; then
11105         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11106     fi
11107 else
11108     if test -x "$with_gnu_cp"; then
11109         GNUCP=$with_gnu_cp
11110     else
11111         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11112     fi
11115 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11116     GNUCP=`cygpath -m $GNUCP`
11119 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11120 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11121     AC_MSG_RESULT([yes])
11122 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11123     AC_MSG_RESULT([yes])
11124 else
11125     case "$build_os" in
11126     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11127         x_GNUCP=[\#]
11128         GNUCP=''
11129         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11130         ;;
11131     *)
11132         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11133         ;;
11134     esac
11137 AC_SUBST(GNUPATCH)
11138 AC_SUBST(GNUCP)
11139 AC_SUBST(x_GNUCP)
11141 dnl ***************************************
11142 dnl testing assembler path
11143 dnl ***************************************
11144 ML_EXE=""
11145 if test "$_os" = "WINNT"; then
11146     case "$WIN_HOST_ARCH" in
11147     x86) assembler=ml.exe ;;
11148     x64) assembler=ml64.exe ;;
11149     arm64) assembler=armasm64.exe ;;
11150     esac
11152     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11153     if test -f "$MSVC_HOST_PATH/$assembler"; then
11154         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11155         AC_MSG_RESULT([$ML_EXE])
11156     else
11157         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11158     fi
11161 AC_SUBST(ML_EXE)
11163 dnl ===================================================================
11164 dnl We need zip and unzip
11165 dnl ===================================================================
11166 AC_PATH_PROG(ZIP, zip)
11167 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11168 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11169     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],,)
11172 AC_PATH_PROG(UNZIP, unzip)
11173 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11175 dnl ===================================================================
11176 dnl Zip must be a specific type for different build types.
11177 dnl ===================================================================
11178 if test $build_os = cygwin; then
11179     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11180         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11181     fi
11184 dnl ===================================================================
11185 dnl We need touch with -h option support.
11186 dnl ===================================================================
11187 AC_PATH_PROG(TOUCH, touch)
11188 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11189 touch warn
11190 if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then
11191     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],,)
11194 dnl ===================================================================
11195 dnl Check for system epoxy
11196 dnl ===================================================================
11197 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11199 dnl ===================================================================
11200 dnl Set vcl option: coordinate device in double or sal_Int32
11201 dnl ===================================================================
11203 dnl disabled for now, we don't want subtle differences between OSs
11204 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11205 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11206 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11207 dnl     AC_MSG_RESULT([double])
11208 dnl else
11209 dnl     AC_MSG_RESULT([sal_Int32])
11210 dnl fi
11212 dnl ===================================================================
11213 dnl Test which vclplugs have to be built.
11214 dnl ===================================================================
11215 R=""
11216 if test "$USING_X11" != TRUE; then
11217     enable_gtk3=no
11220 ENABLE_GTK3=""
11221 if test "x$enable_gtk3" = "xyes"; then
11222     ENABLE_GTK3="TRUE"
11223     AC_DEFINE(ENABLE_GTK3)
11224     R="$R gtk3"
11226 AC_SUBST(ENABLE_GTK3)
11228 ENABLE_GTK3_KDE5=""
11229 if test "x$enable_gtk3_kde5" = "xyes"; then
11230     ENABLE_GTK3_KDE5="TRUE"
11231     AC_DEFINE(ENABLE_GTK3_KDE5)
11232     R="$R gtk3_kde5"
11234 AC_SUBST(ENABLE_GTK3_KDE5)
11236 ENABLE_QT5=""
11237 if test "x$enable_qt5" = "xyes"; then
11238     ENABLE_QT5="TRUE"
11239     AC_DEFINE(ENABLE_QT5)
11240     R="$R qt5"
11242 AC_SUBST(ENABLE_QT5)
11244 ENABLE_KF5=""
11245 if test "x$enable_kf5" = "xyes"; then
11246     ENABLE_KF5="TRUE"
11247     AC_DEFINE(ENABLE_KF5)
11248     R="$R kf5"
11250 AC_SUBST(ENABLE_KF5)
11252 GTK3_CFLAGS=""
11253 GTK3_LIBS=""
11254 if test "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11255     if test "$with_system_cairo" = no; then
11256         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11257     fi
11258     : ${with_system_cairo:=yes}
11259     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)
11260     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11261     GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11262     FilterLibs "${GTK3_LIBS}"
11263     GTK3_LIBS="${filteredlibs}"
11265     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11266     if test "$with_system_epoxy" != "yes"; then
11267         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11268         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11269                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11270     fi
11272 AC_SUBST(GTK3_LIBS)
11273 AC_SUBST(GTK3_CFLAGS)
11275 if test "$enable_introspection" = yes; then
11276     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11277         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11278     else
11279         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11280     fi
11283 if test "$_os" = "WINNT"; then
11284     R="$R win"
11285 elif test "$_os" = "Darwin"; then
11286     R="$R osx"
11287 elif test "$_os" = "iOS"; then
11288     R="ios (builtin)"
11291 build_vcl_plugins="$R"
11292 if test -z "$build_vcl_plugins"; then
11293     build_vcl_plugins="none"
11295 AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins])
11297 dnl ===================================================================
11298 dnl check for dbus support
11299 dnl ===================================================================
11300 ENABLE_DBUS=""
11301 DBUS_CFLAGS=""
11302 DBUS_LIBS=""
11303 DBUS_GLIB_CFLAGS=""
11304 DBUS_GLIB_LIBS=""
11305 DBUS_HAVE_GLIB=""
11307 if test "$enable_dbus" = "no"; then
11308     test_dbus=no
11311 AC_MSG_CHECKING([whether to enable DBUS support])
11312 if test "$test_dbus" = "yes"; then
11313     ENABLE_DBUS="TRUE"
11314     AC_MSG_RESULT([yes])
11315     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11316     AC_DEFINE(ENABLE_DBUS)
11317     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11318     FilterLibs "${DBUS_LIBS}"
11319     DBUS_LIBS="${filteredlibs}"
11321     # Glib is needed for BluetoothServer
11322     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11323     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11324         [
11325             DBUS_HAVE_GLIB="TRUE"
11326             AC_DEFINE(DBUS_HAVE_GLIB,1)
11327         ],
11328         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11329     )
11330 else
11331     AC_MSG_RESULT([no])
11334 AC_SUBST(ENABLE_DBUS)
11335 AC_SUBST(DBUS_CFLAGS)
11336 AC_SUBST(DBUS_LIBS)
11337 AC_SUBST(DBUS_GLIB_CFLAGS)
11338 AC_SUBST(DBUS_GLIB_LIBS)
11339 AC_SUBST(DBUS_HAVE_GLIB)
11341 AC_MSG_CHECKING([whether to enable Impress remote control])
11342 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11343     AC_MSG_RESULT([yes])
11344     ENABLE_SDREMOTE=TRUE
11345     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11347     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11348         # The Bluetooth code doesn't compile with macOS SDK 10.15
11349         if test "$enable_sdremote_bluetooth" = yes; then
11350             AC_MSG_ERROR([macOS SDK $with_macosx_sdk does not currently support --enable-sdremote-bluetooth])
11351         fi
11352         enable_sdremote_bluetooth=no
11353     fi
11354     # If not explicitly enabled or disabled, default
11355     if test -z "$enable_sdremote_bluetooth"; then
11356         case "$OS" in
11357         LINUX|MACOSX|WNT)
11358             # Default to yes for these
11359             enable_sdremote_bluetooth=yes
11360             ;;
11361         *)
11362             # otherwise no
11363             enable_sdremote_bluetooth=no
11364             ;;
11365         esac
11366     fi
11367     # $enable_sdremote_bluetooth is guaranteed non-empty now
11369     if test "$enable_sdremote_bluetooth" != "no"; then
11370         if test "$OS" = "LINUX"; then
11371             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11372                 AC_MSG_RESULT([yes])
11373                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11374                 dnl ===================================================================
11375                 dnl Check for system bluez
11376                 dnl ===================================================================
11377                 AC_MSG_CHECKING([which Bluetooth header to use])
11378                 if test "$with_system_bluez" = "yes"; then
11379                     AC_MSG_RESULT([external])
11380                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11381                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11382                     SYSTEM_BLUEZ=TRUE
11383                 else
11384                     AC_MSG_RESULT([internal])
11385                     SYSTEM_BLUEZ=
11386                 fi
11387             else
11388                 AC_MSG_RESULT([no, dbus disabled])
11389                 ENABLE_SDREMOTE_BLUETOOTH=
11390                 SYSTEM_BLUEZ=
11391             fi
11392         else
11393             AC_MSG_RESULT([yes])
11394             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11395             SYSTEM_BLUEZ=
11396         fi
11397     else
11398         AC_MSG_RESULT([no])
11399         ENABLE_SDREMOTE_BLUETOOTH=
11400         SYSTEM_BLUEZ=
11401     fi
11402 else
11403     ENABLE_SDREMOTE=
11404     SYSTEM_BLUEZ=
11405     AC_MSG_RESULT([no])
11407 AC_SUBST(ENABLE_SDREMOTE)
11408 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11409 AC_SUBST(SYSTEM_BLUEZ)
11411 dnl ===================================================================
11412 dnl Check whether to enable GIO support
11413 dnl ===================================================================
11414 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11415     AC_MSG_CHECKING([whether to enable GIO support])
11416     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11417         dnl Need at least 2.26 for the dbus support.
11418         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11419                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11420         if test "$ENABLE_GIO" = "TRUE"; then
11421             AC_DEFINE(ENABLE_GIO)
11422             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11423             FilterLibs "${GIO_LIBS}"
11424             GIO_LIBS="${filteredlibs}"
11425         fi
11426     else
11427         AC_MSG_RESULT([no])
11428     fi
11430 AC_SUBST(ENABLE_GIO)
11431 AC_SUBST(GIO_CFLAGS)
11432 AC_SUBST(GIO_LIBS)
11435 dnl ===================================================================
11437 SPLIT_APP_MODULES=""
11438 if test "$enable_split_app_modules" = "yes"; then
11439     SPLIT_APP_MODULES="TRUE"
11441 AC_SUBST(SPLIT_APP_MODULES)
11443 SPLIT_OPT_FEATURES=""
11444 if test "$enable_split_opt_features" = "yes"; then
11445     SPLIT_OPT_FEATURES="TRUE"
11447 AC_SUBST(SPLIT_OPT_FEATURES)
11449 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then
11450     if test "$enable_cairo_canvas" = yes; then
11451         AC_MSG_ERROR([The cairo canvas should not be used for this platform])
11452     fi
11453     enable_cairo_canvas=no
11454 elif test -z "$enable_cairo_canvas"; then
11455     enable_cairo_canvas=yes
11458 ENABLE_CAIRO_CANVAS=""
11459 if test "$enable_cairo_canvas" = "yes"; then
11460     test_cairo=yes
11461     ENABLE_CAIRO_CANVAS="TRUE"
11462     AC_DEFINE(ENABLE_CAIRO_CANVAS)
11464 AC_SUBST(ENABLE_CAIRO_CANVAS)
11466 dnl ===================================================================
11467 dnl Check whether the GStreamer libraries are available.
11468 dnl ===================================================================
11470 ENABLE_GSTREAMER_1_0=""
11472 if test "$build_gstreamer_1_0" = "yes"; then
11474     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11475     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11476         ENABLE_GSTREAMER_1_0="TRUE"
11477         AC_MSG_RESULT([yes])
11478         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11479         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11480         FilterLibs "${GSTREAMER_1_0_LIBS}"
11481         GSTREAMER_1_0_LIBS="${filteredlibs}"
11482         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11483     else
11484         AC_MSG_RESULT([no])
11485     fi
11487 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11488 AC_SUBST(GSTREAMER_1_0_LIBS)
11489 AC_SUBST(ENABLE_GSTREAMER_1_0)
11491 ENABLE_OPENGL_TRANSITIONS=
11492 ENABLE_OPENGL_CANVAS=
11493 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11494    : # disable
11495 elif test "$_os" = "Darwin"; then
11496     # We use frameworks on macOS, no need for detail checks
11497     ENABLE_OPENGL_TRANSITIONS=TRUE
11498     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11499     ENABLE_OPENGL_CANVAS=TRUE
11500 elif test $_os = WINNT; then
11501     ENABLE_OPENGL_TRANSITIONS=TRUE
11502     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11503     ENABLE_OPENGL_CANVAS=TRUE
11504 else
11505     if test "$USING_X11" = TRUE; then
11506         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11507         ENABLE_OPENGL_TRANSITIONS=TRUE
11508         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11509         ENABLE_OPENGL_CANVAS=TRUE
11510     fi
11513 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11514 AC_SUBST(ENABLE_OPENGL_CANVAS)
11516 dnl =================================================
11517 dnl Check whether to build with OpenCL support.
11518 dnl =================================================
11520 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11521     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11522     # platform (optional at run-time, used through clew).
11523     BUILD_TYPE="$BUILD_TYPE OPENCL"
11524     AC_DEFINE(HAVE_FEATURE_OPENCL)
11527 dnl =================================================
11528 dnl Check whether to build with dconf support.
11529 dnl =================================================
11531 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11532     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11533         if test "$enable_dconf" = yes; then
11534             AC_MSG_ERROR([dconf not found])
11535         else
11536             enable_dconf=no
11537         fi])
11539 AC_MSG_CHECKING([whether to enable dconf])
11540 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11541     DCONF_CFLAGS=
11542     DCONF_LIBS=
11543     ENABLE_DCONF=
11544     AC_MSG_RESULT([no])
11545 else
11546     ENABLE_DCONF=TRUE
11547     AC_DEFINE(ENABLE_DCONF)
11548     AC_MSG_RESULT([yes])
11550 AC_SUBST([DCONF_CFLAGS])
11551 AC_SUBST([DCONF_LIBS])
11552 AC_SUBST([ENABLE_DCONF])
11554 # pdf import?
11555 AC_MSG_CHECKING([whether to build the PDF import feature])
11556 ENABLE_PDFIMPORT=
11557 if test $_os != iOS -a \( -z "$enable_pdfimport" -o "$enable_pdfimport" = yes \); then
11558     AC_MSG_RESULT([yes])
11559     ENABLE_PDFIMPORT=TRUE
11560     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11561 else
11562     AC_MSG_RESULT([no])
11565 # Pdfium?
11566 AC_MSG_CHECKING([whether to build PDFium])
11567 ENABLE_PDFIUM=
11568 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11569     AC_MSG_RESULT([yes])
11570     ENABLE_PDFIUM=TRUE
11571     AC_DEFINE(HAVE_FEATURE_PDFIUM)
11572     BUILD_TYPE="$BUILD_TYPE PDFIUM"
11573 else
11574     AC_MSG_RESULT([no])
11576 AC_SUBST(ENABLE_PDFIUM)
11578 dnl ===================================================================
11579 dnl Check for poppler
11580 dnl ===================================================================
11581 ENABLE_POPPLER=
11582 AC_MSG_CHECKING([whether to build Poppler])
11583 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11584     AC_MSG_RESULT([yes])
11585     ENABLE_POPPLER=TRUE
11586     AC_DEFINE(HAVE_FEATURE_POPPLER)
11587 else
11588     AC_MSG_RESULT([no])
11590 AC_SUBST(ENABLE_POPPLER)
11592 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11593     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11596 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11597     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11600 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11601     dnl ===================================================================
11602     dnl Check for system poppler
11603     dnl ===================================================================
11604     AC_MSG_CHECKING([which PDF import poppler to use])
11605     if test "$with_system_poppler" = "yes"; then
11606         AC_MSG_RESULT([external])
11607         SYSTEM_POPPLER=TRUE
11608         PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11609         AC_LANG_PUSH([C++])
11610         save_CXXFLAGS=$CXXFLAGS
11611         save_CPPFLAGS=$CPPFLAGS
11612         CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11613         CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11614         AC_CHECK_HEADER([cpp/poppler-version.h],
11615             [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11616             [])
11617         CXXFLAGS=$save_CXXFLAGS
11618         CPPFLAGS=$save_CPPFLAGS
11619         AC_LANG_POP([C++])
11620         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11622         FilterLibs "${POPPLER_LIBS}"
11623         POPPLER_LIBS="${filteredlibs}"
11624     else
11625         AC_MSG_RESULT([internal])
11626         SYSTEM_POPPLER=
11627         BUILD_TYPE="$BUILD_TYPE POPPLER"
11628         AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11629     fi
11630     AC_DEFINE([ENABLE_PDFIMPORT],1)
11632 AC_SUBST(ENABLE_PDFIMPORT)
11633 AC_SUBST(SYSTEM_POPPLER)
11634 AC_SUBST(POPPLER_CFLAGS)
11635 AC_SUBST(POPPLER_LIBS)
11637 # Skia?
11638 AC_MSG_CHECKING([whether to build Skia])
11639 ENABLE_SKIA=
11640 if test "$enable_skia" != "no" -a "$build_skia" = "yes"; then
11641     if test "$enable_skia" = "debug"; then
11642         AC_MSG_RESULT([yes (debug)])
11643         ENABLE_SKIA_DEBUG=TRUE
11644     else
11645         AC_MSG_RESULT([yes])
11646         ENABLE_SKIA_DEBUG=
11647     fi
11648     ENABLE_SKIA=TRUE
11649     AC_DEFINE(HAVE_FEATURE_SKIA)
11650     BUILD_TYPE="$BUILD_TYPE SKIA"
11651 else
11652     AC_MSG_RESULT([no])
11654 AC_SUBST(ENABLE_SKIA)
11655 AC_SUBST(ENABLE_SKIA_DEBUG)
11657 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11658 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11659 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11660 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11661 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11662 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11663 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11664 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11665 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11667 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE -a ! \( "$_os" = "WINNT" -a "$CPUNAME" = "ARM64" \); then
11668     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11669         AC_MSG_CHECKING([for Clang])
11670         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
11671     else
11672         if test "$_os" = "WINNT"; then
11673             AC_MSG_CHECKING([for clang-cl])
11674             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
11675                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
11676                 dnl explicitly set -m32/-m64
11677                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
11678                 LO_CLANG_CXX="$LO_CLANG_CC"
11679                 AC_MSG_RESULT([$LO_CLANG_CC])
11680             else
11681                 AC_MSG_RESULT([no])
11682             fi
11683         else
11684             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
11685             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
11686         fi
11687     fi
11688     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11689         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
11690         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
11691         if test "$clang2_ver" -lt 50002; then
11692             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
11693             LO_CLANG_CC=
11694             LO_CLANG_CXX=
11695         fi
11696     fi
11697     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
11698         # Skia is the default on Windows, so hard-require Clang.
11699         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
11700         if test "$_os" = "WINNT"; then
11701             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
11702         else
11703             AC_MSG_WARN([Clang compiler not found.])
11704         fi
11705     else
11707         save_CXX="$CXX"
11708         CXX="$LO_CLANG_CXX"
11709         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
11710         flag_sse2=-msse2
11711         flag_ssse3=-mssse3
11712         flag_sse41=-msse4.1
11713         flag_sse42=-msse4.2
11714         flag_avx=-mavx
11715         flag_avx2=-mavx2
11716         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
11717         flag_f16c=-mf16c
11718         flag_fma=-mfma
11720         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
11721         AC_LANG_PUSH([C++])
11722         save_CXXFLAGS=$CXXFLAGS
11723         CXXFLAGS="$CXXFLAGS $flag_sse2"
11724         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11725             #include <emmintrin.h>
11726             int main () {
11727                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11728                 c = _mm_xor_si128 (a, b);
11729                 return 0;
11730             }
11731             ])],
11732             [can_compile_sse2=yes],
11733             [can_compile_sse2=no])
11734         AC_LANG_POP([C++])
11735         CXXFLAGS=$save_CXXFLAGS
11736         AC_MSG_RESULT([${can_compile_sse2}])
11737         if test "${can_compile_sse2}" = "yes" ; then
11738             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
11739         fi
11741         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
11742         AC_LANG_PUSH([C++])
11743         save_CXXFLAGS=$CXXFLAGS
11744         CXXFLAGS="$CXXFLAGS $flag_ssse3"
11745         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11746             #include <tmmintrin.h>
11747             int main () {
11748                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11749                 c = _mm_maddubs_epi16 (a, b);
11750                 return 0;
11751             }
11752             ])],
11753             [can_compile_ssse3=yes],
11754             [can_compile_ssse3=no])
11755         AC_LANG_POP([C++])
11756         CXXFLAGS=$save_CXXFLAGS
11757         AC_MSG_RESULT([${can_compile_ssse3}])
11758         if test "${can_compile_ssse3}" = "yes" ; then
11759             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
11760         fi
11762         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
11763         AC_LANG_PUSH([C++])
11764         save_CXXFLAGS=$CXXFLAGS
11765         CXXFLAGS="$CXXFLAGS $flag_sse41"
11766         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11767             #include <smmintrin.h>
11768             int main () {
11769                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11770                 c = _mm_cmpeq_epi64 (a, b);
11771                 return 0;
11772             }
11773             ])],
11774             [can_compile_sse41=yes],
11775             [can_compile_sse41=no])
11776         AC_LANG_POP([C++])
11777         CXXFLAGS=$save_CXXFLAGS
11778         AC_MSG_RESULT([${can_compile_sse41}])
11779         if test "${can_compile_sse41}" = "yes" ; then
11780             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
11781         fi
11783         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
11784         AC_LANG_PUSH([C++])
11785         save_CXXFLAGS=$CXXFLAGS
11786         CXXFLAGS="$CXXFLAGS $flag_sse42"
11787         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11788             #include <nmmintrin.h>
11789             int main () {
11790                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11791                 c = _mm_cmpgt_epi64 (a, b);
11792                 return 0;
11793             }
11794             ])],
11795             [can_compile_sse42=yes],
11796             [can_compile_sse42=no])
11797         AC_LANG_POP([C++])
11798         CXXFLAGS=$save_CXXFLAGS
11799         AC_MSG_RESULT([${can_compile_sse42}])
11800         if test "${can_compile_sse42}" = "yes" ; then
11801             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
11802         fi
11804         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
11805         AC_LANG_PUSH([C++])
11806         save_CXXFLAGS=$CXXFLAGS
11807         CXXFLAGS="$CXXFLAGS $flag_avx"
11808         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11809             #include <immintrin.h>
11810             int main () {
11811                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
11812                 c = _mm256_xor_ps(a, b);
11813                 return 0;
11814             }
11815             ])],
11816             [can_compile_avx=yes],
11817             [can_compile_avx=no])
11818         AC_LANG_POP([C++])
11819         CXXFLAGS=$save_CXXFLAGS
11820         AC_MSG_RESULT([${can_compile_avx}])
11821         if test "${can_compile_avx}" = "yes" ; then
11822             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
11823         fi
11825         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
11826         AC_LANG_PUSH([C++])
11827         save_CXXFLAGS=$CXXFLAGS
11828         CXXFLAGS="$CXXFLAGS $flag_avx2"
11829         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11830             #include <immintrin.h>
11831             int main () {
11832                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
11833                 c = _mm256_maddubs_epi16(a, b);
11834                 return 0;
11835             }
11836             ])],
11837             [can_compile_avx2=yes],
11838             [can_compile_avx2=no])
11839         AC_LANG_POP([C++])
11840         CXXFLAGS=$save_CXXFLAGS
11841         AC_MSG_RESULT([${can_compile_avx2}])
11842         if test "${can_compile_avx2}" = "yes" ; then
11843             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
11844         fi
11846         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
11847         AC_LANG_PUSH([C++])
11848         save_CXXFLAGS=$CXXFLAGS
11849         CXXFLAGS="$CXXFLAGS $flag_avx512"
11850         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11851             #include <immintrin.h>
11852             int main () {
11853                 __m512i a = _mm512_loadu_si512(0);
11854                 return 0;
11855             }
11856             ])],
11857             [can_compile_avx512=yes],
11858             [can_compile_avx512=no])
11859         AC_LANG_POP([C++])
11860         CXXFLAGS=$save_CXXFLAGS
11861         AC_MSG_RESULT([${can_compile_avx512}])
11862         if test "${can_compile_avx512}" = "yes" ; then
11863             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
11864         fi
11866         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
11867         AC_LANG_PUSH([C++])
11868         save_CXXFLAGS=$CXXFLAGS
11869         CXXFLAGS="$CXXFLAGS $flag_f16c"
11870         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11871             #include <immintrin.h>
11872             int main () {
11873                 __m128i a = _mm_set1_epi32 (0);
11874                 __m128 c;
11875                 c = _mm_cvtph_ps(a);
11876                 return 0;
11877             }
11878             ])],
11879             [can_compile_f16c=yes],
11880             [can_compile_f16c=no])
11881         AC_LANG_POP([C++])
11882         CXXFLAGS=$save_CXXFLAGS
11883         AC_MSG_RESULT([${can_compile_f16c}])
11884         if test "${can_compile_f16c}" = "yes" ; then
11885             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
11886         fi
11888         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
11889         AC_LANG_PUSH([C++])
11890         save_CXXFLAGS=$CXXFLAGS
11891         CXXFLAGS="$CXXFLAGS $flag_fma"
11892         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11893             #include <immintrin.h>
11894             int main () {
11895                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
11896                 d = _mm256_fmadd_ps(a, b, c);
11897                 return 0;
11898             }
11899             ])],
11900             [can_compile_fma=yes],
11901             [can_compile_fma=no])
11902         AC_LANG_POP([C++])
11903         CXXFLAGS=$save_CXXFLAGS
11904         AC_MSG_RESULT([${can_compile_fma}])
11905         if test "${can_compile_fma}" = "yes" ; then
11906             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
11907         fi
11909         CXX="$save_CXX"
11910     fi
11913 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
11915 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11916     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
11917     AC_LANG_PUSH([C])
11918     save_CC="$CC"
11919     CC="$LO_CLANG_CC"
11920     save_CFLAGS=$CFLAGS
11921     CFLAGS="$CFLAGS --ccache-skip -O2"
11922     dnl an empty program will do, we're checking the compiler flags
11923     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11924                       [use_ccache=yes], [use_ccache=no])
11925     CFLAGS=$save_CFLAGS
11926     CC=$save_CC
11927     if test $use_ccache = yes; then
11928         AC_MSG_RESULT([yes])
11929     else
11930         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
11931         AC_MSG_RESULT([no])
11932     fi
11933     AC_LANG_POP([C])
11935     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
11936     AC_LANG_PUSH([C++])
11937     save_CXX="$CXX"
11938     CXX="$LO_CLANG_CXX"
11939     save_CXXFLAGS=$CXXFLAGS
11940     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
11941     dnl an empty program will do, we're checking the compiler flags
11942     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11943                       [use_ccache=yes], [use_ccache=no])
11944     if test $use_ccache = yes; then
11945         AC_MSG_RESULT([yes])
11946     else
11947         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
11948         AC_MSG_RESULT([no])
11949     fi
11950     CXXFLAGS=$save_CXXFLAGS
11951     CXX=$save_CXX
11952     AC_LANG_POP([C++])
11955 AC_SUBST(LO_CLANG_CC)
11956 AC_SUBST(LO_CLANG_CXX)
11957 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
11958 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
11959 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
11960 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
11961 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
11962 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
11963 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
11964 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
11965 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
11966 AC_SUBST(CLANG_USE_LD)
11968 SYSTEM_GPGMEPP=
11970 if test "$enable_gpgmepp" = no; then
11971     AC_MSG_CHECKING([whether to enable gpgmepp])
11972     AC_MSG_RESULT([no])
11973 elif test "$enable_mpl_subset" = "yes"; then
11974     AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
11975     AC_MSG_RESULT([yes])
11976 elif test "$enable_fuzzers" = "yes"; then
11977     AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
11978     AC_MSG_RESULT([yes])
11979 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
11980     dnl ===================================================================
11981     dnl Check for system gpgme
11982     dnl ===================================================================
11983     AC_MSG_CHECKING([which gpgmepp to use])
11984     if test "$with_system_gpgmepp" = "yes"; then
11985         AC_MSG_RESULT([external])
11986         SYSTEM_GPGMEPP=TRUE
11988         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
11989         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
11990             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
11991         # progress_callback is the only func with plain C linkage
11992         # checking for it also filters out older, KDE-dependent libgpgmepp versions
11993         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
11994             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
11995         AC_CHECK_HEADER(gpgme.h, [],
11996             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
11997     else
11998         AC_MSG_RESULT([internal])
11999         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12000         AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12002         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12003         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12004         if test "$_os" != "WINNT"; then
12005             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12006             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12007         fi
12008     fi
12009     ENABLE_GPGMEPP=TRUE
12010     AC_DEFINE([HAVE_FEATURE_GPGME])
12011     AC_PATH_PROG(GPG, gpg)
12012     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12013     # so let's exclude that manually for the moment
12014     if test -n "$GPG" -a "$_os" != "WINNT"; then
12015         # make sure we not only have a working gpgme, but a full working
12016         # gpg installation to run OpenPGP signature verification
12017         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12018     fi
12019     if test "$_os" = "Linux"; then
12020       uid=`id -u`
12021       AC_MSG_CHECKING([for /run/user/$uid])
12022       if test -d /run/user/$uid; then
12023         AC_MSG_RESULT([yes])
12024         AC_PATH_PROG(GPGCONF, gpgconf)
12026         # Older versions of gpgconf are not working as expected, since
12027         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12028         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12029         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12030         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12031         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12032         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12033         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12034           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12035           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12036           if $GPGCONF --dump-options > /dev/null ; then
12037             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12038               AC_MSG_RESULT([yes])
12039               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12040               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12041             else
12042               AC_MSG_RESULT([no])
12043             fi
12044           else
12045             AC_MSG_RESULT([no. missing or broken gpgconf?])
12046           fi
12047         else
12048           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12049         fi
12050       else
12051         AC_MSG_RESULT([no])
12052      fi
12053    fi
12055 AC_SUBST(ENABLE_GPGMEPP)
12056 AC_SUBST(SYSTEM_GPGMEPP)
12057 AC_SUBST(GPG_ERROR_CFLAGS)
12058 AC_SUBST(GPG_ERROR_LIBS)
12059 AC_SUBST(LIBASSUAN_CFLAGS)
12060 AC_SUBST(LIBASSUAN_LIBS)
12061 AC_SUBST(GPGMEPP_CFLAGS)
12062 AC_SUBST(GPGMEPP_LIBS)
12064 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12065 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12066     AC_MSG_RESULT([yes])
12067     ENABLE_MEDIAWIKI=TRUE
12068     BUILD_TYPE="$BUILD_TYPE XSLTML"
12069     if test  "x$with_java" = "xno"; then
12070         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12071     fi
12072 else
12073     AC_MSG_RESULT([no])
12074     ENABLE_MEDIAWIKI=
12075     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12077 AC_SUBST(ENABLE_MEDIAWIKI)
12079 AC_MSG_CHECKING([whether to build the Report Builder])
12080 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12081     AC_MSG_RESULT([yes])
12082     ENABLE_REPORTBUILDER=TRUE
12083     AC_MSG_CHECKING([which jfreereport libs to use])
12084     if test "$with_system_jfreereport" = "yes"; then
12085         SYSTEM_JFREEREPORT=TRUE
12086         AC_MSG_RESULT([external])
12087         if test -z $SAC_JAR; then
12088             SAC_JAR=/usr/share/java/sac.jar
12089         fi
12090         if ! test -f $SAC_JAR; then
12091              AC_MSG_ERROR(sac.jar not found.)
12092         fi
12094         if test -z $LIBXML_JAR; then
12095             if test -f /usr/share/java/libxml-1.0.0.jar; then
12096                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12097             elif test -f /usr/share/java/libxml.jar; then
12098                 LIBXML_JAR=/usr/share/java/libxml.jar
12099             else
12100                 AC_MSG_ERROR(libxml.jar replacement not found.)
12101             fi
12102         elif ! test -f $LIBXML_JAR; then
12103             AC_MSG_ERROR(libxml.jar not found.)
12104         fi
12106         if test -z $FLUTE_JAR; then
12107             if test -f /usr/share/java/flute-1.3.0.jar; then
12108                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12109             elif test -f /usr/share/java/flute.jar; then
12110                 FLUTE_JAR=/usr/share/java/flute.jar
12111             else
12112                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12113             fi
12114         elif ! test -f $FLUTE_JAR; then
12115             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12116         fi
12118         if test -z $JFREEREPORT_JAR; then
12119             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12120                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12121             elif test -f /usr/share/java/flow-engine.jar; then
12122                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12123             else
12124                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12125             fi
12126         elif ! test -f  $JFREEREPORT_JAR; then
12127                 AC_MSG_ERROR(jfreereport.jar not found.)
12128         fi
12130         if test -z $LIBLAYOUT_JAR; then
12131             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12132                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12133             elif test -f /usr/share/java/liblayout.jar; then
12134                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12135             else
12136                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12137             fi
12138         elif ! test -f $LIBLAYOUT_JAR; then
12139                 AC_MSG_ERROR(liblayout.jar not found.)
12140         fi
12142         if test -z $LIBLOADER_JAR; then
12143             if test -f /usr/share/java/libloader-1.0.0.jar; then
12144                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12145             elif test -f /usr/share/java/libloader.jar; then
12146                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12147             else
12148                 AC_MSG_ERROR(libloader.jar replacement not found.)
12149             fi
12150         elif ! test -f  $LIBLOADER_JAR; then
12151             AC_MSG_ERROR(libloader.jar not found.)
12152         fi
12154         if test -z $LIBFORMULA_JAR; then
12155             if test -f /usr/share/java/libformula-0.2.0.jar; then
12156                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12157             elif test -f /usr/share/java/libformula.jar; then
12158                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12159             else
12160                 AC_MSG_ERROR(libformula.jar replacement not found.)
12161             fi
12162         elif ! test -f $LIBFORMULA_JAR; then
12163                 AC_MSG_ERROR(libformula.jar not found.)
12164         fi
12166         if test -z $LIBREPOSITORY_JAR; then
12167             if test -f /usr/share/java/librepository-1.0.0.jar; then
12168                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12169             elif test -f /usr/share/java/librepository.jar; then
12170                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12171             else
12172                 AC_MSG_ERROR(librepository.jar replacement not found.)
12173             fi
12174         elif ! test -f $LIBREPOSITORY_JAR; then
12175             AC_MSG_ERROR(librepository.jar not found.)
12176         fi
12178         if test -z $LIBFONTS_JAR; then
12179             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12180                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12181             elif test -f /usr/share/java/libfonts.jar; then
12182                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12183             else
12184                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12185             fi
12186         elif ! test -f $LIBFONTS_JAR; then
12187                 AC_MSG_ERROR(libfonts.jar not found.)
12188         fi
12190         if test -z $LIBSERIALIZER_JAR; then
12191             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12192                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12193             elif test -f /usr/share/java/libserializer.jar; then
12194                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12195             else
12196                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12197             fi
12198         elif ! test -f $LIBSERIALIZER_JAR; then
12199                 AC_MSG_ERROR(libserializer.jar not found.)
12200         fi
12202         if test -z $LIBBASE_JAR; then
12203             if test -f /usr/share/java/libbase-1.0.0.jar; then
12204                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12205             elif test -f /usr/share/java/libbase.jar; then
12206                 LIBBASE_JAR=/usr/share/java/libbase.jar
12207             else
12208                 AC_MSG_ERROR(libbase.jar replacement not found.)
12209             fi
12210         elif ! test -f $LIBBASE_JAR; then
12211             AC_MSG_ERROR(libbase.jar not found.)
12212         fi
12214     else
12215         AC_MSG_RESULT([internal])
12216         SYSTEM_JFREEREPORT=
12217         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12218         NEED_ANT=TRUE
12219     fi
12220 else
12221     AC_MSG_RESULT([no])
12222     ENABLE_REPORTBUILDER=
12223     SYSTEM_JFREEREPORT=
12225 AC_SUBST(ENABLE_REPORTBUILDER)
12226 AC_SUBST(SYSTEM_JFREEREPORT)
12227 AC_SUBST(SAC_JAR)
12228 AC_SUBST(LIBXML_JAR)
12229 AC_SUBST(FLUTE_JAR)
12230 AC_SUBST(JFREEREPORT_JAR)
12231 AC_SUBST(LIBBASE_JAR)
12232 AC_SUBST(LIBLAYOUT_JAR)
12233 AC_SUBST(LIBLOADER_JAR)
12234 AC_SUBST(LIBFORMULA_JAR)
12235 AC_SUBST(LIBREPOSITORY_JAR)
12236 AC_SUBST(LIBFONTS_JAR)
12237 AC_SUBST(LIBSERIALIZER_JAR)
12239 # this has to be here because both the Wiki Publisher and the SRB use
12240 # commons-logging
12241 COMMONS_LOGGING_VERSION=1.2
12242 if test "$ENABLE_REPORTBUILDER" = "TRUE"; then
12243     AC_MSG_CHECKING([which Apache commons-* libs to use])
12244     if test "$with_system_apache_commons" = "yes"; then
12245         SYSTEM_APACHE_COMMONS=TRUE
12246         AC_MSG_RESULT([external])
12247         if test -z $COMMONS_LOGGING_JAR; then
12248             if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then
12249                COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar
12250            elif test -f /usr/share/java/commons-logging.jar; then
12251                 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar
12252             else
12253                 AC_MSG_ERROR(commons-logging.jar replacement not found.)
12254             fi
12255         elif ! test -f $COMMONS_LOGGING_JAR; then
12256             AC_MSG_ERROR(commons-logging.jar not found.)
12257         fi
12258     else
12259         AC_MSG_RESULT([internal])
12260         SYSTEM_APACHE_COMMONS=
12261         BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS"
12262         NEED_ANT=TRUE
12263     fi
12265 AC_SUBST(SYSTEM_APACHE_COMMONS)
12266 AC_SUBST(COMMONS_LOGGING_JAR)
12267 AC_SUBST(COMMONS_LOGGING_VERSION)
12269 # scripting provider for BeanShell?
12270 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12271 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12272     AC_MSG_RESULT([yes])
12273     ENABLE_SCRIPTING_BEANSHELL=TRUE
12275     dnl ===================================================================
12276     dnl Check for system beanshell
12277     dnl ===================================================================
12278     AC_MSG_CHECKING([which beanshell to use])
12279     if test "$with_system_beanshell" = "yes"; then
12280         AC_MSG_RESULT([external])
12281         SYSTEM_BSH=TRUE
12282         if test -z $BSH_JAR; then
12283             BSH_JAR=/usr/share/java/bsh.jar
12284         fi
12285         if ! test -f $BSH_JAR; then
12286             AC_MSG_ERROR(bsh.jar not found.)
12287         fi
12288     else
12289         AC_MSG_RESULT([internal])
12290         SYSTEM_BSH=
12291         BUILD_TYPE="$BUILD_TYPE BSH"
12292     fi
12293 else
12294     AC_MSG_RESULT([no])
12295     ENABLE_SCRIPTING_BEANSHELL=
12296     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12298 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12299 AC_SUBST(SYSTEM_BSH)
12300 AC_SUBST(BSH_JAR)
12302 # scripting provider for JavaScript?
12303 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12304 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12305     AC_MSG_RESULT([yes])
12306     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12308     dnl ===================================================================
12309     dnl Check for system rhino
12310     dnl ===================================================================
12311     AC_MSG_CHECKING([which rhino to use])
12312     if test "$with_system_rhino" = "yes"; then
12313         AC_MSG_RESULT([external])
12314         SYSTEM_RHINO=TRUE
12315         if test -z $RHINO_JAR; then
12316             RHINO_JAR=/usr/share/java/js.jar
12317         fi
12318         if ! test -f $RHINO_JAR; then
12319             AC_MSG_ERROR(js.jar not found.)
12320         fi
12321     else
12322         AC_MSG_RESULT([internal])
12323         SYSTEM_RHINO=
12324         BUILD_TYPE="$BUILD_TYPE RHINO"
12325         NEED_ANT=TRUE
12326     fi
12327 else
12328     AC_MSG_RESULT([no])
12329     ENABLE_SCRIPTING_JAVASCRIPT=
12330     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12332 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12333 AC_SUBST(SYSTEM_RHINO)
12334 AC_SUBST(RHINO_JAR)
12336 # This is only used in Qt5/KF5 checks to determine if /usr/lib64
12337 # paths should be added to library search path. So lets put all 64-bit
12338 # platforms there.
12339 supports_multilib=
12340 case "$host_cpu" in
12341 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12342     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12343         supports_multilib="yes"
12344     fi
12345     ;;
12347     ;;
12348 esac
12350 dnl ===================================================================
12351 dnl QT5 Integration
12352 dnl ===================================================================
12354 QT5_CFLAGS=""
12355 QT5_LIBS=""
12356 QMAKE5="qmake"
12357 MOC5="moc"
12358 QT5_GOBJECT_CFLAGS=""
12359 QT5_GOBJECT_LIBS=""
12360 QT5_HAVE_GOBJECT=""
12361 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12362         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12363         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12364 then
12365     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12366     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12368     if test -n "$supports_multilib"; then
12369         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12370     fi
12372     qt5_test_include="QtWidgets/qapplication.h"
12373     qt5_test_library="libQt5Widgets.so"
12375     dnl Check for qmake5
12376     AC_PATH_PROGS( QMAKE5, [qmake-qt5 qmake], no, [$QT5DIR/bin:$PATH])
12377     if test "$QMAKE5" = "no"; then
12378         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12379     else
12380         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12381         if test -z "$qmake5_test_ver"; then
12382             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12383         fi
12384         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12385         qt5_minimal_minor="6"
12386         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12387             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12388         else
12389             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12390         fi
12391     fi
12393     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12394     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12396     AC_MSG_CHECKING([for Qt5 headers])
12397     qt5_incdir="no"
12398     for inc_dir in $qt5_incdirs; do
12399         if test -r "$inc_dir/$qt5_test_include"; then
12400             qt5_incdir="$inc_dir"
12401             break
12402         fi
12403     done
12404     AC_MSG_RESULT([$qt5_incdir])
12405     if test "x$qt5_incdir" = "xno"; then
12406         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12407     fi
12408     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12409     AC_LANG_PUSH([C++])
12410     save_CPPFLAGS=$CPPFLAGS
12411     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12412     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12413         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12414     CPPFLAGS=$save_CPPFLAGS
12415     AC_LANG_POP([C++])
12417     AC_MSG_CHECKING([for Qt5 libraries])
12418     qt5_libdir="no"
12419     for lib_dir in $qt5_libdirs; do
12420         if test -r "$lib_dir/$qt5_test_library"; then
12421             qt5_libdir="$lib_dir"
12422             break
12423         fi
12424     done
12425     AC_MSG_RESULT([$qt5_libdir])
12426     if test "x$qt5_libdir" = "xno"; then
12427         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12428     fi
12430     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12431     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12432     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12434     if test "$USING_X11" = TRUE; then
12435         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12436         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12437             QT5_HAVE_XCB_ICCCM=1
12438             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12439         ],[
12440             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)])
12441             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12442         ])
12443         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12444         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12445         QT5_USING_X11=1
12446         AC_DEFINE(QT5_USING_X11)
12447     fi
12449     dnl Check for Meta Object Compiler
12451     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12452     if test "$MOC5" = "no"; then
12453         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12454 the root of your Qt installation by exporting QT5DIR before running "configure".])
12455     fi
12457     if test "$build_gstreamer_1_0" = "yes"; then
12458         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12459                 QT5_HAVE_GOBJECT=1
12460                 AC_DEFINE(QT5_HAVE_GOBJECT)
12461             ],
12462             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12463         )
12464     fi
12466 AC_SUBST(QT5_CFLAGS)
12467 AC_SUBST(QT5_LIBS)
12468 AC_SUBST(MOC5)
12469 AC_SUBST(QT5_GOBJECT_CFLAGS)
12470 AC_SUBST(QT5_GOBJECT_LIBS)
12471 AC_SUBST(QT5_HAVE_GOBJECT)
12473 dnl ===================================================================
12474 dnl KF5 Integration
12475 dnl ===================================================================
12477 KF5_CFLAGS=""
12478 KF5_LIBS=""
12479 KF5_CONFIG="kf5-config"
12480 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12481         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12482 then
12483     if test "$OS" = "HAIKU"; then
12484         haiku_arch="`echo $RTL_ARCH | tr X x`"
12485         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12486         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12487     fi
12489     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12490     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12491     if test -n "$supports_multilib"; then
12492         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12493     fi
12495     kf5_test_include="KF5/kcoreaddons_version.h"
12496     kf5_test_library="libKF5CoreAddons.so"
12497     kf5_libdirs="$qt5_libdir $kf5_libdirs"
12499     dnl kf5 KDE4 support compatibility installed
12500     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12501     if test "$KF5_CONFIG" != "no"; then
12502         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12503         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12504     fi
12506     dnl Check for KF5 headers
12507     AC_MSG_CHECKING([for KF5 headers])
12508     kf5_incdir="no"
12509     for kf5_check in $kf5_incdirs; do
12510         if test -r "$kf5_check/$kf5_test_include"; then
12511             kf5_incdir="$kf5_check/KF5"
12512             break
12513         fi
12514     done
12515     AC_MSG_RESULT([$kf5_incdir])
12516     if test "x$kf5_incdir" = "xno"; then
12517         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12518     fi
12520     dnl Check for KF5 libraries
12521     AC_MSG_CHECKING([for KF5 libraries])
12522     kf5_libdir="no"
12523     for kf5_check in $kf5_libdirs; do
12524         if test -r "$kf5_check/$kf5_test_library"; then
12525             kf5_libdir="$kf5_check"
12526             break
12527         fi
12528     done
12530     AC_MSG_RESULT([$kf5_libdir])
12531     if test "x$kf5_libdir" = "xno"; then
12532         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12533     fi
12535     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"
12536     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12537     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12539     if test "$USING_X11" = TRUE; then
12540         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
12541     fi
12543     AC_LANG_PUSH([C++])
12544     save_CXXFLAGS=$CXXFLAGS
12545     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
12546     AC_MSG_CHECKING([whether KDE is >= 5.0])
12547        AC_RUN_IFELSE([AC_LANG_SOURCE([[
12548 #include <kcoreaddons_version.h>
12550 int main(int argc, char **argv) {
12551        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
12552        else return 1;
12554        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
12555     CXXFLAGS=$save_CXXFLAGS
12556     AC_LANG_POP([C++])
12558 AC_SUBST(KF5_CFLAGS)
12559 AC_SUBST(KF5_LIBS)
12561 dnl ===================================================================
12562 dnl Test whether to include Evolution 2 support
12563 dnl ===================================================================
12564 AC_MSG_CHECKING([whether to enable evolution 2 support])
12565 if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then
12566     AC_MSG_RESULT([yes])
12567     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
12568     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12569     FilterLibs "${GOBJECT_LIBS}"
12570     GOBJECT_LIBS="${filteredlibs}"
12571     ENABLE_EVOAB2="TRUE"
12572 else
12573     ENABLE_EVOAB2=""
12574     AC_MSG_RESULT([no])
12576 AC_SUBST(ENABLE_EVOAB2)
12577 AC_SUBST(GOBJECT_CFLAGS)
12578 AC_SUBST(GOBJECT_LIBS)
12580 dnl ===================================================================
12581 dnl Test which themes to include
12582 dnl ===================================================================
12583 AC_MSG_CHECKING([which themes to include])
12584 # if none given use default subset of available themes
12585 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
12586     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"
12589 WITH_THEMES=""
12590 if test "x$with_theme" != "xno"; then
12591     for theme in $with_theme; do
12592         case $theme in
12593         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" ;;
12594         default) real_theme=colibre ;;
12595         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
12596         esac
12597         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
12598     done
12600 AC_MSG_RESULT([$WITH_THEMES])
12601 AC_SUBST([WITH_THEMES])
12602 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
12603 for theme in $with_theme; do
12604     case $theme in
12605     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
12606     *) ;;
12607     esac
12608 done
12610 dnl ===================================================================
12611 dnl Test whether to integrate helppacks into the product's installer
12612 dnl ===================================================================
12613 AC_MSG_CHECKING([for helppack integration])
12614 if test "$with_helppack_integration" = "no"; then
12615     AC_MSG_RESULT([no integration])
12616 else
12617     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
12618     AC_MSG_RESULT([integration])
12621 ###############################################################################
12622 # Extensions checking
12623 ###############################################################################
12624 AC_MSG_CHECKING([for extensions integration])
12625 if test "x$enable_extension_integration" != "xno"; then
12626     WITH_EXTENSION_INTEGRATION=TRUE
12627     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
12628     AC_MSG_RESULT([yes, use integration])
12629 else
12630     WITH_EXTENSION_INTEGRATION=
12631     AC_MSG_RESULT([no, do not integrate])
12633 AC_SUBST(WITH_EXTENSION_INTEGRATION)
12635 dnl Should any extra extensions be included?
12636 dnl There are standalone tests for each of these below.
12637 WITH_EXTRA_EXTENSIONS=
12638 AC_SUBST([WITH_EXTRA_EXTENSIONS])
12640 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
12641 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
12642 if test "x$with_java" != "xno"; then
12643     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
12644     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
12647 AC_MSG_CHECKING([whether to build opens___.ttf])
12648 if test "$enable_build_opensymbol" = "yes"; then
12649     AC_MSG_RESULT([yes])
12650     AC_PATH_PROG(FONTFORGE, fontforge)
12651     if test -z "$FONTFORGE"; then
12652         AC_MSG_ERROR([fontforge not installed])
12653     fi
12654 else
12655     AC_MSG_RESULT([no])
12656     OPENSYMBOL_TTF=f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
12657     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
12659 AC_SUBST(OPENSYMBOL_TTF)
12660 AC_SUBST(FONTFORGE)
12662 dnl ===================================================================
12663 dnl Test whether to include fonts
12664 dnl ===================================================================
12665 AC_MSG_CHECKING([whether to include third-party fonts])
12666 if test "$with_fonts" != "no"; then
12667     AC_MSG_RESULT([yes])
12668     WITH_FONTS=TRUE
12669     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
12670     AC_DEFINE(HAVE_MORE_FONTS)
12671 else
12672     AC_MSG_RESULT([no])
12673     WITH_FONTS=
12674     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
12676 AC_SUBST(WITH_FONTS)
12679 dnl ===================================================================
12680 dnl Test whether to enable online update service
12681 dnl ===================================================================
12682 AC_MSG_CHECKING([whether to enable online update])
12683 ENABLE_ONLINE_UPDATE=
12684 ENABLE_ONLINE_UPDATE_MAR=
12685 UPDATE_CONFIG=
12686 if test "$enable_online_update" = ""; then
12687     if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12688         AC_MSG_RESULT([yes])
12689         ENABLE_ONLINE_UPDATE="TRUE"
12690     else
12691         AC_MSG_RESULT([no])
12692     fi
12693 else
12694     if test "$enable_online_update" = "mar"; then
12695         AC_MSG_RESULT([yes - MAR-based online update])
12696         ENABLE_ONLINE_UPDATE_MAR="TRUE"
12697         if test "$with_update_config" = ""; then
12698             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
12699         fi
12700         UPDATE_CONFIG="$with_update_config"
12701         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
12702     elif test "$enable_online_update" = "yes"; then
12703         AC_MSG_RESULT([yes])
12704         ENABLE_ONLINE_UPDATE="TRUE"
12705     else
12706         AC_MSG_RESULT([no])
12707     fi
12709 AC_SUBST(ENABLE_ONLINE_UPDATE)
12710 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
12711 AC_SUBST(UPDATE_CONFIG)
12713 dnl ===================================================================
12714 dnl Test whether we need bzip2
12715 dnl ===================================================================
12716 SYSTEM_BZIP2=
12717 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
12718     AC_MSG_CHECKING([whether to use system bzip2])
12719     if test "$with_system_bzip2" = yes; then
12720         SYSTEM_BZIP2=TRUE
12721         AC_MSG_RESULT([yes])
12722         PKG_CHECK_MODULES(BZIP2, bzip2)
12723         FilterLibs "${BZIP2_LIBS}"
12724         BZIP2_LIBS="${filteredlibs}"
12725     else
12726         AC_MSG_RESULT([no])
12727         BUILD_TYPE="$BUILD_TYPE BZIP2"
12728     fi
12730 AC_SUBST(SYSTEM_BZIP2)
12731 AC_SUBST(BZIP2_CFLAGS)
12732 AC_SUBST(BZIP2_LIBS)
12734 dnl ===================================================================
12735 dnl Test whether to enable extension update
12736 dnl ===================================================================
12737 AC_MSG_CHECKING([whether to enable extension update])
12738 ENABLE_EXTENSION_UPDATE=
12739 if test "x$enable_extension_update" = "xno"; then
12740     AC_MSG_RESULT([no])
12741 else
12742     AC_MSG_RESULT([yes])
12743     ENABLE_EXTENSION_UPDATE="TRUE"
12744     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
12745     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
12747 AC_SUBST(ENABLE_EXTENSION_UPDATE)
12750 dnl ===================================================================
12751 dnl Test whether to create MSI with LIMITUI=1 (silent install)
12752 dnl ===================================================================
12753 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
12754 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
12755     AC_MSG_RESULT([no])
12756     ENABLE_SILENT_MSI=
12757 else
12758     AC_MSG_RESULT([yes])
12759     ENABLE_SILENT_MSI=TRUE
12760     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
12762 AC_SUBST(ENABLE_SILENT_MSI)
12764 AC_MSG_CHECKING([whether and how to use Xinerama])
12765 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
12766     if test "$x_libraries" = "default_x_libraries"; then
12767         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
12768         if test "x$XINERAMALIB" = x; then
12769            XINERAMALIB="/usr/lib"
12770         fi
12771     else
12772         XINERAMALIB="$x_libraries"
12773     fi
12774     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
12775         # we have both versions, let the user decide but use the dynamic one
12776         # per default
12777         USE_XINERAMA=TRUE
12778         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
12779             XINERAMA_LINK=dynamic
12780         else
12781             XINERAMA_LINK=static
12782         fi
12783     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
12784         # we have only the dynamic version
12785         USE_XINERAMA=TRUE
12786         XINERAMA_LINK=dynamic
12787     elif test -e "$XINERAMALIB/libXinerama.a"; then
12788         # static version
12789         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
12790             USE_XINERAMA=TRUE
12791             XINERAMA_LINK=static
12792         else
12793             USE_XINERAMA=
12794             XINERAMA_LINK=none
12795         fi
12796     else
12797         # no Xinerama
12798         USE_XINERAMA=
12799         XINERAMA_LINK=none
12800     fi
12801     if test "$USE_XINERAMA" = "TRUE"; then
12802         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
12803         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
12804             [AC_MSG_ERROR(Xinerama header not found.)], [])
12805         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
12806         if test "x$XEXTLIB" = x; then
12807            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
12808         fi
12809         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
12810         if test "$_os" = "FreeBSD"; then
12811             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
12812         fi
12813         if test "$_os" = "Linux"; then
12814             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
12815         fi
12816         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
12817             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
12818     else
12819         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
12820     fi
12821 else
12822     USE_XINERAMA=
12823     XINERAMA_LINK=none
12824     AC_MSG_RESULT([no])
12826 AC_SUBST(USE_XINERAMA)
12827 AC_SUBST(XINERAMA_LINK)
12829 dnl ===================================================================
12830 dnl Test whether to build cairo or rely on the system version
12831 dnl ===================================================================
12833 if test "$USING_X11" = TRUE; then
12834     # Used in vcl/Library_vclplug_gen.mk
12835     test_cairo=yes
12838 if test "$test_cairo" = "yes"; then
12839     AC_MSG_CHECKING([whether to use the system cairo])
12841     : ${with_system_cairo:=$with_system_libs}
12842     if test "$with_system_cairo" = "yes"; then
12843         SYSTEM_CAIRO=TRUE
12844         AC_MSG_RESULT([yes])
12846         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
12847         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12848         FilterLibs "${CAIRO_LIBS}"
12849         CAIRO_LIBS="${filteredlibs}"
12851         if test "$test_xrender" = "yes"; then
12852             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
12853             AC_LANG_PUSH([C])
12854             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
12855 #ifdef PictStandardA8
12856 #else
12857       return fail;
12858 #endif
12859 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
12861             AC_LANG_POP([C])
12862         fi
12863     else
12864         SYSTEM_CAIRO=
12865         AC_MSG_RESULT([no])
12867         BUILD_TYPE="$BUILD_TYPE CAIRO"
12868     fi
12871 AC_SUBST(SYSTEM_CAIRO)
12872 AC_SUBST(CAIRO_CFLAGS)
12873 AC_SUBST(CAIRO_LIBS)
12875 dnl ===================================================================
12876 dnl Test whether to use avahi
12877 dnl ===================================================================
12878 if test "$_os" = "WINNT"; then
12879     # Windows uses bundled mDNSResponder
12880     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
12881 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
12882     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
12883                       [ENABLE_AVAHI="TRUE"])
12884     AC_DEFINE(HAVE_FEATURE_AVAHI)
12885     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12886     FilterLibs "${AVAHI_LIBS}"
12887     AVAHI_LIBS="${filteredlibs}"
12890 AC_SUBST(ENABLE_AVAHI)
12891 AC_SUBST(AVAHI_CFLAGS)
12892 AC_SUBST(AVAHI_LIBS)
12894 dnl ===================================================================
12895 dnl Test whether to use liblangtag
12896 dnl ===================================================================
12897 SYSTEM_LIBLANGTAG=
12898 AC_MSG_CHECKING([whether to use system liblangtag])
12899 if test "$with_system_liblangtag" = yes; then
12900     SYSTEM_LIBLANGTAG=TRUE
12901     AC_MSG_RESULT([yes])
12902     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
12903     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
12904     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
12905     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12906     FilterLibs "${LIBLANGTAG_LIBS}"
12907     LIBLANGTAG_LIBS="${filteredlibs}"
12908 else
12909     SYSTEM_LIBLANGTAG=
12910     AC_MSG_RESULT([no])
12911     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
12912     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
12913     if test "$COM" = "MSC"; then
12914         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
12915     else
12916         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
12917     fi
12919 AC_SUBST(SYSTEM_LIBLANGTAG)
12920 AC_SUBST(LIBLANGTAG_CFLAGS)
12921 AC_SUBST(LIBLANGTAG_LIBS)
12923 dnl ===================================================================
12924 dnl Test whether to build libpng or rely on the system version
12925 dnl ===================================================================
12927 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
12929 dnl ===================================================================
12930 dnl Check for runtime JVM search path
12931 dnl ===================================================================
12932 if test "$ENABLE_JAVA" != ""; then
12933     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
12934     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
12935         AC_MSG_RESULT([yes])
12936         if ! test -d "$with_jvm_path"; then
12937             AC_MSG_ERROR(["$with_jvm_path" not a directory])
12938         fi
12939         if ! test -d "$with_jvm_path"jvm; then
12940             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
12941         fi
12942         JVM_ONE_PATH_CHECK="$with_jvm_path"
12943         AC_SUBST(JVM_ONE_PATH_CHECK)
12944     else
12945         AC_MSG_RESULT([no])
12946     fi
12949 dnl ===================================================================
12950 dnl Test for the presence of Ant and that it works
12951 dnl ===================================================================
12953 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
12954     ANT_HOME=; export ANT_HOME
12955     WITH_ANT_HOME=; export WITH_ANT_HOME
12956     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
12957         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
12958             if test "$_os" = "WINNT"; then
12959                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
12960             else
12961                 with_ant_home="$LODE_HOME/opt/ant"
12962             fi
12963         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
12964             with_ant_home="$LODE_HOME/opt/ant"
12965         fi
12966     fi
12967     if test -z "$with_ant_home"; then
12968         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
12969     else
12970         if test "$_os" = "WINNT"; then
12971             # AC_PATH_PROGS needs unix path
12972             with_ant_home=`cygpath -u "$with_ant_home"`
12973         fi
12974         AbsolutePath "$with_ant_home"
12975         with_ant_home=$absolute_path
12976         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
12977         WITH_ANT_HOME=$with_ant_home
12978         ANT_HOME=$with_ant_home
12979     fi
12981     if test -z "$ANT"; then
12982         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
12983     else
12984         # resolve relative or absolute symlink
12985         while test -h "$ANT"; do
12986             a_cwd=`pwd`
12987             a_basename=`basename "$ANT"`
12988             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
12989             cd "`dirname "$ANT"`"
12990             cd "`dirname "$a_script"`"
12991             ANT="`pwd`"/"`basename "$a_script"`"
12992             cd "$a_cwd"
12993         done
12995         AC_MSG_CHECKING([if $ANT works])
12996         mkdir -p conftest.dir
12997         a_cwd=$(pwd)
12998         cd conftest.dir
12999         cat > conftest.java << EOF
13000         public class conftest {
13001             int testmethod(int a, int b) {
13002                     return a + b;
13003             }
13004         }
13007         cat > conftest.xml << EOF
13008         <project name="conftest" default="conftest">
13009         <target name="conftest">
13010             <javac srcdir="." includes="conftest.java">
13011             </javac>
13012         </target>
13013         </project>
13016         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13017         if test $? = 0 -a -f ./conftest.class; then
13018             AC_MSG_RESULT([Ant works])
13019             if test -z "$WITH_ANT_HOME"; then
13020                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13021                 if test -z "$ANT_HOME"; then
13022                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13023                 fi
13024             else
13025                 ANT_HOME="$WITH_ANT_HOME"
13026             fi
13027         else
13028             echo "configure: Ant test failed" >&5
13029             cat conftest.java >&5
13030             cat conftest.xml >&5
13031             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13032         fi
13033         cd "$a_cwd"
13034         rm -fr conftest.dir
13035     fi
13036     if test -z "$ANT_HOME"; then
13037         ANT_HOME="NO_ANT_HOME"
13038     else
13039         PathFormat "$ANT_HOME"
13040         ANT_HOME="$formatted_path"
13041         PathFormat "$ANT"
13042         ANT="$formatted_path"
13043     fi
13045     dnl Checking for ant.jar
13046     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13047         AC_MSG_CHECKING([Ant lib directory])
13048         if test -f $ANT_HOME/lib/ant.jar; then
13049             ANT_LIB="$ANT_HOME/lib"
13050         else
13051             if test -f $ANT_HOME/ant.jar; then
13052                 ANT_LIB="$ANT_HOME"
13053             else
13054                 if test -f /usr/share/java/ant.jar; then
13055                     ANT_LIB=/usr/share/java
13056                 else
13057                     if test -f /usr/share/ant-core/lib/ant.jar; then
13058                         ANT_LIB=/usr/share/ant-core/lib
13059                     else
13060                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13061                             ANT_LIB="$ANT_HOME/lib/ant"
13062                         else
13063                             if test -f /usr/share/lib/ant/ant.jar; then
13064                                 ANT_LIB=/usr/share/lib/ant
13065                             else
13066                                 AC_MSG_ERROR([Ant libraries not found!])
13067                             fi
13068                         fi
13069                     fi
13070                 fi
13071             fi
13072         fi
13073         PathFormat "$ANT_LIB"
13074         ANT_LIB="$formatted_path"
13075         AC_MSG_RESULT([Ant lib directory found.])
13076     fi
13078     ant_minver=1.6.0
13079     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13081     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13082     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13083     ant_version_major=`echo $ant_version | cut -d. -f1`
13084     ant_version_minor=`echo $ant_version | cut -d. -f2`
13085     echo "configure: ant_version $ant_version " >&5
13086     echo "configure: ant_version_major $ant_version_major " >&5
13087     echo "configure: ant_version_minor $ant_version_minor " >&5
13088     if test "$ant_version_major" -ge "2"; then
13089         AC_MSG_RESULT([yes, $ant_version])
13090     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13091         AC_MSG_RESULT([yes, $ant_version])
13092     else
13093         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13094     fi
13096     rm -f conftest* core core.* *.core
13098 AC_SUBST(ANT)
13099 AC_SUBST(ANT_HOME)
13100 AC_SUBST(ANT_LIB)
13102 OOO_JUNIT_JAR=
13103 HAMCREST_JAR=
13104 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13105     AC_MSG_CHECKING([for JUnit 4])
13106     if test "$with_junit" = "yes"; then
13107         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13108             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13109         elif test -e /usr/share/java/junit4.jar; then
13110             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13111         else
13112            if test -e /usr/share/lib/java/junit.jar; then
13113               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13114            else
13115               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13116            fi
13117         fi
13118     else
13119         OOO_JUNIT_JAR=$with_junit
13120     fi
13121     if test "$_os" = "WINNT"; then
13122         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13123     fi
13124     printf 'import org.junit.Before;' > conftest.java
13125     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13126         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13127     else
13128         AC_MSG_ERROR(
13129 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13130  specify its pathname via --with-junit=..., or disable it via --without-junit])
13131     fi
13132     rm -f conftest.class conftest.java
13133     if test $OOO_JUNIT_JAR != ""; then
13134         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13135     fi
13137     AC_MSG_CHECKING([for included Hamcrest])
13138     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13139     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13140         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13141     else
13142         AC_MSG_RESULT([Not included])
13143         AC_MSG_CHECKING([for standalone hamcrest jar.])
13144         if test "$with_hamcrest" = "yes"; then
13145             if test -e /usr/share/lib/java/hamcrest.jar; then
13146                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13147             elif test -e /usr/share/java/hamcrest/core.jar; then
13148                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13149             else
13150                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13151             fi
13152         else
13153             HAMCREST_JAR=$with_hamcrest
13154         fi
13155         if test "$_os" = "WINNT"; then
13156             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13157         fi
13158         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13159             AC_MSG_RESULT([$HAMCREST_JAR])
13160         else
13161             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),
13162                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13163         fi
13164     fi
13165     rm -f conftest.class conftest.java
13167 AC_SUBST(OOO_JUNIT_JAR)
13168 AC_SUBST(HAMCREST_JAR)
13171 AC_SUBST(SCPDEFS)
13174 # check for wget and curl
13176 WGET=
13177 CURL=
13179 if test "$enable_fetch_external" != "no"; then
13181 CURL=`which curl 2>/dev/null`
13183 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13184     # wget new enough?
13185     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13186     if test $? -eq 0; then
13187         WGET=$i
13188         break
13189     fi
13190 done
13192 if test -z "$WGET" -a -z "$CURL"; then
13193     AC_MSG_ERROR([neither wget nor curl found!])
13198 AC_SUBST(WGET)
13199 AC_SUBST(CURL)
13202 # check for sha256sum
13204 SHA256SUM=
13206 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13207     eval "$i -a 256 --version" > /dev/null 2>&1
13208     ret=$?
13209     if test $ret -eq 0; then
13210         SHA256SUM="$i -a 256"
13211         break
13212     fi
13213 done
13215 if test -z "$SHA256SUM"; then
13216     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13217         eval "$i --version" > /dev/null 2>&1
13218         ret=$?
13219         if test $ret -eq 0; then
13220             SHA256SUM=$i
13221             break
13222         fi
13223     done
13226 if test -z "$SHA256SUM"; then
13227     AC_MSG_ERROR([no sha256sum found!])
13230 AC_SUBST(SHA256SUM)
13232 dnl ===================================================================
13233 dnl Dealing with l10n options
13234 dnl ===================================================================
13235 AC_MSG_CHECKING([which languages to be built])
13236 # get list of all languages
13237 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13238 # the sed command does the following:
13239 #   + if a line ends with a backslash, append the next line to it
13240 #   + adds " on the beginning of the value (after =)
13241 #   + adds " at the end of the value
13242 #   + removes en-US; we want to put it on the beginning
13243 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13244 [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)]
13245 ALL_LANGS="en-US $completelangiso"
13246 # check the configured localizations
13247 WITH_LANG="$with_lang"
13249 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13250 # (Norwegian is "nb" and "nn".)
13251 if test "$WITH_LANG" = "no"; then
13252     WITH_LANG=
13255 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13256     AC_MSG_RESULT([en-US])
13257 else
13258     AC_MSG_RESULT([$WITH_LANG])
13259     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13260     if test -z "$MSGFMT"; then
13261         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13262             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13263         elif test -x "/opt/lo/bin/msgfmt"; then
13264             MSGFMT="/opt/lo/bin/msgfmt"
13265         else
13266             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13267             if test -z "$MSGFMT"; then
13268                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13269             fi
13270         fi
13271     fi
13272     if test -z "$MSGUNIQ"; then
13273         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13274             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13275         elif test -x "/opt/lo/bin/msguniq"; then
13276             MSGUNIQ="/opt/lo/bin/msguniq"
13277         else
13278             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13279             if test -z "$MSGUNIQ"; then
13280                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13281             fi
13282         fi
13283     fi
13285 AC_SUBST(MSGFMT)
13286 AC_SUBST(MSGUNIQ)
13287 # check that the list is valid
13288 for lang in $WITH_LANG; do
13289     test "$lang" = "ALL" && continue
13290     # need to check for the exact string, so add space before and after the list of all languages
13291     for vl in $ALL_LANGS; do
13292         if test "$vl" = "$lang"; then
13293            break
13294         fi
13295     done
13296     if test "$vl" != "$lang"; then
13297         # if you're reading this - you prolly quoted your languages remove the quotes ...
13298         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13299     fi
13300 done
13301 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13302     echo $WITH_LANG | grep -q en-US
13303     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13305 # list with substituted ALL
13306 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13307 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13308 test "$WITH_LANG" = "en-US" && WITH_LANG=
13309 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13310     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13311     ALL_LANGS=`echo $ALL_LANGS qtz`
13313 AC_SUBST(ALL_LANGS)
13314 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13315 AC_SUBST(WITH_LANG)
13316 AC_SUBST(WITH_LANG_LIST)
13317 AC_SUBST(GIT_NEEDED_SUBMODULES)
13319 WITH_POOR_HELP_LOCALIZATIONS=
13320 if test -d "$SRC_ROOT/translations/source"; then
13321     for l in `ls -1 $SRC_ROOT/translations/source`; do
13322         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13323             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13324         fi
13325     done
13327 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13329 if test -n "$with_locales"; then
13330     WITH_LOCALES="$with_locales"
13332     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13333     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13334     # config_host/config_locales.h.in
13335     for locale in $WITH_LOCALES; do
13336         lang=${locale%_*}
13338         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13340         case $lang in
13341         hi|mr*ne)
13342             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13343             ;;
13344         bg|ru)
13345             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13346             ;;
13347         esac
13348     done
13349 else
13350     AC_DEFINE(WITH_LOCALE_ALL)
13352 AC_SUBST(WITH_LOCALES)
13354 dnl git submodule update --reference
13355 dnl ===================================================================
13356 if test -n "${GIT_REFERENCE_SRC}"; then
13357     for repo in ${GIT_NEEDED_SUBMODULES}; do
13358         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13359             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13360         fi
13361     done
13363 AC_SUBST(GIT_REFERENCE_SRC)
13365 dnl git submodules linked dirs
13366 dnl ===================================================================
13367 if test -n "${GIT_LINK_SRC}"; then
13368     for repo in ${GIT_NEEDED_SUBMODULES}; do
13369         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13370             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13371         fi
13372     done
13374 AC_SUBST(GIT_LINK_SRC)
13376 dnl branding
13377 dnl ===================================================================
13378 AC_MSG_CHECKING([for alternative branding images directory])
13379 # initialize mapped arrays
13380 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13381 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13383 if test -z "$with_branding" -o "$with_branding" = "no"; then
13384     AC_MSG_RESULT([none])
13385     DEFAULT_BRAND_IMAGES="$brand_files"
13386 else
13387     if ! test -d $with_branding ; then
13388         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13389     else
13390         AC_MSG_RESULT([$with_branding])
13391         CUSTOM_BRAND_DIR="$with_branding"
13392         for lfile in $brand_files
13393         do
13394             if ! test -f $with_branding/$lfile ; then
13395                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13396                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13397             else
13398                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13399             fi
13400         done
13401         check_for_progress="yes"
13402     fi
13404 AC_SUBST([BRAND_INTRO_IMAGES])
13405 AC_SUBST([CUSTOM_BRAND_DIR])
13406 AC_SUBST([CUSTOM_BRAND_IMAGES])
13407 AC_SUBST([DEFAULT_BRAND_IMAGES])
13410 AC_MSG_CHECKING([for 'intro' progress settings])
13411 PROGRESSBARCOLOR=
13412 PROGRESSSIZE=
13413 PROGRESSPOSITION=
13414 PROGRESSFRAMECOLOR=
13415 PROGRESSTEXTCOLOR=
13416 PROGRESSTEXTBASELINE=
13418 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13419     source "$with_branding/progress.conf"
13420     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13421 else
13422     AC_MSG_RESULT([none])
13425 AC_SUBST(PROGRESSBARCOLOR)
13426 AC_SUBST(PROGRESSSIZE)
13427 AC_SUBST(PROGRESSPOSITION)
13428 AC_SUBST(PROGRESSFRAMECOLOR)
13429 AC_SUBST(PROGRESSTEXTCOLOR)
13430 AC_SUBST(PROGRESSTEXTBASELINE)
13433 dnl ===================================================================
13434 dnl Custom build version
13435 dnl ===================================================================
13436 AC_MSG_CHECKING([for extra build ID])
13437 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13438     EXTRA_BUILDID="$with_extra_buildid"
13440 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13441 if test -n "$EXTRA_BUILDID" ; then
13442     AC_MSG_RESULT([$EXTRA_BUILDID])
13443 else
13444     AC_MSG_RESULT([not set])
13446 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13448 OOO_VENDOR=
13449 AC_MSG_CHECKING([for vendor])
13450 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13451     OOO_VENDOR="$USERNAME"
13453     if test -z "$OOO_VENDOR"; then
13454         OOO_VENDOR="$USER"
13455     fi
13457     if test -z "$OOO_VENDOR"; then
13458         OOO_VENDOR="`id -u -n`"
13459     fi
13461     AC_MSG_RESULT([not set, using $OOO_VENDOR])
13462 else
13463     OOO_VENDOR="$with_vendor"
13464     AC_MSG_RESULT([$OOO_VENDOR])
13466 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13467 AC_SUBST(OOO_VENDOR)
13469 if test "$_os" = "Android" ; then
13470     ANDROID_PACKAGE_NAME=
13471     AC_MSG_CHECKING([for Android package name])
13472     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13473         if test -n "$ENABLE_DEBUG"; then
13474             # Default to the package name that makes ndk-gdb happy.
13475             ANDROID_PACKAGE_NAME="org.libreoffice"
13476         else
13477             ANDROID_PACKAGE_NAME="org.example.libreoffice"
13478         fi
13480         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13481     else
13482         ANDROID_PACKAGE_NAME="$with_android_package_name"
13483         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13484     fi
13485     AC_SUBST(ANDROID_PACKAGE_NAME)
13488 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13489 if test "$with_compat_oowrappers" = "yes"; then
13490     WITH_COMPAT_OOWRAPPERS=TRUE
13491     AC_MSG_RESULT(yes)
13492 else
13493     WITH_COMPAT_OOWRAPPERS=
13494     AC_MSG_RESULT(no)
13496 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13498 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13499 AC_MSG_CHECKING([for install dirname])
13500 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13501     INSTALLDIRNAME="$with_install_dirname"
13503 AC_MSG_RESULT([$INSTALLDIRNAME])
13504 AC_SUBST(INSTALLDIRNAME)
13506 AC_MSG_CHECKING([for prefix])
13507 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13508 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13509 PREFIXDIR="$prefix"
13510 AC_MSG_RESULT([$PREFIXDIR])
13511 AC_SUBST(PREFIXDIR)
13513 LIBDIR=[$(eval echo $(eval echo $libdir))]
13514 AC_SUBST(LIBDIR)
13516 DATADIR=[$(eval echo $(eval echo $datadir))]
13517 AC_SUBST(DATADIR)
13519 MANDIR=[$(eval echo $(eval echo $mandir))]
13520 AC_SUBST(MANDIR)
13522 DOCDIR=[$(eval echo $(eval echo $docdir))]
13523 AC_SUBST(DOCDIR)
13525 BINDIR=[$(eval echo $(eval echo $bindir))]
13526 AC_SUBST(BINDIR)
13528 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
13529 AC_SUBST(INSTALLDIR)
13531 TESTINSTALLDIR="${BUILDDIR}/test-install"
13532 AC_SUBST(TESTINSTALLDIR)
13535 # ===================================================================
13536 # OAuth2 id and secrets
13537 # ===================================================================
13539 AC_MSG_CHECKING([for Google Drive client id and secret])
13540 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
13541     AC_MSG_RESULT([not set])
13542     GDRIVE_CLIENT_ID="\"\""
13543     GDRIVE_CLIENT_SECRET="\"\""
13544 else
13545     AC_MSG_RESULT([set])
13546     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
13547     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
13549 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
13550 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
13552 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
13553 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
13554     AC_MSG_RESULT([not set])
13555     ALFRESCO_CLOUD_CLIENT_ID="\"\""
13556     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
13557 else
13558     AC_MSG_RESULT([set])
13559     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
13560     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
13562 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
13563 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
13565 AC_MSG_CHECKING([for OneDrive client id and secret])
13566 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
13567     AC_MSG_RESULT([not set])
13568     ONEDRIVE_CLIENT_ID="\"\""
13569     ONEDRIVE_CLIENT_SECRET="\"\""
13570 else
13571     AC_MSG_RESULT([set])
13572     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
13573     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
13575 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
13576 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
13579 dnl ===================================================================
13580 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
13581 dnl --enable-dependency-tracking configure option
13582 dnl ===================================================================
13583 AC_MSG_CHECKING([whether to enable dependency tracking])
13584 if test "$enable_dependency_tracking" = "no"; then
13585     nodep=TRUE
13586     AC_MSG_RESULT([no])
13587 else
13588     AC_MSG_RESULT([yes])
13590 AC_SUBST(nodep)
13592 dnl ===================================================================
13593 dnl Number of CPUs to use during the build
13594 dnl ===================================================================
13595 AC_MSG_CHECKING([for number of processors to use])
13596 # plain --with-parallelism is just the default
13597 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
13598     if test "$with_parallelism" = "no"; then
13599         PARALLELISM=0
13600     else
13601         PARALLELISM=$with_parallelism
13602     fi
13603 else
13604     if test "$enable_icecream" = "yes"; then
13605         PARALLELISM="40"
13606     else
13607         case `uname -s` in
13609         Darwin|FreeBSD|NetBSD|OpenBSD)
13610             PARALLELISM=`sysctl -n hw.ncpu`
13611             ;;
13613         Linux)
13614             PARALLELISM=`getconf _NPROCESSORS_ONLN`
13615         ;;
13616         # what else than above does profit here *and* has /proc?
13617         *)
13618             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
13619             ;;
13620         esac
13622         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
13623         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
13624     fi
13627 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
13628     if test -z "$with_parallelism"; then
13629             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
13630             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
13631             PARALLELISM="1"
13632     else
13633         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."
13634     fi
13637 if test $PARALLELISM -eq 0; then
13638     AC_MSG_RESULT([explicit make -j option needed])
13639 else
13640     AC_MSG_RESULT([$PARALLELISM])
13642 AC_SUBST(PARALLELISM)
13644 IWYU_PATH="$with_iwyu"
13645 AC_SUBST(IWYU_PATH)
13646 if test ! -z "$IWYU_PATH"; then
13647     if test ! -f "$IWYU_PATH"; then
13648         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
13649     fi
13653 # Set up ILIB for MSVC build
13655 ILIB1=
13656 if test "$build_os" = "cygwin"; then
13657     ILIB="."
13658     if test -n "$JAVA_HOME"; then
13659         ILIB="$ILIB;$JAVA_HOME/lib"
13660     fi
13661     ILIB1=-link
13662     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
13663     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
13664     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13665     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13666     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
13667         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13668         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13669     fi
13670     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
13671     ucrtlibpath_formatted=$formatted_path
13672     ILIB="$ILIB;$ucrtlibpath_formatted"
13673     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
13674     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
13675         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
13676     else
13677         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
13678     fi
13680     if test "$cross_compiling" != "yes"; then
13681         ILIB_FOR_BUILD="$ILIB"
13682     fi
13684 AC_SUBST(ILIB)
13685 AC_SUBST(ILIB_FOR_BUILD)
13687 # ===================================================================
13688 # Creating bigger shared library to link against
13689 # ===================================================================
13690 AC_MSG_CHECKING([whether to create huge library])
13691 MERGELIBS=
13693 if test $_os = iOS -o $_os = Android; then
13694     # Never any point in mergelibs for these as we build just static
13695     # libraries anyway...
13696     enable_mergelibs=no
13699 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
13700     if test $_os != Linux -a $_os != WINNT; then
13701         add_warning "--enable-mergelibs is not tested for this platform"
13702     fi
13703     MERGELIBS="TRUE"
13704     AC_MSG_RESULT([yes])
13705     AC_DEFINE(ENABLE_MERGELIBS)
13706 else
13707     AC_MSG_RESULT([no])
13709 AC_SUBST([MERGELIBS])
13711 dnl ===================================================================
13712 dnl icerun is a wrapper that stops us spawning tens of processes
13713 dnl locally - for tools that can't be executed on the compile cluster
13714 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
13715 dnl ===================================================================
13716 AC_MSG_CHECKING([whether to use icerun wrapper])
13717 ICECREAM_RUN=
13718 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
13719     ICECREAM_RUN=icerun
13720     AC_MSG_RESULT([yes])
13721 else
13722     AC_MSG_RESULT([no])
13724 AC_SUBST(ICECREAM_RUN)
13726 dnl ===================================================================
13727 dnl Setup the ICECC_VERSION for the build the same way it was set for
13728 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
13729 dnl ===================================================================
13730 x_ICECC_VERSION=[\#]
13731 if test -n "$ICECC_VERSION" ; then
13732     x_ICECC_VERSION=
13734 AC_SUBST(x_ICECC_VERSION)
13735 AC_SUBST(ICECC_VERSION)
13737 dnl ===================================================================
13739 AC_MSG_CHECKING([MPL subset])
13740 MPL_SUBSET=
13742 if test "$enable_mpl_subset" = "yes"; then
13743     warn_report=false
13744     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
13745         warn_report=true
13746     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
13747         warn_report=true
13748     fi
13749     if test "$warn_report" = "true"; then
13750         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
13751     fi
13752     if test "x$enable_postgresql_sdbc" != "xno"; then
13753         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
13754     fi
13755     if test "$enable_lotuswordpro" = "yes"; then
13756         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
13757     fi
13758     if test "$WITH_WEBDAV" = "neon"; then
13759         AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
13760     fi
13761     if test -n "$ENABLE_POPPLER"; then
13762         if test "x$SYSTEM_POPPLER" = "x"; then
13763             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
13764         fi
13765     fi
13766     # cf. m4/libo_check_extension.m4
13767     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
13768         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
13769     fi
13770     for theme in $WITH_THEMES; do
13771         case $theme in
13772         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
13773             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
13774         *) : ;;
13775         esac
13776     done
13778     ENABLE_OPENGL_TRANSITIONS=
13780     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
13781         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
13782     fi
13784     MPL_SUBSET="TRUE"
13785     AC_DEFINE(MPL_HAVE_SUBSET)
13786     AC_MSG_RESULT([only])
13787 else
13788     AC_MSG_RESULT([no restrictions])
13790 AC_SUBST(MPL_SUBSET)
13792 dnl ===================================================================
13794 AC_MSG_CHECKING([formula logger])
13795 ENABLE_FORMULA_LOGGER=
13797 if test "x$enable_formula_logger" = "xyes"; then
13798     AC_MSG_RESULT([yes])
13799     AC_DEFINE(ENABLE_FORMULA_LOGGER)
13800     ENABLE_FORMULA_LOGGER=TRUE
13801 elif test -n "$ENABLE_DBGUTIL" ; then
13802     AC_MSG_RESULT([yes])
13803     AC_DEFINE(ENABLE_FORMULA_LOGGER)
13804     ENABLE_FORMULA_LOGGER=TRUE
13805 else
13806     AC_MSG_RESULT([no])
13809 AC_SUBST(ENABLE_FORMULA_LOGGER)
13811 dnl ===================================================================
13812 dnl Checking for active Antivirus software.
13813 dnl ===================================================================
13815 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
13816     AC_MSG_CHECKING([for active Antivirus software])
13817     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
13818     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
13819         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
13820             AC_MSG_RESULT([found])
13821             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
13822             echo $EICAR_STRING > $SRC_ROOT/eicar
13823             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
13824             rm $SRC_ROOT/eicar
13825             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13826                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13827             fi
13828             echo $EICAR_STRING > $BUILDDIR/eicar
13829             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
13830             rm $BUILDDIR/eicar
13831             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13832                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13833             fi
13834             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"
13835         else
13836             AC_MSG_RESULT([not found])
13837         fi
13838     else
13839         AC_MSG_RESULT([n/a])
13840     fi
13843 dnl ===================================================================
13844 dnl Setting up the environment.
13845 dnl ===================================================================
13846 AC_MSG_NOTICE([setting up the build environment variables...])
13848 AC_SUBST(COMPATH)
13850 if test "$build_os" = "cygwin"; then
13851     if test -d "$COMPATH/atlmfc/lib/spectre"; then
13852         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
13853         ATL_INCLUDE="$COMPATH/atlmfc/include"
13854     elif test -d "$COMPATH/atlmfc/lib"; then
13855         ATL_LIB="$COMPATH/atlmfc/lib"
13856         ATL_INCLUDE="$COMPATH/atlmfc/include"
13857     else
13858         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
13859         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
13860     fi
13861     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
13862     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
13863     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
13865     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
13866     PathFormat "/usr/bin/find.exe"
13867     FIND="$formatted_path"
13868     PathFormat "/usr/bin/sort.exe"
13869     SORT="$formatted_path"
13870     PathFormat "/usr/bin/grep.exe"
13871     WIN_GREP="$formatted_path"
13872     PathFormat "/usr/bin/ls.exe"
13873     WIN_LS="$formatted_path"
13874     PathFormat "/usr/bin/touch.exe"
13875     WIN_TOUCH="$formatted_path"
13876 else
13877     FIND=find
13878     SORT=sort
13881 AC_SUBST(ATL_INCLUDE)
13882 AC_SUBST(ATL_LIB)
13883 AC_SUBST(FIND)
13884 AC_SUBST(SORT)
13885 AC_SUBST(WIN_GREP)
13886 AC_SUBST(WIN_LS)
13887 AC_SUBST(WIN_TOUCH)
13889 AC_SUBST(BUILD_TYPE)
13891 AC_SUBST(SOLARINC)
13893 PathFormat "$PERL"
13894 PERL="$formatted_path"
13895 AC_SUBST(PERL)
13897 if test -n "$TMPDIR"; then
13898     TEMP_DIRECTORY="$TMPDIR"
13899 else
13900     TEMP_DIRECTORY="/tmp"
13902 if test "$build_os" = "cygwin"; then
13903     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
13905 AC_SUBST(TEMP_DIRECTORY)
13907 # setup the PATH for the environment
13908 if test -n "$LO_PATH_FOR_BUILD"; then
13909     LO_PATH="$LO_PATH_FOR_BUILD"
13910     case "$host_os" in
13911     cygwin*|wsl*)
13912         pathmunge "$MSVC_HOST_PATH" "before"
13913         ;;
13914     esac
13915 else
13916     LO_PATH="$PATH"
13918     case "$host_os" in
13920     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
13921         if test "$ENABLE_JAVA" != ""; then
13922             pathmunge "$JAVA_HOME/bin" "after"
13923         fi
13924         ;;
13926     cygwin*|wsl*)
13927         # Win32 make needs native paths
13928         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
13929             LO_PATH=`cygpath -p -m "$PATH"`
13930         fi
13931         if test "$WIN_BUILD_ARCH" = "x64"; then
13932             # needed for msi packaging
13933             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
13934         fi
13935         # .NET 4.6 and higher don't have bin directory
13936         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
13937             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
13938         fi
13939         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
13940         pathmunge "$CSC_PATH" "before"
13941         pathmunge "$MIDL_PATH" "before"
13942         pathmunge "$AL_PATH" "before"
13943         pathmunge "$MSVC_MULTI_PATH" "before"
13944         pathmunge "$MSVC_BUILD_PATH" "before"
13945         if test -n "$MSBUILD_PATH" ; then
13946             pathmunge "$MSBUILD_PATH" "before"
13947         fi
13948         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
13949         if test "$ENABLE_JAVA" != ""; then
13950             if test -d "$JAVA_HOME/jre/bin/client"; then
13951                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
13952             fi
13953             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
13954                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
13955             fi
13956             pathmunge "$JAVA_HOME/bin" "before"
13957         fi
13958         pathmunge "$MSVC_HOST_PATH" "before"
13959         ;;
13961     solaris*)
13962         pathmunge "/usr/css/bin" "before"
13963         if test "$ENABLE_JAVA" != ""; then
13964             pathmunge "$JAVA_HOME/bin" "after"
13965         fi
13966         ;;
13967     esac
13970 AC_SUBST(LO_PATH)
13972 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
13973 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
13974     x_LO_ELFCHECK_ALLOWLIST=
13975 else
13976     x_LO_ELFCHECK_ALLOWLIST=[\#]
13978 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
13979 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
13981 libo_FUZZ_SUMMARY
13983 # Generate a configuration sha256 we can use for deps
13984 if test -f config_host.mk; then
13985     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
13987 if test -f config_host_lang.mk; then
13988     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
13991 CFLAGS=$my_original_CFLAGS
13992 CXXFLAGS=$my_original_CXXFLAGS
13993 CPPFLAGS=$my_original_CPPFLAGS
13995 AC_CONFIG_LINKS([include:include])
13997 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
13998 # BUILD platform configuration] - otherwise breaks cross building
13999 AC_CONFIG_FILES([config_host.mk
14000                  config_host_lang.mk
14001                  Makefile
14002                  bin/bffvalidator.sh
14003                  bin/odfvalidator.sh
14004                  bin/officeotron.sh
14005                  hardened_runtime.xcent
14006                  instsetoo_native/util/openoffice.lst
14007                  sysui/desktop/macosx/Info.plist
14008                  vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in])
14009 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14010 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14011 AC_CONFIG_HEADERS([config_host/config_clang.h])
14012 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14013 AC_CONFIG_HEADERS([config_host/config_eot.h])
14014 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14015 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14016 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14017 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14018 AC_CONFIG_HEADERS([config_host/config_features.h])
14019 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14020 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14021 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14022 AC_CONFIG_HEADERS([config_host/config_folders.h])
14023 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14024 AC_CONFIG_HEADERS([config_host/config_gio.h])
14025 AC_CONFIG_HEADERS([config_host/config_global.h])
14026 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14027 AC_CONFIG_HEADERS([config_host/config_java.h])
14028 AC_CONFIG_HEADERS([config_host/config_langs.h])
14029 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14030 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14031 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14032 AC_CONFIG_HEADERS([config_host/config_locales.h])
14033 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14034 AC_CONFIG_HEADERS([config_host/config_oox.h])
14035 AC_CONFIG_HEADERS([config_host/config_options.h])
14036 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14037 AC_CONFIG_HEADERS([config_host/config_qrcodegen.h])
14038 AC_CONFIG_HEADERS([config_host/config_skia.h])
14039 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14040 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14041 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14042 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14043 AC_CONFIG_HEADERS([config_host/config_version.h])
14044 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14045 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14046 AC_CONFIG_HEADERS([config_host/config_python.h])
14047 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14048 AC_OUTPUT
14050 if test "$CROSS_COMPILING" = TRUE; then
14051     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14054 # touch the config timestamp file
14055 if test ! -f config_host.mk.stamp; then
14056     echo > config_host.mk.stamp
14057 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14058     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14059 else
14060     echo > config_host.mk.stamp
14063 # touch the config lang timestamp file
14064 if test ! -f config_host_lang.mk.stamp; then
14065     echo > config_host_lang.mk.stamp
14066 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14067     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14068 else
14069     echo > config_host_lang.mk.stamp
14073 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14074         -a "$build_os" = "cygwin"; then
14076 cat << _EOS
14077 ****************************************************************************
14078 WARNING:
14079 Your make version is known to be horribly slow, and hard to debug
14080 problems with. To get a reasonably functional make please do:
14082 to install a pre-compiled binary make for Win32
14084  mkdir -p /opt/lo/bin
14085  cd /opt/lo/bin
14086  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14087  cp make-4.2.1-msvc.exe make
14088  chmod +x make
14090 to install from source:
14091 place yourself in a working directory of you choice.
14093  git clone git://git.savannah.gnu.org/make.git
14095  [go to Start menu, open "Visual Studio 2019", click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14096  set PATH=%PATH%;C:\Cygwin\bin
14097  [or Cygwin64, if that is what you have]
14098  cd path-to-make-repo-you-cloned-above
14099  build_w32.bat --without-guile
14101 should result in a WinRel/gnumake.exe.
14102 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14104 Then re-run autogen.sh
14106 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14107 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14109 _EOS
14110 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14111     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14116 cat << _EOF
14117 ****************************************************************************
14119 To build, run:
14120 $GNUMAKE
14122 To view some help, run:
14123 $GNUMAKE help
14125 _EOF
14127 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14128     cat << _EOF
14129 After the build has finished successfully, you can immediately run what you built using the command:
14130 _EOF
14132     if test $_os = Darwin; then
14133         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14134     else
14135         echo instdir/program/soffice
14136     fi
14137     cat << _EOF
14139 If you want to run the smoketest, run:
14140 $GNUMAKE check
14142 _EOF
14145 if test -f warn; then
14146     cat warn
14147     rm warn
14150 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: