lok: jsbuilder: avoid sending early id to client side
[LibreOffice.git] / configure.ac
blob89c44b74e4f9a48d0dc03edfe30a132110b31911
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_vlc=no
1103     enable_coinmp=no
1104     enable_pdfium=no
1105     enable_sdremote=no
1106     enable_postgresql_sdbc=no
1107     enable_firebird_sdbc=no
1108     _os=Haiku
1109     ;;
1112     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1113     ;;
1114 esac
1116 AC_SUBST(HOST_PLATFORM)
1118 if test "$_os" = "Android" ; then
1119     # Verify that the NDK and SDK options are proper
1120     if test -z "$with_android_ndk"; then
1121         AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1122     elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1123         AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1124     fi
1126     if test -z "$ANDROID_SDK_HOME"; then
1127         AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1128     elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1129         AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1130     fi
1132     BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1133     if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1134         AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1135                          $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1136                     or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1137         add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1138         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1139         add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1140     fi
1141     if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1142         AC_MSG_WARN([android support repository not found - install with
1143                          $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1144                      to allow the build to download the specified version of the android support libraries])
1145         add_warning "android support repository not found - install with"
1146         add_warning "    $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1147         add_warning "to allow the build to download the specified version of the android support libraries"
1148     fi
1151 if test "$_os" = "AIX"; then
1152     AC_PATH_PROG(GAWK, gawk)
1153     if test -z "$GAWK"; then
1154         AC_MSG_ERROR([gawk not found in \$PATH])
1155     fi
1158 AC_SUBST(SDKDIRNAME)
1160 AC_SUBST(PTHREAD_CFLAGS)
1161 AC_SUBST(PTHREAD_LIBS)
1163 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1164 # By default use the ones specified by our build system,
1165 # but explicit override is possible.
1166 AC_MSG_CHECKING(for explicit AFLAGS)
1167 if test -n "$AFLAGS"; then
1168     AC_MSG_RESULT([$AFLAGS])
1169     x_AFLAGS=
1170 else
1171     AC_MSG_RESULT(no)
1172     x_AFLAGS=[\#]
1174 AC_MSG_CHECKING(for explicit CFLAGS)
1175 if test -n "$CFLAGS"; then
1176     AC_MSG_RESULT([$CFLAGS])
1177     x_CFLAGS=
1178 else
1179     AC_MSG_RESULT(no)
1180     x_CFLAGS=[\#]
1182 AC_MSG_CHECKING(for explicit CXXFLAGS)
1183 if test -n "$CXXFLAGS"; then
1184     AC_MSG_RESULT([$CXXFLAGS])
1185     x_CXXFLAGS=
1186 else
1187     AC_MSG_RESULT(no)
1188     x_CXXFLAGS=[\#]
1190 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1191 if test -n "$OBJCFLAGS"; then
1192     AC_MSG_RESULT([$OBJCFLAGS])
1193     x_OBJCFLAGS=
1194 else
1195     AC_MSG_RESULT(no)
1196     x_OBJCFLAGS=[\#]
1198 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1199 if test -n "$OBJCXXFLAGS"; then
1200     AC_MSG_RESULT([$OBJCXXFLAGS])
1201     x_OBJCXXFLAGS=
1202 else
1203     AC_MSG_RESULT(no)
1204     x_OBJCXXFLAGS=[\#]
1206 AC_MSG_CHECKING(for explicit LDFLAGS)
1207 if test -n "$LDFLAGS"; then
1208     AC_MSG_RESULT([$LDFLAGS])
1209     x_LDFLAGS=
1210 else
1211     AC_MSG_RESULT(no)
1212     x_LDFLAGS=[\#]
1214 AC_SUBST(AFLAGS)
1215 AC_SUBST(CFLAGS)
1216 AC_SUBST(CXXFLAGS)
1217 AC_SUBST(OBJCFLAGS)
1218 AC_SUBST(OBJCXXFLAGS)
1219 AC_SUBST(LDFLAGS)
1220 AC_SUBST(x_AFLAGS)
1221 AC_SUBST(x_CFLAGS)
1222 AC_SUBST(x_CXXFLAGS)
1223 AC_SUBST(x_OBJCFLAGS)
1224 AC_SUBST(x_OBJCXXFLAGS)
1225 AC_SUBST(x_LDFLAGS)
1227 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1228 my_original_CFLAGS=$CFLAGS
1229 my_original_CXXFLAGS=$CXXFLAGS
1230 my_original_CPPFLAGS=$CPPFLAGS
1232 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1233 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1234 dnl AC_PROG_CC internally.
1235 if test "$_os" != "WINNT"; then
1236     # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1237     save_CFLAGS=$CFLAGS
1238     AC_PROG_CC
1239     CFLAGS=$save_CFLAGS
1240     if test -z "$CC_BASE"; then
1241         CC_BASE=`first_arg_basename "$CC"`
1242     fi
1245 if test "$_os" != "WINNT"; then
1246     AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1247 else
1248     ENDIANNESS=little
1250 AC_SUBST(ENDIANNESS)
1252 if test $_os != "WINNT"; then
1253     save_LIBS="$LIBS"
1254     AC_SEARCH_LIBS([dlsym], [dl],
1255         [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1256         [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1257     LIBS="$save_LIBS"
1259 AC_SUBST(DLOPEN_LIBS)
1261 AC_ARG_ENABLE(ios-simulator,
1262     AS_HELP_STRING([--enable-ios-simulator],
1263         [build for iOS simulator])
1266 AC_ARG_ENABLE(ios-libreofficelight-app,
1267     AS_HELP_STRING([--enable-ios-libreofficelight-app],
1268         [When building for iOS, build stuff relevant only for the 'LibreOfficeLight' app
1269          (in ios/LibreOfficeLight). Note that this app is not known to work in any useful manner,
1270          and also that its actual build (in Xcode) requires some obvious modifications to the project.])
1273 ENABLE_IOS_LIBREOFFICELIGHT_APP=
1274 if test "$enable_ios_libreofficelight_app" = yes; then
1275     ENABLE_IOS_LIBREOFFICELIGHT_APP=TRUE
1277 AC_SUBST(ENABLE_IOS_LIBREOFFICELIGHT_APP)
1279 ###############################################################################
1280 # Extensions switches --enable/--disable
1281 ###############################################################################
1282 # By default these should be enabled unless having extra dependencies.
1283 # If there is extra dependency over configure options then the enable should
1284 # be automagic based on whether the requiring feature is enabled or not.
1285 # All this options change anything only with --enable-extension-integration.
1287 # The name of this option and its help string makes it sound as if
1288 # extensions are built anyway, just not integrated in the installer,
1289 # if you use --disable-extension-integration. Is that really the
1290 # case?
1292 libo_FUZZ_ARG_ENABLE(extension-integration,
1293     AS_HELP_STRING([--disable-extension-integration],
1294         [Disable integration of the built extensions in the installer of the
1295          product. Use this switch to disable the integration.])
1298 AC_ARG_ENABLE(avmedia,
1299     AS_HELP_STRING([--disable-avmedia],
1300         [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1303 AC_ARG_ENABLE(database-connectivity,
1304     AS_HELP_STRING([--disable-database-connectivity],
1305         [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1308 # This doesn't mean not building (or "integrating") extensions
1309 # (although it probably should; i.e. it should imply
1310 # --disable-extension-integration I guess), it means not supporting
1311 # any extension mechanism at all
1312 libo_FUZZ_ARG_ENABLE(extensions,
1313     AS_HELP_STRING([--disable-extensions],
1314         [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1317 AC_ARG_ENABLE(scripting,
1318     AS_HELP_STRING([--disable-scripting],
1319         [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1322 # This is mainly for Android and iOS, but could potentially be used in some
1323 # special case otherwise, too, so factored out as a separate setting
1325 AC_ARG_ENABLE(dynamic-loading,
1326     AS_HELP_STRING([--disable-dynamic-loading],
1327         [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1330 libo_FUZZ_ARG_ENABLE(report-builder,
1331     AS_HELP_STRING([--disable-report-builder],
1332         [Disable the Report Builder.])
1335 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1336     AS_HELP_STRING([--enable-ext-wiki-publisher],
1337         [Enable the Wiki Publisher extension.])
1340 libo_FUZZ_ARG_ENABLE(lpsolve,
1341     AS_HELP_STRING([--disable-lpsolve],
1342         [Disable compilation of the lp solve solver ])
1344 libo_FUZZ_ARG_ENABLE(coinmp,
1345     AS_HELP_STRING([--disable-coinmp],
1346         [Disable compilation of the CoinMP solver ])
1349 libo_FUZZ_ARG_ENABLE(pdfimport,
1350     AS_HELP_STRING([--disable-pdfimport],
1351         [Disable building the PDF import feature.])
1354 libo_FUZZ_ARG_ENABLE(pdfium,
1355     AS_HELP_STRING([--disable-pdfium],
1356         [Disable building PDFium. Results in unsecure PDF signature verification.])
1359 libo_FUZZ_ARG_ENABLE(skia,
1360     AS_HELP_STRING([--disable-skia],
1361         [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1364 ###############################################################################
1366 dnl ---------- *** ----------
1368 libo_FUZZ_ARG_ENABLE(mergelibs,
1369     AS_HELP_STRING([--enable-mergelibs],
1370         [Merge several of the smaller libraries into one big, "merged", one.])
1373 libo_FUZZ_ARG_ENABLE(breakpad,
1374     AS_HELP_STRING([--enable-breakpad],
1375         [Enables breakpad for crash reporting.])
1378 libo_FUZZ_ARG_ENABLE(crashdump,
1379     AS_HELP_STRING([--disable-crashdump],
1380         [Disable dump.ini and dump-file, when --enable-breakpad])
1383 AC_ARG_ENABLE(fetch-external,
1384     AS_HELP_STRING([--disable-fetch-external],
1385         [Disables fetching external tarballs from web sources.])
1388 AC_ARG_ENABLE(fuzzers,
1389     AS_HELP_STRING([--enable-fuzzers],
1390         [Enables building libfuzzer targets for fuzz testing.])
1393 libo_FUZZ_ARG_ENABLE(pch,
1394     AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1395         [Enables precompiled header support for C++. Forced default on Windows/VC build.
1396          Using 'system' will include only external headers, 'base' will add also headers
1397          from base modules, 'normal' will also add all headers except from the module built,
1398          'full' will use all suitable headers even from a module itself.])
1401 libo_FUZZ_ARG_ENABLE(epm,
1402     AS_HELP_STRING([--enable-epm],
1403         [LibreOffice includes self-packaging code, that requires epm, however epm is
1404          useless for large scale package building.])
1407 libo_FUZZ_ARG_ENABLE(odk,
1408     AS_HELP_STRING([--disable-odk],
1409         [LibreOffice includes an ODK, office development kit which some packagers may
1410          wish to build without.])
1413 AC_ARG_ENABLE(mpl-subset,
1414     AS_HELP_STRING([--enable-mpl-subset],
1415         [Don't compile any pieces which are not MPL or more liberally licensed])
1418 libo_FUZZ_ARG_ENABLE(evolution2,
1419     AS_HELP_STRING([--enable-evolution2],
1420         [Allows the built-in evolution 2 addressbook connectivity build to be
1421          enabled.])
1424 AC_ARG_ENABLE(avahi,
1425     AS_HELP_STRING([--enable-avahi],
1426         [Determines whether to use Avahi to advertise Impress to remote controls.])
1429 libo_FUZZ_ARG_ENABLE(werror,
1430     AS_HELP_STRING([--enable-werror],
1431         [Turn warnings to errors. (Has no effect in modules where the treating
1432          of warnings as errors is disabled explicitly.)]),
1435 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1436     AS_HELP_STRING([--enable-assert-always-abort],
1437         [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1440 libo_FUZZ_ARG_ENABLE(dbgutil,
1441     AS_HELP_STRING([--enable-dbgutil],
1442         [Provide debugging support from --enable-debug and include additional debugging
1443          utilities such as object counting or more expensive checks.
1444          This is the recommended option for developers.
1445          Note that this makes the build ABI incompatible, it is not possible to mix object
1446          files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1448 libo_FUZZ_ARG_ENABLE(debug,
1449     AS_HELP_STRING([--enable-debug],
1450         [Include debugging information, disable compiler optimization and inlining plus
1451          extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1453 libo_FUZZ_ARG_ENABLE(split-debug,
1454     AS_HELP_STRING([--disable-split-debug],
1455         [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1456          saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1458 libo_FUZZ_ARG_ENABLE(gdb-index,
1459     AS_HELP_STRING([--disable-gdb-index],
1460         [Disables creating debug information in the gdb index format, which makes gdb start faster.
1461          The feature requires the gold or lld linker.]))
1463 libo_FUZZ_ARG_ENABLE(sal-log,
1464     AS_HELP_STRING([--enable-sal-log],
1465         [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1467 libo_FUZZ_ARG_ENABLE(symbols,
1468     AS_HELP_STRING([--enable-symbols],
1469         [Generate debug information.
1470          By default, enabled for --enable-debug and --enable-dbgutil, disabled
1471          otherwise. It is possible to explicitly specify gbuild build targets
1472          (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1473          everything in the directory; there is no ordering, more specific overrides
1474          more general, and disabling takes precedence).
1475          Example: --enable-symbols="all -sw/ -Library_sc".]))
1477 libo_FUZZ_ARG_ENABLE(optimized,
1478     AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1479         [Whether to compile with optimization flags.
1480          By default, disabled for --enable-debug and --enable-dbgutil, enabled
1481          otherwise. Using 'debug' will try to use only optimizations that should
1482          not interfere with debugging.]))
1484 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1485     AS_HELP_STRING([--disable-runtime-optimizations],
1486         [Statically disable certain runtime optimizations (like rtl/alloc.h or
1487          JVM JIT) that are known to interact badly with certain dynamic analysis
1488          tools (like -fsanitize=address or Valgrind).  By default, disabled iff
1489          CC contains "-fsanitize=*".  (For Valgrind, those runtime optimizations
1490          are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1492 AC_ARG_WITH(valgrind,
1493     AS_HELP_STRING([--with-valgrind],
1494         [Make availability of Valgrind headers a hard requirement.]))
1496 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1497     AS_HELP_STRING([--enable-compiler-plugins],
1498         [Enable compiler plugins that will perform additional checks during
1499          building. Enabled automatically by --enable-dbgutil.
1500          Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1501 COMPILER_PLUGINS_DEBUG=
1502 if test "$enable_compiler_plugins" = debug; then
1503     enable_compiler_plugins=yes
1504     COMPILER_PLUGINS_DEBUG=TRUE
1507 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1508     AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1509         [Disable use of precompiled headers when running the Clang compiler plugin analyzer.  Not
1510          relevant in the --disable-compiler-plugins case.]))
1512 libo_FUZZ_ARG_ENABLE(ooenv,
1513     AS_HELP_STRING([--disable-ooenv],
1514         [Disable ooenv for the instdir installation.]))
1516 AC_ARG_ENABLE(lto,
1517     AS_HELP_STRING([--enable-lto],
1518         [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1519          longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1520          linker. For MSVC, this option is broken at the moment. This is experimental work
1521          in progress that shouldn't be used unless you are working on it.)]))
1523 AC_ARG_ENABLE(python,
1524     AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1525         [Enables or disables Python support at run-time.
1526          Also specifies what Python to use at build-time.
1527          'fully-internal' even forces the internal version for uses of Python
1528          during the build.
1529          On macOS the only choices are
1530          'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1531          ]))
1533 libo_FUZZ_ARG_ENABLE(gtk3,
1534     AS_HELP_STRING([--disable-gtk3],
1535         [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1536 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1538 AC_ARG_ENABLE(introspection,
1539     AS_HELP_STRING([--enable-introspection],
1540         [Generate files for GObject introspection.  Requires --enable-gtk3.  (Typically used by
1541          Linux distributions.)]))
1543 AC_ARG_ENABLE(split-app-modules,
1544     AS_HELP_STRING([--enable-split-app-modules],
1545         [Split file lists for app modules, e.g. base, calc.
1546          Has effect only with make distro-pack-install]),
1549 AC_ARG_ENABLE(split-opt-features,
1550     AS_HELP_STRING([--enable-split-opt-features],
1551         [Split file lists for some optional features, e.g. pyuno, testtool.
1552          Has effect only with make distro-pack-install]),
1555 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1556     AS_HELP_STRING([--disable-cairo-canvas],
1557         [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1560 libo_FUZZ_ARG_ENABLE(dbus,
1561     AS_HELP_STRING([--disable-dbus],
1562         [Determines whether to enable features that depend on dbus.
1563          e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1564 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1566 libo_FUZZ_ARG_ENABLE(sdremote,
1567     AS_HELP_STRING([--disable-sdremote],
1568         [Determines whether to enable Impress remote control (i.e. the server component).]),
1569 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1571 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1572     AS_HELP_STRING([--disable-sdremote-bluetooth],
1573         [Determines whether to build sdremote with bluetooth support.
1574          Requires dbus on Linux.]))
1576 libo_FUZZ_ARG_ENABLE(gio,
1577     AS_HELP_STRING([--disable-gio],
1578         [Determines whether to use the GIO support.]),
1579 ,test "${enable_gio+set}" = set || enable_gio=yes)
1581 AC_ARG_ENABLE(qt5,
1582     AS_HELP_STRING([--enable-qt5],
1583         [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1584          available.]),
1587 AC_ARG_ENABLE(kf5,
1588     AS_HELP_STRING([--enable-kf5],
1589         [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1590          KF5 are available.]),
1593 AC_ARG_ENABLE(kde5,
1594     AS_HELP_STRING([--enable-kde5],
1595         [Compatibility switch for the kde5 => kf5 rename. Use --enable-kf5!])
1598 AC_ARG_ENABLE(gtk3_kde5,
1599     AS_HELP_STRING([--enable-gtk3-kde5],
1600         [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1601          platforms where Gtk3, Qt5 and Plasma is available.]),
1604 AC_ARG_ENABLE(gui,
1605     AS_HELP_STRING([--disable-gui],
1606         [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1607 ,enable_gui=yes)
1609 libo_FUZZ_ARG_ENABLE(randr,
1610     AS_HELP_STRING([--disable-randr],
1611         [Disable RandR support in the vcl project.]),
1612 ,test "${enable_randr+set}" = set || enable_randr=yes)
1614 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1615     AS_HELP_STRING([--disable-gstreamer-1-0],
1616         [Disable building with the gstreamer 1.0 avmedia backend.]),
1617 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1619 libo_FUZZ_ARG_ENABLE(vlc,
1620     AS_HELP_STRING([--enable-vlc],
1621         [Enable building with the (experimental) VLC avmedia backend.]),
1622 ,test "${enable_vlc+set}" = set || enable_vlc=no)
1624 libo_FUZZ_ARG_ENABLE(neon,
1625     AS_HELP_STRING([--disable-neon],
1626         [Disable neon and the compilation of webdav binding.]),
1629 libo_FUZZ_ARG_ENABLE([eot],
1630     [AS_HELP_STRING([--enable-eot],
1631         [Enable support for Embedded OpenType fonts.])],
1632 ,test "${enable_eot+set}" = set || enable_eot=no)
1634 libo_FUZZ_ARG_ENABLE(cve-tests,
1635     AS_HELP_STRING([--disable-cve-tests],
1636         [Prevent CVE tests to be executed]),
1639 libo_FUZZ_ARG_ENABLE(chart-tests,
1640     AS_HELP_STRING([--enable-chart-tests],
1641         [Executes chart XShape tests. In a perfect world these tests would be
1642          stable and everyone could run them, in reality it is best to run them
1643          only on a few machines that are known to work and maintained by people
1644          who can judge if a test failure is a regression or not.]),
1647 AC_ARG_ENABLE(build-opensymbol,
1648     AS_HELP_STRING([--enable-build-opensymbol],
1649         [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1650          fontforge installed.]),
1653 AC_ARG_ENABLE(dependency-tracking,
1654     AS_HELP_STRING([--enable-dependency-tracking],
1655         [Do not reject slow dependency extractors.])[
1656   --disable-dependency-tracking
1657                           Disables generation of dependency information.
1658                           Speed up one-time builds.],
1661 AC_ARG_ENABLE(icecream,
1662     AS_HELP_STRING([--enable-icecream],
1663         [Use the 'icecream' distributed compiling tool to speedup the compilation.
1664          It defaults to /opt/icecream for the location of the icecream gcc/g++
1665          wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1668 AC_ARG_ENABLE(ld,
1669     AS_HELP_STRING([--enable-ld=<linker>],
1670         [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1671          By default tries to use the best linker possible, use --disable-ld to use the default linker.
1672          If <linker> contains any ':', the part before the first ':' is used as the value of
1673          -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1674          needed for Clang 12).]),
1677 libo_FUZZ_ARG_ENABLE(cups,
1678     AS_HELP_STRING([--disable-cups],
1679         [Do not build cups support.])
1682 AC_ARG_ENABLE(ccache,
1683     AS_HELP_STRING([--disable-ccache],
1684         [Do not try to use ccache automatically.
1685          By default, unless on Windows, we will try to detect if ccache is available; in that case if
1686          CC/CXX are not yet set, and --enable-icecream is not given, we
1687          attempt to use ccache. --disable-ccache disables ccache completely.
1688          Additionally ccache's depend mode is enabled if possible,
1689          use --enable-ccache=nodepend to enable ccache without depend mode.
1693 libo_FUZZ_ARG_ENABLE(online-update,
1694     AS_HELP_STRING([--enable-online-update],
1695         [Enable the online update service that will check for new versions of
1696          LibreOffice. By default, it is enabled on Windows and Mac, disabled on Linux.
1697          If the value is "mar", the experimental Mozilla-like update will be
1698          enabled instead of the traditional update mechanism.]),
1701 AC_ARG_WITH(update-config,
1702     AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1703                    [Path to the update config ini file]))
1705 libo_FUZZ_ARG_ENABLE(extension-update,
1706     AS_HELP_STRING([--disable-extension-update],
1707         [Disable possibility to update installed extensions.]),
1710 libo_FUZZ_ARG_ENABLE(release-build,
1711     AS_HELP_STRING([--enable-release-build],
1712         [Enable release build. Note that the "release build" choice is orthogonal to
1713          whether symbols are present, debug info is generated, or optimization
1714          is done.
1715          See http://wiki.documentfoundation.org/Development/DevBuild]),
1718 AC_ARG_ENABLE(windows-build-signing,
1719     AS_HELP_STRING([--enable-windows-build-signing],
1720         [Enable signing of windows binaries (*.exe, *.dll)]),
1723 AC_ARG_ENABLE(silent-msi,
1724     AS_HELP_STRING([--enable-silent-msi],
1725         [Enable MSI with LIMITUI=1 (silent install).]),
1728 AC_ARG_ENABLE(macosx-code-signing,
1729     AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1730         [Sign executables, dylibs, frameworks and the app bundle. If you
1731          don't provide an identity the first suitable certificate
1732          in your keychain is used.]),
1735 AC_ARG_ENABLE(macosx-package-signing,
1736     AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1737         [Create a .pkg suitable for uploading to the Mac App Store and sign
1738          it. If you don't provide an identity the first suitable certificate
1739          in your keychain is used.]),
1742 AC_ARG_ENABLE(macosx-sandbox,
1743     AS_HELP_STRING([--enable-macosx-sandbox],
1744         [Make the app bundle run in a sandbox. Requires code signing.
1745          Is required by apps distributed in the Mac App Store, and implies
1746          adherence to App Store rules.]),
1749 AC_ARG_WITH(macosx-bundle-identifier,
1750     AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1751         [Define the macOS bundle identifier. Default is the somewhat weird
1752          org.libreoffice.script ("script", huh?).]),
1753 ,with_macosx_bundle_identifier=org.libreoffice.script)
1755 AC_ARG_WITH(product-name,
1756     AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1757         [Define the product name. Default is AC_PACKAGE_NAME.]),
1758 ,with_product_name=$PRODUCTNAME)
1760 AC_ARG_WITH(package-version,
1761     AS_HELP_STRING([--with-package-version='3.1.4.5'],
1762         [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1765 libo_FUZZ_ARG_ENABLE(readonly-installset,
1766     AS_HELP_STRING([--enable-readonly-installset],
1767         [Prevents any attempts by LibreOffice to write into its installation. That means
1768          at least that no "system-wide" extensions can be added. Partly experimental work in
1769          progress, probably not fully implemented. Always enabled for macOS.]),
1772 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1773     AS_HELP_STRING([--disable-mariadb-sdbc],
1774         [Disable the build of the MariaDB/MySQL-SDBC driver.])
1777 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1778     AS_HELP_STRING([--disable-postgresql-sdbc],
1779         [Disable the build of the PostgreSQL-SDBC driver.])
1782 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1783     AS_HELP_STRING([--disable-lotuswordpro],
1784         [Disable the build of the Lotus Word Pro filter.]),
1785 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1787 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1788     AS_HELP_STRING([--disable-firebird-sdbc],
1789         [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1790 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1792 AC_ARG_ENABLE(bogus-pkg-config,
1793     AS_HELP_STRING([--enable-bogus-pkg-config],
1794         [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.]),
1797 AC_ARG_ENABLE(openssl,
1798     AS_HELP_STRING([--disable-openssl],
1799         [Disable using libssl/libcrypto from OpenSSL. If disabled,
1800          components will either use GNUTLS or NSS. Work in progress,
1801          use only if you are hacking on it.]),
1802 ,enable_openssl=yes)
1804 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1805     AS_HELP_STRING([--enable-cipher-openssl-backend],
1806         [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1807          Requires --enable-openssl.]))
1809 AC_ARG_ENABLE(library-bin-tar,
1810     AS_HELP_STRING([--enable-library-bin-tar],
1811         [Enable the building and reused of tarball of binary build for some 'external' libraries.
1812         Some libraries can save their build result in a tarball
1813         stored in TARFILE_LOCATION. That binary tarball is
1814         uniquely identified by the source tarball,
1815         the content of the config_host.mk file and the content
1816         of the top-level directory in core for that library
1817         If this option is enabled, then if such a tarfile exist, it will be untarred
1818         instead of the source tarfile, and the build step will be skipped for that
1819         library.
1820         If a proper tarfile does not exist, then the normal source-based
1821         build is done for that library and a proper binary tarfile is created
1822         for the next time.]),
1825 AC_ARG_ENABLE(dconf,
1826     AS_HELP_STRING([--disable-dconf],
1827         [Disable the dconf configuration backend (enabled by default where
1828          available).]))
1830 libo_FUZZ_ARG_ENABLE(formula-logger,
1831     AS_HELP_STRING(
1832         [--enable-formula-logger],
1833         [Enable formula logger for logging formula calculation flow in Calc.]
1834     )
1837 AC_ARG_ENABLE(ldap,
1838     AS_HELP_STRING([--disable-ldap],
1839         [Disable LDAP support.]),
1840 ,enable_ldap=yes)
1842 AC_ARG_ENABLE(opencl,
1843     AS_HELP_STRING([--disable-opencl],
1844         [Disable OpenCL support.]),
1845 ,enable_opencl=yes)
1847 dnl ===================================================================
1848 dnl Optional Packages (--with/without-)
1849 dnl ===================================================================
1851 AC_ARG_WITH(gcc-home,
1852     AS_HELP_STRING([--with-gcc-home],
1853         [Specify the location of gcc/g++ manually. This can be used in conjunction
1854          with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1855          non-default path.]),
1858 AC_ARG_WITH(gnu-patch,
1859     AS_HELP_STRING([--with-gnu-patch],
1860         [Specify location of GNU patch on Solaris or FreeBSD.]),
1863 AC_ARG_WITH(build-platform-configure-options,
1864     AS_HELP_STRING([--with-build-platform-configure-options],
1865         [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1868 AC_ARG_WITH(gnu-cp,
1869     AS_HELP_STRING([--with-gnu-cp],
1870         [Specify location of GNU cp on Solaris or FreeBSD.]),
1873 AC_ARG_WITH(external-tar,
1874     AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1875         [Specify an absolute path of where to find (and store) tarfiles.]),
1876     TARFILE_LOCATION=$withval ,
1879 AC_ARG_WITH(referenced-git,
1880     AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1881         [Specify another checkout directory to reference. This makes use of
1882                  git submodule update --reference, and saves a lot of diskspace
1883                  when having multiple trees side-by-side.]),
1884     GIT_REFERENCE_SRC=$withval ,
1887 AC_ARG_WITH(linked-git,
1888     AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
1889         [Specify a directory where the repositories of submodules are located.
1890          This uses a method similar to git-new-workdir to get submodules.]),
1891     GIT_LINK_SRC=$withval ,
1894 AC_ARG_WITH(galleries,
1895     AS_HELP_STRING([--with-galleries],
1896         [Specify how galleries should be built. It is possible either to
1897          build these internally from source ("build"),
1898          or to disable them ("no")]),
1901 AC_ARG_WITH(theme,
1902     AS_HELP_STRING([--with-theme="theme1 theme2..."],
1903         [Choose which themes to include. By default those themes with an '*' are included.
1904          Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
1905          *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
1908 libo_FUZZ_ARG_WITH(helppack-integration,
1909     AS_HELP_STRING([--without-helppack-integration],
1910         [It will not integrate the helppacks to the installer
1911          of the product. Please use this switch to use the online help
1912          or separate help packages.]),
1915 libo_FUZZ_ARG_WITH(fonts,
1916     AS_HELP_STRING([--without-fonts],
1917         [LibreOffice includes some third-party fonts to provide a reliable basis for
1918          help content, templates, samples, etc. When these fonts are already
1919          known to be available on the system then you should use this option.]),
1922 AC_ARG_WITH(epm,
1923     AS_HELP_STRING([--with-epm],
1924         [Decides which epm to use. Default is to use the one from the system if
1925          one is built. When either this is not there or you say =internal epm
1926          will be built.]),
1929 AC_ARG_WITH(package-format,
1930     AS_HELP_STRING([--with-package-format],
1931         [Specify package format(s) for LibreOffice installation sets. The
1932          implicit --without-package-format leads to no installation sets being
1933          generated. Possible values: aix, archive, bsd, deb, dmg,
1934          installed, msi, pkg, and rpm.
1935          Example: --with-package-format='deb rpm']),
1938 AC_ARG_WITH(tls,
1939     AS_HELP_STRING([--with-tls],
1940         [Decides which TLS/SSL and cryptographic implementations to use for
1941          LibreOffice's code. Notice that this doesn't apply for depending
1942          libraries like "neon", for example. Default is to use NSS
1943          although OpenSSL is also possible. Notice that selecting NSS restricts
1944          the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
1945          restrict by now the usage of NSS in LO's code. Possible values:
1946          openssl, nss. Example: --with-tls="nss"]),
1949 AC_ARG_WITH(system-libs,
1950     AS_HELP_STRING([--with-system-libs],
1951         [Use libraries already on system -- enables all --with-system-* flags.]),
1954 AC_ARG_WITH(system-bzip2,
1955     AS_HELP_STRING([--with-system-bzip2],
1956         [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
1957     [with_system_bzip2="$with_system_libs"])
1959 AC_ARG_WITH(system-headers,
1960     AS_HELP_STRING([--with-system-headers],
1961         [Use headers already on system -- enables all --with-system-* flags for
1962          external packages whose headers are the only entities used i.e.
1963          boost/odbc/sane-header(s).]),,
1964     [with_system_headers="$with_system_libs"])
1966 AC_ARG_WITH(system-jars,
1967     AS_HELP_STRING([--without-system-jars],
1968         [When building with --with-system-libs, also the needed jars are expected
1969          on the system. Use this to disable that]),,
1970     [with_system_jars="$with_system_libs"])
1972 AC_ARG_WITH(system-cairo,
1973     AS_HELP_STRING([--with-system-cairo],
1974         [Use cairo libraries already on system.  Happens automatically for
1975          (implicit) --enable-gtk3.]))
1977 AC_ARG_WITH(system-epoxy,
1978     AS_HELP_STRING([--with-system-epoxy],
1979         [Use epoxy libraries already on system.  Happens automatically for
1980          (implicit) --enable-gtk3.]),,
1981        [with_system_epoxy="$with_system_libs"])
1983 AC_ARG_WITH(myspell-dicts,
1984     AS_HELP_STRING([--with-myspell-dicts],
1985         [Adds myspell dictionaries to the LibreOffice installation set]),
1988 AC_ARG_WITH(system-dicts,
1989     AS_HELP_STRING([--without-system-dicts],
1990         [Do not use dictionaries from system paths.]),
1993 AC_ARG_WITH(external-dict-dir,
1994     AS_HELP_STRING([--with-external-dict-dir],
1995         [Specify external dictionary dir.]),
1998 AC_ARG_WITH(external-hyph-dir,
1999     AS_HELP_STRING([--with-external-hyph-dir],
2000         [Specify external hyphenation pattern dir.]),
2003 AC_ARG_WITH(external-thes-dir,
2004     AS_HELP_STRING([--with-external-thes-dir],
2005         [Specify external thesaurus dir.]),
2008 AC_ARG_WITH(system-zlib,
2009     AS_HELP_STRING([--with-system-zlib],
2010         [Use zlib already on system.]),,
2011     [with_system_zlib=auto])
2013 AC_ARG_WITH(system-jpeg,
2014     AS_HELP_STRING([--with-system-jpeg],
2015         [Use jpeg already on system.]),,
2016     [with_system_jpeg="$with_system_libs"])
2018 AC_ARG_WITH(system-clucene,
2019     AS_HELP_STRING([--with-system-clucene],
2020         [Use clucene already on system.]),,
2021     [with_system_clucene="$with_system_libs"])
2023 AC_ARG_WITH(system-expat,
2024     AS_HELP_STRING([--with-system-expat],
2025         [Use expat already on system.]),,
2026     [with_system_expat="$with_system_libs"])
2028 AC_ARG_WITH(system-libxml,
2029     AS_HELP_STRING([--with-system-libxml],
2030         [Use libxml/libxslt already on system.]),,
2031     [with_system_libxml=auto])
2033 AC_ARG_WITH(system-icu,
2034     AS_HELP_STRING([--with-system-icu],
2035         [Use icu already on system.]),,
2036     [with_system_icu="$with_system_libs"])
2038 AC_ARG_WITH(system-ucpp,
2039     AS_HELP_STRING([--with-system-ucpp],
2040         [Use ucpp already on system.]),,
2041     [])
2043 AC_ARG_WITH(system-openldap,
2044     AS_HELP_STRING([--with-system-openldap],
2045         [Use the OpenLDAP LDAP SDK already on system.]),,
2046     [with_system_openldap="$with_system_libs"])
2048 libo_FUZZ_ARG_ENABLE(poppler,
2049     AS_HELP_STRING([--disable-poppler],
2050         [Disable building Poppler.])
2053 AC_ARG_WITH(system-poppler,
2054     AS_HELP_STRING([--with-system-poppler],
2055         [Use system poppler (only needed for PDF import).]),,
2056     [with_system_poppler="$with_system_libs"])
2058 libo_FUZZ_ARG_ENABLE(gpgmepp,
2059     AS_HELP_STRING([--disable-gpgmepp],
2060         [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2063 AC_ARG_WITH(system-gpgmepp,
2064     AS_HELP_STRING([--with-system-gpgmepp],
2065         [Use gpgmepp already on system]),,
2066     [with_system_gpgmepp="$with_system_libs"])
2068 AC_ARG_WITH(system-apache-commons,
2069     AS_HELP_STRING([--with-system-apache-commons],
2070         [Use Apache commons libraries already on system.]),,
2071     [with_system_apache_commons="$with_system_jars"])
2073 AC_ARG_WITH(system-mariadb,
2074     AS_HELP_STRING([--with-system-mariadb],
2075         [Use MariaDB/MySQL libraries already on system.]),,
2076     [with_system_mariadb="$with_system_libs"])
2078 AC_ARG_ENABLE(bundle-mariadb,
2079     AS_HELP_STRING([--enable-bundle-mariadb],
2080         [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2083 AC_ARG_WITH(system-postgresql,
2084     AS_HELP_STRING([--with-system-postgresql],
2085         [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2086          driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2087     [with_system_postgresql="$with_system_libs"])
2089 AC_ARG_WITH(libpq-path,
2090     AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2091         [Use this PostgreSQL C interface (libpq) installation for building
2092          the PostgreSQL-SDBC extension.]),
2095 AC_ARG_WITH(system-firebird,
2096     AS_HELP_STRING([--with-system-firebird],
2097         [Use Firebird libraries already on system, for building the Firebird-SDBC
2098          driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2099     [with_system_firebird="$with_system_libs"])
2101 AC_ARG_WITH(system-libtommath,
2102             AS_HELP_STRING([--with-system-libtommath],
2103                            [Use libtommath already on system]),,
2104             [with_system_libtommath="$with_system_libs"])
2106 AC_ARG_WITH(system-hsqldb,
2107     AS_HELP_STRING([--with-system-hsqldb],
2108         [Use hsqldb already on system.]))
2110 AC_ARG_WITH(hsqldb-jar,
2111     AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2112         [Specify path to jarfile manually.]),
2113     HSQLDB_JAR=$withval)
2115 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2116     AS_HELP_STRING([--disable-scripting-beanshell],
2117         [Disable support for scripts in BeanShell.]),
2121 AC_ARG_WITH(system-beanshell,
2122     AS_HELP_STRING([--with-system-beanshell],
2123         [Use beanshell already on system.]),,
2124     [with_system_beanshell="$with_system_jars"])
2126 AC_ARG_WITH(beanshell-jar,
2127     AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2128         [Specify path to jarfile manually.]),
2129     BSH_JAR=$withval)
2131 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2132     AS_HELP_STRING([--disable-scripting-javascript],
2133         [Disable support for scripts in JavaScript.]),
2137 AC_ARG_WITH(system-rhino,
2138     AS_HELP_STRING([--with-system-rhino],
2139         [Use rhino already on system.]),,)
2140 #    [with_system_rhino="$with_system_jars"])
2141 # Above is not used as we have different debug interface
2142 # patched into internal rhino. This code needs to be fixed
2143 # before we can enable it by default.
2145 AC_ARG_WITH(rhino-jar,
2146     AS_HELP_STRING([--with-rhino-jar=JARFILE],
2147         [Specify path to jarfile manually.]),
2148     RHINO_JAR=$withval)
2150 AC_ARG_WITH(commons-logging-jar,
2151     AS_HELP_STRING([--with-commons-logging-jar=JARFILE],
2152         [Specify path to jarfile manually.]),
2153     COMMONS_LOGGING_JAR=$withval)
2155 AC_ARG_WITH(system-jfreereport,
2156     AS_HELP_STRING([--with-system-jfreereport],
2157         [Use JFreeReport already on system.]),,
2158     [with_system_jfreereport="$with_system_jars"])
2160 AC_ARG_WITH(sac-jar,
2161     AS_HELP_STRING([--with-sac-jar=JARFILE],
2162         [Specify path to jarfile manually.]),
2163     SAC_JAR=$withval)
2165 AC_ARG_WITH(libxml-jar,
2166     AS_HELP_STRING([--with-libxml-jar=JARFILE],
2167         [Specify path to jarfile manually.]),
2168     LIBXML_JAR=$withval)
2170 AC_ARG_WITH(flute-jar,
2171     AS_HELP_STRING([--with-flute-jar=JARFILE],
2172         [Specify path to jarfile manually.]),
2173     FLUTE_JAR=$withval)
2175 AC_ARG_WITH(jfreereport-jar,
2176     AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2177         [Specify path to jarfile manually.]),
2178     JFREEREPORT_JAR=$withval)
2180 AC_ARG_WITH(liblayout-jar,
2181     AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2182         [Specify path to jarfile manually.]),
2183     LIBLAYOUT_JAR=$withval)
2185 AC_ARG_WITH(libloader-jar,
2186     AS_HELP_STRING([--with-libloader-jar=JARFILE],
2187         [Specify path to jarfile manually.]),
2188     LIBLOADER_JAR=$withval)
2190 AC_ARG_WITH(libformula-jar,
2191     AS_HELP_STRING([--with-libformula-jar=JARFILE],
2192         [Specify path to jarfile manually.]),
2193     LIBFORMULA_JAR=$withval)
2195 AC_ARG_WITH(librepository-jar,
2196     AS_HELP_STRING([--with-librepository-jar=JARFILE],
2197         [Specify path to jarfile manually.]),
2198     LIBREPOSITORY_JAR=$withval)
2200 AC_ARG_WITH(libfonts-jar,
2201     AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2202         [Specify path to jarfile manually.]),
2203     LIBFONTS_JAR=$withval)
2205 AC_ARG_WITH(libserializer-jar,
2206     AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2207         [Specify path to jarfile manually.]),
2208     LIBSERIALIZER_JAR=$withval)
2210 AC_ARG_WITH(libbase-jar,
2211     AS_HELP_STRING([--with-libbase-jar=JARFILE],
2212         [Specify path to jarfile manually.]),
2213     LIBBASE_JAR=$withval)
2215 AC_ARG_WITH(system-odbc,
2216     AS_HELP_STRING([--with-system-odbc],
2217         [Use the odbc headers already on system.]),,
2218     [with_system_odbc="auto"])
2220 AC_ARG_WITH(system-sane,
2221     AS_HELP_STRING([--with-system-sane],
2222         [Use sane.h already on system.]),,
2223     [with_system_sane="$with_system_headers"])
2225 AC_ARG_WITH(system-bluez,
2226     AS_HELP_STRING([--with-system-bluez],
2227         [Use bluetooth.h already on system.]),,
2228     [with_system_bluez="$with_system_headers"])
2230 AC_ARG_WITH(system-curl,
2231     AS_HELP_STRING([--with-system-curl],
2232         [Use curl already on system.]),,
2233     [with_system_curl=auto])
2235 AC_ARG_WITH(system-boost,
2236     AS_HELP_STRING([--with-system-boost],
2237         [Use boost already on system.]),,
2238     [with_system_boost="$with_system_headers"])
2240 AC_ARG_WITH(system-glm,
2241     AS_HELP_STRING([--with-system-glm],
2242         [Use glm already on system.]),,
2243     [with_system_glm="$with_system_headers"])
2245 AC_ARG_WITH(system-hunspell,
2246     AS_HELP_STRING([--with-system-hunspell],
2247         [Use libhunspell already on system.]),,
2248     [with_system_hunspell="$with_system_libs"])
2250 libo_FUZZ_ARG_ENABLE(qrcodegen,
2251     AS_HELP_STRING([--disable-qrcodegen],
2252         [Disable use of qrcodegen external library.]))
2254 AC_ARG_WITH(system-qrcodegen,
2255     AS_HELP_STRING([--with-system-qrcodegen],
2256         [Use libqrcodegen already on system.]),,
2257     [with_system_qrcodegen="$with_system_libs"])
2259 AC_ARG_WITH(system-box2d,
2260     AS_HELP_STRING([--with-system-box2d],
2261         [Use box2d already on system.]),,
2262     [with_system_box2d="$with_system_libs"])
2264 AC_ARG_WITH(system-mythes,
2265     AS_HELP_STRING([--with-system-mythes],
2266         [Use mythes already on system.]),,
2267     [with_system_mythes="$with_system_libs"])
2269 AC_ARG_WITH(system-altlinuxhyph,
2270     AS_HELP_STRING([--with-system-altlinuxhyph],
2271         [Use ALTLinuxhyph already on system.]),,
2272     [with_system_altlinuxhyph="$with_system_libs"])
2274 AC_ARG_WITH(system-lpsolve,
2275     AS_HELP_STRING([--with-system-lpsolve],
2276         [Use lpsolve already on system.]),,
2277     [with_system_lpsolve="$with_system_libs"])
2279 AC_ARG_WITH(system-coinmp,
2280     AS_HELP_STRING([--with-system-coinmp],
2281         [Use CoinMP already on system.]),,
2282     [with_system_coinmp="$with_system_libs"])
2284 AC_ARG_WITH(system-liblangtag,
2285     AS_HELP_STRING([--with-system-liblangtag],
2286         [Use liblangtag library already on system.]),,
2287     [with_system_liblangtag="$with_system_libs"])
2289 AC_ARG_WITH(webdav,
2290     AS_HELP_STRING([--with-webdav],
2291         [Specify which library to use for webdav implementation.
2292          Possible values: "neon", "serf", "no". The default value is "neon".
2293          Example: --with-webdav="serf"]),
2294     WITH_WEBDAV=$withval,
2295     WITH_WEBDAV="neon")
2297 AC_ARG_WITH(linker-hash-style,
2298     AS_HELP_STRING([--with-linker-hash-style],
2299         [Use linker with --hash-style=<style> when linking shared objects.
2300          Possible values: "sysv", "gnu", "both". The default value is "gnu"
2301          if supported on the build system, and "sysv" otherwise.]))
2303 AC_ARG_WITH(jdk-home,
2304     AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2305         [If you have installed JDK 9 or later on your system please supply the
2306          path here. Note that this is not the location of the java command but the
2307          location of the entire distribution. In case of cross-compiling, this
2308          is the JDK of the host os. Use --with-build-platform-configure-options
2309          to point to a different build platform JDK.]),
2312 AC_ARG_WITH(help,
2313     AS_HELP_STRING([--with-help],
2314         [Enable the build of help. There is a special parameter "common" that
2315          can be used to bundle only the common part, .e.g help-specific icons.
2316          This is useful when you build the helpcontent separately.])
2317     [
2318                           Usage:     --with-help    build the old local help
2319                                  --without-help     no local help (default)
2320                                  --with-help=html   build the new HTML local help
2321                                  --with-help=online build the new HTML online help
2322     ],
2325 AC_ARG_WITH(omindex,
2326    AS_HELP_STRING([--with-omindex],
2327         [Enable the support of xapian-omega index for online help.])
2328    [
2329                          Usage: --with-omindex=server prepare the pages for omindex
2330                                 but let xapian-omega be built in server.
2331                                 --with-omindex=noxap do not prepare online pages
2332                                 for xapian-omega
2333   ],
2336 libo_FUZZ_ARG_WITH(java,
2337     AS_HELP_STRING([--with-java=<java command>],
2338         [Specify the name of the Java interpreter command. Typically "java"
2339          which is the default.
2341          To build without support for Java components, applets, accessibility
2342          or the XML filters written in Java, use --without-java or --with-java=no.]),
2343     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2344     [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2347 AC_ARG_WITH(jvm-path,
2348     AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2349         [Use a specific JVM search path at runtime.
2350          e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2353 AC_ARG_WITH(ant-home,
2354     AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2355         [If you have installed Apache Ant on your system, please supply the path here.
2356          Note that this is not the location of the Ant binary but the location
2357          of the entire distribution.]),
2360 AC_ARG_WITH(symbol-config,
2361     AS_HELP_STRING([--with-symbol-config],
2362         [Configuration for the crashreport symbol upload]),
2363         [],
2364         [with_symbol_config=no])
2366 AC_ARG_WITH(export-validation,
2367     AS_HELP_STRING([--without-export-validation],
2368         [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2369 ,with_export_validation=auto)
2371 AC_ARG_WITH(bffvalidator,
2372     AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2373         [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2374          Requires installed Microsoft Office Binary File Format Validator.
2375          Note: export-validation (--with-export-validation) is required to be turned on.
2376          See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2377 ,with_bffvalidator=no)
2379 libo_FUZZ_ARG_WITH(junit,
2380     AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2381         [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2382          --without-junit disables those tests. Not relevant in the --without-java case.]),
2383 ,with_junit=yes)
2385 AC_ARG_WITH(hamcrest,
2386     AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2387         [Specifies the hamcrest jar file to use for JUnit-based tests.
2388          --without-junit disables those tests. Not relevant in the --without-java case.]),
2389 ,with_hamcrest=yes)
2391 AC_ARG_WITH(perl-home,
2392     AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2393         [If you have installed Perl 5 Distribution, on your system, please
2394          supply the path here. Note that this is not the location of the Perl
2395          binary but the location of the entire distribution.]),
2398 libo_FUZZ_ARG_WITH(doxygen,
2399     AS_HELP_STRING(
2400         [--with-doxygen=<absolute path to doxygen executable>],
2401         [Specifies the doxygen executable to use when generating ODK C/C++
2402          documentation. --without-doxygen disables generation of ODK C/C++
2403          documentation. Not relevant in the --disable-odk case.]),
2404 ,with_doxygen=yes)
2406 AC_ARG_WITH(visual-studio,
2407     AS_HELP_STRING([--with-visual-studio=<2019>],
2408         [Specify which Visual Studio version to use in case several are
2409          installed. Currently only 2019 (default) is supported.]),
2412 AC_ARG_WITH(windows-sdk,
2413     AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2414         [Specify which Windows SDK, or "Windows Kit", version to use
2415          in case the one that came with the selected Visual Studio
2416          is not what you want for some reason. Note that not all compiler/SDK
2417          combinations are supported. The intent is that this option should not
2418          be needed.]),
2421 AC_ARG_WITH(lang,
2422     AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2423         [Use this option to build LibreOffice with additional UI language support.
2424          English (US) is always included by default.
2425          Separate multiple languages with space.
2426          For all languages, use --with-lang=ALL.]),
2429 AC_ARG_WITH(locales,
2430     AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2431         [Use this option to limit the locale information built in.
2432          Separate multiple locales with space.
2433          Very experimental and might well break stuff.
2434          Just a desperate measure to shrink code and data size.
2435          By default all the locales available is included.
2436          This option is completely unrelated to --with-lang.])
2437     [
2438                           Affects also our character encoding conversion
2439                           tables for encodings mainly targeted for a
2440                           particular locale, like EUC-CN and EUC-TW for
2441                           zh, ISO-2022-JP for ja.
2443                           Affects also our add-on break iterator data for
2444                           some languages.
2446                           For the default, all locales, don't use this switch at all.
2447                           Specifying just the language part of a locale means all matching
2448                           locales will be included.
2449     ],
2452 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2453 libo_FUZZ_ARG_WITH(krb5,
2454     AS_HELP_STRING([--with-krb5],
2455         [Enable MIT Kerberos 5 support in modules that support it.
2456          By default automatically enabled on platforms
2457          where a good system Kerberos 5 is available.]),
2460 libo_FUZZ_ARG_WITH(gssapi,
2461     AS_HELP_STRING([--with-gssapi],
2462         [Enable GSSAPI support in modules that support it.
2463          By default automatically enabled on platforms
2464          where a good system GSSAPI is available.]),
2467 AC_ARG_WITH(iwyu,
2468     AS_HELP_STRING([--with-iwyu],
2469         [Use given IWYU binary path to check unneeded includes instead of building.
2470          Use only if you are hacking on it.]),
2473 libo_FUZZ_ARG_WITH(lxml,
2474     AS_HELP_STRING([--without-lxml],
2475         [gla11y will use python lxml when available, potentially building a local copy if necessary.
2476          --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2477          report widget classes and ids.]),
2480 libo_FUZZ_ARG_WITH(latest-c++,
2481     AS_HELP_STRING([--with-latest-c++],
2482         [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2483          published standard.]),,
2484         [with_latest_c__=no])
2486 dnl ===================================================================
2487 dnl Branding
2488 dnl ===================================================================
2490 AC_ARG_WITH(branding,
2491     AS_HELP_STRING([--with-branding=/path/to/images],
2492         [Use given path to retrieve branding images set.])
2493     [
2494                           Search for intro.png about.svg and logo.svg.
2495                           If any is missing, default ones will be used instead.
2497                           Search also progress.conf for progress
2498                           settings on intro screen :
2500                           PROGRESSBARCOLOR="255,255,255" Set color of
2501                           progress bar. Comma separated RGB decimal values.
2502                           PROGRESSSIZE="407,6" Set size of progress bar.
2503                           Comma separated decimal values (width, height).
2504                           PROGRESSPOSITION="61,317" Set position of progress
2505                           bar from left,top. Comma separated decimal values.
2506                           PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2507                           bar frame. Comma separated RGB decimal values.
2508                           PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2509                           bar text. Comma separated RGB decimal values.
2510                           PROGRESSTEXTBASELINE="287" Set vertical position of
2511                           progress bar text from top. Decimal value.
2513                           Default values will be used if not found.
2514     ],
2518 AC_ARG_WITH(extra-buildid,
2519     AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2520         [Show addition build identification in about dialog.]),
2524 AC_ARG_WITH(vendor,
2525     AS_HELP_STRING([--with-vendor="John the Builder"],
2526         [Set vendor of the build.]),
2529 AC_ARG_WITH(android-package-name,
2530     AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2531         [Set Android package name of the build.]),
2534 AC_ARG_WITH(compat-oowrappers,
2535     AS_HELP_STRING([--with-compat-oowrappers],
2536         [Install oo* wrappers in parallel with
2537          lo* ones to keep backward compatibility.
2538          Has effect only with make distro-pack-install]),
2541 AC_ARG_WITH(os-version,
2542     AS_HELP_STRING([--with-os-version=<OSVERSION>],
2543         [For FreeBSD users, use this option to override the detected OSVERSION.]),
2546 AC_ARG_WITH(idlc-cpp,
2547     AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2548         [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2551 AC_ARG_WITH(parallelism,
2552     AS_HELP_STRING([--with-parallelism],
2553         [Number of jobs to run simultaneously during build. Parallel builds can
2554         save a lot of time on multi-cpu machines. Defaults to the number of
2555         CPUs on the machine, unless you configure --enable-icecream - then to
2556         40.]),
2559 AC_ARG_WITH(all-tarballs,
2560     AS_HELP_STRING([--with-all-tarballs],
2561         [Download all external tarballs unconditionally]))
2563 AC_ARG_WITH(gdrive-client-id,
2564     AS_HELP_STRING([--with-gdrive-client-id],
2565         [Provides the client id of the application for OAuth2 authentication
2566         on Google Drive. If either this or --with-gdrive-client-secret is
2567         empty, the feature will be disabled]),
2570 AC_ARG_WITH(gdrive-client-secret,
2571     AS_HELP_STRING([--with-gdrive-client-secret],
2572         [Provides the client secret of the application for OAuth2
2573         authentication on Google Drive. If either this or
2574         --with-gdrive-client-id is empty, the feature will be disabled]),
2577 AC_ARG_WITH(alfresco-cloud-client-id,
2578     AS_HELP_STRING([--with-alfresco-cloud-client-id],
2579         [Provides the client id of the application for OAuth2 authentication
2580         on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2581         empty, the feature will be disabled]),
2584 AC_ARG_WITH(alfresco-cloud-client-secret,
2585     AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2586         [Provides the client secret of the application for OAuth2
2587         authentication on Alfresco Cloud. If either this or
2588         --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2591 AC_ARG_WITH(onedrive-client-id,
2592     AS_HELP_STRING([--with-onedrive-client-id],
2593         [Provides the client id of the application for OAuth2 authentication
2594         on OneDrive. If either this or --with-onedrive-client-secret is
2595         empty, the feature will be disabled]),
2598 AC_ARG_WITH(onedrive-client-secret,
2599     AS_HELP_STRING([--with-onedrive-client-secret],
2600         [Provides the client secret of the application for OAuth2
2601         authentication on OneDrive. If either this or
2602         --with-onedrive-client-id is empty, the feature will be disabled]),
2604 dnl ===================================================================
2605 dnl Do we want to use pre-build binary tarball for recompile
2606 dnl ===================================================================
2608 if test "$enable_library_bin_tar" = "yes" ; then
2609     USE_LIBRARY_BIN_TAR=TRUE
2610 else
2611     USE_LIBRARY_BIN_TAR=
2613 AC_SUBST(USE_LIBRARY_BIN_TAR)
2615 dnl ===================================================================
2616 dnl Test whether build target is Release Build
2617 dnl ===================================================================
2618 AC_MSG_CHECKING([whether build target is Release Build])
2619 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2620     AC_MSG_RESULT([no])
2621     ENABLE_RELEASE_BUILD=
2622     GET_TASK_ALLOW_ENTITLEMENT='
2623         <!-- We want to be able to debug a hardened process when not building for release -->
2624         <key>com.apple.security.get-task-allow</key>
2625         <true/>'
2626 else
2627     AC_MSG_RESULT([yes])
2628     ENABLE_RELEASE_BUILD=TRUE
2629     GET_TASK_ALLOW_ENTITLEMENT=''
2631 AC_SUBST(ENABLE_RELEASE_BUILD)
2632 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2634 dnl ===================================================================
2635 dnl Test whether to sign Windows Build
2636 dnl ===================================================================
2637 AC_MSG_CHECKING([whether to sign windows build])
2638 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2639     AC_MSG_RESULT([yes])
2640     WINDOWS_BUILD_SIGNING="TRUE"
2641 else
2642     AC_MSG_RESULT([no])
2643     WINDOWS_BUILD_SIGNING="FALSE"
2645 AC_SUBST(WINDOWS_BUILD_SIGNING)
2647 dnl ===================================================================
2648 dnl MacOSX build and runtime environment options
2649 dnl ===================================================================
2651 AC_ARG_WITH(macosx-sdk,
2652     AS_HELP_STRING([--with-macosx-sdk=<version>],
2653         [Prefer a specific SDK for building.])
2654     [
2655                           If the requested SDK is not available, a search for the oldest one will be done.
2656                           With current Xcode versions, only the latest SDK is included, so this option is
2657                           not terribly useful. It works fine to build with a new SDK and run the result
2658                           on an older OS.
2660                           e. g.: --with-macosx-sdk=10.10
2662                           there are 3 options to control the MacOSX build:
2663                           --with-macosx-sdk (referred as 'sdk' below)
2664                           --with-macosx-version-min-required (referred as 'min' below)
2665                           --with-macosx-version-max-allowed (referred as 'max' below)
2667                           the connection between these value and the default they take is as follow:
2668                           ( ? means not specified on the command line, s means the SDK version found,
2669                           constraint: 8 <= x <= y <= z)
2671                           ==========================================
2672                            command line      || config result
2673                           ==========================================
2674                           min  | max  | sdk  || min   | max  | sdk  |
2675                           ?    | ?    | ?    || 10.10 | 10.s | 10.s |
2676                           ?    | ?    | 10.x || 10.10 | 10.x | 10.x |
2677                           ?    | 10.x | ?    || 10.10 | 10.s | 10.s |
2678                           ?    | 10.x | 10.y || 10.10 | 10.x | 10.y |
2679                           10.x | ?    | ?    || 10.x  | 10.s | 10.s |
2680                           10.x | ?    | 10.y || 10.x  | 10.y | 10.y |
2681                           10.x | 10.y | ?    || 10.x  | 10.y | 10.y |
2682                           10.x | 10.y | 10.z || 10.x  | 10.y | 10.z |
2685                           see: http://developer.apple.com/library/mac/#technotes/tn2064/_index.html
2686                           for a detailed technical explanation of these variables
2688                           Note: MACOSX_DEPLOYMENT_TARGET will be set to the value of 'min'.
2689     ],
2692 AC_ARG_WITH(macosx-version-min-required,
2693     AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2694         [set the minimum OS version needed to run the built LibreOffice])
2695     [
2696                           e. g.: --with-macosx-version-min-required=10.10
2697                           see --with-macosx-sdk for more info
2698     ],
2701 AC_ARG_WITH(macosx-version-max-allowed,
2702     AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2703         [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2704     [
2705                           e. g.: --with-macosx-version-max-allowed=10.10
2706                           see --with-macosx-sdk for more info
2707     ],
2711 dnl ===================================================================
2712 dnl options for stuff used during cross-compilation build
2713 dnl Not quite superseded by --with-build-platform-configure-options.
2714 dnl TODO: check, if the "force" option is still needed anywhere.
2715 dnl ===================================================================
2717 AC_ARG_WITH(system-icu-for-build,
2718     AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2719         [Use icu already on system for build tools (cross-compilation only).]))
2722 dnl ===================================================================
2723 dnl Check for incompatible options set by fuzzing, and reset those
2724 dnl automatically to working combinations
2725 dnl ===================================================================
2727 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2728         "$enable_dbus" != "$enable_avahi"; then
2729     AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2730     enable_avahi=$enable_dbus
2733 add_lopath_after ()
2735     if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2736         LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2737     fi
2740 add_lopath_before ()
2742     local IFS=${P_SEP}
2743     local path_cleanup
2744     local dir
2745     for dir in $LO_PATH ; do
2746         if test "$dir" != "$1" ; then
2747             path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2748         fi
2749     done
2750     LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2753 dnl ===================================================================
2754 dnl check for required programs (grep, awk, sed, bash)
2755 dnl ===================================================================
2757 pathmunge ()
2759     local new_path
2760     if test -n "$1"; then
2761         if test "$build_os" = "cygwin"; then
2762             if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2763                 PathFormat "$1"
2764                 new_path=`cygpath -sm "$formatted_path"`
2765             else
2766                 PathFormat "$1"
2767                 new_path=`cygpath -u "$formatted_path"`
2768             fi
2769         else
2770             new_path="$1"
2771         fi
2772         if test "$2" = "after"; then
2773             add_lopath_after "$new_path"
2774         else
2775             add_lopath_before "$new_path"
2776         fi
2777     fi
2780 AC_PROG_AWK
2781 AC_PATH_PROG( AWK, $AWK)
2782 if test -z "$AWK"; then
2783     AC_MSG_ERROR([install awk to run this script])
2786 AC_PATH_PROG(BASH, bash)
2787 if test -z "$BASH"; then
2788     AC_MSG_ERROR([bash not found in \$PATH])
2790 AC_SUBST(BASH)
2792 AC_MSG_CHECKING([for GNU or BSD tar])
2793 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2794     $a --version 2> /dev/null | egrep "GNU|bsdtar"  2>&1 > /dev/null
2795     if test $? -eq 0;  then
2796         GNUTAR=$a
2797         break
2798     fi
2799 done
2800 AC_MSG_RESULT($GNUTAR)
2801 if test -z "$GNUTAR"; then
2802     AC_MSG_ERROR([not found. install GNU or BSD tar.])
2804 AC_SUBST(GNUTAR)
2806 AC_MSG_CHECKING([for tar's option to strip components])
2807 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2808 if test $? -eq 0; then
2809     STRIP_COMPONENTS="--strip-components"
2810 else
2811     $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2812     if test $? -eq 0; then
2813         STRIP_COMPONENTS="--strip-path"
2814     else
2815         STRIP_COMPONENTS="unsupported"
2816     fi
2818 AC_MSG_RESULT($STRIP_COMPONENTS)
2819 if test x$STRIP_COMPONENTS = xunsupported; then
2820     AC_MSG_ERROR([you need a tar that is able to strip components.])
2822 AC_SUBST(STRIP_COMPONENTS)
2824 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2825 dnl desktop OSes from "mobile" ones.
2827 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2828 dnl In other words, that when building for an OS that is not a
2829 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2831 dnl Note the direction of the implication; there is no assumption that
2832 dnl cross-compiling would imply a non-desktop OS.
2834 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
2835     BUILD_TYPE="$BUILD_TYPE DESKTOP"
2836     AC_DEFINE(HAVE_FEATURE_DESKTOP)
2837     AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2840 # Whether to build "avmedia" functionality or not.
2842 if test -z "$enable_avmedia"; then
2843     enable_avmedia=yes
2846 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2847 if test "$enable_avmedia" = yes; then
2848     AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2849 else
2850     USE_AVMEDIA_DUMMY='TRUE'
2852 AC_SUBST(USE_AVMEDIA_DUMMY)
2854 # Decide whether to build database connectivity stuff (including
2855 # Base) or not. We probably don't want to on non-desktop OSes.
2856 if test -z "$enable_database_connectivity"; then
2857     # --disable-database-connectivity is unfinished work in progress
2858     # and the iOS test app doesn't link if we actually try to use it.
2859     # if test $_os != iOS -a $_os != Android; then
2860     if test $_os != iOS; then
2861         enable_database_connectivity=yes
2862     fi
2865 if test "$enable_database_connectivity" = yes; then
2866     BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2867     AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2870 if test -z "$enable_extensions"; then
2871     # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2872     if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2873         enable_extensions=yes
2874     fi
2877 if test "$enable_extensions" = yes; then
2878     BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2879     AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2882 if test -z "$enable_scripting"; then
2883     # Disable scripting for iOS unless specifically overridden
2884     # with --enable-scripting.
2885     if test $_os != iOS; then
2886         enable_scripting=yes
2887     fi
2890 DISABLE_SCRIPTING=''
2891 if test "$enable_scripting" = yes; then
2892     BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2893     AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2894 else
2895     DISABLE_SCRIPTING='TRUE'
2896     SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2899 if test $_os = iOS -o $_os = Android; then
2900     # Disable dynamic_loading always for iOS and Android
2901     enable_dynamic_loading=no
2902 elif test -z "$enable_dynamic_loading"; then
2903     # Otherwise enable it unless specifically disabled
2904     enable_dynamic_loading=yes
2907 DISABLE_DYNLOADING=''
2908 if test "$enable_dynamic_loading" = yes; then
2909     BUILD_TYPE="$BUILD_TYPE DYNLOADING"
2910 else
2911     DISABLE_DYNLOADING='TRUE'
2913 AC_SUBST(DISABLE_DYNLOADING)
2915 # remember SYSBASE value
2916 AC_SUBST(SYSBASE)
2918 dnl ===================================================================
2919 dnl  Sort out various gallery compilation options
2920 dnl ===================================================================
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         WITH_GALLERY_BUILD=TRUE
2925         AC_MSG_RESULT([build from source images internally])
2926     elif test "$with_galleries" = "no"; then
2927         WITH_GALLERY_BUILD=
2928         AC_MSG_RESULT([disable non-internal gallery build])
2929     else
2930         AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
2931     fi
2932 else
2933     if test $_os != iOS -a $_os != Android; then
2934         WITH_GALLERY_BUILD=TRUE
2935         AC_MSG_RESULT([internal src images for desktop])
2936     else
2937         WITH_GALLERY_BUILD=
2938         AC_MSG_RESULT([disable src image build])
2939     fi
2941 AC_SUBST(WITH_GALLERY_BUILD)
2943 dnl ===================================================================
2944 dnl  Checks if ccache is available
2945 dnl ===================================================================
2946 CCACHE_DEPEND_MODE=
2947 if test "$_os" = "WINNT"; then
2948     # on windows/VC build do not use ccache
2949     CCACHE=""
2950 elif test "$enable_ccache" = "no"; then
2951     CCACHE=""
2952 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
2953     case "%$CC%$CXX%" in
2954     # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
2955     # assume that's good then
2956     *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
2957         AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
2958         CCACHE_DEPEND_MODE=1
2959         ;;
2960     *)
2961         AC_PATH_PROG([CCACHE],[ccache],[not found])
2962         if test "$CCACHE" = "not found"; then
2963             CCACHE=""
2964         else
2965             CCACHE_DEPEND_MODE=1
2966             # Need to check for ccache version: otherwise prevents
2967             # caching of the results (like "-x objective-c++" for Mac)
2968             if test $_os = Darwin -o $_os = iOS; then
2969                 # Check ccache version
2970                 AC_MSG_CHECKING([whether version of ccache is suitable])
2971                 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
2972                 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
2973                 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
2974                     AC_MSG_RESULT([yes, $CCACHE_VERSION])
2975                 else
2976                     AC_MSG_RESULT([no, $CCACHE_VERSION])
2977                     CCACHE=""
2978                     CCACHE_DEPEND_MODE=
2979                 fi
2980             fi
2981         fi
2982         ;;
2983     esac
2984 else
2985     CCACHE=""
2987 if test "$enable_ccache" = "nodepend"; then
2988     CCACHE_DEPEND_MODE=""
2990 AC_SUBST(CCACHE_DEPEND_MODE)
2992 if test "$CCACHE" != ""; then
2993     ccache_size_msg=$([ccache -s | tail -n 1 | sed 's/^[^0-9]*//' | sed -e 's/\.[0-9]*//'])
2994     ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
2995     if test "$ccache_size" = ""; then
2996         ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
2997         if test "$ccache_size" = ""; then
2998             ccache_size=0
2999         fi
3000         # we could not determine the size or it was less than 1GB -> disable auto-ccache
3001         if test $ccache_size -lt 1024; then
3002             CCACHE=""
3003             AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3004             add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3005         else
3006             # warn that ccache may be too small for debug build
3007             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3008             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3009         fi
3010     else
3011         if test $ccache_size -lt 5; then
3012             #warn that ccache may be too small for debug build
3013             AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3014             add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3015         fi
3016     fi
3019 dnl ===================================================================
3020 dnl  Checks for C compiler,
3021 dnl  The check for the C++ compiler is later on.
3022 dnl ===================================================================
3023 if test "$_os" != "WINNT"; then
3024     GCC_HOME_SET="true"
3025     AC_MSG_CHECKING([gcc home])
3026     if test -z "$with_gcc_home"; then
3027         if test "$enable_icecream" = "yes"; then
3028             if test -d "/usr/lib/icecc/bin"; then
3029                 GCC_HOME="/usr/lib/icecc/"
3030             elif test -d "/usr/libexec/icecc/bin"; then
3031                 GCC_HOME="/usr/libexec/icecc/"
3032             elif test -d "/opt/icecream/bin"; then
3033                 GCC_HOME="/opt/icecream/"
3034             else
3035                 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3037             fi
3038         else
3039             GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3040             GCC_HOME_SET="false"
3041         fi
3042     else
3043         GCC_HOME="$with_gcc_home"
3044     fi
3045     AC_MSG_RESULT($GCC_HOME)
3046     AC_SUBST(GCC_HOME)
3048     if test "$GCC_HOME_SET" = "true"; then
3049         if test -z "$CC"; then
3050             CC="$GCC_HOME/bin/gcc"
3051             CC_BASE="gcc"
3052         fi
3053         if test -z "$CXX"; then
3054             CXX="$GCC_HOME/bin/g++"
3055             CXX_BASE="g++"
3056         fi
3057     fi
3060 COMPATH=`dirname "$CC"`
3061 if test "$COMPATH" = "."; then
3062     AC_PATH_PROGS(COMPATH, $CC)
3063     dnl double square bracket to get single because of M4 quote...
3064     COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3066 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3068 dnl ===================================================================
3069 dnl Java support
3070 dnl ===================================================================
3071 AC_MSG_CHECKING([whether to build with Java support])
3072 if test "$with_java" != "no"; then
3073     if test "$DISABLE_SCRIPTING" = TRUE; then
3074         AC_MSG_RESULT([no, overridden by --disable-scripting])
3075         ENABLE_JAVA=""
3076         with_java=no
3077     else
3078         AC_MSG_RESULT([yes])
3079         ENABLE_JAVA="TRUE"
3080         AC_DEFINE(HAVE_FEATURE_JAVA)
3081     fi
3082 else
3083     AC_MSG_RESULT([no])
3084     ENABLE_JAVA=""
3087 AC_SUBST(ENABLE_JAVA)
3089 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3091 dnl ENABLE_JAVA="" indicate no Java support at all
3093 dnl ===================================================================
3094 dnl Check macOS SDK and compiler
3095 dnl ===================================================================
3097 if test $_os = Darwin; then
3099     # If no --with-macosx-sdk option is given, look for one
3101     # The intent is that for "most" Mac-based developers, a suitable
3102     # SDK will be found automatically without any configure options.
3104     # For developers with a current Xcode, the lowest-numbered SDK
3105     # higher than or equal to the minimum required should be found.
3107     AC_MSG_CHECKING([what macOS SDK to use])
3108     for _macosx_sdk in ${with_macosx_sdk-11.1 11.0 10.15 10.14 10.13}; do
3109         MACOSX_SDK_PATH=`xcrun --sdk macosx${_macosx_sdk} --show-sdk-path 2> /dev/null`
3110         if test -d "$MACOSX_SDK_PATH"; then
3111             with_macosx_sdk="${_macosx_sdk}"
3112             break
3113         else
3114             MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${_macosx_sdk}.sdk"
3115             if test -d "$MACOSX_SDK_PATH"; then
3116                 with_macosx_sdk="${_macosx_sdk}"
3117                 break
3118             fi
3119         fi
3120     done
3121     if test ! -d "$MACOSX_SDK_PATH"; then
3122         AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3123     fi
3125     AC_MSG_RESULT([SDK $with_macosx_sdk at $MACOSX_SDK_PATH])
3127     case $with_macosx_sdk in
3128     10.13)
3129         MACOSX_SDK_VERSION=101300
3130         ;;
3131     10.14)
3132         MACOSX_SDK_VERSION=101400
3133         ;;
3134     10.15)
3135         MACOSX_SDK_VERSION=101500
3136         ;;
3137     11.0)
3138         MACOSX_SDK_VERSION=110000
3139         ;;
3140     11.1)
3141         MACOSX_SDK_VERSION=110100
3142         ;;
3143     *)
3144         AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value, supported values are 10.13--11.1])
3145         ;;
3146     esac
3148     if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3149         AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value for Apple Silicon])
3150     fi
3152     if test "$with_macosx_version_min_required" = "" ; then
3153         if test "$host_cpu" = x86_64; then
3154             with_macosx_version_min_required="10.10";
3155         else
3156             with_macosx_version_min_required="11.0";
3157         fi
3158     fi
3160     if test "$with_macosx_version_max_allowed" = "" ; then
3161         with_macosx_version_max_allowed="$with_macosx_sdk"
3162     fi
3164     # export this so that "xcrun" invocations later return matching values
3165     DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3166     DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3167     export DEVELOPER_DIR
3168     FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3169     MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3171     AC_MSG_CHECKING([whether Xcode is new enough])
3172     my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3173     my_xcode_ver2=${my_xcode_ver1#Xcode }
3174     my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3175     if test "$my_xcode_ver3" -ge 1103; then
3176         AC_MSG_RESULT([yes ($my_xcode_ver2)])
3177     else
3178         AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3179     fi
3181     case "$with_macosx_version_min_required" in
3182     10.10)
3183         MAC_OS_X_VERSION_MIN_REQUIRED="101000"
3184         ;;
3185     10.11)
3186         MAC_OS_X_VERSION_MIN_REQUIRED="101100"
3187         ;;
3188     10.12)
3189         MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3190         ;;
3191     10.13)
3192         MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3193         ;;
3194     10.14)
3195         MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3196         ;;
3197     10.15)
3198         MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3199         ;;
3200     10.16)
3201         MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3202         ;;
3203     11.0)
3204         MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3205         ;;
3206     11.1)
3207         MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3208         ;;
3209     *)
3210         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])
3211         ;;
3212     esac
3214     LIBTOOL=/usr/bin/libtool
3215     INSTALL_NAME_TOOL=install_name_tool
3216     if test -z "$save_CC"; then
3217         stdlib=-stdlib=libc++
3219         AC_MSG_CHECKING([what C compiler to use])
3220         CC="`xcrun -find clang`"
3221         CC_BASE=`first_arg_basename "$CC"`
3222         if test "$host_cpu" = x86_64; then
3223             CC+=" -target x86_64-apple-macos"
3224         else
3225             CC+=" -target arm64-apple-macos"
3226         fi
3227         CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3228         AC_MSG_RESULT([$CC])
3230         AC_MSG_CHECKING([what C++ compiler to use])
3231         CXX="`xcrun -find clang++`"
3232         CXX_BASE=`first_arg_basename "$CXX"`
3233         if test "$host_cpu" = x86_64; then
3234             CXX+=" -target x86_64-apple-macos"
3235         else
3236             CXX+=" -target arm64-apple-macos"
3237         fi
3238         CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3239         AC_MSG_RESULT([$CXX])
3241         INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3242         AR=`xcrun -find ar`
3243         NM=`xcrun -find nm`
3244         STRIP=`xcrun -find strip`
3245         LIBTOOL=`xcrun -find libtool`
3246         RANLIB=`xcrun -find ranlib`
3247     fi
3249     case "$with_macosx_version_max_allowed" in
3250     10.10)
3251         MAC_OS_X_VERSION_MAX_ALLOWED="101000"
3252         ;;
3253     10.11)
3254         MAC_OS_X_VERSION_MAX_ALLOWED="101100"
3255         ;;
3256     10.12)
3257         MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3258         ;;
3259     10.13)
3260         MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3261         ;;
3262     10.14)
3263         MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3264         ;;
3265     10.15)
3266         MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3267         ;;
3268     11.0)
3269         MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3270         ;;
3271     11.1)
3272         MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3273         ;;
3274     *)
3275         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])
3276         ;;
3277     esac
3279     AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3280     if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3281         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])
3282     else
3283         AC_MSG_RESULT([ok])
3284     fi
3286     AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3287     if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3288         AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3289     else
3290         AC_MSG_RESULT([ok])
3291     fi
3292     AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3293     AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3295     AC_MSG_CHECKING([whether to do code signing])
3297     if test "$enable_macosx_code_signing" = yes; then
3298         # By default use the first suitable certificate (?).
3300         # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3301         # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3302         # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3303         # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3304         # "Developer ID Application" one.
3306         identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3307         if test -n "$identity"; then
3308             MACOSX_CODESIGNING_IDENTITY=$identity
3309             pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3310             AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3311         else
3312             AC_MSG_ERROR([cannot determine identity to use])
3313         fi
3314     elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3315         MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3316         pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3317         AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3318     else
3319         AC_MSG_RESULT([no])
3320     fi
3322     AC_MSG_CHECKING([whether to create a Mac App Store package])
3324     if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3325         AC_MSG_RESULT([no])
3326     elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3327         AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3328     elif test "$enable_macosx_package_signing" = yes; then
3329         # By default use the first suitable certificate.
3330         # It should be a "3rd Party Mac Developer Installer" one
3332         identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3333         if test -n "$identity"; then
3334             MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3335             pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3336             AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3337         else
3338             AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3339         fi
3340     else
3341         MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3342         pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3343         AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3344     fi
3346     if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3347         AC_MSG_ERROR([You should not use the same identity for code and package signing])
3348     fi
3350     AC_MSG_CHECKING([whether to sandbox the application])
3352     if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3353         AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3354     elif test "$enable_macosx_sandbox" = yes; then
3355         ENABLE_MACOSX_SANDBOX=TRUE
3356         AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3357         AC_MSG_RESULT([yes])
3358     else
3359         AC_MSG_RESULT([no])
3360     fi
3362     AC_MSG_CHECKING([what macOS app bundle identifier to use])
3363     MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3364     AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3366 AC_SUBST(MACOSX_SDK_PATH)
3367 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3368 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3369 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3370 AC_SUBST(INSTALL_NAME_TOOL)
3371 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3372 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3373 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3374 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3375 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3377 dnl ===================================================================
3378 dnl Check iOS SDK and compiler
3379 dnl ===================================================================
3381 if test $_os = iOS; then
3382     AC_MSG_CHECKING([what iOS SDK to use])
3383     current_sdk_ver=14.3
3384     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"
3385     if test "$enable_ios_simulator" = "yes"; then
3386         platform=iPhoneSimulator
3387         versionmin=-mios-simulator-version-min=12.2
3388     else
3389         platform=iPhoneOS
3390         versionmin=-miphoneos-version-min=12.2
3391     fi
3392     xcode_developer=`xcode-select -print-path`
3394     for sdkver in $current_sdk_ver $older_sdk_vers; do
3395         t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3396         if test -d $t; then
3397             sysroot=$t
3398             break
3399         fi
3400     done
3402     if test -z "$sysroot"; then
3403         AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3404     fi
3406     AC_MSG_RESULT($sysroot)
3408     stdlib="-stdlib=libc++"
3410     AC_MSG_CHECKING([what C compiler to use])
3411     CC="`xcrun -find clang`"
3412     CC_BASE=`first_arg_basename "$CC"`
3413     CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3414     AC_MSG_RESULT([$CC])
3416     AC_MSG_CHECKING([what C++ compiler to use])
3417     CXX="`xcrun -find clang++`"
3418     CXX_BASE=`first_arg_basename "$CXX"`
3419     CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3420     AC_MSG_RESULT([$CXX])
3422     INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3423     AR=`xcrun -find ar`
3424     NM=`xcrun -find nm`
3425     STRIP=`xcrun -find strip`
3426     LIBTOOL=`xcrun -find libtool`
3427     RANLIB=`xcrun -find ranlib`
3430 AC_MSG_CHECKING([whether to treat the installation as read-only])
3432 if test $_os = Darwin; then
3433     enable_readonly_installset=yes
3434 elif test "$enable_extensions" != yes; then
3435     enable_readonly_installset=yes
3437 if test "$enable_readonly_installset" = yes; then
3438     AC_MSG_RESULT([yes])
3439     AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3440 else
3441     AC_MSG_RESULT([no])
3444 dnl ===================================================================
3445 dnl Structure of install set
3446 dnl ===================================================================
3448 if test $_os = Darwin; then
3449     LIBO_BIN_FOLDER=MacOS
3450     LIBO_ETC_FOLDER=Resources
3451     LIBO_LIBEXEC_FOLDER=MacOS
3452     LIBO_LIB_FOLDER=Frameworks
3453     LIBO_LIB_PYUNO_FOLDER=Resources
3454     LIBO_SHARE_FOLDER=Resources
3455     LIBO_SHARE_HELP_FOLDER=Resources/help
3456     LIBO_SHARE_JAVA_FOLDER=Resources/java
3457     LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3458     LIBO_SHARE_READMES_FOLDER=Resources/readmes
3459     LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3460     LIBO_SHARE_SHELL_FOLDER=Resources/shell
3461     LIBO_URE_BIN_FOLDER=MacOS
3462     LIBO_URE_ETC_FOLDER=Resources/ure/etc
3463     LIBO_URE_LIB_FOLDER=Frameworks
3464     LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3465     LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3466 elif test $_os = WINNT; then
3467     LIBO_BIN_FOLDER=program
3468     LIBO_ETC_FOLDER=program
3469     LIBO_LIBEXEC_FOLDER=program
3470     LIBO_LIB_FOLDER=program
3471     LIBO_LIB_PYUNO_FOLDER=program
3472     LIBO_SHARE_FOLDER=share
3473     LIBO_SHARE_HELP_FOLDER=help
3474     LIBO_SHARE_JAVA_FOLDER=program/classes
3475     LIBO_SHARE_PRESETS_FOLDER=presets
3476     LIBO_SHARE_READMES_FOLDER=readmes
3477     LIBO_SHARE_RESOURCE_FOLDER=program/resource
3478     LIBO_SHARE_SHELL_FOLDER=program/shell
3479     LIBO_URE_BIN_FOLDER=program
3480     LIBO_URE_ETC_FOLDER=program
3481     LIBO_URE_LIB_FOLDER=program
3482     LIBO_URE_MISC_FOLDER=program
3483     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3484 else
3485     LIBO_BIN_FOLDER=program
3486     LIBO_ETC_FOLDER=program
3487     LIBO_LIBEXEC_FOLDER=program
3488     LIBO_LIB_FOLDER=program
3489     LIBO_LIB_PYUNO_FOLDER=program
3490     LIBO_SHARE_FOLDER=share
3491     LIBO_SHARE_HELP_FOLDER=help
3492     LIBO_SHARE_JAVA_FOLDER=program/classes
3493     LIBO_SHARE_PRESETS_FOLDER=presets
3494     LIBO_SHARE_READMES_FOLDER=readmes
3495     if test "$enable_fuzzers" != yes; then
3496         LIBO_SHARE_RESOURCE_FOLDER=program/resource
3497     else
3498         LIBO_SHARE_RESOURCE_FOLDER=resource
3499     fi
3500     LIBO_SHARE_SHELL_FOLDER=program/shell
3501     LIBO_URE_BIN_FOLDER=program
3502     LIBO_URE_ETC_FOLDER=program
3503     LIBO_URE_LIB_FOLDER=program
3504     LIBO_URE_MISC_FOLDER=program
3505     LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3507 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3508 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3509 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3510 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3511 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3512 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3513 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3514 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3515 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3516 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3517 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3518 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3519 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3520 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3521 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3522 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3524 # Not all of them needed in config_host.mk, add more if need arises
3525 AC_SUBST(LIBO_BIN_FOLDER)
3526 AC_SUBST(LIBO_ETC_FOLDER)
3527 AC_SUBST(LIBO_LIB_FOLDER)
3528 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3529 AC_SUBST(LIBO_SHARE_FOLDER)
3530 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3531 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3532 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3533 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3534 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3535 AC_SUBST(LIBO_URE_BIN_FOLDER)
3536 AC_SUBST(LIBO_URE_ETC_FOLDER)
3537 AC_SUBST(LIBO_URE_LIB_FOLDER)
3538 AC_SUBST(LIBO_URE_MISC_FOLDER)
3539 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3541 dnl ===================================================================
3542 dnl Windows specific tests and stuff
3543 dnl ===================================================================
3545 reg_get_value()
3547     # Return value: $regvalue
3548     unset regvalue
3550     if test "$build_os" = "wsl"; then
3551         regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3552         return
3553     fi
3555     local _regentry="/proc/registry${1}/${2}"
3556     if test -f "$_regentry"; then
3557         # Stop bash complaining about \0 bytes in input, as it can't handle them.
3558         # Registry keys read via /proc/registry* are always \0 terminated!
3559         local _regvalue=$(tr -d '\0' < "$_regentry")
3560         if test $? -eq 0; then
3561             regvalue=$_regvalue
3562         fi
3563     fi
3566 # Get a value from the 32-bit side of the Registry
3567 reg_get_value_32()
3569     reg_get_value "32" "$1"
3572 # Get a value from the 64-bit side of the Registry
3573 reg_get_value_64()
3575     reg_get_value "64" "$1"
3578 case "$host_os" in
3579 cygwin*|wsl*)
3580     COM=MSC
3581     USING_X11=
3582     OS=WNT
3583     RTL_OS=Windows
3584     if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3585         P_SEP=";"
3586     else
3587         P_SEP=:
3588     fi
3589     case "$host_cpu" in
3590     x86_64)
3591         CPUNAME=X86_64
3592         RTL_ARCH=X86_64
3593         PLATFORMID=windows_x86_64
3594         WINDOWS_X64=1
3595         SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3596         WIN_HOST_ARCH="x64"
3597         WIN_MULTI_ARCH="x86"
3598         WIN_HOST_BITS=64
3599         ;;
3600     i*86)
3601         CPUNAME=INTEL
3602         RTL_ARCH=x86
3603         PLATFORMID=windows_x86
3604         WIN_HOST_ARCH="x86"
3605         WIN_HOST_BITS=32
3606         WIN_OTHER_ARCH="x64"
3607         ;;
3608     aarch64)
3609         CPUNAME=ARM64
3610         RTL_ARCH=arm64
3611         PLATFORMID=windows_arm64
3612         WINDOWS_X64=1
3613         SCPDEFS="$SCPDEFS -DWINDOWS_ARM64"
3614         WIN_HOST_ARCH="arm64"
3615         WIN_HOST_BITS=64
3616         with_ucrt_dir=no
3617         ;;
3618     *)
3619         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3620         ;;
3621     esac
3623     case "$build_cpu" in
3624     x86_64) WIN_BUILD_ARCH="x64" ;;
3625     i*86) WIN_BUILD_ARCH="x86" ;;
3626     aarch64) WIN_BUILD_ARCH="arm64" ;;
3627     *)
3628         AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3629         ;;
3630     esac
3632     SCPDEFS="$SCPDEFS -D_MSC_VER"
3633     ;;
3634 esac
3636 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3637 # other-arch won't, but wouldn't break the build (x64 on x86).
3638 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3639     AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3643 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3644     # To allow building Windows multi-arch releases without cross-tooling
3645     if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3646         cross_compiling="yes"
3647     fi
3649 if test "$cross_compiling" = "yes"; then
3650     export CROSS_COMPILING=TRUE
3651 else
3652     CROSS_COMPILING=
3653     BUILD_TYPE="$BUILD_TYPE NATIVE"
3655 AC_SUBST(CROSS_COMPILING)
3657 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3658 # NOTE: must _not_ be used for bundled external libraries!
3659 ISYSTEM=
3660 if test "$GCC" = "yes"; then
3661     AC_MSG_CHECKING( for -isystem )
3662     save_CFLAGS=$CFLAGS
3663     CFLAGS="$CFLAGS -Werror"
3664     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3665     CFLAGS=$save_CFLAGS
3666     if test -n "$ISYSTEM"; then
3667         AC_MSG_RESULT(yes)
3668     else
3669         AC_MSG_RESULT(no)
3670     fi
3672 if test -z "$ISYSTEM"; then
3673     # fall back to using -I
3674     ISYSTEM=-I
3676 AC_SUBST(ISYSTEM)
3678 dnl ===================================================================
3679 dnl  Check which Visual Studio compiler is used
3680 dnl ===================================================================
3682 map_vs_year_to_version()
3684     # Return value: $vsversion
3686     unset vsversion
3688     case $1 in
3689     2019)
3690         vsversion=16;;
3691     *)
3692         AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3693     esac
3696 vs_versions_to_check()
3698     # Args: $1 (optional) : versions to check, in the order of preference
3699     # Return value: $vsversions
3701     unset vsversions
3703     if test -n "$1"; then
3704         map_vs_year_to_version "$1"
3705         vsversions=$vsversion
3706     else
3707         # We accept only 2019
3708         vsversions="16"
3709     fi
3712 win_get_env_from_vsvars32bat()
3714     local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3715     # Also seems to be located in another directory under the same name: vsvars32.bat
3716     # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3717     printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3718     # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3719     printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3720     local result
3721     if test "$build_os" = "wsl"; then
3722         result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3723     else
3724         chmod +x $WRAPPERBATCHFILEPATH
3725         result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3726     fi
3727     rm -f $WRAPPERBATCHFILEPATH
3728     printf '%s' "$result"
3731 find_ucrt()
3733     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3734     if test -n "$regvalue"; then
3735         PathFormat "$regvalue"
3736         UCRTSDKDIR=$formatted_path_unix
3737         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3738         UCRTVERSION=$regvalue
3739         # Rest if not exist
3740         if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3741           UCRTSDKDIR=
3742         fi
3743     fi
3744     if test -z "$UCRTSDKDIR"; then
3745         ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3746         ide_env_file="${ide_env_dir}VsDevCmd.bat"
3747         if test -f "$ide_env_file"; then
3748             PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3749             UCRTSDKDIR=$formatted_path
3750             UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3751             dnl Hack needed at least by tml:
3752             if test "$UCRTVERSION" = 10.0.15063.0 \
3753                 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3754                 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3755             then
3756                 UCRTVERSION=10.0.14393.0
3757             fi
3758         else
3759           AC_MSG_ERROR([No UCRT found])
3760         fi
3761     fi
3764 find_msvc()
3766     # Find Visual C++ 2019
3767     # Args: $1 (optional) : The VS version year
3768     # Return values: $vctest, $vcyear, $vcnum, $vcnumwithdot, $vcbuildnumber
3770     unset vctest vcnum vcnumwithdot vcbuildnumber
3772     vs_versions_to_check "$1"
3773     if test "$build_os" = wsl; then
3774         vswhere="$PROGRAMFILESX86"
3775     else
3776         vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3777     fi
3778     vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3779     PathFormat "$vswhere"
3780     vswhere=$formatted_path_unix
3781     for ver in $vsversions; do
3782         vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3783         # Fall back to all MS products (this includes VC++ Build Tools)
3784         if ! test -n "$vswhereoutput"; then
3785             AC_MSG_CHECKING([VC++ Build Tools and similar])
3786             vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3787         fi
3788         if test -n "$vswhereoutput"; then
3789             PathFormat "$vswhereoutput"
3790             vctest=$formatted_path_unix
3791             break
3792         fi
3793     done
3795     if test -n "$vctest"; then
3796         vcnumwithdot="$ver.0"
3797         case "$vcnumwithdot" in
3798         16.0)
3799             vcyear=2019
3800             vcnum=160
3801             ;;
3802         esac
3803         vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3805     fi
3808 test_cl_exe()
3810     AC_MSG_CHECKING([$1 compiler])
3812     CL_EXE_PATH="$2/cl.exe"
3814     if test ! -f "$CL_EXE_PATH"; then
3815         if test "$1" = "multi-arch"; then
3816             AC_MSG_WARN([no compiler (cl.exe) in $2])
3817             return 1
3818         else
3819             AC_MSG_ERROR([no compiler (cl.exe) in $2])
3820         fi
3821     fi
3823     dnl ===========================================================
3824     dnl  Check for the corresponding mspdb*.dll
3825     dnl ===========================================================
3827     # MSVC 15.0 has libraries from 14.0?
3828     mspdbnum="140"
3830     if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3831         AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3832     fi
3834     # The compiles has to find its shared libraries
3835     OLD_PATH="$PATH"
3836     TEMP_PATH=`cygpath -d "$2"`
3837     PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3839     if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3840         AC_MSG_ERROR([no compiler (cl.exe) in $2])
3841     fi
3843     PATH="$OLD_PATH"
3845     AC_MSG_RESULT([$CL_EXE_PATH])
3848 SOLARINC=
3849 MSBUILD_PATH=
3850 DEVENV=
3851 if test "$_os" = "WINNT"; then
3852     AC_MSG_CHECKING([Visual C++])
3853     find_msvc "$with_visual_studio"
3854     if test -z "$vctest"; then
3855         if test -n "$with_visual_studio"; then
3856             AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3857         else
3858             AC_MSG_ERROR([no Visual Studio 2019 installation found])
3859         fi
3860     fi
3861     AC_MSG_RESULT([])
3863     VC_PRODUCT_DIR="$vctest/VC"
3864     COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3866     # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3867     if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3868         MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3869         test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3870         if test $? -ne 0; then
3871             WIN_MULTI_ARCH=""
3872             WIN_OTHER_ARCH=""
3873         fi
3874     fi
3876     if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3877         MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3878         test_cl_exe "build" "$MSVC_BUILD_PATH"
3879     fi
3881     if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3882         MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3883         test_cl_exe "host" "$MSVC_HOST_PATH"
3884     else
3885         MSVC_HOST_PATH="$MSVC_BUILD_PATH"
3886     fi
3888     AC_MSG_CHECKING([for short pathname of VC product directory])
3889     VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
3890     AC_MSG_RESULT([$VC_PRODUCT_DIR])
3892     UCRTSDKDIR=
3893     UCRTVERSION=
3895     AC_MSG_CHECKING([for UCRT location])
3896     find_ucrt
3897     # find_ucrt errors out if it doesn't find it
3898     AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
3899     PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
3900     ucrtincpath_formatted=$formatted_path
3901     # SOLARINC is used for external modules and must be set too.
3902     # And no, it's not sufficient to set SOLARINC only, as configure
3903     # itself doesn't honour it.
3904     SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
3905     CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
3906     CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
3907     CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
3909     AC_SUBST(UCRTSDKDIR)
3910     AC_SUBST(UCRTVERSION)
3912     AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
3913     # Find the proper version of MSBuild.exe to use based on the VS version
3914     reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
3915     if test -n "$regvalue" ; then
3916         AC_MSG_RESULT([found: $regvalue])
3917         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3918     else
3919         if test "$vcnumwithdot" = "16.0"; then
3920             if test "$WIN_BUILD_ARCH" != "x64"; then
3921                 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
3922             else
3923                 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
3924             fi
3925         else
3926             if test "$WIN_BUILD_ARCH" != "x64"; then
3927                 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin"
3928             else
3929                 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64"
3930             fi
3931         fi
3932         MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3933         AC_MSG_RESULT([$regvalue])
3934     fi
3936     # Find the version of devenv.exe
3937     # MSVC 2017 devenv does not start properly from a DOS 8.3 path
3938     DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
3939     DEVENV_unix=$(cygpath -u "$DEVENV")
3940     if test ! -e "$DEVENV_unix"; then
3941         AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
3942     fi
3944     dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
3945     dnl needed when building CLR code:
3946     if test -z "$MSVC_CXX"; then
3947         # This gives us a posix path with 8.3 filename restrictions
3948         MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
3949     fi
3951     if test -z "$CC"; then
3952         CC=$MSVC_CXX
3953         CC_BASE=`first_arg_basename "$CC"`
3954     fi
3955     if test -z "$CXX"; then
3956         CXX=$MSVC_CXX
3957         CXX_BASE=`first_arg_basename "$CXX"`
3958     fi
3960     if test -n "$CC"; then
3961         # Remove /cl.exe from CC case insensitive
3962         AC_MSG_NOTICE([found Visual C++ $vcyear])
3964         main_include_dir=`cygpath -d -m "$COMPATH/Include"`
3965         CPPFLAGS="$CPPFLAGS -I$main_include_dir"
3967         PathFormat "$COMPATH"
3968         COMPATH=`win_short_path_for_make "$formatted_path"`
3970         VCVER=$vcnum
3972         # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess...  Assuming newer ones
3973         # are always "better", we list them in reverse chronological order.
3975         case "$vcnum" in
3976         160)
3977             WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
3978             ;;
3979         esac
3981         # The expectation is that --with-windows-sdk should not need to be used
3982         if test -n "$with_windows_sdk"; then
3983             case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
3984             *" "$with_windows_sdk" "*)
3985                 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
3986                 ;;
3987             *)
3988                 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
3989                 ;;
3990             esac
3991         fi
3993         # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
3994         ac_objext=obj
3995         ac_exeext=exe
3997     else
3998         AC_MSG_ERROR([Visual C++ not found after all, huh])
3999     fi
4001     AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.4])
4002     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4003         // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4004         // between Visual Studio versions and _MSC_VER:
4005         #if _MSC_VER < 1924
4006         #error
4007         #endif
4008     ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4010     # Check for 64-bit (cross-)compiler to use to build the 64-bit
4011     # version of the Explorer extension (and maybe other small
4012     # bits, too) needed when installing a 32-bit LibreOffice on a
4013     # 64-bit OS. The 64-bit Explorer extension is a feature that
4014     # has been present since long in OOo. Don't confuse it with
4015     # building LibreOffice itself as 64-bit code.
4017     BUILD_X64=
4018     CXX_X64_BINARY=
4020     if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4021         AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4022         if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4023              -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4024         then
4025             BUILD_X64=TRUE
4026             CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4027             AC_MSG_RESULT([found])
4028         else
4029             AC_MSG_RESULT([not found])
4030             AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4031         fi
4032     elif test "$WIN_HOST_ARCH" = "x64"; then
4033         CXX_X64_BINARY=$CXX
4034     fi
4035     AC_SUBST(BUILD_X64)
4037     # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4038     AC_SUBST(CXX_X64_BINARY)
4040     # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4041     # needed to support TWAIN scan on both 32- and 64-bit systems
4043     case "$WIN_HOST_ARCH" in
4044     x64)
4045         AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4046         if test -n "$CXX_X86_BINARY"; then
4047             BUILD_X86=TRUE
4048             AC_MSG_RESULT([preset])
4049         elif test -n "$WIN_MULTI_ARCH"; then
4050             BUILD_X86=TRUE
4051             CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4052             CXX_X86_BINARY+=" /arch:SSE"
4053             AC_MSG_RESULT([found])
4054         else
4055             AC_MSG_RESULT([not found])
4056             AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4057         fi
4058         ;;
4059     x86)
4060         BUILD_X86=TRUE
4061         CXX_X86_BINARY=$MSVC_CXX
4062         ;;
4063     esac
4064     AC_SUBST(BUILD_X86)
4065     AC_SUBST(CXX_X86_BINARY)
4067 AC_SUBST(VCVER)
4068 AC_SUBST(DEVENV)
4069 AC_SUBST(MSVC_CXX)
4071 COM_IS_CLANG=
4072 AC_MSG_CHECKING([whether the compiler is actually Clang])
4073 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4074     #ifndef __clang__
4075     you lose
4076     #endif
4077     int foo=42;
4078     ]])],
4079     [AC_MSG_RESULT([yes])
4080      COM_IS_CLANG=TRUE],
4081     [AC_MSG_RESULT([no])])
4082 AC_SUBST(COM_IS_CLANG)
4084 CC_PLAIN=$CC
4085 CLANGVER=
4086 if test "$COM_IS_CLANG" = TRUE; then
4087     AC_MSG_CHECKING([whether Clang is new enough])
4088     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4089         #if !defined __apple_build_version__
4090         #error
4091         #endif
4092         ]])],
4093         [my_apple_clang=yes],[my_apple_clang=])
4094     if test "$my_apple_clang" = yes; then
4095         AC_MSG_RESULT([assumed yes (Apple Clang)])
4096     else
4097         if test "$_os" = WINNT; then
4098             dnl In which case, assume clang-cl:
4099             my_args="/EP /TC"
4100             dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4101             dnl clang-cl:
4102             CC_PLAIN=
4103             for i in $CC; do
4104                 case $i in
4105                 -FIIntrin.h)
4106                     ;;
4107                 *)
4108                     CC_PLAIN="$CC_PLAIN $i"
4109                     ;;
4110                 esac
4111             done
4112         else
4113             my_args="-E -P"
4114         fi
4115         clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4116         CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4117         CLANGVER=`echo $clang_version \
4118             | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4119         if test "$CLANGVER" -ge 50002; then
4120             AC_MSG_RESULT([yes ($clang_version)])
4121         else
4122             AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4123         fi
4124         AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4125         AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4126     fi
4129 SHOWINCLUDES_PREFIX=
4130 if test "$_os" = WINNT; then
4131     dnl We need to guess the prefix of the -showIncludes output, it can be
4132     dnl localized
4133     AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4134     echo "#include <stdlib.h>" > conftest.c
4135     SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4136         grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4137     rm -f conftest.c conftest.obj
4138     if test -z "$SHOWINCLUDES_PREFIX"; then
4139         AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4140     else
4141         AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4142     fi
4144 AC_SUBST(SHOWINCLUDES_PREFIX)
4147 # prefix C with ccache if needed
4149 if test "$CCACHE" != ""; then
4150     AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4152     AC_LANG_PUSH([C])
4153     save_CFLAGS=$CFLAGS
4154     CFLAGS="$CFLAGS --ccache-skip -O2"
4155     dnl an empty program will do, we're checking the compiler flags
4156     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4157                       [use_ccache=yes], [use_ccache=no])
4158     CFLAGS=$save_CFLAGS
4159     if test $use_ccache = yes; then
4160         AC_MSG_RESULT([yes])
4161     else
4162         CC="$CCACHE $CC"
4163         CC_BASE="ccache $CC_BASE"
4164         AC_MSG_RESULT([no])
4165     fi
4166     AC_LANG_POP([C])
4169 # ===================================================================
4170 # check various GCC options that Clang does not support now but maybe
4171 # will somewhen in the future, check them even for GCC, so that the
4172 # flags are set
4173 # ===================================================================
4175 HAVE_GCC_GGDB2=
4176 if test "$GCC" = "yes"; then
4177     AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4178     save_CFLAGS=$CFLAGS
4179     CFLAGS="$CFLAGS -Werror -ggdb2"
4180     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4181     CFLAGS=$save_CFLAGS
4182     if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4183         AC_MSG_RESULT([yes])
4184     else
4185         AC_MSG_RESULT([no])
4186     fi
4188     if test "$host_cpu" = "m68k"; then
4189         AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4190         save_CFLAGS=$CFLAGS
4191         CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4192         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4193         CFLAGS=$save_CFLAGS
4194         if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4195             AC_MSG_RESULT([yes])
4196         else
4197             AC_MSG_ERROR([no])
4198         fi
4199     fi
4201 AC_SUBST(HAVE_GCC_GGDB2)
4203 dnl ===================================================================
4204 dnl  Test the gcc version
4205 dnl ===================================================================
4206 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4207     AC_MSG_CHECKING([the GCC version])
4208     _gcc_version=`$CC -dumpversion`
4209     gcc_full_version=$(printf '%s' "$_gcc_version" | \
4210         $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4211     GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4213     AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4215     if test "$gcc_full_version" -lt 70000; then
4216         AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4217     fi
4218 else
4219     # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4220     # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4221     # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4222     # (which reports itself as GCC 4.2.1).
4223     GCC_VERSION=
4225 AC_SUBST(GCC_VERSION)
4227 dnl Set the ENABLE_DBGUTIL variable
4228 dnl ===================================================================
4229 AC_MSG_CHECKING([whether to build with additional debug utilities])
4230 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4231     ENABLE_DBGUTIL="TRUE"
4232     # this is an extra var so it can have different default on different MSVC
4233     # versions (in case there are version specific problems with it)
4234     MSVC_USE_DEBUG_RUNTIME="TRUE"
4236     AC_MSG_RESULT([yes])
4237     # cppunit and graphite expose STL in public headers
4238     if test "$with_system_cppunit" = "yes"; then
4239         AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4240     else
4241         with_system_cppunit=no
4242     fi
4243     if test "$with_system_graphite" = "yes"; then
4244         AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4245     else
4246         with_system_graphite=no
4247     fi
4248     if test "$with_system_orcus" = "yes"; then
4249         AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4250     else
4251         with_system_orcus=no
4252     fi
4253     if test "$with_system_libcmis" = "yes"; then
4254         AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4255     else
4256         with_system_libcmis=no
4257     fi
4258     if test "$with_system_hunspell" = "yes"; then
4259         AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4260     else
4261         with_system_hunspell=no
4262     fi
4263     if test "$with_system_gpgmepp" = "yes"; then
4264         AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4265     else
4266         with_system_gpgmepp=no
4267     fi
4268     # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4269     # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4270     # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4271     # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4272     # of those two is using the system variant:
4273     if test "$with_system_libnumbertext" = "yes"; then
4274         AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4275     else
4276         with_system_libnumbertext=no
4277     fi
4278     if test "$with_system_libwps" = "yes"; then
4279         AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4280     else
4281         with_system_libwps=no
4282     fi
4283 else
4284     ENABLE_DBGUTIL=""
4285     MSVC_USE_DEBUG_RUNTIME=""
4286     AC_MSG_RESULT([no])
4288 AC_SUBST(ENABLE_DBGUTIL)
4289 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4291 dnl Set the ENABLE_DEBUG variable.
4292 dnl ===================================================================
4293 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4294     AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4296 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4297     if test -z "$libo_fuzzed_enable_debug"; then
4298         AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4299     else
4300         AC_MSG_NOTICE([Resetting --enable-debug=yes])
4301         enable_debug=yes
4302     fi
4305 AC_MSG_CHECKING([whether to do a debug build])
4306 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4307     ENABLE_DEBUG="TRUE"
4308     if test -n "$ENABLE_DBGUTIL" ; then
4309         AC_MSG_RESULT([yes (dbgutil)])
4310     else
4311         AC_MSG_RESULT([yes])
4312     fi
4313 else
4314     ENABLE_DEBUG=""
4315     AC_MSG_RESULT([no])
4317 AC_SUBST(ENABLE_DEBUG)
4319 dnl ===================================================================
4320 dnl Select the linker to use (gold/lld/ld.bfd).
4321 dnl This is done only after compiler checks (need to know if Clang is
4322 dnl used, for different defaults) and after checking if a debug build
4323 dnl is wanted (non-debug builds get the default linker if not explicitly
4324 dnl specified otherwise).
4325 dnl All checks for linker features/options should come after this.
4326 dnl ===================================================================
4327 check_use_ld()
4329     use_ld=-fuse-ld=${1%%:*}
4330     use_ld_path=${1#*:}
4331     if test "$use_ld_path" != "$1"; then
4332         use_ld="$use_ld --ld-path=$use_ld_path"
4333     fi
4334     use_ld_fail_if_error=$2
4335     use_ld_ok=
4336     AC_MSG_CHECKING([for $use_ld linker support])
4337     use_ld_ldflags_save="$LDFLAGS"
4338     LDFLAGS="$LDFLAGS $use_ld"
4339     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4340 #include <stdio.h>
4341         ],[
4342 printf ("hello world\n");
4343         ])], USE_LD=$use_ld, [])
4344     if test -n "$USE_LD"; then
4345         AC_MSG_RESULT( yes )
4346         use_ld_ok=yes
4347     else
4348         if test -n "$use_ld_fail_if_error"; then
4349             AC_MSG_ERROR( no )
4350         else
4351             AC_MSG_RESULT( no )
4352         fi
4353     fi
4354     if test -n "$use_ld_ok"; then
4355         dnl keep the value of LDFLAGS
4356         return 0
4357     fi
4358     LDFLAGS="$use_ld_ldflags_save"
4359     return 1
4361 USE_LD=
4362 if test "$enable_ld" != "no"; then
4363     if test "$GCC" = "yes"; then
4364         if test -n "$enable_ld"; then
4365             check_use_ld "$enable_ld" fail_if_error
4366         elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4367             dnl non-debug builds default to the default linker
4368             true
4369         elif test -n "$COM_IS_CLANG"; then
4370             check_use_ld lld
4371             if test $? -ne 0; then
4372                 check_use_ld gold
4373             fi
4374         else
4375             # For gcc first try gold, new versions also support lld.
4376             check_use_ld gold
4377             if test $? -ne 0; then
4378                 check_use_ld lld
4379             fi
4380         fi
4381         ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4382         rm conftest.out
4383         ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4384         if test -z "$ld_used"; then
4385             ld_used="unknown"
4386         fi
4387         AC_MSG_CHECKING([for linker that is used])
4388         AC_MSG_RESULT([$ld_used])
4389         if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4390             if echo "$ld_used" | grep -q "^GNU ld"; then
4391                 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4392                 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4393             fi
4394         fi
4395     else
4396         if test "$enable_ld" = "yes"; then
4397             AC_MSG_ERROR([--enable-ld not supported])
4398         fi
4399     fi
4401 AC_SUBST(USE_LD)
4403 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4404 if test "$GCC" = "yes"; then
4405     AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4406     bsymbolic_functions_ldflags_save=$LDFLAGS
4407     LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4408     AC_LINK_IFELSE([AC_LANG_PROGRAM([
4409 #include <stdio.h>
4410         ],[
4411 printf ("hello world\n");
4412         ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4413     if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4414         AC_MSG_RESULT( found )
4415     else
4416         AC_MSG_RESULT( not found )
4417     fi
4418     LDFLAGS=$bsymbolic_functions_ldflags_save
4420 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4422 LD_GC_SECTIONS=
4423 if test "$GCC" = "yes"; then
4424     for flag in "--gc-sections" "-dead_strip"; do
4425         AC_MSG_CHECKING([for $flag linker support])
4426         ldflags_save=$LDFLAGS
4427         LDFLAGS="$LDFLAGS -Wl,$flag"
4428         AC_LINK_IFELSE([AC_LANG_PROGRAM([
4429 #include <stdio.h>
4430             ],[
4431 printf ("hello world\n");
4432             ])],[
4433             LD_GC_SECTIONS="-Wl,$flag"
4434             AC_MSG_RESULT( found )
4435             ], [
4436             AC_MSG_RESULT( not found )
4437             ])
4438         LDFLAGS=$ldflags_save
4439         if test -n "$LD_GC_SECTIONS"; then
4440             break
4441         fi
4442     done
4444 AC_SUBST(LD_GC_SECTIONS)
4446 HAVE_GSPLIT_DWARF=
4447 if test "$enable_split_debug" != no; then
4448     dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4449     if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4450         AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4451         save_CFLAGS=$CFLAGS
4452         CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4453         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4454         CFLAGS=$save_CFLAGS
4455         if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4456             AC_MSG_RESULT([yes])
4457         else
4458             if test "$enable_split_debug" = yes; then
4459                 AC_MSG_ERROR([no])
4460             else
4461                 AC_MSG_RESULT([no])
4462             fi
4463         fi
4464     fi
4465     if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4466         AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4467         add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4468     fi
4470 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4472 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4473 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4474 save_CFLAGS=$CFLAGS
4475 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4476 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4477 CFLAGS=$save_CFLAGS
4478 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4479     AC_MSG_RESULT([yes])
4480 else
4481     AC_MSG_RESULT([no])
4483 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4485 ENABLE_GDB_INDEX=
4486 if test "$enable_gdb_index" != "no"; then
4487     dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4488     if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -o -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4489         AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4490         save_CFLAGS=$CFLAGS
4491         CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4492         have_ggnu_pubnames=
4493         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4494         if test "$have_ggnu_pubnames" != "TRUE"; then
4495             if test "$enable_gdb_index" = "yes"; then
4496                 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4497             else
4498                 AC_MSG_RESULT( no )
4499             fi
4500         else
4501             AC_MSG_RESULT( yes )
4502             AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4503             ldflags_save=$LDFLAGS
4504             LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4505             AC_LINK_IFELSE([AC_LANG_PROGRAM([
4506 #include <stdio.h>
4507                 ],[
4508 printf ("hello world\n");
4509                 ])], ENABLE_GDB_INDEX=TRUE, [])
4510             if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4511                 AC_MSG_RESULT( yes )
4512             else
4513                 if test "$enable_gdb_index" = "yes"; then
4514                     AC_MSG_ERROR( no )
4515                 else
4516                     AC_MSG_RESULT( no )
4517                 fi
4518             fi
4519             LDFLAGS=$ldflags_save
4520         fi
4521         CFLAGS=$save_CFLAGS
4522         fi
4523     if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4524         AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4525         add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4526     fi
4528 AC_SUBST(ENABLE_GDB_INDEX)
4530 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4531     enable_sal_log=yes
4533 if test "$enable_sal_log" = yes; then
4534     ENABLE_SAL_LOG=TRUE
4536 AC_SUBST(ENABLE_SAL_LOG)
4538 dnl Check for enable symbols option
4539 dnl ===================================================================
4540 AC_MSG_CHECKING([whether to generate debug information])
4541 if test -z "$enable_symbols"; then
4542     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4543         enable_symbols=yes
4544     else
4545         enable_symbols=no
4546     fi
4548 if test "$enable_symbols" = yes; then
4549     ENABLE_SYMBOLS_FOR=all
4550     AC_MSG_RESULT([yes])
4551 elif test "$enable_symbols" = no; then
4552     ENABLE_SYMBOLS_FOR=
4553     AC_MSG_RESULT([no])
4554 else
4555     # Selective debuginfo.
4556     ENABLE_SYMBOLS_FOR="$enable_symbols"
4557     AC_MSG_RESULT([for "$enable_symbols"])
4559 AC_SUBST(ENABLE_SYMBOLS_FOR)
4561 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4562     # Building on Android with full symbols: without enough memory the linker never finishes currently.
4563     AC_MSG_CHECKING([whether enough memory is available for linking])
4564     mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4565     # Check for 15GB, as Linux reports a bit less than the physical memory size.
4566     if test -n "$mem_size" -a $mem_size -lt 15728640; then
4567         AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4568     else
4569         AC_MSG_RESULT([yes])
4570     fi
4573 ENABLE_OPTIMIZED=
4574 ENABLE_OPTIMIZED_DEBUG=
4575 AC_MSG_CHECKING([whether to compile with optimization flags])
4576 if test -z "$enable_optimized"; then
4577     if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4578         enable_optimized=no
4579     else
4580         enable_optimized=yes
4581     fi
4583 if test "$enable_optimized" = yes; then
4584     ENABLE_OPTIMIZED=TRUE
4585     AC_MSG_RESULT([yes])
4586 elif test "$enable_optimized" = debug; then
4587     ENABLE_OPTIMIZED_DEBUG=TRUE
4588     AC_MSG_RESULT([yes (debug)])
4589     HAVE_GCC_OG=
4590     if test "$GCC" = "yes"; then
4591         AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4592         save_CFLAGS=$CFLAGS
4593         CFLAGS="$CFLAGS -Werror -Og"
4594         AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4595         CFLAGS=$save_CFLAGS
4596         if test "$HAVE_GCC_OG" = "TRUE"; then
4597             AC_MSG_RESULT([yes])
4598         else
4599             AC_MSG_RESULT([no])
4600         fi
4601     fi
4602     if test -z "$HAVE_GCC_OG"; then
4603         AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4604     fi
4605 else
4606     AC_MSG_RESULT([no])
4608 AC_SUBST(ENABLE_OPTIMIZED)
4609 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4612 # determine CPUNAME, OS, ...
4613 # The USING_X11 flag tells whether the host os uses X by default. Can be overridden with the --without-x option.
4615 case "$host_os" in
4617 aix*)
4618     COM=GCC
4619     CPUNAME=POWERPC
4620     USING_X11=TRUE
4621     OS=AIX
4622     RTL_OS=AIX
4623     RTL_ARCH=PowerPC
4624     PLATFORMID=aix_powerpc
4625     P_SEP=:
4626     ;;
4628 cygwin*|wsl*)
4629     # Already handled
4630     ;;
4632 darwin*|macos*)
4633     COM=GCC
4634     USING_X11=
4635     OS=MACOSX
4636     RTL_OS=MacOSX
4637     P_SEP=:
4639     case "$host_cpu" in
4640     aarch64|arm64)
4641         if test "$enable_ios_simulator" = "yes"; then
4642             OS=iOS
4643         else
4644             CPUNAME=AARCH64
4645             RTL_ARCH=AARCH64
4646             PLATFORMID=macosx_arm64
4647         fi
4648         ;;
4649     x86_64)
4650         if test "$enable_ios_simulator" = "yes"; then
4651             OS=iOS
4652         fi
4653         CPUNAME=X86_64
4654         RTL_ARCH=X86_64
4655         PLATFORMID=macosx_x86_64
4656         ;;
4657     *)
4658         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4659         ;;
4660     esac
4661     ;;
4663 ios*)
4664     COM=GCC
4665     USING_X11=
4666     OS=iOS
4667     RTL_OS=iOS
4668     P_SEP=:
4670     case "$host_cpu" in
4671     aarch64|arm64)
4672         if test "$enable_ios_simulator" = "yes"; then
4673             AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4674         fi
4675         ;;
4676     *)
4677         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4678         ;;
4679     esac
4680     CPUNAME=AARCH64
4681     RTL_ARCH=AARCH64
4682     PLATFORMID=ios_arm64
4683     ;;
4685 dragonfly*)
4686     COM=GCC
4687     USING_X11=TRUE
4688     OS=DRAGONFLY
4689     RTL_OS=DragonFly
4690     P_SEP=:
4692     case "$host_cpu" in
4693     i*86)
4694         CPUNAME=INTEL
4695         RTL_ARCH=x86
4696         PLATFORMID=dragonfly_x86
4697         ;;
4698     x86_64)
4699         CPUNAME=X86_64
4700         RTL_ARCH=X86_64
4701         PLATFORMID=dragonfly_x86_64
4702         ;;
4703     *)
4704         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4705         ;;
4706     esac
4707     ;;
4709 freebsd*)
4710     COM=GCC
4711     USING_X11=TRUE
4712     RTL_OS=FreeBSD
4713     OS=FREEBSD
4714     P_SEP=:
4716     case "$host_cpu" in
4717     aarch64)
4718         CPUNAME=AARCH64
4719         PLATFORMID=freebsd_aarch64
4720         RTL_ARCH=AARCH64
4721         ;;
4722     i*86)
4723         CPUNAME=INTEL
4724         RTL_ARCH=x86
4725         PLATFORMID=freebsd_x86
4726         ;;
4727     x86_64|amd64)
4728         CPUNAME=X86_64
4729         RTL_ARCH=X86_64
4730         PLATFORMID=freebsd_x86_64
4731         ;;
4732     powerpc64)
4733         CPUNAME=POWERPC64
4734         RTL_ARCH=PowerPC_64
4735         PLATFORMID=freebsd_powerpc64
4736         ;;
4737     powerpc|powerpcspe)
4738         CPUNAME=POWERPC
4739         RTL_ARCH=PowerPC
4740         PLATFORMID=freebsd_powerpc
4741         ;;
4742     *)
4743         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4744         ;;
4745     esac
4746     ;;
4748 haiku*)
4749     COM=GCC
4750     USING_X11=
4751     GUIBASE=haiku
4752     RTL_OS=Haiku
4753     OS=HAIKU
4754     P_SEP=:
4756     case "$host_cpu" in
4757     i*86)
4758         CPUNAME=INTEL
4759         RTL_ARCH=x86
4760         PLATFORMID=haiku_x86
4761         ;;
4762     x86_64|amd64)
4763         CPUNAME=X86_64
4764         RTL_ARCH=X86_64
4765         PLATFORMID=haiku_x86_64
4766         ;;
4767     *)
4768         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4769         ;;
4770     esac
4771     ;;
4773 kfreebsd*)
4774     COM=GCC
4775     USING_X11=TRUE
4776     OS=LINUX
4777     RTL_OS=kFreeBSD
4778     P_SEP=:
4780     case "$host_cpu" in
4782     i*86)
4783         CPUNAME=INTEL
4784         RTL_ARCH=x86
4785         PLATFORMID=kfreebsd_x86
4786         ;;
4787     x86_64)
4788         CPUNAME=X86_64
4789         RTL_ARCH=X86_64
4790         PLATFORMID=kfreebsd_x86_64
4791         ;;
4792     *)
4793         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4794         ;;
4795     esac
4796     ;;
4798 linux-gnu*)
4799     COM=GCC
4800     USING_X11=TRUE
4801     OS=LINUX
4802     RTL_OS=Linux
4803     P_SEP=:
4805     case "$host_cpu" in
4807     aarch64)
4808         CPUNAME=AARCH64
4809         PLATFORMID=linux_aarch64
4810         RTL_ARCH=AARCH64
4811         ;;
4812     alpha)
4813         CPUNAME=AXP
4814         RTL_ARCH=ALPHA
4815         PLATFORMID=linux_alpha
4816         ;;
4817     arm*)
4818         CPUNAME=ARM
4819         EPM_FLAGS="-a arm"
4820         RTL_ARCH=ARM_EABI
4821         PLATFORMID=linux_arm_eabi
4822         case "$host_cpu" in
4823         arm*-linux)
4824             RTL_ARCH=ARM_OABI
4825             PLATFORMID=linux_arm_oabi
4826             ;;
4827         esac
4828         ;;
4829     hppa)
4830         CPUNAME=HPPA
4831         RTL_ARCH=HPPA
4832         EPM_FLAGS="-a hppa"
4833         PLATFORMID=linux_hppa
4834         ;;
4835     i*86)
4836         CPUNAME=INTEL
4837         RTL_ARCH=x86
4838         PLATFORMID=linux_x86
4839         ;;
4840     ia64)
4841         CPUNAME=IA64
4842         RTL_ARCH=IA64
4843         PLATFORMID=linux_ia64
4844         ;;
4845     mips)
4846         CPUNAME=GODSON
4847         RTL_ARCH=MIPS_EB
4848         EPM_FLAGS="-a mips"
4849         PLATFORMID=linux_mips_eb
4850         ;;
4851     mips64)
4852         CPUNAME=GODSON64
4853         RTL_ARCH=MIPS64_EB
4854         EPM_FLAGS="-a mips64"
4855         PLATFORMID=linux_mips64_eb
4856         ;;
4857     mips64el)
4858         CPUNAME=GODSON64
4859         RTL_ARCH=MIPS64_EL
4860         EPM_FLAGS="-a mips64el"
4861         PLATFORMID=linux_mips64_el
4862         ;;
4863     mipsel)
4864         CPUNAME=GODSON
4865         RTL_ARCH=MIPS_EL
4866         EPM_FLAGS="-a mipsel"
4867         PLATFORMID=linux_mips_el
4868         ;;
4869     m68k)
4870         CPUNAME=M68K
4871         RTL_ARCH=M68K
4872         PLATFORMID=linux_m68k
4873         ;;
4874     powerpc)
4875         CPUNAME=POWERPC
4876         RTL_ARCH=PowerPC
4877         PLATFORMID=linux_powerpc
4878         ;;
4879     powerpc64)
4880         CPUNAME=POWERPC64
4881         RTL_ARCH=PowerPC_64
4882         PLATFORMID=linux_powerpc64
4883         ;;
4884     powerpc64le)
4885         CPUNAME=POWERPC64
4886         RTL_ARCH=PowerPC_64_LE
4887         PLATFORMID=linux_powerpc64_le
4888         ;;
4889     sparc)
4890         CPUNAME=SPARC
4891         RTL_ARCH=SPARC
4892         PLATFORMID=linux_sparc
4893         ;;
4894     sparc64)
4895         CPUNAME=SPARC64
4896         RTL_ARCH=SPARC64
4897         PLATFORMID=linux_sparc64
4898         ;;
4899     s390)
4900         CPUNAME=S390
4901         RTL_ARCH=S390
4902         PLATFORMID=linux_s390
4903         ;;
4904     s390x)
4905         CPUNAME=S390X
4906         RTL_ARCH=S390x
4907         PLATFORMID=linux_s390x
4908         ;;
4909     x86_64)
4910         CPUNAME=X86_64
4911         RTL_ARCH=X86_64
4912         PLATFORMID=linux_x86_64
4913         ;;
4914     *)
4915         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4916         ;;
4917     esac
4918     ;;
4920 linux-android*)
4921     COM=GCC
4922     USING_X11=
4923     OS=ANDROID
4924     RTL_OS=Android
4925     P_SEP=:
4927     case "$host_cpu" in
4929     arm|armel)
4930         CPUNAME=ARM
4931         RTL_ARCH=ARM_EABI
4932         PLATFORMID=android_arm_eabi
4933         ;;
4934     aarch64)
4935         CPUNAME=AARCH64
4936         RTL_ARCH=AARCH64
4937         PLATFORMID=android_aarch64
4938         ;;
4939     i*86)
4940         CPUNAME=INTEL
4941         RTL_ARCH=x86
4942         PLATFORMID=android_x86
4943         ;;
4944     x86_64)
4945         CPUNAME=X86_64
4946         RTL_ARCH=X86_64
4947         PLATFORMID=android_x86_64
4948         ;;
4949     *)
4950         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4951         ;;
4952     esac
4953     ;;
4955 *netbsd*)
4956     COM=GCC
4957     USING_X11=TRUE
4958     OS=NETBSD
4959     RTL_OS=NetBSD
4960     P_SEP=:
4962     case "$host_cpu" in
4963     i*86)
4964         CPUNAME=INTEL
4965         RTL_ARCH=x86
4966         PLATFORMID=netbsd_x86
4967         ;;
4968     powerpc)
4969         CPUNAME=POWERPC
4970         RTL_ARCH=PowerPC
4971         PLATFORMID=netbsd_powerpc
4972         ;;
4973     sparc)
4974         CPUNAME=SPARC
4975         RTL_ARCH=SPARC
4976         PLATFORMID=netbsd_sparc
4977         ;;
4978     x86_64)
4979         CPUNAME=X86_64
4980         RTL_ARCH=X86_64
4981         PLATFORMID=netbsd_x86_64
4982         ;;
4983     *)
4984         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4985         ;;
4986     esac
4987     ;;
4989 openbsd*)
4990     COM=GCC
4991     USING_X11=TRUE
4992     OS=OPENBSD
4993     RTL_OS=OpenBSD
4994     P_SEP=:
4996     case "$host_cpu" in
4997     i*86)
4998         CPUNAME=INTEL
4999         RTL_ARCH=x86
5000         PLATFORMID=openbsd_x86
5001         ;;
5002     x86_64)
5003         CPUNAME=X86_64
5004         RTL_ARCH=X86_64
5005         PLATFORMID=openbsd_x86_64
5006         ;;
5007     *)
5008         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5009         ;;
5010     esac
5011     SOLARINC="$SOLARINC -I/usr/local/include"
5012     ;;
5014 solaris*)
5015     COM=GCC
5016     USING_X11=TRUE
5017     OS=SOLARIS
5018     RTL_OS=Solaris
5019     P_SEP=:
5021     case "$host_cpu" in
5022     i*86)
5023         CPUNAME=INTEL
5024         RTL_ARCH=x86
5025         PLATFORMID=solaris_x86
5026         ;;
5027     sparc)
5028         CPUNAME=SPARC
5029         RTL_ARCH=SPARC
5030         PLATFORMID=solaris_sparc
5031         ;;
5032     sparc64)
5033         CPUNAME=SPARC64
5034         RTL_ARCH=SPARC64
5035         PLATFORMID=solaris_sparc64
5036         ;;
5037     *)
5038         AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5039         ;;
5040     esac
5041     SOLARINC="$SOLARINC -I/usr/local/include"
5042     ;;
5045     AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5046     ;;
5047 esac
5049 if test "$with_x" = "no"; then
5050     AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5053 DISABLE_GUI=""
5054 if test "$enable_gui" = "no"; then
5055     if test "$USING_X11" != TRUE; then
5056         AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5057     fi
5058     USING_X11=
5059     DISABLE_GUI=TRUE
5060     AC_DEFINE(HAVE_FEATURE_UI,0)
5061     test_cairo=yes
5063 AC_SUBST(DISABLE_GUI)
5065 WORKDIR="${BUILDDIR}/workdir"
5066 INSTDIR="${BUILDDIR}/instdir"
5067 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5068 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5069 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5070 AC_SUBST(COM)
5071 AC_SUBST(CPUNAME)
5072 AC_SUBST(RTL_OS)
5073 AC_SUBST(RTL_ARCH)
5074 AC_SUBST(EPM_FLAGS)
5075 AC_SUBST(USING_X11)
5076 AC_SUBST([INSTDIR])
5077 AC_SUBST([INSTROOT])
5078 AC_SUBST([INSTROOTBASE])
5079 AC_SUBST(OS)
5080 AC_SUBST(P_SEP)
5081 AC_SUBST(WORKDIR)
5082 AC_SUBST(PLATFORMID)
5083 AC_SUBST(WINDOWS_X64)
5084 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5086 dnl ===================================================================
5087 dnl Test which package format to use
5088 dnl ===================================================================
5089 AC_MSG_CHECKING([which package format to use])
5090 if test -n "$with_package_format" -a "$with_package_format" != no; then
5091     for i in $with_package_format; do
5092         case "$i" in
5093         aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5094             ;;
5095         *)
5096             AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5097 aix - AIX software distribution
5098 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5099 deb - Debian software distribution
5100 pkg - Solaris software distribution
5101 rpm - RedHat software distribution
5103 LibreOffice additionally supports:
5104 archive - .tar.gz or .zip
5105 dmg - macOS .dmg
5106 installed - installation tree
5107 msi - Windows .msi
5108         ])
5109             ;;
5110         esac
5111     done
5112     # fakeroot is needed to ensure correct file ownerships/permissions
5113     # inside deb packages and tar archives created on Linux and Solaris.
5114     if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5115         AC_PATH_PROG(FAKEROOT, fakeroot, no)
5116         if test "$FAKEROOT" = "no"; then
5117             AC_MSG_ERROR(
5118                 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5119         fi
5120     fi
5121     PKGFORMAT="$with_package_format"
5122     AC_MSG_RESULT([$PKGFORMAT])
5123 else
5124     PKGFORMAT=
5125     AC_MSG_RESULT([none])
5127 AC_SUBST(PKGFORMAT)
5129 dnl ===================================================================
5130 dnl Set up a different compiler to produce tools to run on the build
5131 dnl machine when doing cross-compilation
5132 dnl ===================================================================
5134 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5135 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5136 if test "$cross_compiling" = "yes"; then
5137     AC_MSG_CHECKING([for BUILD platform configuration])
5138     echo
5139     rm -rf CONF-FOR-BUILD config_build.mk
5140     mkdir CONF-FOR-BUILD
5141     # Here must be listed all files needed when running the configure script. In particular, also
5142     # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5143     # keep them in the same order as there.
5144     (cd $SRC_ROOT && tar cf - \
5145         config.guess \
5146         bin/get_config_variables \
5147         solenv/bin/getcompver.awk \
5148         solenv/inc/langlist.mk \
5149         download.lst \
5150         config_host.mk.in \
5151         config_host_lang.mk.in \
5152         Makefile.in \
5153         bin/bffvalidator.sh.in \
5154         bin/odfvalidator.sh.in \
5155         bin/officeotron.sh.in \
5156         hardened_runtime.xcent.in \
5157         instsetoo_native/util/openoffice.lst.in \
5158         config_host/*.in \
5159         sysui/desktop/macosx/Info.plist.in \
5160         .vscode/vs-code-template.code-workspace.in \
5161         ) \
5162     | (cd CONF-FOR-BUILD && tar xf -)
5163     cp configure CONF-FOR-BUILD
5164     test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5165     (
5166     unset COM USING_X11 OS CPUNAME
5167     unset CC CXX SYSBASE CFLAGS
5168     unset AR NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5169     unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5170     unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC PKG_CONFIG_LIBDIR
5171     if test -n "$CC_FOR_BUILD"; then
5172         export CC="$CC_FOR_BUILD"
5173         CC_BASE=`first_arg_basename "$CC"`
5174     fi
5175     if test -n "$CXX_FOR_BUILD"; then
5176         export CXX="$CXX_FOR_BUILD"
5177         CXX_BASE=`first_arg_basename "$CXX"`
5178     fi
5179     test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5180     cd CONF-FOR-BUILD
5182     sub_conf_opts=""
5183     test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5184     test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5185     test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5186     if test -n "$ENABLE_JAVA"; then
5187         case "$_os" in
5188         iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5189         Android)
5190             # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5191             test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5192             ;;
5193         *)
5194             if test -z "$with_jdk_home"; then
5195                 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.])
5196             fi
5197             ;;
5198         esac
5199     else
5200         sub_conf_opts="$sub_conf_opts --without-java"
5201     fi
5202     test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5203     test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5204     sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options"
5206     # Don't bother having configure look for stuff not needed for the build platform anyway
5207     ./configure \
5208         --build="$build_alias" \
5209         --disable-cups \
5210         --disable-firebird-sdbc \
5211         --disable-gpgmepp \
5212         --disable-gstreamer-1-0 \
5213         --disable-gtk3 \
5214         --disable-mariadb-sdbc \
5215         --disable-online-update \
5216         --disable-opencl \
5217         --disable-pdfimport \
5218         --disable-postgresql-sdbc \
5219         --disable-skia \
5220         --enable-icecream="$enable_icecream" \
5221         --without-doxygen \
5222         --without-webdav \
5223         --with-parallelism="$with_parallelism" \
5224         --with-theme="$with_theme" \
5225         --with-tls=openssl \
5226         $sub_conf_opts \
5227         --srcdir=$srcdir \
5228         2>&1 | sed -e 's/^/    /'
5229     test -f ./config_host.mk 2>/dev/null || exit
5231     # filter permitted build targets
5232     PERMITTED_BUILD_TARGETS="
5233         AVMEDIA
5234         BOOST
5235         CLUCENE
5236         DBCONNECTIVITY
5237         DESKTOP
5238         DYNLOADING
5239         EPOXY
5240         EXPAT
5241         GLM
5242         GRAPHITE
5243         HARFBUZZ
5244         ICU
5245         LCMS2
5246         LIBJPEG_TURBO
5247         LIBLANGTAG
5248         LibO
5249         LIBFFI
5250         LIBPN
5251         LIBXML2
5252         LIBXSLT
5253         MDDS
5254         NATIVE
5255         OPENSSL
5256         ORCUS
5257         PYTHON
5258         SCRIPTING
5259         ZLIB
5261     # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5262     # newlined lists, to use grep as a filter
5263     PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5264     BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5265     BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5266     sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5268     cp config_host.mk ../config_build.mk
5269     cp config_host_lang.mk ../config_build_lang.mk
5270     mv config.log ../config.Build.log
5271     mkdir -p ../config_build
5272     mv config_host/*.h ../config_build
5274     # all these will get a _FOR_BUILD postfix
5275     DIRECT_FOR_BUILD_SETTINGS="
5276         CC
5277         CXX
5278         ILIB
5279         JAVA_HOME
5280         JAVAIFLAGS
5281         JDK
5282         LIBO_BIN_FOLDER
5283         LIBO_LIB_FOLDER
5284         LIBO_URE_LIB_FOLDER
5285         LIBO_URE_MISC_FOLDER
5286         OS
5287         SDKDIRNAME
5288         SYSTEM_LIBXML
5289         SYSTEM_LIBXSLT
5291     # these overwrite host config with build config
5292     OVERWRITING_SETTINGS="
5293         ANT
5294         ANT_HOME
5295         ANT_LIB
5296         HSQLDB_USE_JDBC_4_1
5297         JAVA_CLASSPATH_NOT_SET
5298         JAVA_SOURCE_VER
5299         JAVA_TARGET_VER
5300         JAVACFLAGS
5301         JAVACOMPILER
5302         JAVADOC
5303         JAVADOCISGJDOC
5305     # these need some special handling
5306     EXTRA_HANDLED_SETTINGS="
5307         INSTDIR
5308         INSTROOT
5309         PATH
5310         WORKDIR
5312     OLD_PATH=$PATH
5313     . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5314     BUILD_PATH=$PATH
5315     PATH=$OLD_PATH
5317     line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5318     echo "$line" >>build-config
5320     for V in $DIRECT_FOR_BUILD_SETTINGS; do
5321         VV='$'$V
5322         VV=`eval "echo $VV"`
5323         if test -n "$VV"; then
5324             line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5325             echo "$line" >>build-config
5326         fi
5327     done
5329     for V in $OVERWRITING_SETTINGS; do
5330         VV='$'$V
5331         VV=`eval "echo $VV"`
5332         if test -n "$VV"; then
5333             line=${V}='${'${V}:-$VV'}'
5334             echo "$line" >>build-config
5335         fi
5336     done
5338     for V in INSTDIR INSTROOT WORKDIR; do
5339         VV='$'$V
5340         VV=`eval "echo $VV"`
5341         VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5342         if test -n "$VV"; then
5343             line="${V}_FOR_BUILD='$VV'"
5344             echo "$line" >>build-config
5345         fi
5346     done
5348     )
5349     test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([Running configure script for BUILD system failed, see CONF-FOR-BUILD/config.log])
5350     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])
5351     perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5352              -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5354     eval `cat CONF-FOR-BUILD/build-config`
5356     AC_MSG_RESULT([checking for BUILD platform configuration... done])
5358     rm -rf CONF-FOR-BUILD
5359 else
5360     OS_FOR_BUILD="$OS"
5361     CC_FOR_BUILD="$CC"
5362     CXX_FOR_BUILD="$CXX"
5363     INSTDIR_FOR_BUILD="$INSTDIR"
5364     INSTROOT_FOR_BUILD="$INSTROOT"
5365     LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5366     LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5367     LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5368     LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5369     SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5370     WORKDIR_FOR_BUILD="$WORKDIR"
5372 AC_SUBST(OS_FOR_BUILD)
5373 AC_SUBST(INSTDIR_FOR_BUILD)
5374 AC_SUBST(INSTROOT_FOR_BUILD)
5375 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5376 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5377 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5378 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5379 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5380 AC_SUBST(WORKDIR_FOR_BUILD)
5381 AC_SUBST(CC_FOR_BUILD)
5382 AC_SUBST(CXX_FOR_BUILD)
5384 dnl ===================================================================
5385 dnl Check for syslog header
5386 dnl ===================================================================
5387 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5389 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5390 dnl ===================================================================
5391 AC_MSG_CHECKING([whether to turn warnings to errors])
5392 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5393     ENABLE_WERROR="TRUE"
5394     PYTHONWARNINGS="error"
5395     AC_MSG_RESULT([yes])
5396 else
5397     if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5398         ENABLE_WERROR="TRUE"
5399         PYTHONWARNINGS="error"
5400         AC_MSG_RESULT([yes])
5401     else
5402         AC_MSG_RESULT([no])
5403     fi
5405 AC_SUBST(ENABLE_WERROR)
5406 AC_SUBST(PYTHONWARNINGS)
5408 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5409 dnl ===================================================================
5410 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5411 if test -z "$enable_assert_always_abort"; then
5412    if test "$ENABLE_DEBUG" = TRUE; then
5413        enable_assert_always_abort=yes
5414    else
5415        enable_assert_always_abort=no
5416    fi
5418 if test "$enable_assert_always_abort" = "yes"; then
5419     ASSERT_ALWAYS_ABORT="TRUE"
5420     AC_MSG_RESULT([yes])
5421 else
5422     ASSERT_ALWAYS_ABORT="FALSE"
5423     AC_MSG_RESULT([no])
5425 AC_SUBST(ASSERT_ALWAYS_ABORT)
5427 # Determine whether to use ooenv for the instdir installation
5428 # ===================================================================
5429 if test $_os != "WINNT" -a $_os != "Darwin"; then
5430     AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5431     if test "$enable_ooenv" = "no"; then
5432         AC_MSG_RESULT([no])
5433     else
5434         ENABLE_OOENV="TRUE"
5435         AC_MSG_RESULT([yes])
5436     fi
5438 AC_SUBST(ENABLE_OOENV)
5440 if test "$USING_X11" != TRUE; then
5441     # be sure to do not mess with unneeded stuff
5442     test_randr=no
5443     test_xrender=no
5444     test_cups=no
5445     test_dbus=no
5446     build_gstreamer_1_0=no
5447     test_kf5=no
5448     test_qt5=no
5449     test_gtk3_kde5=no
5450     enable_cairo_canvas=no
5453 if test "$OS" = "HAIKU"; then
5454     enable_cairo_canvas=yes
5455     test_kf5=yes
5458 if test "$test_kf5" = "yes" -a "$enable_kde5" = "yes"; then
5459     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!])
5460     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!"
5461     enable_kf5=yes
5464 if test "$test_kf5" = "yes"; then
5465     test_qt5=yes
5468 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5469     if test "$enable_qt5" = "no"; then
5470         AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5471     else
5472         enable_qt5=yes
5473     fi
5476 dnl ===================================================================
5477 dnl check for cups support
5478 dnl ===================================================================
5479 ENABLE_CUPS=""
5481 if test "$enable_cups" = "no"; then
5482     test_cups=no
5485 AC_MSG_CHECKING([whether to enable CUPS support])
5486 if test "$test_cups" = "yes"; then
5487     ENABLE_CUPS="TRUE"
5488     AC_MSG_RESULT([yes])
5490     AC_MSG_CHECKING([whether cups support is present])
5491     AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5492     AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5493     if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5494         AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5495     fi
5497 else
5498     AC_MSG_RESULT([no])
5501 AC_SUBST(ENABLE_CUPS)
5503 # fontconfig checks
5504 if test "$test_fontconfig" = "yes"; then
5505     PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5506     SYSTEM_FONTCONFIG=TRUE
5507     FilterLibs "${FONTCONFIG_LIBS}"
5508     FONTCONFIG_LIBS="${filteredlibs}"
5510 AC_SUBST(FONTCONFIG_CFLAGS)
5511 AC_SUBST(FONTCONFIG_LIBS)
5512 AC_SUBST([SYSTEM_FONTCONFIG])
5514 dnl whether to find & fetch external tarballs?
5515 dnl ===================================================================
5516 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5517    if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5518        TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5519    else
5520        TARFILE_LOCATION="$LODE_HOME/ext_tar"
5521    fi
5523 if test -z "$TARFILE_LOCATION"; then
5524     if test -d "$SRC_ROOT/src" ; then
5525         mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5526         ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5527     fi
5528     TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5529 else
5530     AbsolutePath "$TARFILE_LOCATION"
5531     PathFormat "${absolute_path}"
5532     TARFILE_LOCATION="${formatted_path}"
5534 AC_SUBST(TARFILE_LOCATION)
5536 AC_MSG_CHECKING([whether we want to fetch tarballs])
5537 if test "$enable_fetch_external" != "no"; then
5538     if test "$with_all_tarballs" = "yes"; then
5539         AC_MSG_RESULT([yes, all of them])
5540         DO_FETCH_TARBALLS="ALL"
5541     else
5542         AC_MSG_RESULT([yes, if we use them])
5543         DO_FETCH_TARBALLS="TRUE"
5544     fi
5545 else
5546     AC_MSG_RESULT([no])
5547     DO_FETCH_TARBALLS=
5549 AC_SUBST(DO_FETCH_TARBALLS)
5551 AC_MSG_CHECKING([whether to build help])
5552 if test -n "$with_help" -a "$with_help" != "no" -a $_os != iOS -a $_os != Android; then
5553     BUILD_TYPE="$BUILD_TYPE HELP"
5554     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5555     case "$with_help" in
5556     "html")
5557         ENABLE_HTMLHELP=TRUE
5558         SCPDEFS="$SCPDEFS -DWITH_HELP"
5559         AC_MSG_RESULT([HTML])
5560         ;;
5561     "online")
5562         ENABLE_HTMLHELP=TRUE
5563         HELP_ONLINE=TRUE
5564         AC_MSG_RESULT([HTML])
5565         ;;
5566     yes)
5567         SCPDEFS="$SCPDEFS -DWITH_HELP"
5568         AC_MSG_RESULT([yes])
5569         ;;
5570     *)
5571         AC_MSG_ERROR([Unknown --with-help=$with_help])
5572         ;;
5573     esac
5574 else
5575     AC_MSG_RESULT([no])
5577 AC_SUBST([ENABLE_HTMLHELP])
5578 AC_SUBST([HELP_ONLINE])
5580 AC_MSG_CHECKING([whether to enable xapian-omega support for help])
5581 if test -n "$with_omindex" -a "$with_omindex" != "no" -a $_os != iOS -a $_os != Android; then
5582     BUILD_TYPE="$BUILD_TYPE HELP"
5583     GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5584     case "$with_omindex" in
5585     "server")
5586         ENABLE_HTMLHELP=TRUE
5587         HELP_ONLINE=TRUE
5588         HELP_OMINDEX_PAGE=TRUE
5589         AC_MSG_RESULT([SERVER])
5590         ;;
5591     "noxap")
5592         ENABLE_HTMLHELP=TRUE
5593         HELP_ONLINE=TRUE
5594         HELP_OMINDEX_PAGE=FALSE
5595         AC_MSG_RESULT([NOXAP])
5596         ;;
5597     *)
5598         AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5599         ;;
5600     esac
5601 else
5602     HELP_OMINDEX_PAGE=FALSE
5603     AC_MSG_RESULT([no])
5605 AC_SUBST([ENABLE_HTMLHELP])
5606 AC_SUBST([HELP_OMINDEX_PAGE])
5607 AC_SUBST([HELP_ONLINE])
5610 dnl Test whether to include MySpell dictionaries
5611 dnl ===================================================================
5612 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5613 if test "$with_myspell_dicts" = "yes"; then
5614     AC_MSG_RESULT([yes])
5615     WITH_MYSPELL_DICTS=TRUE
5616     BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5617     GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5618 else
5619     AC_MSG_RESULT([no])
5620     WITH_MYSPELL_DICTS=
5622 AC_SUBST(WITH_MYSPELL_DICTS)
5624 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5625 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5626     if test "$with_system_dicts" = yes; then
5627         AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5628     fi
5629     with_system_dicts=no
5632 AC_MSG_CHECKING([whether to use dicts from external paths])
5633 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5634     AC_MSG_RESULT([yes])
5635     SYSTEM_DICTS=TRUE
5636     AC_MSG_CHECKING([for spelling dictionary directory])
5637     if test -n "$with_external_dict_dir"; then
5638         DICT_SYSTEM_DIR=file://$with_external_dict_dir
5639     else
5640         DICT_SYSTEM_DIR=file:///usr/share/hunspell
5641         if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5642             DICT_SYSTEM_DIR=file:///usr/share/myspell
5643         fi
5644     fi
5645     AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5646     AC_MSG_CHECKING([for hyphenation patterns directory])
5647     if test -n "$with_external_hyph_dir"; then
5648         HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5649     else
5650         HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5651     fi
5652     AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5653     AC_MSG_CHECKING([for thesaurus directory])
5654     if test -n "$with_external_thes_dir"; then
5655         THES_SYSTEM_DIR=file://$with_external_thes_dir
5656     else
5657         THES_SYSTEM_DIR=file:///usr/share/mythes
5658     fi
5659     AC_MSG_RESULT([$THES_SYSTEM_DIR])
5660 else
5661     AC_MSG_RESULT([no])
5662     SYSTEM_DICTS=
5664 AC_SUBST(SYSTEM_DICTS)
5665 AC_SUBST(DICT_SYSTEM_DIR)
5666 AC_SUBST(HYPH_SYSTEM_DIR)
5667 AC_SUBST(THES_SYSTEM_DIR)
5669 dnl ===================================================================
5670 dnl Precompiled headers.
5671 ENABLE_PCH=""
5672 AC_MSG_CHECKING([whether to enable pch feature])
5673 if test -z "$enable_pch"; then
5674     if test "$_os" = "WINNT"; then
5675         # Enabled by default on Windows.
5676         enable_pch=yes
5677     else
5678         enable_pch=no
5679     fi
5681 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5682     AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5684 if test "$enable_pch" = "system"; then
5685     ENABLE_PCH="1"
5686     AC_MSG_RESULT([yes (system headers)])
5687 elif test "$enable_pch" = "base"; then
5688     ENABLE_PCH="2"
5689     AC_MSG_RESULT([yes (system and base headers)])
5690 elif test "$enable_pch" = "normal"; then
5691     ENABLE_PCH="3"
5692     AC_MSG_RESULT([yes (normal)])
5693 elif test "$enable_pch" = "full"; then
5694     ENABLE_PCH="4"
5695     AC_MSG_RESULT([yes (full)])
5696 elif test "$enable_pch" = "yes"; then
5697     # Pick a suitable default.
5698     if test "$GCC" = "yes"; then
5699         # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5700         # while making the PCHs larger and rebuilds more likely.
5701         ENABLE_PCH="2"
5702         AC_MSG_RESULT([yes (system and base headers)])
5703     else
5704         # With MSVC the highest level makes a significant difference,
5705         # and it was the default when there used to be no PCH levels.
5706         ENABLE_PCH="4"
5707         AC_MSG_RESULT([yes (full)])
5708     fi
5709 elif test "$enable_pch" = "no"; then
5710     AC_MSG_RESULT([no])
5711 else
5712     AC_MSG_ERROR([Unknown value for --enable-pch])
5714 AC_SUBST(ENABLE_PCH)
5715 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5716 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5717     AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5718     if test "$CCACHE_BIN" != "not found"; then
5719         AC_MSG_CHECKING([ccache version])
5720         CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5721         CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5722         AC_MSG_RESULT([$CCACHE_VERSION])
5723         AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5724         if test "$CCACHE_NUMVER" -gt "030701"; then
5725             AC_MSG_RESULT([yes])
5726         else
5727             AC_MSG_RESULT([no (not newer than 3.7.1)])
5728             CCACHE_DEPEND_MODE=
5729         fi
5730     fi
5733 PCH_INSTANTIATE_TEMPLATES=
5734 if test -n "$ENABLE_PCH"; then
5735     AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5736     save_CFLAGS=$CFLAGS
5737     CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5738     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5739     CFLAGS=$save_CFLAGS
5740     if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5741         AC_MSG_RESULT(yes)
5742     else
5743         AC_MSG_RESULT(no)
5744     fi
5746 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5748 BUILDING_PCH_WITH_OBJ=
5749 if test -n "$ENABLE_PCH"; then
5750     AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5751     save_CFLAGS=$CFLAGS
5752     CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5753     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5754     CFLAGS=$save_CFLAGS
5755     if test -n "$BUILDING_PCH_WITH_OBJ"; then
5756         AC_MSG_RESULT(yes)
5757     else
5758         AC_MSG_RESULT(no)
5759     fi
5761 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5763 PCH_CODEGEN=
5764 PCH_NO_CODEGEN=
5765 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5766     AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
5767     save_CFLAGS=$CFLAGS
5768     CFLAGS="$CFLAGS -Werror -fpch-codegen"
5769     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5770         [
5771         PCH_CODEGEN="-fpch-codegen"
5772         PCH_NO_CODEGEN="-fno-pch-codegen"
5773         ],[])
5774     CFLAGS=$save_CFLAGS
5775     if test -n "$PCH_CODEGEN"; then
5776         AC_MSG_RESULT(yes)
5777     else
5778         AC_MSG_RESULT(no)
5779     fi
5781 AC_SUBST(PCH_CODEGEN)
5782 AC_SUBST(PCH_NO_CODEGEN)
5783 PCH_DEBUGINFO=
5784 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5785     AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
5786     save_CFLAGS=$CFLAGS
5787     CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
5788     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
5789     CFLAGS=$save_CFLAGS
5790     if test -n "$PCH_DEBUGINFO"; then
5791         AC_MSG_RESULT(yes)
5792     else
5793         AC_MSG_RESULT(no)
5794     fi
5796 AC_SUBST(PCH_DEBUGINFO)
5798 TAB=`printf '\t'`
5800 AC_MSG_CHECKING([the GNU Make version])
5801 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5802 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5803 if test "$_make_longver" -ge "038200"; then
5804     AC_MSG_RESULT([$GNUMAKE $_make_version])
5806 elif test "$_make_longver" -ge "038100"; then
5807     if test "$build_os" = "cygwin"; then
5808         AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5809     fi
5810     AC_MSG_RESULT([$GNUMAKE $_make_version])
5812     dnl ===================================================================
5813     dnl Search all the common names for sha1sum
5814     dnl ===================================================================
5815     AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5816     if test -z "$SHA1SUM"; then
5817         AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5818     elif test "$SHA1SUM" = "openssl"; then
5819         SHA1SUM="openssl sha1"
5820     fi
5821     AC_MSG_CHECKING([for GNU Make bug 20033])
5822     TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
5823     $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
5824 A := \$(wildcard *.a)
5826 .PHONY: all
5827 all: \$(A:.a=.b)
5828 <TAB>@echo survived bug20033.
5830 .PHONY: setup
5831 setup:
5832 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
5834 define d1
5835 @echo lala \$(1)
5836 @sleep 1
5837 endef
5839 define d2
5840 @echo tyty \$(1)
5841 @sleep 1
5842 endef
5844 %.b : %.a
5845 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
5846 <TAB>\$(call d1,\$(CHECKSUM)),\
5847 <TAB>\$(call d2,\$(CHECKSUM)))
5849     if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
5850         no_parallelism_make="YES"
5851         AC_MSG_RESULT([yes, disable parallelism])
5852     else
5853         AC_MSG_RESULT([no, keep parallelism enabled])
5854     fi
5855     rm -rf $TESTGMAKEBUG20033
5856 else
5857     AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
5860 # find if gnumake support file function
5861 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
5862 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
5863 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5864     TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
5866 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
5867 \$(file >test.txt,Success )
5869 .PHONY: all
5870 all:
5871 <TAB>@cat test.txt
5874 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
5875 if test -f $TESTGMAKEFILEFUNC/test.txt; then
5876     HAVE_GNUMAKE_FILE_FUNC=TRUE
5877     AC_MSG_RESULT([yes])
5878 else
5879     AC_MSG_RESULT([no])
5881 rm -rf $TESTGMAKEFILEFUNC
5882 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
5883 AC_SUBST(GNUMAKE_WIN_NATIVE)
5885 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
5886 STALE_MAKE=
5887 if test "$_make_ver_check" = ""; then
5888    STALE_MAKE=TRUE
5891 HAVE_LD_HASH_STYLE=FALSE
5892 WITH_LINKER_HASH_STYLE=
5893 AC_MSG_CHECKING([for --hash-style gcc linker support])
5894 if test "$GCC" = "yes"; then
5895     if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
5896         hash_styles="gnu sysv"
5897     elif test "$with_linker_hash_style" = "no"; then
5898         hash_styles=
5899     else
5900         hash_styles="$with_linker_hash_style"
5901     fi
5903     for hash_style in $hash_styles; do
5904         test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
5905         hash_style_ldflags_save=$LDFLAGS
5906         LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
5908         AC_RUN_IFELSE([AC_LANG_PROGRAM(
5909             [
5910 #include <stdio.h>
5911             ],[
5912 printf ("");
5913             ])],
5914             [
5915                   HAVE_LD_HASH_STYLE=TRUE
5916                   WITH_LINKER_HASH_STYLE=$hash_style
5917             ],
5918             [HAVE_LD_HASH_STYLE=FALSE],
5919             [HAVE_LD_HASH_STYLE=FALSE])
5920         LDFLAGS=$hash_style_ldflags_save
5921     done
5923     if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
5924         AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
5925     else
5926         AC_MSG_RESULT( no )
5927     fi
5928     LDFLAGS=$hash_style_ldflags_save
5929 else
5930     AC_MSG_RESULT( no )
5932 AC_SUBST(HAVE_LD_HASH_STYLE)
5933 AC_SUBST(WITH_LINKER_HASH_STYLE)
5935 dnl ===================================================================
5936 dnl Check whether there's a Perl version available.
5937 dnl ===================================================================
5938 if test -z "$with_perl_home"; then
5939     AC_PATH_PROG(PERL, perl)
5940 else
5941     test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
5942     _perl_path="$with_perl_home/bin/perl"
5943     if test -x "$_perl_path"; then
5944         PERL=$_perl_path
5945     else
5946         AC_MSG_ERROR([$_perl_path not found])
5947     fi
5950 dnl ===================================================================
5951 dnl Testing for Perl version 5 or greater.
5952 dnl $] is the Perl version variable, it is returned as an integer
5953 dnl ===================================================================
5954 if test "$PERL"; then
5955     AC_MSG_CHECKING([the Perl version])
5956     ${PERL} -e "exit($]);"
5957     _perl_version=$?
5958     if test "$_perl_version" -lt 5; then
5959         AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
5960     fi
5961     AC_MSG_RESULT([Perl $_perl_version])
5962 else
5963     AC_MSG_ERROR([Perl not found, install Perl 5])
5966 dnl ===================================================================
5967 dnl Testing for required Perl modules
5968 dnl ===================================================================
5970 AC_MSG_CHECKING([for required Perl modules])
5971 perl_use_string="use Cwd ; use Digest::MD5"
5972 if test "$_os" = "WINNT"; then
5973     if test -n "$PKGFORMAT"; then
5974         for i in $PKGFORMAT; do
5975             case "$i" in
5976             msi)
5977                 # for getting fonts versions to use in MSI
5978                 perl_use_string="$perl_use_string ; use Font::TTF::Font"
5979                 ;;
5980             esac
5981         done
5982     fi
5984 if test "$with_system_hsqldb" = "yes"; then
5985     perl_use_string="$perl_use_string ; use Archive::Zip"
5987 if test "$with_system_openssl" != "yes"; then
5988     # OpenSSL needs that to build
5989     perl_use_string="$perl_use_string ; use FindBin"
5991 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
5992     AC_MSG_RESULT([all modules found])
5993 else
5994     AC_MSG_RESULT([failed to find some modules])
5995     # Find out which modules are missing.
5996     for i in $perl_use_string; do
5997         if test "$i" != "use" -a "$i" != ";"; then
5998             if ! $PERL -e "use $i;">/dev/null 2>&1; then
5999                 missing_perl_modules="$missing_perl_modules $i"
6000             fi
6001         fi
6002     done
6003     AC_MSG_ERROR([
6004     The missing Perl modules are: $missing_perl_modules
6005     Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6008 dnl ===================================================================
6009 dnl Check for pkg-config
6010 dnl ===================================================================
6011 if test "$_os" != "WINNT"; then
6012     PKG_PROG_PKG_CONFIG
6015 if test "$_os" != "WINNT"; then
6017     # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6018     # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6019     # explicitly. Or put /path/to/compiler in PATH yourself.
6021     # Use wrappers for LTO
6022     if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6023         AC_CHECK_TOOL(AR,gcc-ar)
6024         AC_CHECK_TOOL(NM,gcc-nm)
6025         AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6026     else
6027         AC_CHECK_TOOL(AR,ar)
6028         AC_CHECK_TOOL(NM,nm)
6029         AC_CHECK_TOOL(RANLIB,ranlib)
6030     fi
6031     AC_CHECK_TOOL(OBJDUMP,objdump)
6032     AC_CHECK_TOOL(READELF,readelf)
6033     AC_CHECK_TOOL(STRIP,strip)
6034     if test "$_os" = "WINNT"; then
6035         AC_CHECK_TOOL(DLLTOOL,dlltool)
6036         AC_CHECK_TOOL(WINDRES,windres)
6037     fi
6039 AC_SUBST(AR)
6040 AC_SUBST(DLLTOOL)
6041 AC_SUBST(NM)
6042 AC_SUBST(OBJDUMP)
6043 AC_SUBST(PKG_CONFIG)
6044 AC_SUBST(RANLIB)
6045 AC_SUBST(READELF)
6046 AC_SUBST(STRIP)
6047 AC_SUBST(WINDRES)
6049 dnl ===================================================================
6050 dnl pkg-config checks on macOS
6051 dnl ===================================================================
6053 if test $_os = Darwin; then
6054     AC_MSG_CHECKING([for bogus pkg-config])
6055     if test -n "$PKG_CONFIG"; then
6056         if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6057             AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6058         else
6059             if test "$enable_bogus_pkg_config" = "yes"; then
6060                 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6061             else
6062                 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.])
6063             fi
6064         fi
6065     else
6066         AC_MSG_RESULT([no, good])
6067     fi
6070 find_csc()
6072     # Return value: $csctest
6074     unset csctest
6076     reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6077     if test -n "$regvalue"; then
6078         csctest=$regvalue
6079         return
6080     fi
6083 find_al()
6085     # Return value: $altest
6087     unset altest
6089     # We need this check to detect 4.6.1 or above.
6090     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6091         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6092         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6093             altest=$regvalue
6094             return
6095         fi
6096     done
6098     for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6099         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6100         if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6101             altest=$regvalue
6102             return
6103         fi
6104     done
6107 find_dotnetsdk46()
6109     unset frametest
6111     for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6112         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6113         if test -n "$regvalue"; then
6114             frametest=$regvalue
6115             return
6116         fi
6117     done
6120 find_winsdk_version()
6122     # Args: $1 : SDK version as in "8.0", "8.1A" etc
6123     # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6125     unset winsdktest winsdkbinsubdir winsdklibsubdir
6127     case "$1" in
6128     8.0|8.0A)
6129         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6130         if test -n "$regvalue"; then
6131             winsdktest=$regvalue
6132             winsdklibsubdir=win8
6133             return
6134         fi
6135         ;;
6136     8.1|8.1A)
6137         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6138         if test -n "$regvalue"; then
6139             winsdktest=$regvalue
6140             winsdklibsubdir=winv6.3
6141             return
6142         fi
6143         ;;
6144     10.0)
6145         reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6146         if test -n "$regvalue"; then
6147             winsdktest=$regvalue
6148             reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6149             if test -n "$regvalue"; then
6150                 winsdkbinsubdir="$regvalue".0
6151                 winsdklibsubdir=$winsdkbinsubdir
6152                 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6153                 local tmppath_unix=$(cygpath -u "$tmppath")
6154                 # test exist the SDK path
6155                 if test -d "$tmppath_unix"; then
6156                    # when path is convertible to a short path then path is okay
6157                    cygpath -d "$tmppath" >/dev/null 2>&1
6158                    if test $? -ne 0; then
6159                       AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6160                    fi
6161                 else
6162                    AC_MSG_ERROR([The Windows SDK not found, check the installation])
6163                 fi
6164             fi
6165             return
6166         fi
6167         ;;
6168     esac
6171 find_winsdk()
6173     # Return value: From find_winsdk_version
6175     unset winsdktest
6177     for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6178         find_winsdk_version $ver
6179         if test -n "$winsdktest"; then
6180             return
6181         fi
6182     done
6185 find_msms()
6187     # Return value: $msmdir
6189     AC_MSG_CHECKING([for MSVC merge modules directory])
6190     local my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm
6191     local my_msm_dir
6193     case "$VCVER" in
6194         160)
6195         my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6196         ;;
6197     esac
6198     for f in $my_msm_files; do
6199         echo "$as_me:$LINENO: searching for $f" >&5
6200     done
6202     msmdir=
6203     for ver in 14.0 15.0; do
6204         reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir
6205         if test -n "$regvalue"; then
6206             for f in ${my_msm_files}; do
6207                 if test -e "$regvalue/${f}"; then
6208                     msmdir=$regvalue
6209                     break
6210                 fi
6211             done
6212         fi
6213     done
6214     dnl Is the following fallback really necessary, or was it added in response
6215     dnl to never having started Visual Studio on a given machine, so the
6216     dnl registry keys checked above had presumably not yet been created?
6217     dnl Anyway, if it really is necessary, it might be worthwhile to extend it
6218     dnl to also check %CommonProgramFiles(X86)% (typically expanding to
6219     dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles%
6220     dnl expanding to "C:\Program Files\Common Files"), which would need
6221     dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to
6222     dnl obtain its value from cygwin:
6223     if test -z "$msmdir"; then
6224         my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/"
6225         for f in ${my_msm_files}; do
6226             if test -e "$my_msm_dir/${f}"; then
6227                 msmdir=$my_msm_dir
6228             fi
6229         done
6230     fi
6232     dnl Starting from MSVC 15.0, merge modules are located in different directory
6233     case "$VCVER" in
6234     160)
6235         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6236             echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5
6237             my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6238             for f in ${my_msm_files}; do
6239                 if test -e "$my_msm_dir/${f}"; then
6240                     msmdir=$my_msm_dir
6241                     break
6242                 fi
6243             done
6244         done
6245         ;;
6246     esac
6248     if test -n "$msmdir"; then
6249         msmdir=`cygpath -m "$msmdir"`
6250         AC_MSG_RESULT([$msmdir])
6251     else
6252         if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6253             AC_MSG_FAILURE([not found])
6254         else
6255             AC_MSG_WARN([not found (check config.log)])
6256             add_warning "MSM none of ${my_msm_files} found"
6257         fi
6258     fi
6261 find_msvc_x64_dlls()
6263     # Return value: $msvcdllpath, $msvcdlls
6265     AC_MSG_CHECKING([for MSVC x64 DLL path])
6266     msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6267     case "$VCVER" in
6268     160)
6269         for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6270             echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5
6271             if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then
6272                 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"
6273                 break
6274             fi
6275             echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5
6276             if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then
6277                 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"
6278                 break
6279             fi
6280         done
6281         ;;
6282     esac
6283     AC_MSG_RESULT([$msvcdllpath])
6284     AC_MSG_CHECKING([for MSVC x64 DLLs])
6285     msvcdlls="msvcp140.dll vcruntime140.dll"
6286     for dll in $msvcdlls; do
6287         if ! test -f "$msvcdllpath/$dll"; then
6288             AC_MSG_FAILURE([missing $dll])
6289         fi
6290     done
6291     AC_MSG_RESULT([found all ($msvcdlls)])
6294 dnl =========================================
6295 dnl Check for the Windows  SDK.
6296 dnl =========================================
6297 if test "$_os" = "WINNT"; then
6298     AC_MSG_CHECKING([for Windows SDK])
6299     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6300         find_winsdk
6301         WINDOWS_SDK_HOME=$winsdktest
6303         # normalize if found
6304         if test -n "$WINDOWS_SDK_HOME"; then
6305             WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6306             WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6307         fi
6309         WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6310     fi
6312     if test -n "$WINDOWS_SDK_HOME"; then
6313         # Remove a possible trailing backslash
6314         WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6316         if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6317              -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6318              -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6319             have_windows_sdk_headers=yes
6320         elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6321              -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6322              -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6323             have_windows_sdk_headers=yes
6324         elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6325              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6326              -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6327             have_windows_sdk_headers=yes
6328         else
6329             have_windows_sdk_headers=no
6330         fi
6332         if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6333             have_windows_sdk_libs=yes
6334         elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6335             have_windows_sdk_libs=yes
6336         else
6337             have_windows_sdk_libs=no
6338         fi
6340         if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6341             AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6342 the  Windows SDK are installed.])
6343         fi
6344     fi
6346     if test -z "$WINDOWS_SDK_HOME"; then
6347         AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6348     elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6349         WINDOWS_SDK_VERSION=80
6350         AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6351     elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6352         WINDOWS_SDK_VERSION=81
6353         AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6354     elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6355         WINDOWS_SDK_VERSION=10
6356         AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6357     else
6358         AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6359     fi
6360     PathFormat "$WINDOWS_SDK_HOME"
6361     WINDOWS_SDK_HOME="$formatted_path"
6362     WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6363     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6364         SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6365         if test -d "$WINDOWS_SDK_HOME/include/um"; then
6366             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6367         elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6368             SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6369         fi
6370     fi
6372     dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6373     dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6374     dnl but not in v8.0), so allow this to be overridden with a
6375     dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6376     dnl and configuration error if no WiLangId.vbs is found would arguably be
6377     dnl better, but I do not know under which conditions exactly it is needed by
6378     dnl msiglobal.pm:
6379     if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6380         WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6381         WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6382         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6383             WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6384             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6385         fi
6386         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6387             WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6388             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6389         fi
6390         if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6391             WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6392             WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6393         fi
6394     fi
6395     if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6396         if test -n "$with_package_format" -a "$with_package_format" != no; then
6397             for i in "$with_package_format"; do
6398                 if test "$i" = "msi"; then
6399                     if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6400                         AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6401                     fi
6402                 fi
6403             done
6404         fi
6405     fi
6407 AC_SUBST(WINDOWS_SDK_HOME)
6408 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6409 AC_SUBST(WINDOWS_SDK_VERSION)
6410 AC_SUBST(WINDOWS_SDK_WILANGID)
6412 if test "$build_os" = "cygwin"; then
6413     dnl Check midl.exe; this being the first check for a tool in the SDK bin
6414     dnl dir, it also determines that dir's path w/o an arch segment if any,
6415     dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6416     AC_MSG_CHECKING([for midl.exe])
6418     find_winsdk
6419     if test -n "$winsdkbinsubdir" \
6420         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6421     then
6422         MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6423         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6424     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6425         MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6426         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6427     elif test -f "$winsdktest/Bin/midl.exe"; then
6428         MIDL_PATH=$winsdktest/Bin
6429         WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6430     fi
6431     if test ! -f "$MIDL_PATH/midl.exe"; then
6432         AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6433     else
6434         AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6435     fi
6437     # Convert to posix path with 8.3 filename restrictions ( No spaces )
6438     MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6440     if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6441          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6442          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6443          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6444     elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6445          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6446          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6447          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6448     elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6449          -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6450          -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6451          -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6452     else
6453         AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6454     fi
6456     dnl Check csc.exe
6457     AC_MSG_CHECKING([for csc.exe])
6458     find_csc
6459     if test -f "$csctest/csc.exe"; then
6460         CSC_PATH="$csctest"
6461     fi
6462     if test ! -f "$CSC_PATH/csc.exe"; then
6463         AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6464     else
6465         AC_MSG_RESULT([$CSC_PATH/csc.exe])
6466     fi
6468     CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6470     dnl Check al.exe
6471     AC_MSG_CHECKING([for al.exe])
6472     find_winsdk
6473     if test -n "$winsdkbinsubdir" \
6474         -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6475     then
6476         AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6477     elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6478         AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6479     elif test -f "$winsdktest/Bin/al.exe"; then
6480         AL_PATH="$winsdktest/Bin"
6481     fi
6483     if test -z "$AL_PATH"; then
6484         find_al
6485         if test -f "$altest/bin/al.exe"; then
6486             AL_PATH="$altest/bin"
6487         elif test -f "$altest/al.exe"; then
6488             AL_PATH="$altest"
6489         fi
6490     fi
6491     if test ! -f "$AL_PATH/al.exe"; then
6492         AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6493     else
6494         AC_MSG_RESULT([$AL_PATH/al.exe])
6495     fi
6497     AL_PATH=`win_short_path_for_make "$AL_PATH"`
6499     dnl Check mscoree.lib / .NET Framework dir
6500     AC_MSG_CHECKING(.NET Framework)
6501     find_dotnetsdk46
6502     PathFormat "$frametest"
6503     frametest="$formatted_path"
6504     if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6505         DOTNET_FRAMEWORK_HOME="$frametest"
6506     else
6507         find_winsdk
6508         if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6509             DOTNET_FRAMEWORK_HOME="$winsdktest"
6510         fi
6511     fi
6512     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
6513         AC_MSG_ERROR([mscoree.lib not found])
6514     fi
6515     AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6517     PathFormat "$MIDL_PATH"
6518     MIDL_PATH="$formatted_path"
6520     PathFormat "$AL_PATH"
6521     AL_PATH="$formatted_path"
6523     PathFormat "$DOTNET_FRAMEWORK_HOME"
6524     DOTNET_FRAMEWORK_HOME="$formatted_path"
6526     PathFormat "$CSC_PATH"
6527     CSC_PATH="$formatted_path"
6530 dnl ===================================================================
6531 dnl Testing for C++ compiler and version...
6532 dnl ===================================================================
6534 if test "$_os" != "WINNT"; then
6535     # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6536     save_CXXFLAGS=$CXXFLAGS
6537     AC_PROG_CXX
6538     CXXFLAGS=$save_CXXFLAGS
6539     if test -z "$CXX_BASE"; then
6540         CXX_BASE=`first_arg_basename "$CXX"`
6541     fi
6544 dnl check for GNU C++ compiler version
6545 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6546     AC_MSG_CHECKING([the GNU C++ compiler version])
6548     _gpp_version=`$CXX -dumpversion`
6549     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6551     if test "$_gpp_majmin" -lt "700"; then
6552         AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6553     else
6554         AC_MSG_RESULT([ok (g++ $_gpp_version)])
6555     fi
6557     dnl see https://code.google.com/p/android/issues/detail?id=41770
6558         glibcxx_threads=no
6559         AC_LANG_PUSH([C++])
6560         AC_REQUIRE_CPP
6561         AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6562         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6563             #include <bits/c++config.h>]],[[
6564             #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6565             && !defined(_GLIBCXX__PTHREADS) \
6566             && !defined(_GLIBCXX_HAS_GTHREADS)
6567             choke me
6568             #endif
6569         ]])],[AC_MSG_RESULT([yes])
6570         glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6571         AC_LANG_POP([C++])
6572         if test $glibcxx_threads = yes; then
6573             BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6574         fi
6576 AC_SUBST(BOOST_CXXFLAGS)
6579 # prefx CXX with ccache if needed
6581 if test "$CCACHE" != ""; then
6582     AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6583     AC_LANG_PUSH([C++])
6584     save_CXXFLAGS=$CXXFLAGS
6585     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6586     dnl an empty program will do, we're checking the compiler flags
6587     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6588                       [use_ccache=yes], [use_ccache=no])
6589     if test $use_ccache = yes; then
6590         AC_MSG_RESULT([yes])
6591     else
6592         CXX="$CCACHE $CXX"
6593         CXX_BASE="ccache $CXX_BASE"
6594         AC_MSG_RESULT([no])
6595     fi
6596     CXXFLAGS=$save_CXXFLAGS
6597     AC_LANG_POP([C++])
6600 dnl ===================================================================
6601 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6602 dnl ===================================================================
6604 if test "$_os" != "WINNT"; then
6605     AC_PROG_CXXCPP
6607     dnl Check whether there's a C pre-processor.
6608     AC_PROG_CPP
6612 dnl ===================================================================
6613 dnl Find integral type sizes and alignments
6614 dnl ===================================================================
6616 if test "$_os" != "WINNT"; then
6618     AC_CHECK_SIZEOF(long)
6619     AC_CHECK_SIZEOF(short)
6620     AC_CHECK_SIZEOF(int)
6621     AC_CHECK_SIZEOF(long long)
6622     AC_CHECK_SIZEOF(double)
6623     AC_CHECK_SIZEOF(void*)
6625     SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6626     SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6627     SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6628     SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6629     SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6631     dnl Allow build without AC_CHECK_ALIGNOF, grrr
6632     m4_pattern_allow([AC_CHECK_ALIGNOF])
6633     m4_ifdef([AC_CHECK_ALIGNOF],
6634         [
6635             AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6636             AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6637             AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6638             AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6639         ],
6640         [
6641             case "$_os-$host_cpu" in
6642             Linux-i686)
6643                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6644                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6645                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6646                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6647                 ;;
6648             Linux-x86_64)
6649                 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6650                 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6651                 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6652                 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6653                 ;;
6654             *)
6655                 if test -z "$ac_cv_alignof_short" -o \
6656                         -z "$ac_cv_alignof_int" -o \
6657                         -z "$ac_cv_alignof_long" -o \
6658                         -z "$ac_cv_alignof_double"; then
6659                    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.])
6660                 fi
6661                 ;;
6662             esac
6663         ])
6665     SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6666     SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6667     if test $ac_cv_sizeof_long -eq 8; then
6668         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6669     elif test $ac_cv_sizeof_double -eq 8; then
6670         SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6671     else
6672         AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6673     fi
6675     dnl Check for large file support
6676     AC_SYS_LARGEFILE
6677     if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6678         LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6679     fi
6680     if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6681         LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6682     fi
6683 else
6684     # Hardcode for MSVC
6685     SAL_TYPES_SIZEOFSHORT=2
6686     SAL_TYPES_SIZEOFINT=4
6687     SAL_TYPES_SIZEOFLONG=4
6688     SAL_TYPES_SIZEOFLONGLONG=8
6689     if test $WIN_HOST_BITS -eq 32; then
6690         SAL_TYPES_SIZEOFPOINTER=4
6691     else
6692         SAL_TYPES_SIZEOFPOINTER=8
6693     fi
6694     SAL_TYPES_ALIGNMENT2=2
6695     SAL_TYPES_ALIGNMENT4=4
6696     SAL_TYPES_ALIGNMENT8=8
6697     LFS_CFLAGS=''
6699 AC_SUBST(LFS_CFLAGS)
6701 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6702 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6703 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6704 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6705 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6706 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6707 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6708 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6710 dnl ===================================================================
6711 dnl Check whether to enable runtime optimizations
6712 dnl ===================================================================
6713 ENABLE_RUNTIME_OPTIMIZATIONS=
6714 AC_MSG_CHECKING([whether to enable runtime optimizations])
6715 if test -z "$enable_runtime_optimizations"; then
6716     for i in $CC; do
6717         case $i in
6718         -fsanitize=*)
6719             enable_runtime_optimizations=no
6720             break
6721             ;;
6722         esac
6723     done
6725 if test "$enable_runtime_optimizations" != no; then
6726     ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6727     AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6728     AC_MSG_RESULT([yes])
6729 else
6730     AC_MSG_RESULT([no])
6732 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6734 dnl ===================================================================
6735 dnl Check if valgrind headers are available
6736 dnl ===================================================================
6737 ENABLE_VALGRIND=
6738 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6739     prev_cppflags=$CPPFLAGS
6740     # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6741     # or where does it come from?
6742     CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6743     AC_CHECK_HEADER([valgrind/valgrind.h],
6744         [ENABLE_VALGRIND=TRUE])
6745     CPPFLAGS=$prev_cppflags
6747 AC_SUBST([ENABLE_VALGRIND])
6748 if test -z "$ENABLE_VALGRIND"; then
6749     if test "$with_valgrind" = yes; then
6750         AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6751     fi
6752     VALGRIND_CFLAGS=
6754 AC_SUBST([VALGRIND_CFLAGS])
6757 dnl ===================================================================
6758 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6759 dnl ===================================================================
6761 # We need at least the sys/sdt.h include header.
6762 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6763 if test "$SDT_H_FOUND" = "TRUE"; then
6764     # Found sys/sdt.h header, now make sure the c++ compiler works.
6765     # Old g++ versions had problems with probes in constructors/destructors.
6766     AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6767     AC_LANG_PUSH([C++])
6768     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6769     #include <sys/sdt.h>
6770     class ProbeClass
6771     {
6772     private:
6773       int& ref;
6774       const char *name;
6776     public:
6777       ProbeClass(int& v, const char *n) : ref(v), name(n)
6778       {
6779         DTRACE_PROBE2(_test_, cons, name, ref);
6780       }
6782       void method(int min)
6783       {
6784         DTRACE_PROBE3(_test_, meth, name, ref, min);
6785         ref -= min;
6786       }
6788       ~ProbeClass()
6789       {
6790         DTRACE_PROBE2(_test_, dest, name, ref);
6791       }
6792     };
6793     ]],[[
6794     int i = 64;
6795     DTRACE_PROBE1(_test_, call, i);
6796     ProbeClass inst = ProbeClass(i, "call");
6797     inst.method(24);
6798     ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6799           [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6800     AC_LANG_POP([C++])
6802 AC_CONFIG_HEADERS([config_host/config_probes.h])
6804 dnl ===================================================================
6805 dnl GCC features
6806 dnl ===================================================================
6807 HAVE_GCC_STACK_CLASH_PROTECTION=
6808 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6809     AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6810     save_CFLAGS=$CFLAGS
6811     CFLAGS="$CFLAGS -fstack-clash-protection"
6812     AC_LINK_IFELSE(
6813         [AC_LANG_PROGRAM(, [[return 0;]])],
6814         [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6815         [AC_MSG_RESULT([no])])
6816     CFLAGS=$save_CFLAGS
6818     AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6819     save_CFLAGS=$CFLAGS
6820     CFLAGS="$CFLAGS -Werror -mno-avx"
6821     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6822     CFLAGS=$save_CFLAGS
6823     if test "$HAVE_GCC_AVX" = "TRUE"; then
6824         AC_MSG_RESULT([yes])
6825     else
6826         AC_MSG_RESULT([no])
6827     fi
6829     AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6830     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6831     int v = 0;
6832     if (__sync_add_and_fetch(&v, 1) != 1 ||
6833         __sync_sub_and_fetch(&v, 1) != 0)
6834         return 1;
6835     __sync_synchronize();
6836     if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6837         v != 1)
6838         return 1;
6839     return 0;
6840 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6841     if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6842         AC_MSG_RESULT([yes])
6843         AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
6844     else
6845         AC_MSG_RESULT([no])
6846     fi
6848     AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
6849     AC_LANG_PUSH([C++])
6850     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6851             #include <cstddef>
6852             #include <cxxabi.h>
6853             std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
6854         ])], [
6855             AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
6856             AC_MSG_RESULT([yes])
6857         ], [AC_MSG_RESULT([no])])
6858     AC_LANG_POP([C++])
6860     AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
6861     AC_LANG_PUSH([C++])
6862     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6863             #include <cstddef>
6864             #include <cxxabi.h>
6865             std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
6866         ])], [
6867             AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
6868             AC_MSG_RESULT([yes])
6869         ], [AC_MSG_RESULT([no])])
6870     AC_LANG_POP([C++])
6872     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
6873     AC_LANG_PUSH([C++])
6874     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6875             #include <cxxabi.h>
6876             void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
6877         ])], [
6878             AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
6879             AC_MSG_RESULT([yes])
6880         ], [AC_MSG_RESULT([no])])
6881     AC_LANG_POP([C++])
6883     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
6884     AC_LANG_PUSH([C++])
6885     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6886             #include <cstddef>
6887             #include <cxxabi.h>
6888             std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
6889         ])], [
6890             AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
6891             AC_MSG_RESULT([yes])
6892         ], [AC_MSG_RESULT([no])])
6893     AC_LANG_POP([C++])
6895     AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
6896     AC_LANG_PUSH([C++])
6897     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6898             #include <cstddef>
6899             #include <cxxabi.h>
6900             std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
6901         ])], [
6902             AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
6903             AC_MSG_RESULT([yes])
6904         ], [AC_MSG_RESULT([no])])
6905     AC_LANG_POP([C++])
6907     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
6908     AC_LANG_PUSH([C++])
6909     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6910             #include <cxxabi.h>
6911             void * f() { return __cxxabiv1::__cxa_get_globals(); }
6912         ])], [
6913             AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
6914             AC_MSG_RESULT([yes])
6915         ], [AC_MSG_RESULT([no])])
6916     AC_LANG_POP([C++])
6918     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
6919     AC_LANG_PUSH([C++])
6920     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6921             #include <cxxabi.h>
6922             void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
6923         ])], [
6924             AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
6925             AC_MSG_RESULT([yes])
6926         ], [AC_MSG_RESULT([no])])
6927     AC_LANG_POP([C++])
6929     AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
6930     AC_LANG_PUSH([C++])
6931     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6932             #include <cxxabi.h>
6933             void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
6934         ])], [
6935             AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
6936             AC_MSG_RESULT([yes])
6937         ], [AC_MSG_RESULT([no])])
6938     AC_LANG_POP([C++])
6940     AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
6941     AC_LANG_PUSH([C++])
6942     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6943             #include <cstddef>
6944             #include <cxxabi.h>
6945             std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
6946         ])], [
6947             AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
6948             AC_MSG_RESULT([yes])
6949         ], [AC_MSG_RESULT([no])])
6950     AC_LANG_POP([C++])
6952     AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
6953     AC_LANG_PUSH([C++])
6954     AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6955             #include <cstddef>
6956             #include <cxxabi.h>
6957             std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
6958         ])], [
6959             AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
6960             AC_MSG_RESULT([yes])
6961         ], [AC_MSG_RESULT([no])])
6962     AC_LANG_POP([C++])
6965 AC_SUBST(HAVE_GCC_AVX)
6966 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
6967 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
6969 dnl ===================================================================
6970 dnl Identify the C++ library
6971 dnl ===================================================================
6973 AC_MSG_CHECKING([what the C++ library is])
6974 AC_LANG_PUSH([C++])
6975 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6976 #include <utility>
6977 #ifndef __GLIBCXX__
6978 foo bar
6979 #endif
6980 ]])],
6981     [CPP_LIBRARY=GLIBCXX
6982      cpp_library_name="GNU libstdc++"
6983     ],
6984     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6985 #include <utility>
6986 #ifndef _LIBCPP_VERSION
6987 foo bar
6988 #endif
6989 ]])],
6990     [CPP_LIBRARY=LIBCPP
6991      cpp_library_name="LLVM libc++"
6992      AC_DEFINE([HAVE_LIBCXX])
6993     ],
6994     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6995 #include <utility>
6996 #ifndef _MSC_VER
6997 foo bar
6998 #endif
6999 ]])],
7000     [CPP_LIBRARY=MSVCRT
7001      cpp_library_name="Microsoft"
7002     ],
7003     AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7004 AC_MSG_RESULT([$cpp_library_name])
7005 AC_LANG_POP([C++])
7007 dnl ===================================================================
7008 dnl Check for gperf
7009 dnl ===================================================================
7010 AC_PATH_PROG(GPERF, gperf)
7011 if test -z "$GPERF"; then
7012     AC_MSG_ERROR([gperf not found but needed. Install it.])
7014 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7015     GPERF=`cygpath -m $GPERF`
7017 AC_MSG_CHECKING([whether gperf is new enough])
7018 my_gperf_ver1=$($GPERF --version | head -n 1)
7019 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7020 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7021 if test "$my_gperf_ver3" -ge 301; then
7022     AC_MSG_RESULT([yes ($my_gperf_ver2)])
7023 else
7024     AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7026 AC_SUBST(GPERF)
7028 dnl ===================================================================
7029 dnl Check for system libcmis
7030 dnl ===================================================================
7031 # libcmis requires curl and we can't build curl for iOS
7032 if test $_os != iOS; then
7033     libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7034     ENABLE_LIBCMIS=TRUE
7035 else
7036     ENABLE_LIBCMIS=
7038 AC_SUBST(ENABLE_LIBCMIS)
7040 dnl ===================================================================
7041 dnl C++11
7042 dnl ===================================================================
7044 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7045 CXXFLAGS_CXX11=
7046 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7047     if test "$with_latest_c__" = yes; then
7048         CXXFLAGS_CXX11=-std:c++latest
7049     else
7050         CXXFLAGS_CXX11=-std:c++17
7051     fi
7052     CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -Zc:__cplusplus"
7053 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7054     my_flags='-std=c++17 -std=c++1z'
7055     if test "$with_latest_c__" = yes; then
7056         my_flags="-std=c++2b -std=c++20 -std=c++2a $my_flags"
7057     fi
7058     for flag in $my_flags; do
7059         if test "$COM" = MSC; then
7060             flag="-Xclang $flag"
7061         fi
7062         save_CXXFLAGS=$CXXFLAGS
7063         CXXFLAGS="$CXXFLAGS $flag -Werror"
7064         if test "$SYSTEM_LIBCMIS" = TRUE; then
7065             CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7066         fi
7067         AC_LANG_PUSH([C++])
7068         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7069             #include <algorithm>
7070             #include <functional>
7071             #include <vector>
7073             #if defined SYSTEM_LIBCMIS
7074             // See ucb/source/ucp/cmis/auth_provider.hxx:
7075             #if !defined __clang__
7076             #pragma GCC diagnostic push
7077             #pragma GCC diagnostic ignored "-Wdeprecated"
7078             #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7079             #endif
7080             #include <libcmis/libcmis.hxx>
7081             #if !defined __clang__
7082             #pragma GCC diagnostic pop
7083             #endif
7084             #endif
7086             void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7087                 std::sort(v.begin(), v.end(), fn);
7088             }
7089             ]])],[CXXFLAGS_CXX11=$flag])
7090         AC_LANG_POP([C++])
7091         CXXFLAGS=$save_CXXFLAGS
7092         if test -n "$CXXFLAGS_CXX11"; then
7093             break
7094         fi
7095     done
7097 if test -n "$CXXFLAGS_CXX11"; then
7098     AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7099 else
7100     AC_MSG_ERROR(no)
7102 AC_SUBST(CXXFLAGS_CXX11)
7104 if test "$GCC" = "yes"; then
7105     save_CXXFLAGS=$CXXFLAGS
7106     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7107     CHECK_L_ATOMIC
7108     CXXFLAGS=$save_CXXFLAGS
7109     AC_SUBST(ATOMIC_LIB)
7112 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7113 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7114 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7115 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7116 dnl again towards 4.7.2:
7117 if test $CPP_LIBRARY = GLIBCXX; then
7118     AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7119     AC_LANG_PUSH([C++])
7120     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7121 #include <list>
7122 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7123     // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7124     //   GCC 4.7.0: 20120322
7125     //   GCC 4.7.1: 20120614
7126     // and using a range check is not possible as the mapping between
7127     // __GLIBCXX__ values and GCC versions is not monotonic
7128 /* ok */
7129 #else
7130 abi broken
7131 #endif
7132         ]])], [AC_MSG_RESULT(no, ok)],
7133         [AC_MSG_ERROR(yes)])
7134     AC_LANG_POP([C++])
7137 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7138 save_CXXFLAGS=$CXXFLAGS
7139 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7140 AC_LANG_PUSH([C++])
7142 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7143 #include <stddef.h>
7145 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7147 namespace
7149         struct b
7150         {
7151                 int i;
7152                 int j;
7153         };
7155 ]], [[
7156 struct a
7158         int i;
7159         int j;
7161 a thinga[]={{0,0}, {1,1}};
7162 b thingb[]={{0,0}, {1,1}};
7163 size_t i = sizeof(sal_n_array_size(thinga));
7164 size_t j = sizeof(sal_n_array_size(thingb));
7165 return !(i != 0 && j != 0);
7167     ], [ AC_MSG_RESULT(yes) ],
7168     [ AC_MSG_ERROR(no)])
7169 AC_LANG_POP([C++])
7170 CXXFLAGS=$save_CXXFLAGS
7172 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7173 if test "$GCC" = yes; then
7174     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7175     AC_LANG_PUSH([C++])
7176     save_CXXFLAGS=$CXXFLAGS
7177     CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7178     AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7179     CXXFLAGS=$save_CXXFLAGS
7180     AC_LANG_POP([C++])
7181     if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7182         AC_MSG_RESULT([yes])
7183     else
7184         AC_MSG_RESULT([no])
7185     fi
7187 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7189 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
7190 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
7191 dnl from consteval constructor initializing const variable":
7192 AC_LANG_PUSH([C++])
7193 save_CXXFLAGS=$CXXFLAGS
7194 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7195 AC_RUN_IFELSE([AC_LANG_PROGRAM([
7196         struct S {
7197             consteval S() { i = 1; }
7198             int i = 0;
7199         };
7200         S const s;
7201     ], [
7202         return (s.i == 1) ? 0 : 1;
7203     ])], [
7204         AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
7205         AC_MSG_RESULT([yes])
7206     ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
7207 CXXFLAGS=$save_CXXFLAGS
7208 AC_LANG_POP([C++])
7210 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7211 AC_LANG_PUSH([C++])
7212 save_CXXFLAGS=$CXXFLAGS
7213 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7214 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7215         #include <algorithm>
7216         #include <initializer_list>
7217         #include <vector>
7218         template<typename T> class S {
7219         private:
7220             std::vector<T> v_;
7221         public:
7222             constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7223         };
7224         constinit S<int> s{3, 2, 1};
7225     ])], [
7226         AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7227         AC_MSG_RESULT([yes])
7228     ], [AC_MSG_RESULT([no])])
7229 CXXFLAGS=$save_CXXFLAGS
7230 AC_LANG_POP([C++])
7232 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7233 AC_LANG_PUSH([C++])
7234 save_CXXFLAGS=$CXXFLAGS
7235 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7236 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7237         #include <span>
7238         #include <type_traits>
7239         // Don't check size_type directly, as it was called index_type before P1872R0:
7240         void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7241     ])], [
7242         AC_DEFINE([HAVE_CPP_SPAN],[1])
7243         AC_MSG_RESULT([yes])
7244     ], [AC_MSG_RESULT([no])])
7245 CXXFLAGS=$save_CXXFLAGS
7246 AC_LANG_POP([C++])
7248 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7249 AC_LANG_PUSH([C++])
7250 save_CXXFLAGS=$CXXFLAGS
7251 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7252 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7253         struct S1 { S1(S1 &&); };
7254         struct S2: S1 {};
7255         S1 f(S2 s) { return s; }
7256     ])], [
7257         AC_DEFINE([HAVE_P1155R3],[1])
7258         AC_MSG_RESULT([yes])
7259     ], [AC_MSG_RESULT([no])])
7260 CXXFLAGS=$save_CXXFLAGS
7261 AC_LANG_POP([C++])
7263 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7264 dnl which is included in -Wextra anyway):
7265 HAVE_WDEPRECATED_COPY_DTOR=
7266 if test "$GCC" = yes; then
7267     AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7268     AC_LANG_PUSH([C++])
7269     save_CXXFLAGS=$CXXFLAGS
7270     CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7271     AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7272             HAVE_WDEPRECATED_COPY_DTOR=TRUE
7273             AC_MSG_RESULT([yes])
7274         ], [AC_MSG_RESULT([no])])
7275     CXXFLAGS=$save_CXXFLAGS
7276     AC_LANG_POP([C++])
7278 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7280 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7281 dnl uninitialized warning for code like
7283 dnl   OString f();
7284 dnl   boost::optional<OString> * g(bool b) {
7285 dnl       boost::optional<OString> o;
7286 dnl       if (b) o = f();
7287 dnl       return new boost::optional<OString>(o);
7288 dnl   }
7290 dnl (as is e.g. present, in a slightly more elaborate form, in
7291 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7292 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7293 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7294 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7295     AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7296     AC_LANG_PUSH([C++])
7297     save_CXXFLAGS=$CXXFLAGS
7298     CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7299     if test "$ENABLE_OPTIMIZED" = TRUE; then
7300         CXXFLAGS="$CXXFLAGS -O2"
7301     else
7302         CXXFLAGS="$CXXFLAGS -O0"
7303     fi
7304     AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7305             #include <new>
7306             void f1(int);
7307             struct S1 {
7308                 ~S1() { f1(n); }
7309                 int n = 0;
7310             };
7311             struct S2 {
7312                 S2() {}
7313                 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7314                 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7315                 void set(S1 s) {
7316                     new (stg) S1(s);
7317                     init = true;
7318                 }
7319                 bool init = false;
7320                 char stg[sizeof (S1)];
7321             } ;
7322             S1 f2();
7323             S2 * f3(bool b) {
7324                 S2 o;
7325                 if (b) o.set(f2());
7326                 return new S2(o);
7327             }
7328         ]])], [AC_MSG_RESULT([no])], [
7329             HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7330             AC_MSG_RESULT([yes])
7331         ])
7332     CXXFLAGS=$save_CXXFLAGS
7333     AC_LANG_POP([C++])
7335 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7337 dnl ===================================================================
7338 dnl CPU Intrinsics support - SSE, AVX
7339 dnl ===================================================================
7341 CXXFLAGS_INTRINSICS_SSE2=
7342 CXXFLAGS_INTRINSICS_SSSE3=
7343 CXXFLAGS_INTRINSICS_SSE41=
7344 CXXFLAGS_INTRINSICS_SSE42=
7345 CXXFLAGS_INTRINSICS_AVX=
7346 CXXFLAGS_INTRINSICS_AVX2=
7347 CXXFLAGS_INTRINSICS_AVX512=
7348 CXXFLAGS_INTRINSICS_F16C=
7349 CXXFLAGS_INTRINSICS_FMA=
7351 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7352     # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7353     flag_sse2=-msse2
7354     flag_ssse3=-mssse3
7355     flag_sse41=-msse4.1
7356     flag_sse42=-msse4.2
7357     flag_avx=-mavx
7358     flag_avx2=-mavx2
7359     flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7360     flag_f16c=-mf16c
7361     flag_fma=-mfma
7362 else
7363     # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7364     # MSVC seems to differentiate only between SSE and SSE2, where in fact
7365     # SSE2 seems to be SSE2+.
7366     # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7367     # is not empty (and can be tested in gbuild).
7368     flag_sse2=-arch:SSE2
7369     flag_ssse3=-arch:SSE2
7370     flag_sse41=-arch:SSE2
7371     flag_sse42=-arch:SSE2
7372     flag_avx=-arch:AVX
7373     flag_avx2=-arch:AVX2
7374     flag_avx512=-arch:AVX512
7375     # These are part of -arch:AVX2
7376     flag_f16c=-arch:AVX2
7377     flag_fma=-arch:AVX2
7380 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7381 AC_LANG_PUSH([C++])
7382 save_CXXFLAGS=$CXXFLAGS
7383 CXXFLAGS="$CXXFLAGS $flag_sse2"
7384 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7385     #include <emmintrin.h>
7386     int main () {
7387         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7388         c = _mm_xor_si128 (a, b);
7389         return 0;
7390     }
7391     ])],
7392     [can_compile_sse2=yes],
7393     [can_compile_sse2=no])
7394 AC_LANG_POP([C++])
7395 CXXFLAGS=$save_CXXFLAGS
7396 AC_MSG_RESULT([${can_compile_sse2}])
7397 if test "${can_compile_sse2}" = "yes" ; then
7398     CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7401 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7402 AC_LANG_PUSH([C++])
7403 save_CXXFLAGS=$CXXFLAGS
7404 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7405 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7406     #include <tmmintrin.h>
7407     int main () {
7408         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7409         c = _mm_maddubs_epi16 (a, b);
7410         return 0;
7411     }
7412     ])],
7413     [can_compile_ssse3=yes],
7414     [can_compile_ssse3=no])
7415 AC_LANG_POP([C++])
7416 CXXFLAGS=$save_CXXFLAGS
7417 AC_MSG_RESULT([${can_compile_ssse3}])
7418 if test "${can_compile_ssse3}" = "yes" ; then
7419     CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7422 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7423 AC_LANG_PUSH([C++])
7424 save_CXXFLAGS=$CXXFLAGS
7425 CXXFLAGS="$CXXFLAGS $flag_sse41"
7426 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7427     #include <smmintrin.h>
7428     int main () {
7429         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7430         c = _mm_cmpeq_epi64 (a, b);
7431         return 0;
7432     }
7433     ])],
7434     [can_compile_sse41=yes],
7435     [can_compile_sse41=no])
7436 AC_LANG_POP([C++])
7437 CXXFLAGS=$save_CXXFLAGS
7438 AC_MSG_RESULT([${can_compile_sse41}])
7439 if test "${can_compile_sse41}" = "yes" ; then
7440     CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7443 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7444 AC_LANG_PUSH([C++])
7445 save_CXXFLAGS=$CXXFLAGS
7446 CXXFLAGS="$CXXFLAGS $flag_sse42"
7447 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7448     #include <nmmintrin.h>
7449     int main () {
7450         __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7451         c = _mm_cmpgt_epi64 (a, b);
7452         return 0;
7453     }
7454     ])],
7455     [can_compile_sse42=yes],
7456     [can_compile_sse42=no])
7457 AC_LANG_POP([C++])
7458 CXXFLAGS=$save_CXXFLAGS
7459 AC_MSG_RESULT([${can_compile_sse42}])
7460 if test "${can_compile_sse42}" = "yes" ; then
7461     CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7464 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7465 AC_LANG_PUSH([C++])
7466 save_CXXFLAGS=$CXXFLAGS
7467 CXXFLAGS="$CXXFLAGS $flag_avx"
7468 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7469     #include <immintrin.h>
7470     int main () {
7471         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7472         c = _mm256_xor_ps(a, b);
7473         return 0;
7474     }
7475     ])],
7476     [can_compile_avx=yes],
7477     [can_compile_avx=no])
7478 AC_LANG_POP([C++])
7479 CXXFLAGS=$save_CXXFLAGS
7480 AC_MSG_RESULT([${can_compile_avx}])
7481 if test "${can_compile_avx}" = "yes" ; then
7482     CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7485 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7486 AC_LANG_PUSH([C++])
7487 save_CXXFLAGS=$CXXFLAGS
7488 CXXFLAGS="$CXXFLAGS $flag_avx2"
7489 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7490     #include <immintrin.h>
7491     int main () {
7492         __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7493         c = _mm256_maddubs_epi16(a, b);
7494         return 0;
7495     }
7496     ])],
7497     [can_compile_avx2=yes],
7498     [can_compile_avx2=no])
7499 AC_LANG_POP([C++])
7500 CXXFLAGS=$save_CXXFLAGS
7501 AC_MSG_RESULT([${can_compile_avx2}])
7502 if test "${can_compile_avx2}" = "yes" ; then
7503     CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7506 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7507 AC_LANG_PUSH([C++])
7508 save_CXXFLAGS=$CXXFLAGS
7509 CXXFLAGS="$CXXFLAGS $flag_avx512"
7510 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7511     #include <immintrin.h>
7512     int main () {
7513         __m512i a = _mm512_loadu_si512(0);
7514         return 0;
7515     }
7516     ])],
7517     [can_compile_avx512=yes],
7518     [can_compile_avx512=no])
7519 AC_LANG_POP([C++])
7520 CXXFLAGS=$save_CXXFLAGS
7521 AC_MSG_RESULT([${can_compile_avx512}])
7522 if test "${can_compile_avx512}" = "yes" ; then
7523     CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7526 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7527 AC_LANG_PUSH([C++])
7528 save_CXXFLAGS=$CXXFLAGS
7529 CXXFLAGS="$CXXFLAGS $flag_f16c"
7530 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7531     #include <immintrin.h>
7532     int main () {
7533         __m128i a = _mm_set1_epi32 (0);
7534         __m128 c;
7535         c = _mm_cvtph_ps(a);
7536         return 0;
7537     }
7538     ])],
7539     [can_compile_f16c=yes],
7540     [can_compile_f16c=no])
7541 AC_LANG_POP([C++])
7542 CXXFLAGS=$save_CXXFLAGS
7543 AC_MSG_RESULT([${can_compile_f16c}])
7544 if test "${can_compile_f16c}" = "yes" ; then
7545     CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7548 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7549 AC_LANG_PUSH([C++])
7550 save_CXXFLAGS=$CXXFLAGS
7551 CXXFLAGS="$CXXFLAGS $flag_fma"
7552 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7553     #include <immintrin.h>
7554     int main () {
7555         __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7556         d = _mm256_fmadd_ps(a, b, c);
7557         return 0;
7558     }
7559     ])],
7560     [can_compile_fma=yes],
7561     [can_compile_fma=no])
7562 AC_LANG_POP([C++])
7563 CXXFLAGS=$save_CXXFLAGS
7564 AC_MSG_RESULT([${can_compile_fma}])
7565 if test "${can_compile_fma}" = "yes" ; then
7566     CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7569 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7570 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7571 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7572 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7573 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7574 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7575 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7576 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7577 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7579 dnl ===================================================================
7580 dnl system stl sanity tests
7581 dnl ===================================================================
7582 if test "$_os" != "WINNT"; then
7584     AC_LANG_PUSH([C++])
7586     save_CPPFLAGS="$CPPFLAGS"
7587     if test -n "$MACOSX_SDK_PATH"; then
7588         CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7589     fi
7591     # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7592     # only.
7593     if test "$CPP_LIBRARY" = GLIBCXX; then
7594         dnl gcc#19664, gcc#22482, rhbz#162935
7595         AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7596         AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7597         AC_MSG_RESULT([$stlvisok])
7598         if test "$stlvisok" = "no"; then
7599             AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7600         fi
7601     fi
7603     # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7604     # when we don't make any dynamic libraries?
7605     if test "$DISABLE_DYNLOADING" = ""; then
7606         AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7607         cat > conftestlib1.cc <<_ACEOF
7608 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7609 struct S2: S1<int> { virtual ~S2(); };
7610 S2::~S2() {}
7611 _ACEOF
7612         cat > conftestlib2.cc <<_ACEOF
7613 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7614 struct S2: S1<int> { virtual ~S2(); };
7615 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7616 _ACEOF
7617         gccvisinlineshiddenok=yes
7618         if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7619             gccvisinlineshiddenok=no
7620         else
7621             dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7622             dnl known to not work with -z defs (unsetting which makes the test
7623             dnl moot, though):
7624             my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7625             if test "$COM_IS_CLANG" = TRUE; then
7626                 for i in $CXX $CXXFLAGS; do
7627                     case $i in
7628                     -fsanitize=*)
7629                         my_linkflagsnoundefs=
7630                         break
7631                         ;;
7632                     esac
7633                 done
7634             fi
7635             if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7636                 gccvisinlineshiddenok=no
7637             fi
7638         fi
7640         rm -fr libconftest*
7641         AC_MSG_RESULT([$gccvisinlineshiddenok])
7642         if test "$gccvisinlineshiddenok" = "no"; then
7643             AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7644         fi
7645     fi
7647    AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7648     cat >visibility.cxx <<_ACEOF
7649 #pragma GCC visibility push(hidden)
7650 struct __attribute__ ((visibility ("default"))) TestStruct {
7651   static void Init();
7653 __attribute__ ((visibility ("default"))) void TestFunc() {
7654   TestStruct::Init();
7656 _ACEOF
7657     if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7658         gccvisbroken=yes
7659     else
7660         case "$host_cpu" in
7661         i?86|x86_64)
7662             if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7663                 gccvisbroken=no
7664             else
7665                 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7666                     gccvisbroken=no
7667                 else
7668                     gccvisbroken=yes
7669                 fi
7670             fi
7671             ;;
7672         *)
7673             gccvisbroken=no
7674             ;;
7675         esac
7676     fi
7677     rm -f visibility.s visibility.cxx
7679     AC_MSG_RESULT([$gccvisbroken])
7680     if test "$gccvisbroken" = "yes"; then
7681         AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7682     fi
7684     CPPFLAGS="$save_CPPFLAGS"
7686     AC_LANG_POP([C++])
7689 dnl ===================================================================
7690 dnl  Clang++ tests
7691 dnl ===================================================================
7693 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7694 if test "$GCC" = "yes"; then
7695     AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7696     AC_LANG_PUSH([C++])
7697     save_CXXFLAGS=$CXXFLAGS
7698     CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7699     AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7700     CXXFLAGS=$save_CXXFLAGS
7701     AC_LANG_POP([C++])
7702     if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7703         AC_MSG_RESULT([yes])
7704     else
7705         AC_MSG_RESULT([no])
7706     fi
7708 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7710 dnl ===================================================================
7711 dnl Compiler plugins
7712 dnl ===================================================================
7714 COMPILER_PLUGINS=
7715 # currently only Clang
7717 if test "$COM_IS_CLANG" != "TRUE"; then
7718     if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7719         AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7720         enable_compiler_plugins=no
7721     fi
7724 COMPILER_PLUGINS_COM_IS_CLANG=
7725 if test "$COM_IS_CLANG" = "TRUE"; then
7726     if test -n "$enable_compiler_plugins"; then
7727         compiler_plugins="$enable_compiler_plugins"
7728     elif test -n "$ENABLE_DBGUTIL"; then
7729         compiler_plugins=test
7730     else
7731         compiler_plugins=no
7732     fi
7733     if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7734         if test "$CLANGVER" -lt 50002; then
7735             if test "$compiler_plugins" = yes; then
7736                 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7737             else
7738                 compiler_plugins=no
7739             fi
7740         fi
7741     fi
7742     if test "$compiler_plugins" != "no"; then
7743         dnl The prefix where Clang resides, override to where Clang resides if
7744         dnl using a source build:
7745         if test -z "$CLANGDIR"; then
7746             CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | head -n 1)))))
7747         fi
7748         # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7749         if test -z "$COMPILER_PLUGINS_CXX"; then
7750             COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7751         fi
7752         clangbindir=$CLANGDIR/bin
7753         if test "$build_os" = "cygwin"; then
7754             clangbindir=$(cygpath -u "$clangbindir")
7755         fi
7756         AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
7757         if test -n "$LLVM_CONFIG"; then
7758             COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
7759             COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
7760             if test -z "$CLANGLIBDIR"; then
7761                 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
7762             fi
7763             # Try if clang is built from source (in which case its includes are not together with llvm includes).
7764             # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
7765             clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
7766             if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
7767                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
7768             fi
7769             # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
7770             clangobjdir=$($LLVM_CONFIG --obj-root)
7771             if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
7772                 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
7773             fi
7774         fi
7775         AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
7776         AC_LANG_PUSH([C++])
7777         save_CXX=$CXX
7778         save_CXXCPP=$CXXCPP
7779         save_CPPFLAGS=$CPPFLAGS
7780         save_CXXFLAGS=$CXXFLAGS
7781         save_LDFLAGS=$LDFLAGS
7782         save_LIBS=$LIBS
7783         CXX=$COMPILER_PLUGINS_CXX
7784         CXXCPP="$COMPILER_PLUGINS_CXX -E"
7785         CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7786         CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7787         AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
7788             [COMPILER_PLUGINS=TRUE],
7789             [
7790             if test "$compiler_plugins" = "yes"; then
7791                 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
7792             else
7793                 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
7794                 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
7795             fi
7796             ])
7797         dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
7798         dnl comment in compilerplugins/Makefile-clang.mk:
7799         if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
7800             LDFLAGS=""
7801             AC_MSG_CHECKING([for clang libraries to use])
7802             if test -z "$CLANGTOOLLIBS"; then
7803                 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
7804  -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
7805                 AC_LINK_IFELSE([
7806                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7807                         [[ clang::FullSourceLoc().dump(); ]])
7808                 ],[CLANGTOOLLIBS="$LIBS"],[])
7809             fi
7810             if test -z "$CLANGTOOLLIBS"; then
7811                 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
7812                 AC_LINK_IFELSE([
7813                     AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7814                         [[ clang::FullSourceLoc().dump(); ]])
7815                 ],[CLANGTOOLLIBS="$LIBS"],[])
7816             fi
7817             AC_MSG_RESULT([$CLANGTOOLLIBS])
7818             if test -z "$CLANGTOOLLIBS"; then
7819                 if test "$compiler_plugins" = "yes"; then
7820                     AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
7821                 else
7822                     AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
7823                     add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
7824                 fi
7825                 COMPILER_PLUGINS=
7826             fi
7827             if test -n "$COMPILER_PLUGINS"; then
7828                 if test -z "$CLANGSYSINCLUDE"; then
7829                     if test -n "$LLVM_CONFIG"; then
7830                         # Path to the clang system headers (no idea if there's a better way to get it).
7831                         CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
7832                     fi
7833                 fi
7834             fi
7835         fi
7836         CXX=$save_CXX
7837         CXXCPP=$save_CXXCPP
7838         CPPFLAGS=$save_CPPFLAGS
7839         CXXFLAGS=$save_CXXFLAGS
7840         LDFLAGS=$save_LDFLAGS
7841         LIBS="$save_LIBS"
7842         AC_LANG_POP([C++])
7844         AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
7845         AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7846             #ifndef __clang__
7847             you lose
7848             #endif
7849             int foo=42;
7850             ]])],
7851             [AC_MSG_RESULT([yes])
7852              COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
7853             [AC_MSG_RESULT([no])])
7854         AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7855     fi
7856 else
7857     if test "$enable_compiler_plugins" = "yes"; then
7858         AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
7859     fi
7861 COMPILER_PLUGINS_ANALYZER_PCH=
7862 if test "$enable_compiler_plugins_analyzer_pch" != no; then
7863     COMPILER_PLUGINS_ANALYZER_PCH=TRUE
7865 AC_SUBST(COMPILER_PLUGINS)
7866 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
7867 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7868 AC_SUBST(COMPILER_PLUGINS_CXX)
7869 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
7870 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
7871 AC_SUBST(COMPILER_PLUGINS_DEBUG)
7872 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
7873 AC_SUBST(CLANGDIR)
7874 AC_SUBST(CLANGLIBDIR)
7875 AC_SUBST(CLANGTOOLLIBS)
7876 AC_SUBST(CLANGSYSINCLUDE)
7878 # Plugin to help linker.
7879 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
7880 # This makes --enable-lto build with clang work.
7881 AC_SUBST(LD_PLUGIN)
7883 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
7884 AC_SUBST(HAVE_POSIX_FALLOCATE)
7886 JITC_PROCESSOR_TYPE=""
7887 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
7888     # IBMs JDK needs this...
7889     JITC_PROCESSOR_TYPE=6
7890     export JITC_PROCESSOR_TYPE
7892 AC_SUBST([JITC_PROCESSOR_TYPE])
7894 # Misc Windows Stuff
7895 AC_ARG_WITH(ucrt-dir,
7896     AS_HELP_STRING([--with-ucrt-dir],
7897         [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
7898         (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
7899         the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
7900             Windows6.1-KB2999226-x64.msu
7901             Windows6.1-KB2999226-x86.msu
7902             Windows8.1-KB2999226-x64.msu
7903             Windows8.1-KB2999226-x86.msu
7904             Windows8-RT-KB2999226-x64.msu
7905             Windows8-RT-KB2999226-x86.msu
7906         A zip archive including those files is available from Microsoft site:
7907         https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
7910 UCRT_REDISTDIR="$with_ucrt_dir"
7911 if test $_os = "WINNT"; then
7912     find_msvc_x64_dlls
7913     for i in $PKGFORMAT; do
7914         if test "$i" = msi; then
7915             find_msms
7916             break
7917         fi
7918     done
7919     MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
7920     MSVC_DLLS="$msvcdlls"
7921     test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
7922     # MSVC 15.3 changed it to VC141
7923     if echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
7924         SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
7925     elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
7926         SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
7927     else
7928         SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
7929     fi
7931     if test "$UCRT_REDISTDIR" = "no"; then
7932         dnl explicitly disabled
7933         UCRT_REDISTDIR=""
7934     else
7935         if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
7936                   -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
7937                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
7938                   -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
7939                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
7940                   -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
7941             UCRT_REDISTDIR=""
7942             if test -n "$PKGFORMAT"; then
7943                for i in $PKGFORMAT; do
7944                    case "$i" in
7945                    msi)
7946                        AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
7947                        add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
7948                        ;;
7949                    esac
7950                done
7951             fi
7952         fi
7953     fi
7956 AC_SUBST(UCRT_REDISTDIR)
7957 AC_SUBST(MSVC_DLL_PATH)
7958 AC_SUBST(MSVC_DLLS)
7959 AC_SUBST(MSM_PATH)
7961 dnl ===================================================================
7962 dnl Checks for Java
7963 dnl ===================================================================
7964 if test "$ENABLE_JAVA" != ""; then
7966     # Windows-specific tests
7967     if test "$build_os" = "cygwin"; then
7968         if test -z "$with_jdk_home"; then
7969             dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
7970             dnl AB10-49F82F720027> section "Windows Registry Key Changes":
7971             reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
7972             if test -n "$regvalue"; then
7973                 ver=$regvalue
7974                 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
7975                 reg_jdk_home=$regvalue
7976             fi
7978             if test -f "$reg_jdk_home/lib/jvm.lib" -a -f "$reg_jdk_home/bin/java.exe"; then
7979                 with_jdk_home="$reg_jdk_home"
7980                 howfound="found automatically"
7981             else
7982                 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option pointing to a $WIN_HOST_BITS-bit JDK >= 9])
7983             fi
7984         else
7985             test "$build_os" = "cygwin" && with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
7986             howfound="you passed"
7987         fi
7988     fi
7990     # 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.
7991     # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
7992     if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
7993         with_jdk_home=`/usr/libexec/java_home`
7994     fi
7996     JAVA_HOME=; export JAVA_HOME
7997     if test -z "$with_jdk_home"; then
7998         AC_PATH_PROG(JAVAINTERPRETER, $with_java)
7999     else
8000         _java_path="$with_jdk_home/bin/$with_java"
8001         dnl Check if there is a Java interpreter at all.
8002         if test -x "$_java_path"; then
8003             JAVAINTERPRETER=$_java_path
8004         else
8005             AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8006         fi
8007     fi
8009     dnl Check that the JDK found is correct architecture (at least 2 reasons to
8010     dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8011     dnl loaded by java to run JunitTests:
8012     if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8013         shortjdkhome=`cygpath -d "$with_jdk_home"`
8014         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
8015             AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8016             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8017         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
8018             AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8019             AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8020         fi
8022         if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8023             JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8024         fi
8025         JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8026     elif test "$cross_compiling" != "yes"; then
8027         case $CPUNAME in
8028             AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8029                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8030                     AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8031                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8032                 fi
8033                 ;;
8034             *) # assumption: everything else 32-bit
8035                 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != ""  >/dev/null; then
8036                     AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8037                     AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8038                 fi
8039                 ;;
8040         esac
8041     fi
8044 dnl ===================================================================
8045 dnl Checks for JDK.
8046 dnl ===================================================================
8048 # Whether all the complexity here actually is needed any more or not, no idea.
8050 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8051     _gij_longver=0
8052     AC_MSG_CHECKING([the installed JDK])
8053     if test -n "$JAVAINTERPRETER"; then
8054         dnl java -version sends output to stderr!
8055         if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8056             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8057         elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8058             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8059         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8060             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8061         elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8062             AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8063         else
8064             JDK=sun
8066             dnl Sun JDK specific tests
8067             _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8068             _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8070             if test "$_jdk_ver" -lt 10900; then
8071                 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8072             fi
8073             if test "$_jdk_ver" -gt 10900; then
8074                 JAVA_CLASSPATH_NOT_SET=TRUE
8075             fi
8077             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8078             if test "$_os" = "WINNT"; then
8079                 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8080             fi
8081             AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8083             # set to limit VM usage for JunitTests
8084             JAVAIFLAGS=-Xmx64M
8085             # set to limit VM usage for javac
8086             JAVACFLAGS=-J-Xmx128M
8087         fi
8088     else
8089         AC_MSG_ERROR([Java not found. You need at least JDK 9])
8090     fi
8091 else
8092     if test -z "$ENABLE_JAVA"; then
8093         dnl Java disabled
8094         JAVA_HOME=
8095         export JAVA_HOME
8096     elif test "$cross_compiling" = "yes"; then
8097         # Just assume compatibility of build and host JDK
8098         JDK=$JDK_FOR_BUILD
8099         JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8100     fi
8103 dnl ===================================================================
8104 dnl Checks for javac
8105 dnl ===================================================================
8106 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8107     javacompiler="javac"
8108     : ${JAVA_SOURCE_VER=8}
8109     : ${JAVA_TARGET_VER=8}
8110     if test -z "$with_jdk_home"; then
8111         AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8112     else
8113         _javac_path="$with_jdk_home/bin/$javacompiler"
8114         dnl Check if there is a Java compiler at all.
8115         if test -x "$_javac_path"; then
8116             JAVACOMPILER=$_javac_path
8117         fi
8118     fi
8119     if test -z "$JAVACOMPILER"; then
8120         AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8121     fi
8122     if test "$build_os" = "cygwin"; then
8123         if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8124             JAVACOMPILER="${JAVACOMPILER}.exe"
8125         fi
8126         JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8127     fi
8130 dnl ===================================================================
8131 dnl Checks for javadoc
8132 dnl ===================================================================
8133 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8134     if test -z "$with_jdk_home"; then
8135         AC_PATH_PROG(JAVADOC, javadoc)
8136     else
8137         _javadoc_path="$with_jdk_home/bin/javadoc"
8138         dnl Check if there is a javadoc at all.
8139         if test -x "$_javadoc_path"; then
8140             JAVADOC=$_javadoc_path
8141         else
8142             AC_PATH_PROG(JAVADOC, javadoc)
8143         fi
8144     fi
8145     if test -z "$JAVADOC"; then
8146         AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8147     fi
8148     if test "$build_os" = "cygwin"; then
8149         if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8150             JAVADOC="${JAVADOC}.exe"
8151         fi
8152         JAVADOC=`win_short_path_for_make "$JAVADOC"`
8153     fi
8155     if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8156     JAVADOCISGJDOC="yes"
8157     fi
8159 AC_SUBST(JAVADOC)
8160 AC_SUBST(JAVADOCISGJDOC)
8162 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8163     # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8164     if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8165         if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8166            # try to recover first by looking whether we have an alternative
8167            # system as in Debian or newer SuSEs where following /usr/bin/javac
8168            # over /etc/alternatives/javac leads to the right bindir where we
8169            # just need to strip a bit away to get a valid JAVA_HOME
8170            JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8171         elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8172             # maybe only one level of symlink (e.g. on Mac)
8173             JAVA_HOME=$(readlink $JAVACOMPILER)
8174             if test "$(dirname $JAVA_HOME)" = "."; then
8175                 # we've got no path to trim back
8176                 JAVA_HOME=""
8177             fi
8178         else
8179             # else warn
8180             AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8181             AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8182             add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8183             add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8184         fi
8185         dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8186         if test "$JAVA_HOME" != "/usr"; then
8187             if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8188                 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8189                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8190                 dnl Tiger already returns a JDK path...
8191                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8192             else
8193                 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8194                 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8195                 dnl that checks which version to run
8196                 if test -f "$JAVA_HOME"; then
8197                     JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8198                 fi
8199             fi
8200         fi
8201     fi
8202     # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8204     dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8205     if test -z "$JAVA_HOME"; then
8206         if test "x$with_jdk_home" = "x"; then
8207             cat > findhome.java <<_ACEOF
8208 [import java.io.File;
8210 class findhome
8212     public static void main(String args[])
8213     {
8214         String jrelocation = System.getProperty("java.home");
8215         File jre = new File(jrelocation);
8216         System.out.println(jre.getParent());
8217     }
8219 _ACEOF
8220             AC_MSG_CHECKING([if javac works])
8221             javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8222             AC_TRY_EVAL(javac_cmd)
8223             if test $? = 0 -a -f ./findhome.class; then
8224                 AC_MSG_RESULT([javac works])
8225             else
8226                 echo "configure: javac test failed" >&5
8227                 cat findhome.java >&5
8228                 AC_MSG_ERROR([javac does not work - java projects will not build!])
8229             fi
8230             AC_MSG_CHECKING([if gij knows its java.home])
8231             JAVA_HOME=`$JAVAINTERPRETER findhome`
8232             if test $? = 0 -a "$JAVA_HOME" != ""; then
8233                 AC_MSG_RESULT([$JAVA_HOME])
8234             else
8235                 echo "configure: java test failed" >&5
8236                 cat findhome.java >&5
8237                 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8238             fi
8239             # clean-up after ourselves
8240             rm -f ./findhome.java ./findhome.class
8241         else
8242             JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8243         fi
8244     fi
8246     # now check if $JAVA_HOME is really valid
8247     if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8248         case "${JAVA_HOME}" in
8249             /Library/Java/JavaVirtualMachines/*)
8250                 ;;
8251             *)
8252                 AC_MSG_ERROR([JDK in $JAVA_HOME cannot be used in CppUnit tests - install Oracle JDK])
8253                 ;;
8254         esac
8255         if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8256             AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8257             AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8258             AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8259             add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8260             add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8261             add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8262         fi
8263     fi
8264     PathFormat "$JAVA_HOME"
8265     JAVA_HOME="$formatted_path"
8268 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8269     "$_os" != Darwin
8270 then
8271     AC_MSG_CHECKING([for JAWT lib])
8272     if test "$_os" = WINNT; then
8273         # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8274         JAWTLIB=jawt.lib
8275     else
8276         case "$host_cpu" in
8277         arm*)
8278             AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8279             JAVA_ARCH=$my_java_arch
8280             ;;
8281         i*86)
8282             my_java_arch=i386
8283             ;;
8284         m68k)
8285             my_java_arch=m68k
8286             ;;
8287         powerpc)
8288             my_java_arch=ppc
8289             ;;
8290         powerpc64)
8291             my_java_arch=ppc64
8292             ;;
8293         powerpc64le)
8294             AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8295             JAVA_ARCH=$my_java_arch
8296             ;;
8297         sparc64)
8298             my_java_arch=sparcv9
8299             ;;
8300         x86_64)
8301             my_java_arch=amd64
8302             ;;
8303         *)
8304             my_java_arch=$host_cpu
8305             ;;
8306         esac
8307         # This is where JDK9 puts the library
8308         if test -e "$JAVA_HOME/lib/libjawt.so"; then
8309             JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8310         else
8311             JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8312         fi
8313         AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8314     fi
8315     AC_MSG_RESULT([$JAWTLIB])
8317 AC_SUBST(JAWTLIB)
8319 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8320     case "$host_os" in
8322     aix*)
8323         JAVAINC="-I$JAVA_HOME/include"
8324         JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8325         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8326         ;;
8328     cygwin*|wsl*)
8329         JAVAINC="-I$JAVA_HOME/include/win32"
8330         JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8331         ;;
8333     darwin*)
8334         if test -d "$JAVA_HOME/include/darwin"; then
8335             JAVAINC="-I$JAVA_HOME/include  -I$JAVA_HOME/include/darwin"
8336         else
8337             JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8338         fi
8339         ;;
8341     dragonfly*)
8342         JAVAINC="-I$JAVA_HOME/include"
8343         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8344         ;;
8346     freebsd*)
8347         JAVAINC="-I$JAVA_HOME/include"
8348         JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8349         JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8350         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8351         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8352         ;;
8354     k*bsd*-gnu*)
8355         JAVAINC="-I$JAVA_HOME/include"
8356         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8357         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8358         ;;
8360     linux-gnu*)
8361         JAVAINC="-I$JAVA_HOME/include"
8362         JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8363         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8364         ;;
8366     *netbsd*)
8367         JAVAINC="-I$JAVA_HOME/include"
8368         JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8369         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8370        ;;
8372     openbsd*)
8373         JAVAINC="-I$JAVA_HOME/include"
8374         JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8375         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8376         ;;
8378     solaris*)
8379         JAVAINC="-I$JAVA_HOME/include"
8380         JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8381         test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8382         ;;
8383     esac
8385 SOLARINC="$SOLARINC $JAVAINC"
8387 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8388     JAVA_HOME_FOR_BUILD=$JAVA_HOME
8389     JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8390     JDK_FOR_BUILD=$JDK
8393 AC_SUBST(JAVACFLAGS)
8394 AC_SUBST(JAVACOMPILER)
8395 AC_SUBST(JAVAINTERPRETER)
8396 AC_SUBST(JAVAIFLAGS)
8397 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8398 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8399 AC_SUBST(JAVA_HOME)
8400 AC_SUBST(JAVA_HOME_FOR_BUILD)
8401 AC_SUBST(JDK)
8402 AC_SUBST(JDK_FOR_BUILD)
8403 AC_SUBST(JAVA_SOURCE_VER)
8404 AC_SUBST(JAVA_TARGET_VER)
8407 dnl ===================================================================
8408 dnl Export file validation
8409 dnl ===================================================================
8410 AC_MSG_CHECKING([whether to enable export file validation])
8411 if test "$with_export_validation" != "no"; then
8412     if test -z "$ENABLE_JAVA"; then
8413         if test "$with_export_validation" = "yes"; then
8414             AC_MSG_ERROR([requested, but Java is disabled])
8415         else
8416             AC_MSG_RESULT([no, as Java is disabled])
8417         fi
8418     elif ! test -d "${SRC_ROOT}/schema"; then
8419         if test "$with_export_validation" = "yes"; then
8420             AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8421         else
8422             AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8423         fi
8424     else
8425         AC_MSG_RESULT([yes])
8426         AC_DEFINE(HAVE_EXPORT_VALIDATION)
8428         AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8429         if test -z "$ODFVALIDATOR"; then
8430             # remember to download the ODF toolkit with validator later
8431             AC_MSG_NOTICE([no odfvalidator found, will download it])
8432             BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8433             ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8435             # and fetch name of odfvalidator jar name from download.lst
8436             ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8437             AC_SUBST(ODFVALIDATOR_JAR)
8439             if test -z "$ODFVALIDATOR_JAR"; then
8440                 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8441             fi
8442         fi
8443         if test "$build_os" = "cygwin"; then
8444             # In case of Cygwin it will be executed from Windows,
8445             # so we need to run bash and absolute path to validator
8446             # so instead of "odfvalidator" it will be
8447             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8448             ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8449         else
8450             ODFVALIDATOR="sh $ODFVALIDATOR"
8451         fi
8452         AC_SUBST(ODFVALIDATOR)
8455         AC_PATH_PROGS(OFFICEOTRON, officeotron)
8456         if test -z "$OFFICEOTRON"; then
8457             # remember to download the officeotron with validator later
8458             AC_MSG_NOTICE([no officeotron found, will download it])
8459             BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8460             OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8462             # and fetch name of officeotron jar name from download.lst
8463             OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8464             AC_SUBST(OFFICEOTRON_JAR)
8466             if test -z "$OFFICEOTRON_JAR"; then
8467                 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8468             fi
8469         else
8470             # check version of existing officeotron
8471             OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8472             if test 0"$OFFICEOTRON_VER" -lt 704; then
8473                 AC_MSG_ERROR([officeotron too old])
8474             fi
8475         fi
8476         if test "$build_os" = "cygwin"; then
8477             # In case of Cygwin it will be executed from Windows,
8478             # so we need to run bash and absolute path to validator
8479             # so instead of "odfvalidator" it will be
8480             # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8481             OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8482         else
8483             OFFICEOTRON="sh $OFFICEOTRON"
8484         fi
8485     fi
8486     AC_SUBST(OFFICEOTRON)
8487 else
8488     AC_MSG_RESULT([no])
8491 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8492 if test "$with_bffvalidator" != "no"; then
8493     AC_DEFINE(HAVE_BFFVALIDATOR)
8495     if test "$with_export_validation" = "no"; then
8496         AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8497     fi
8499     if test "$with_bffvalidator" = "yes"; then
8500         BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8501     else
8502         BFFVALIDATOR="$with_bffvalidator"
8503     fi
8505     if test "$build_os" = "cygwin"; then
8506         if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8507             AC_MSG_RESULT($BFFVALIDATOR)
8508         else
8509             AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8510         fi
8511     elif test -n "$BFFVALIDATOR"; then
8512         # We are not in Cygwin but need to run Windows binary with wine
8513         AC_PATH_PROGS(WINE, wine)
8515         # so swap in a shell wrapper that converts paths transparently
8516         BFFVALIDATOR_EXE="$BFFVALIDATOR"
8517         BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8518         AC_SUBST(BFFVALIDATOR_EXE)
8519         AC_MSG_RESULT($BFFVALIDATOR)
8520     else
8521         AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8522     fi
8523     AC_SUBST(BFFVALIDATOR)
8524 else
8525     AC_MSG_RESULT([no])
8528 dnl ===================================================================
8529 dnl Check for C preprocessor to use
8530 dnl ===================================================================
8531 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8532 if test -n "$with_idlc_cpp"; then
8533     AC_MSG_RESULT([$with_idlc_cpp])
8534     AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8535 else
8536     AC_MSG_RESULT([ucpp])
8537     AC_MSG_CHECKING([which ucpp tp use])
8538     if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8539         AC_MSG_RESULT([external])
8540         AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8541     else
8542         AC_MSG_RESULT([internal])
8543         BUILD_TYPE="$BUILD_TYPE UCPP"
8544     fi
8546 AC_SUBST(SYSTEM_UCPP)
8548 dnl ===================================================================
8549 dnl Check for epm (not needed for Windows)
8550 dnl ===================================================================
8551 AC_MSG_CHECKING([whether to enable EPM for packing])
8552 if test "$enable_epm" = "yes"; then
8553     AC_MSG_RESULT([yes])
8554     if test "$_os" != "WINNT"; then
8555         if test $_os = Darwin; then
8556             EPM=internal
8557         elif test -n "$with_epm"; then
8558             EPM=$with_epm
8559         else
8560             AC_PATH_PROG(EPM, epm, no)
8561         fi
8562         if test "$EPM" = "no" -o "$EPM" = "internal"; then
8563             AC_MSG_NOTICE([EPM will be built.])
8564             BUILD_TYPE="$BUILD_TYPE EPM"
8565             EPM=${WORKDIR}/UnpackedTarball/epm/epm
8566         else
8567             # Gentoo has some epm which is something different...
8568             AC_MSG_CHECKING([whether the found epm is the right epm])
8569             if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8570                 AC_MSG_RESULT([yes])
8571             else
8572                 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8573             fi
8574             AC_MSG_CHECKING([epm version])
8575             EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8576             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8577                test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8578                 AC_MSG_RESULT([OK, >= 3.7])
8579             else
8580                 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8581                 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8582             fi
8583         fi
8584     fi
8586     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8587         AC_MSG_CHECKING([for rpm])
8588         for a in "$RPM" rpmbuild rpm; do
8589             $a --usage >/dev/null 2> /dev/null
8590             if test $? -eq 0; then
8591                 RPM=$a
8592                 break
8593             else
8594                 $a --version >/dev/null 2> /dev/null
8595                 if test $? -eq 0; then
8596                     RPM=$a
8597                     break
8598                 fi
8599             fi
8600         done
8601         if test -z "$RPM"; then
8602             AC_MSG_ERROR([not found])
8603         elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8604             RPM_PATH=`which $RPM`
8605             AC_MSG_RESULT([$RPM_PATH])
8606             SCPDEFS="$SCPDEFS -DWITH_RPM"
8607         else
8608             AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8609         fi
8610     fi
8611     if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8612         AC_PATH_PROG(DPKG, dpkg, no)
8613         if test "$DPKG" = "no"; then
8614             AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8615         fi
8616     fi
8617     if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8618        echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8619         if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8620             if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8621                 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8622                 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8623                     AC_MSG_RESULT([yes])
8624                 else
8625                     AC_MSG_RESULT([no])
8626                     if echo "$PKGFORMAT" | $GREP -q rpm; then
8627                         _pt="rpm"
8628                         AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8629                         add_warning "the rpms will need to be installed with --nodeps"
8630                     else
8631                         _pt="pkg"
8632                     fi
8633                     AC_MSG_WARN([the ${_pt}s will not be relocatable])
8634                     add_warning "the ${_pt}s will not be relocatable"
8635                     AC_MSG_WARN([if you want to make sure installation without --nodeps and
8636                                  relocation will work, you need to patch your epm with the
8637                                  patch in epm/epm-3.7.patch or build with
8638                                  --with-epm=internal which will build a suitable epm])
8639                 fi
8640             fi
8641         fi
8642     fi
8643     if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8644         AC_PATH_PROG(PKGMK, pkgmk, no)
8645         if test "$PKGMK" = "no"; then
8646             AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8647         fi
8648     fi
8649     AC_SUBST(RPM)
8650     AC_SUBST(DPKG)
8651     AC_SUBST(PKGMK)
8652 else
8653     for i in $PKGFORMAT; do
8654         case "$i" in
8655         aix | bsd | deb | pkg | rpm | native | portable)
8656             AC_MSG_ERROR(
8657                 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8658             ;;
8659         esac
8660     done
8661     AC_MSG_RESULT([no])
8662     EPM=NO
8664 AC_SUBST(EPM)
8666 ENABLE_LWP=
8667 if test "$enable_lotuswordpro" = "yes"; then
8668     ENABLE_LWP="TRUE"
8670 AC_SUBST(ENABLE_LWP)
8672 dnl ===================================================================
8673 dnl Check for building ODK
8674 dnl ===================================================================
8675 if test "$enable_odk" = no; then
8676     unset DOXYGEN
8677 else
8678     if test "$with_doxygen" = no; then
8679         AC_MSG_CHECKING([for doxygen])
8680         unset DOXYGEN
8681         AC_MSG_RESULT([no])
8682     else
8683         if test "$with_doxygen" = yes; then
8684             AC_PATH_PROG([DOXYGEN], [doxygen])
8685             if test -z "$DOXYGEN"; then
8686                 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8687             fi
8688             if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8689                 if ! dot -V 2>/dev/null; then
8690                     AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8691                 fi
8692             fi
8693         else
8694             AC_MSG_CHECKING([for doxygen])
8695             DOXYGEN=$with_doxygen
8696             AC_MSG_RESULT([$DOXYGEN])
8697         fi
8698         if test -n "$DOXYGEN"; then
8699             DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8700             DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8701             if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8702                 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8703             fi
8704         fi
8705     fi
8707 AC_SUBST([DOXYGEN])
8709 AC_MSG_CHECKING([whether to build the ODK])
8710 if test "$enable_odk" = "" -o "$enable_odk" != "no"; then
8711     AC_MSG_RESULT([yes])
8712     BUILD_TYPE="$BUILD_TYPE ODK"
8713 else
8714     AC_MSG_RESULT([no])
8717 dnl ===================================================================
8718 dnl Check for system zlib
8719 dnl ===================================================================
8720 if test "$with_system_zlib" = "auto"; then
8721     case "$_os" in
8722     WINNT)
8723         with_system_zlib="$with_system_libs"
8724         ;;
8725     *)
8726         if test "$enable_fuzzers" != "yes"; then
8727             with_system_zlib=yes
8728         else
8729             with_system_zlib=no
8730         fi
8731         ;;
8732     esac
8735 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8736 dnl and has no pkg-config for it at least on some tinderboxes,
8737 dnl so leaving that out for now
8738 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8739 AC_MSG_CHECKING([which zlib to use])
8740 if test "$with_system_zlib" = "yes"; then
8741     AC_MSG_RESULT([external])
8742     SYSTEM_ZLIB=TRUE
8743     AC_CHECK_HEADER(zlib.h, [],
8744         [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8745     AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8746         [AC_MSG_ERROR(zlib not found or functional)], [])
8747 else
8748     AC_MSG_RESULT([internal])
8749     SYSTEM_ZLIB=
8750     BUILD_TYPE="$BUILD_TYPE ZLIB"
8751     ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
8752     ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
8754 AC_SUBST(ZLIB_CFLAGS)
8755 AC_SUBST(ZLIB_LIBS)
8756 AC_SUBST(SYSTEM_ZLIB)
8758 dnl ===================================================================
8759 dnl Check for system jpeg
8760 dnl ===================================================================
8761 AC_MSG_CHECKING([which libjpeg to use])
8762 if test "$with_system_jpeg" = "yes"; then
8763     AC_MSG_RESULT([external])
8764     SYSTEM_LIBJPEG=TRUE
8765     AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
8766         [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
8767     AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
8768         [AC_MSG_ERROR(jpeg library not found or functional)], [])
8769 else
8770     SYSTEM_LIBJPEG=
8771     AC_MSG_RESULT([internal, libjpeg-turbo])
8772     BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
8773     LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo"
8774     if test "$COM" = "MSC"; then
8775         LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib"
8776     else
8777         LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg"
8778     fi
8780     case "$host_cpu" in
8781     x86_64 | amd64 | i*86 | x86 | ia32)
8782         AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
8783         if test -z "$NASM" -a "$build_os" = "cygwin"; then
8784             if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
8785                 NASM="$LODE_HOME/opt/bin/nasm"
8786             elif test -x "/opt/lo/bin/nasm"; then
8787                 NASM="/opt/lo/bin/nasm"
8788             fi
8789         fi
8791         if test -n "$NASM"; then
8792             AC_MSG_CHECKING([for object file format of host system])
8793             case "$host_os" in
8794               cygwin* | mingw* | pw32* | wsl*)
8795                 case "$host_cpu" in
8796                   x86_64)
8797                     objfmt='Win64-COFF'
8798                     ;;
8799                   *)
8800                     objfmt='Win32-COFF'
8801                     ;;
8802                 esac
8803               ;;
8804               msdosdjgpp* | go32*)
8805                 objfmt='COFF'
8806               ;;
8807               os2-emx*) # not tested
8808                 objfmt='MSOMF' # obj
8809               ;;
8810               linux*coff* | linux*oldld*)
8811                 objfmt='COFF' # ???
8812               ;;
8813               linux*aout*)
8814                 objfmt='a.out'
8815               ;;
8816               linux*)
8817                 case "$host_cpu" in
8818                   x86_64)
8819                     objfmt='ELF64'
8820                     ;;
8821                   *)
8822                     objfmt='ELF'
8823                     ;;
8824                 esac
8825               ;;
8826               kfreebsd* | freebsd* | netbsd* | openbsd*)
8827                 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
8828                   objfmt='BSD-a.out'
8829                 else
8830                   case "$host_cpu" in
8831                     x86_64 | amd64)
8832                       objfmt='ELF64'
8833                       ;;
8834                     *)
8835                       objfmt='ELF'
8836                       ;;
8837                   esac
8838                 fi
8839               ;;
8840               solaris* | sunos* | sysv* | sco*)
8841                 case "$host_cpu" in
8842                   x86_64)
8843                     objfmt='ELF64'
8844                     ;;
8845                   *)
8846                     objfmt='ELF'
8847                     ;;
8848                 esac
8849               ;;
8850               darwin* | rhapsody* | nextstep* | openstep* | macos*)
8851                 case "$host_cpu" in
8852                   x86_64)
8853                     objfmt='Mach-O64'
8854                     ;;
8855                   *)
8856                     objfmt='Mach-O'
8857                     ;;
8858                 esac
8859               ;;
8860               *)
8861                 objfmt='ELF ?'
8862               ;;
8863             esac
8865             AC_MSG_RESULT([$objfmt])
8866             if test "$objfmt" = 'ELF ?'; then
8867               objfmt='ELF'
8868               AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
8869             fi
8871             AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
8872             case "$objfmt" in
8873               MSOMF)      NAFLAGS='-fobj -DOBJ32';;
8874               Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
8875               Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
8876               COFF)       NAFLAGS='-fcoff -DCOFF';;
8877               a.out)      NAFLAGS='-faout -DAOUT';;
8878               BSD-a.out)  NAFLAGS='-faoutb -DAOUT';;
8879               ELF)        NAFLAGS='-felf -DELF';;
8880               ELF64)      NAFLAGS='-felf64 -DELF -D__x86_64__';;
8881               RDF)        NAFLAGS='-frdf -DRDF';;
8882               Mach-O)     NAFLAGS='-fmacho -DMACHO';;
8883               Mach-O64)   NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
8884             esac
8885             AC_MSG_RESULT([$NAFLAGS])
8887             AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
8888             cat > conftest.asm << EOF
8889             [%line __oline__ "configure"
8890                     section .text
8891                     global  _main,main
8892             _main:
8893             main:   xor     eax,eax
8894                     ret
8895             ]
8897             try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
8898             if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
8899               AC_MSG_RESULT(yes)
8900             else
8901               echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
8902               cat conftest.asm >&AS_MESSAGE_LOG_FD
8903               rm -rf conftest*
8904               AC_MSG_RESULT(no)
8905               AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
8906               NASM=""
8907             fi
8909         fi
8911         if test -z "$NASM"; then
8912 cat << _EOS
8913 ****************************************************************************
8914 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
8915 To get one please:
8917 _EOS
8918             if test "$build_os" = "cygwin"; then
8919 cat << _EOS
8920 install a pre-compiled binary for Win32
8922 mkdir -p /opt/lo/bin
8923 cd /opt/lo/bin
8924 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
8925 chmod +x nasm
8927 or get and install one from http://www.nasm.us/
8929 Then re-run autogen.sh
8931 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
8932 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
8934 _EOS
8935             else
8936 cat << _EOS
8937 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
8939 _EOS
8940             fi
8941             AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
8942             add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
8943         fi
8944       ;;
8945     esac
8948 AC_SUBST(NASM)
8949 AC_SUBST(LIBJPEG_CFLAGS)
8950 AC_SUBST(LIBJPEG_LIBS)
8951 AC_SUBST(SYSTEM_LIBJPEG)
8953 dnl ===================================================================
8954 dnl Check for system clucene
8955 dnl ===================================================================
8956 dnl we should rather be using
8957 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
8958 dnl but the contribs-lib check seems tricky
8959 AC_MSG_CHECKING([which clucene to use])
8960 if test "$with_system_clucene" = "yes"; then
8961     AC_MSG_RESULT([external])
8962     SYSTEM_CLUCENE=TRUE
8963     PKG_CHECK_MODULES(CLUCENE, libclucene-core)
8964     CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
8965     FilterLibs "${CLUCENE_LIBS}"
8966     CLUCENE_LIBS="${filteredlibs}"
8967     AC_LANG_PUSH([C++])
8968     save_CXXFLAGS=$CXXFLAGS
8969     save_CPPFLAGS=$CPPFLAGS
8970     CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
8971     CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
8972     dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
8973     dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
8974     AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
8975                  [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
8976     CXXFLAGS=$save_CXXFLAGS
8977     CPPFLAGS=$save_CPPFLAGS
8978     AC_LANG_POP([C++])
8980     CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
8981 else
8982     AC_MSG_RESULT([internal])
8983     SYSTEM_CLUCENE=
8984     BUILD_TYPE="$BUILD_TYPE CLUCENE"
8986 AC_SUBST(SYSTEM_CLUCENE)
8987 AC_SUBST(CLUCENE_CFLAGS)
8988 AC_SUBST(CLUCENE_LIBS)
8990 dnl ===================================================================
8991 dnl Check for system expat
8992 dnl ===================================================================
8993 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
8995 dnl ===================================================================
8996 dnl Check for system xmlsec
8997 dnl ===================================================================
8998 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9000 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9001 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9002     ENABLE_EOT="TRUE"
9003     AC_DEFINE([ENABLE_EOT])
9004     AC_MSG_RESULT([yes])
9006     libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9007 else
9008     ENABLE_EOT=
9009     AC_MSG_RESULT([no])
9011 AC_SUBST([ENABLE_EOT])
9013 dnl ===================================================================
9014 dnl Check for DLP libs
9015 dnl ===================================================================
9016 AS_IF([test "$COM" = "MSC"],
9017       [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9018       [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9020 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9022 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9024 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9026 AS_IF([test "$COM" = "MSC"],
9027       [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9028       [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9030 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9032 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9034 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9035 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9037 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9039 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9041 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9043 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9044 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.17])
9046 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9047 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
9049 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9051 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9052 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9054 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9056 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9058 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9060 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9062 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9063 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9065 dnl ===================================================================
9066 dnl Check for system lcms2
9067 dnl ===================================================================
9068 if test "$with_system_lcms2" != "yes"; then
9069     SYSTEM_LCMS2=
9071 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9072 if test "$GCC" = "yes"; then
9073     LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9075 if test "$COM" = "MSC"; then # override the above
9076     LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9079 dnl ===================================================================
9080 dnl Check for system cppunit
9081 dnl ===================================================================
9082 if test "$_os" != "Android" ; then
9083     libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9086 dnl ===================================================================
9087 dnl Check whether freetype is available
9088 dnl ===================================================================
9089 if test  "$test_freetype" = "yes"; then
9090     AC_MSG_CHECKING([whether freetype is available])
9091     # FreeType has 3 different kinds of versions
9092     # * release, like 2.4.10
9093     # * libtool, like 13.0.7 (this what pkg-config returns)
9094     # * soname
9095     # FreeType's docs/VERSION.DLL provides a table mapping between the three
9096     #
9097     # 9.9.3 is 2.2.0
9098     PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9099     FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9100     FilterLibs "${FREETYPE_LIBS}"
9101     FREETYPE_LIBS="${filteredlibs}"
9102     SYSTEM_FREETYPE=TRUE
9103 else
9104     FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9105     if test "x$ac_config_site_64bit_host" = xYES; then
9106         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9107     else
9108         FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9109     fi
9111 AC_SUBST(FREETYPE_CFLAGS)
9112 AC_SUBST(FREETYPE_LIBS)
9113 AC_SUBST([SYSTEM_FREETYPE])
9115 # ===================================================================
9116 # Check for system libxslt
9117 # to prevent incompatibilities between internal libxml2 and external libxslt,
9118 # or vice versa, use with_system_libxml here
9119 # ===================================================================
9120 if test "$with_system_libxml" = "auto"; then
9121     case "$_os" in
9122     WINNT|iOS|Android)
9123         with_system_libxml="$with_system_libs"
9124         ;;
9125     *)
9126         if test "$enable_fuzzers" != "yes"; then
9127             with_system_libxml=yes
9128         else
9129             with_system_libxml=no
9130         fi
9131         ;;
9132     esac
9135 AC_MSG_CHECKING([which libxslt to use])
9136 if test "$with_system_libxml" = "yes"; then
9137     AC_MSG_RESULT([external])
9138     SYSTEM_LIBXSLT=TRUE
9139     if test "$_os" = "Darwin"; then
9140         dnl make sure to use SDK path
9141         LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9142         LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9143         dnl omit -L/usr/lib
9144         LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9145         LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9146     else
9147         PKG_CHECK_MODULES(LIBXSLT, libxslt)
9148         LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9149         FilterLibs "${LIBXSLT_LIBS}"
9150         LIBXSLT_LIBS="${filteredlibs}"
9151         PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9152         LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9153         FilterLibs "${LIBEXSLT_LIBS}"
9154         LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//"  -e "s/-lgcrypt//")
9155     fi
9157     dnl Check for xsltproc
9158     AC_PATH_PROG(XSLTPROC, xsltproc, no)
9159     if test "$XSLTPROC" = "no"; then
9160         AC_MSG_ERROR([xsltproc is required])
9161     fi
9162 else
9163     AC_MSG_RESULT([internal])
9164     SYSTEM_LIBXSLT=
9165     BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9167 AC_SUBST(SYSTEM_LIBXSLT)
9168 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9169     SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9171 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9173 AC_SUBST(LIBEXSLT_CFLAGS)
9174 AC_SUBST(LIBEXSLT_LIBS)
9175 AC_SUBST(LIBXSLT_CFLAGS)
9176 AC_SUBST(LIBXSLT_LIBS)
9177 AC_SUBST(XSLTPROC)
9179 # ===================================================================
9180 # Check for system libxml
9181 # ===================================================================
9182 AC_MSG_CHECKING([which libxml to use])
9183 if test "$with_system_libxml" = "yes"; then
9184     AC_MSG_RESULT([external])
9185     SYSTEM_LIBXML=TRUE
9186     if test "$_os" = "Darwin"; then
9187         dnl make sure to use SDK path
9188         LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9189         dnl omit -L/usr/lib
9190         LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9191     elif test $_os = iOS; then
9192         dnl make sure to use SDK path
9193         usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9194         LIBXML_CFLAGS="-I$usr/include/libxml2"
9195         LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9196     else
9197         PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9198         LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9199         FilterLibs "${LIBXML_LIBS}"
9200         LIBXML_LIBS="${filteredlibs}"
9201     fi
9203     dnl Check for xmllint
9204     AC_PATH_PROG(XMLLINT, xmllint, no)
9205     if test "$XMLLINT" = "no"; then
9206         AC_MSG_ERROR([xmllint is required])
9207     fi
9208 else
9209     AC_MSG_RESULT([internal])
9210     SYSTEM_LIBXML=
9211     LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9212     if test "$COM" = "MSC"; then
9213         LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9214     fi
9215     if test "$COM" = "MSC"; then
9216         LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9217     else
9218         LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9219         if test "$_os" = Android; then
9220             LIBXML_LIBS="$LIBXML_LIBS -lm"
9221         fi
9222     fi
9223     BUILD_TYPE="$BUILD_TYPE LIBXML2"
9225 AC_SUBST(SYSTEM_LIBXML)
9226 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9227     SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9229 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9230 AC_SUBST(LIBXML_CFLAGS)
9231 AC_SUBST(LIBXML_LIBS)
9232 AC_SUBST(XMLLINT)
9234 # =====================================================================
9235 # Checking for a Python interpreter with version >= 3.3.
9236 # Optionally user can pass an option to configure, i. e.
9237 # ./configure PYTHON=/usr/bin/python
9238 # =====================================================================
9239 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal; then
9240     # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9241     enable_python=internal
9243 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9244     if test -n "$PYTHON"; then
9245         PYTHON_FOR_BUILD=$PYTHON
9246     else
9247         # This allows a lack of system python with no error, we use internal one in that case.
9248         AM_PATH_PYTHON([3.3],, [:])
9249         # Clean PYTHON_VERSION checked below if cross-compiling
9250         PYTHON_VERSION=""
9251         if test "$PYTHON" != ":"; then
9252             PYTHON_FOR_BUILD=$PYTHON
9253         fi
9254     fi
9256 AC_SUBST(PYTHON_FOR_BUILD)
9258 # Checks for Python to use for Pyuno
9259 AC_MSG_CHECKING([which Python to use for Pyuno])
9260 case "$enable_python" in
9261 no|disable)
9262     if test -z $PYTHON_FOR_BUILD; then
9263         # Python is required to build LibreOffice. In theory we could separate the build-time Python
9264         # requirement from the choice whether to include Python stuff in the installer, but why
9265         # bother?
9266         AC_MSG_ERROR([Python is required at build time.])
9267     fi
9268     enable_python=no
9269     AC_MSG_RESULT([none])
9270     ;;
9271 ""|yes|auto)
9272     if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9273         AC_MSG_RESULT([no, overridden by --disable-scripting])
9274         enable_python=no
9275     elif test $build_os = cygwin; then
9276         dnl When building on Windows we don't attempt to use any installed
9277         dnl "system"  Python.
9278         AC_MSG_RESULT([fully internal])
9279         enable_python=internal
9280     elif test "$cross_compiling" = yes; then
9281         AC_MSG_RESULT([system])
9282         enable_python=system
9283     else
9284         # Unset variables set by the above AM_PATH_PYTHON so that
9285         # we actually do check anew.
9286         AC_MSG_RESULT([])
9287         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
9288         AM_PATH_PYTHON([3.3],, [:])
9289         AC_MSG_CHECKING([which Python to use for Pyuno])
9290         if test "$PYTHON" = ":"; then
9291             if test -z "$PYTHON_FOR_BUILD"; then
9292                 AC_MSG_RESULT([fully internal])
9293             else
9294                 AC_MSG_RESULT([internal])
9295             fi
9296             enable_python=internal
9297         else
9298             AC_MSG_RESULT([system])
9299             enable_python=system
9300         fi
9301     fi
9302     ;;
9303 internal)
9304     AC_MSG_RESULT([internal])
9305     ;;
9306 fully-internal)
9307     AC_MSG_RESULT([fully internal])
9308     enable_python=internal
9309     ;;
9310 system)
9311     AC_MSG_RESULT([system])
9312     if test "$_os" = Darwin; then
9313         AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9314     fi
9315     ;;
9317     AC_MSG_ERROR([Incorrect --enable-python option])
9318     ;;
9319 esac
9321 if test $enable_python != no; then
9322     BUILD_TYPE="$BUILD_TYPE PYUNO"
9325 if test $enable_python = system; then
9326     if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9327         # Fallback: Accept these in the environment, or as set above
9328         # for MacOSX.
9329         :
9330     elif test "$cross_compiling" != yes; then
9331         # Unset variables set by the above AM_PATH_PYTHON so that
9332         # we actually do check anew.
9333         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
9334         # This causes an error if no python command is found
9335         AM_PATH_PYTHON([3.3])
9336         python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9337         python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9338         python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9339         python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9340         if test -z "$PKG_CONFIG"; then
9341             PYTHON_CFLAGS="-I$python_include"
9342             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9343         elif $PKG_CONFIG --exists python-$python_version-embed; then
9344             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9345             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9346         elif $PKG_CONFIG --exists python-$python_version; then
9347             PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9348             PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9349         else
9350             PYTHON_CFLAGS="-I$python_include"
9351             PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9352         fi
9353         FilterLibs "${PYTHON_LIBS}"
9354         PYTHON_LIBS="${filteredlibs}"
9355     else
9356         dnl How to find out the cross-compilation Python installation path?
9357         AC_MSG_CHECKING([for python version])
9358         AS_IF([test -n "$PYTHON_VERSION"],
9359               [AC_MSG_RESULT([$PYTHON_VERSION])],
9360               [AC_MSG_RESULT([not found])
9361                AC_MSG_ERROR([no usable python found])])
9362         test -n "$PYTHON_CFLAGS" && break
9363     fi
9365     dnl Check if the headers really work
9366     save_CPPFLAGS="$CPPFLAGS"
9367     CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9368     AC_CHECK_HEADER(Python.h)
9369     CPPFLAGS="$save_CPPFLAGS"
9371     # let the PYTHON_FOR_BUILD match the same python installation that
9372     # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9373     # better for PythonTests.
9374     PYTHON_FOR_BUILD=$PYTHON
9377 if test "$with_lxml" != no; then
9378     if test -z "$PYTHON_FOR_BUILD"; then
9379         case $build_os in
9380             cygwin)
9381                 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9382                 ;;
9383             *)
9384                 if test "$cross_compiling" != yes ; then
9385                     BUILD_TYPE="$BUILD_TYPE LXML"
9386                 fi
9387                 ;;
9388         esac
9389     else
9390         AC_MSG_CHECKING([for python lxml])
9391         if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9392             AC_MSG_RESULT([yes])
9393         else
9394             case $build_os in
9395                 cygwin)
9396                     AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9397                     ;;
9398                 *)
9399                     if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9400                         if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9401                             AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9402                         else
9403                             BUILD_TYPE="$BUILD_TYPE LXML"
9404                             AC_MSG_RESULT([no, using internal lxml])
9405                         fi
9406                     else
9407                         AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9408                     fi
9409                     ;;
9410             esac
9411         fi
9412     fi
9415 dnl By now enable_python should be "system", "internal" or "no"
9416 case $enable_python in
9417 system)
9418     SYSTEM_PYTHON=TRUE
9420     if test "x$ac_cv_header_Python_h" != "xyes"; then
9421        AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9422     fi
9424     AC_LANG_PUSH(C)
9425     CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9426     AC_MSG_CHECKING([for correct python library version])
9427        AC_RUN_IFELSE([AC_LANG_SOURCE([[
9428 #include <Python.h>
9430 int main(int argc, char **argv) {
9431    if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9432    else return 1;
9434        ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9435     AC_LANG_POP(C)
9437     dnl FIXME Check if the Python library can be linked with, too?
9438     ;;
9440 internal)
9441     SYSTEM_PYTHON=
9442     PYTHON_VERSION_MAJOR=3
9443     PYTHON_VERSION_MINOR=8
9444     PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.4
9445     if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9446         AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9447     fi
9448     AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9449     BUILD_TYPE="$BUILD_TYPE PYTHON"
9450     if test "$OS" = LINUX -o "$OS" = WNT ; then
9451         BUILD_TYPE="$BUILD_TYPE LIBFFI"
9452     fi
9453     # Embedded Python dies without Home set
9454     if test "$HOME" = ""; then
9455         export HOME=""
9456     fi
9457     ;;
9459     DISABLE_PYTHON=TRUE
9460     SYSTEM_PYTHON=
9461     ;;
9463     AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9464     ;;
9465 esac
9467 AC_SUBST(DISABLE_PYTHON)
9468 AC_SUBST(SYSTEM_PYTHON)
9469 AC_SUBST(PYTHON_CFLAGS)
9470 AC_SUBST(PYTHON_LIBS)
9471 AC_SUBST(PYTHON_VERSION)
9472 AC_SUBST(PYTHON_VERSION_MAJOR)
9473 AC_SUBST(PYTHON_VERSION_MINOR)
9475 ENABLE_MARIADBC=
9476 MARIADBC_MAJOR=1
9477 MARIADBC_MINOR=0
9478 MARIADBC_MICRO=2
9479 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9480 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9481     ENABLE_MARIADBC=TRUE
9482     AC_MSG_RESULT([yes])
9483     BUILD_TYPE="$BUILD_TYPE MARIADBC"
9484 else
9485     AC_MSG_RESULT([no])
9487 AC_SUBST(ENABLE_MARIADBC)
9488 AC_SUBST(MARIADBC_MAJOR)
9489 AC_SUBST(MARIADBC_MINOR)
9490 AC_SUBST(MARIADBC_MICRO)
9492 if test "$ENABLE_MARIADBC" = "TRUE"; then
9493     dnl ===================================================================
9494     dnl Check for system MariaDB
9495     dnl ===================================================================
9496     AC_MSG_CHECKING([which MariaDB to use])
9497     if test "$with_system_mariadb" = "yes"; then
9498         AC_MSG_RESULT([external])
9499         SYSTEM_MARIADB_CONNECTOR_C=TRUE
9500         #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9501         if test -z "$MARIADBCONFIG"; then
9502             AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9503             if test -z "$MARIADBCONFIG"; then
9504                 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9505                 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9506             fi
9507         fi
9508         AC_MSG_CHECKING([MariaDB version])
9509         MARIADB_VERSION=`$MARIADBCONFIG --version`
9510         MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9511         if test "$MARIADB_MAJOR" -ge "5"; then
9512             AC_MSG_RESULT([OK])
9513         else
9514             AC_MSG_ERROR([too old, use 5.0.x or later])
9515         fi
9516         AC_MSG_CHECKING([for MariaDB Client library])
9517         MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9518         if test "$COM_IS_CLANG" = TRUE; then
9519             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9520         fi
9521         MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9522         dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9523         dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9524         dnl linux32:
9525         if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9526             MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9527             MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9528                 | sed -e 's|/lib64/|/lib/|')
9529         fi
9530         FilterLibs "${MARIADB_LIBS}"
9531         MARIADB_LIBS="${filteredlibs}"
9532         AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9533         AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9534         if test "$enable_bundle_mariadb" = "yes"; then
9535             AC_MSG_RESULT([yes])
9536             BUNDLE_MARIADB_CONNECTOR_C=TRUE
9537             LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9539 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9541 /g' | grep -E '(mysqlclient|mariadb)')
9542             if test "$_os" = "Darwin"; then
9543                 LIBMARIADB=${LIBMARIADB}.dylib
9544             elif test "$_os" = "WINNT"; then
9545                 LIBMARIADB=${LIBMARIADB}.dll
9546             else
9547                 LIBMARIADB=${LIBMARIADB}.so
9548             fi
9549             LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9550             AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9551             if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9552                 AC_MSG_RESULT([found.])
9553                 PathFormat "$LIBMARIADB_PATH"
9554                 LIBMARIADB_PATH="$formatted_path"
9555             else
9556                 AC_MSG_ERROR([not found.])
9557             fi
9558         else
9559             AC_MSG_RESULT([no])
9560             BUNDLE_MARIADB_CONNECTOR_C=
9561         fi
9562     else
9563         AC_MSG_RESULT([internal])
9564         SYSTEM_MARIADB_CONNECTOR_C=
9565         MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9566         MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9567         BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9568     fi
9570     AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9571     AC_SUBST(MARIADB_CFLAGS)
9572     AC_SUBST(MARIADB_LIBS)
9573     AC_SUBST(LIBMARIADB)
9574     AC_SUBST(LIBMARIADB_PATH)
9575     AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9578 dnl ===================================================================
9579 dnl Check for system hsqldb
9580 dnl ===================================================================
9581 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9582     HSQLDB_USE_JDBC_4_1=
9583     AC_MSG_CHECKING([which hsqldb to use])
9584     if test "$with_system_hsqldb" = "yes"; then
9585         AC_MSG_RESULT([external])
9586         SYSTEM_HSQLDB=TRUE
9587         if test -z $HSQLDB_JAR; then
9588             HSQLDB_JAR=/usr/share/java/hsqldb.jar
9589         fi
9590         if ! test -f $HSQLDB_JAR; then
9591                AC_MSG_ERROR(hsqldb.jar not found.)
9592         fi
9593         AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9594         export HSQLDB_JAR
9595         if $PERL -e \
9596            'use Archive::Zip;
9597             my $file = "$ENV{'HSQLDB_JAR'}";
9598             my $zip = Archive::Zip->new( $file );
9599             my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9600             if ( $mf =~ m/Specification-Version: 1.8.*/ )
9601             {
9602                 push @l, split(/\n/, $mf);
9603                 foreach my $line (@l)
9604                 {
9605                     if ($line =~ m/Specification-Version:/)
9606                     {
9607                         ($t, $version) = split (/:/,$line);
9608                         $version =~ s/^\s//;
9609                         ($a, $b, $c, $d) = split (/\./,$version);
9610                         if ($c == "0" && $d > "8")
9611                         {
9612                             exit 0;
9613                         }
9614                         else
9615                         {
9616                             exit 1;
9617                         }
9618                     }
9619                 }
9620             }
9621             else
9622             {
9623                 exit 1;
9624             }'; then
9625             AC_MSG_RESULT([yes])
9626         else
9627             AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9628         fi
9629     else
9630         AC_MSG_RESULT([internal])
9631         SYSTEM_HSQLDB=
9632         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9633         NEED_ANT=TRUE
9634         AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9635         javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9636         if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9637             AC_MSG_RESULT([yes])
9638             HSQLDB_USE_JDBC_4_1=TRUE
9639         else
9640             AC_MSG_RESULT([no])
9641         fi
9642     fi
9643 else
9644     if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9645         BUILD_TYPE="$BUILD_TYPE HSQLDB"
9646     fi
9648 AC_SUBST(SYSTEM_HSQLDB)
9649 AC_SUBST(HSQLDB_JAR)
9650 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9652 dnl ===================================================================
9653 dnl Check for PostgreSQL stuff
9654 dnl ===================================================================
9655 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9656 if test "x$enable_postgresql_sdbc" != "xno"; then
9657     AC_MSG_RESULT([yes])
9658     SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9660     if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9661         AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9662     fi
9663     if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9664         AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9665     fi
9667     postgres_interface=""
9668     if test "$with_system_postgresql" = "yes"; then
9669         postgres_interface="external PostgreSQL"
9670         SYSTEM_POSTGRESQL=TRUE
9671         if test "$_os" = Darwin; then
9672             supp_path=''
9673             for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9674                 pg_supp_path="$P_SEP$d$pg_supp_path"
9675             done
9676         fi
9677         AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9678         if test -n "$PGCONFIG"; then
9679             POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9680             POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9681         else
9682             PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9683               POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9684               POSTGRESQL_LIB=$POSTGRESQL_LIBS
9685             ],[
9686               AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9687             ])
9688         fi
9689         FilterLibs "${POSTGRESQL_LIB}"
9690         POSTGRESQL_LIB="${filteredlibs}"
9691     else
9692         # if/when anything else than PostgreSQL uses Kerberos,
9693         # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9694         WITH_KRB5=
9695         WITH_GSSAPI=
9696         case "$_os" in
9697         Darwin)
9698             # macOS has system MIT Kerberos 5 since 10.4
9699             if test "$with_krb5" != "no"; then
9700                 WITH_KRB5=TRUE
9701                 save_LIBS=$LIBS
9702                 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9703                 # that the libraries where these functions are located on macOS will change, is it?
9704                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9705                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9706                 KRB5_LIBS=$LIBS
9707                 LIBS=$save_LIBS
9708                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9709                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9710                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9711                 LIBS=$save_LIBS
9712             fi
9713             if test "$with_gssapi" != "no"; then
9714                 WITH_GSSAPI=TRUE
9715                 save_LIBS=$LIBS
9716                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9717                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9718                 GSSAPI_LIBS=$LIBS
9719                 LIBS=$save_LIBS
9720             fi
9721             ;;
9722         WINNT)
9723             if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9724                 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9725             fi
9726             ;;
9727         Linux|GNU|*BSD|DragonFly)
9728             if test "$with_krb5" != "no"; then
9729                 WITH_KRB5=TRUE
9730                 save_LIBS=$LIBS
9731                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9732                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9733                 KRB5_LIBS=$LIBS
9734                 LIBS=$save_LIBS
9735                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9736                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9737                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9738                 LIBS=$save_LIBS
9739             fi
9740             if test "$with_gssapi" != "no"; then
9741                 WITH_GSSAPI=TRUE
9742                 save_LIBS=$LIBS
9743                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9744                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9745                 GSSAPI_LIBS=$LIBS
9746                 LIBS=$save_LIBS
9747             fi
9748             ;;
9749         *)
9750             if test "$with_krb5" = "yes"; then
9751                 WITH_KRB5=TRUE
9752                 save_LIBS=$LIBS
9753                 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9754                     [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9755                 KRB5_LIBS=$LIBS
9756                 LIBS=$save_LIBS
9757                 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9758                     [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9759                 KRB5_LIBS="$KRB5_LIBS $LIBS"
9760                 LIBS=$save_LIBS
9761             fi
9762             if test "$with_gssapi" = "yes"; then
9763                 WITH_GSSAPI=TRUE
9764                 save_LIBS=$LIBS
9765                 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9766                     [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9767                 LIBS=$save_LIBS
9768                 GSSAPI_LIBS=$LIBS
9769             fi
9770         esac
9772         if test -n "$with_libpq_path"; then
9773             SYSTEM_POSTGRESQL=TRUE
9774             postgres_interface="external libpq"
9775             POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
9776             POSTGRESQL_INC=-I"${with_libpq_path}/include/"
9777         else
9778             SYSTEM_POSTGRESQL=
9779             postgres_interface="internal"
9780             POSTGRESQL_LIB=""
9781             POSTGRESQL_INC="%OVERRIDE_ME%"
9782             BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
9783         fi
9784     fi
9786     AC_MSG_CHECKING([PostgreSQL C interface])
9787     AC_MSG_RESULT([$postgres_interface])
9789     if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
9790         AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
9791         save_CFLAGS=$CFLAGS
9792         save_CPPFLAGS=$CPPFLAGS
9793         save_LIBS=$LIBS
9794         CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
9795         LIBS="${LIBS} ${POSTGRESQL_LIB}"
9796         AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
9797         AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
9798             [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
9799         CFLAGS=$save_CFLAGS
9800         CPPFLAGS=$save_CPPFLAGS
9801         LIBS=$save_LIBS
9802     fi
9803     BUILD_POSTGRESQL_SDBC=TRUE
9804 else
9805     AC_MSG_RESULT([no])
9807 AC_SUBST(WITH_KRB5)
9808 AC_SUBST(WITH_GSSAPI)
9809 AC_SUBST(GSSAPI_LIBS)
9810 AC_SUBST(KRB5_LIBS)
9811 AC_SUBST(BUILD_POSTGRESQL_SDBC)
9812 AC_SUBST(SYSTEM_POSTGRESQL)
9813 AC_SUBST(POSTGRESQL_INC)
9814 AC_SUBST(POSTGRESQL_LIB)
9816 dnl ===================================================================
9817 dnl Check for Firebird stuff
9818 dnl ===================================================================
9819 ENABLE_FIREBIRD_SDBC=
9820 if test "$enable_firebird_sdbc" = "yes" ; then
9821     SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
9823     dnl ===================================================================
9824     dnl Check for system Firebird
9825     dnl ===================================================================
9826     AC_MSG_CHECKING([which Firebird to use])
9827     if test "$with_system_firebird" = "yes"; then
9828         AC_MSG_RESULT([external])
9829         SYSTEM_FIREBIRD=TRUE
9830         AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
9831         if test -z "$FIREBIRDCONFIG"; then
9832             AC_MSG_NOTICE([No fb_config -- using pkg-config])
9833             PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
9834                 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
9835             ])
9836             FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
9837         else
9838             AC_MSG_NOTICE([fb_config found])
9839             FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
9840             AC_MSG_CHECKING([for Firebird Client library])
9841             FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
9842             FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
9843             FilterLibs "${FIREBIRD_LIBS}"
9844             FIREBIRD_LIBS="${filteredlibs}"
9845         fi
9846         AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
9847         AC_MSG_CHECKING([Firebird version])
9848         if test -n "${FIREBIRD_VERSION}"; then
9849             FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
9850             FIREBIRD_MINOR=`echo $FIREBIRD_VERSION | cut -d"." -f2`
9851             if test "$FIREBIRD_MAJOR" -eq "3" -a "$FIREBIRD_MINOR" -eq "0"; then
9852                 AC_MSG_RESULT([OK])
9853             else
9854                 AC_MSG_ERROR([Ensure firebird 3.0.x is installed])
9855             fi
9856         else
9857             save_CFLAGS="${CFLAGS}"
9858             CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
9859             AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
9860 #if defined(FB_API_VER) && FB_API_VER == 30
9861 int fb_api_is_30(void) { return 0; }
9862 #else
9863 #error "Wrong Firebird API version"
9864 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
9865             CFLAGS="$save_CFLAGS"
9866         fi
9867         ENABLE_FIREBIRD_SDBC=TRUE
9868         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9869     elif test "$enable_database_connectivity" != yes; then
9870         AC_MSG_RESULT([none])
9871     elif test "$cross_compiling" = "yes"; then
9872         AC_MSG_RESULT([none])
9873     else
9874         dnl Embedded Firebird has version 3.0
9875         AC_DEFINE(HAVE_FIREBIRD_30, 1)
9876         dnl We need libatomic_ops for any non X86/X64 system
9877         if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
9878             dnl ===================================================================
9879             dnl Check for system libatomic_ops
9880             dnl ===================================================================
9881             libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
9882             if test "$with_system_libatomic_ops" = "yes"; then
9883                 SYSTEM_LIBATOMIC_OPS=TRUE
9884                 AC_CHECK_HEADERS(atomic_ops.h, [],
9885                 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
9886             else
9887                 SYSTEM_LIBATOMIC_OPS=
9888                 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
9889                 LIBATOMIC_OPS_LIBS="-latomic_ops"
9890                 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
9891             fi
9892         fi
9894         AC_MSG_RESULT([internal])
9895         SYSTEM_FIREBIRD=
9896         FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
9897         FIREBIRD_LIBS="-lfbclient"
9899         if test "$with_system_libtommath" = "yes"; then
9900             SYSTEM_LIBTOMMATH=TRUE
9901             dnl check for tommath presence
9902             save_LIBS=$LIBS
9903             AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
9904             AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
9905             LIBS=$save_LIBS
9906         else
9907             SYSTEM_LIBTOMMATH=
9908             LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
9909             LIBTOMMATH_LIBS="-ltommath"
9910             BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
9911         fi
9913         BUILD_TYPE="$BUILD_TYPE FIREBIRD"
9914         ENABLE_FIREBIRD_SDBC=TRUE
9915         AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9916     fi
9918 AC_SUBST(ENABLE_FIREBIRD_SDBC)
9919 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
9920 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
9921 AC_SUBST(LIBATOMIC_OPS_LIBS)
9922 AC_SUBST(SYSTEM_FIREBIRD)
9923 AC_SUBST(FIREBIRD_CFLAGS)
9924 AC_SUBST(FIREBIRD_LIBS)
9925 AC_SUBST(SYSTEM_LIBTOMMATH)
9926 AC_SUBST(LIBTOMMATH_CFLAGS)
9927 AC_SUBST(LIBTOMMATH_LIBS)
9929 dnl ===================================================================
9930 dnl Check for system curl
9931 dnl ===================================================================
9932 AC_MSG_CHECKING([which libcurl to use])
9933 if test "$with_system_curl" = "auto"; then
9934     with_system_curl="$with_system_libs"
9937 if test "$with_system_curl" = "yes"; then
9938     AC_MSG_RESULT([external])
9939     SYSTEM_CURL=TRUE
9941     # First try PKGCONFIG and then fall back
9942     PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
9944     if test -n "$CURL_PKG_ERRORS"; then
9945         AC_PATH_PROG(CURLCONFIG, curl-config)
9946         if test -z "$CURLCONFIG"; then
9947             AC_MSG_ERROR([curl development files not found])
9948         fi
9949         CURL_LIBS=`$CURLCONFIG --libs`
9950         FilterLibs "${CURL_LIBS}"
9951         CURL_LIBS="${filteredlibs}"
9952         CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
9953         curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
9955         AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
9956         case $curl_version in
9957         dnl brackets doubled below because Autoconf uses them as m4 quote characters,
9958         dnl so they need to be doubled to end up in the configure script
9959         7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
9960             AC_MSG_RESULT([yes])
9961             ;;
9962         *)
9963             AC_MSG_ERROR([no, you have $curl_version])
9964             ;;
9965         esac
9966     fi
9968     ENABLE_CURL=TRUE
9969 else
9970     AC_MSG_RESULT([internal])
9971     SYSTEM_CURL=
9972     BUILD_TYPE="$BUILD_TYPE CURL"
9973     ENABLE_CURL=TRUE
9975 AC_SUBST(SYSTEM_CURL)
9976 AC_SUBST(CURL_CFLAGS)
9977 AC_SUBST(CURL_LIBS)
9978 AC_SUBST(ENABLE_CURL)
9980 dnl ===================================================================
9981 dnl Check for system boost
9982 dnl ===================================================================
9983 AC_MSG_CHECKING([which boost to use])
9984 if test "$with_system_boost" = "yes"; then
9985     AC_MSG_RESULT([external])
9986     SYSTEM_BOOST=TRUE
9987     AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
9988     AX_BOOST_DATE_TIME
9989     AX_BOOST_FILESYSTEM
9990     AX_BOOST_IOSTREAMS
9991     AX_BOOST_LOCALE
9992     AC_LANG_PUSH([C++])
9993     save_CXXFLAGS=$CXXFLAGS
9994     CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
9995     AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
9996        [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
9997     AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
9998        [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
9999     CXXFLAGS=$save_CXXFLAGS
10000     AC_LANG_POP([C++])
10001     # this is in m4/ax_boost_base.m4
10002     FilterLibs "${BOOST_LDFLAGS}"
10003     BOOST_LDFLAGS="${filteredlibs}"
10004 else
10005     AC_MSG_RESULT([internal])
10006     BUILD_TYPE="$BUILD_TYPE BOOST"
10007     SYSTEM_BOOST=
10008     if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10009         # use warning-suppressing wrapper headers
10010         BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10011     else
10012         BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10013     fi
10015 AC_SUBST(SYSTEM_BOOST)
10017 dnl ===================================================================
10018 dnl Check for system mdds
10019 dnl ===================================================================
10020 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10022 dnl ===================================================================
10023 dnl Check for system glm
10024 dnl ===================================================================
10025 AC_MSG_CHECKING([which glm to use])
10026 if test "$with_system_glm" = "yes"; then
10027     AC_MSG_RESULT([external])
10028     SYSTEM_GLM=TRUE
10029     AC_LANG_PUSH([C++])
10030     AC_CHECK_HEADER([glm/glm.hpp], [],
10031        [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10032     AC_LANG_POP([C++])
10033 else
10034     AC_MSG_RESULT([internal])
10035     BUILD_TYPE="$BUILD_TYPE GLM"
10036     SYSTEM_GLM=
10037     GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10039 AC_SUBST([GLM_CFLAGS])
10040 AC_SUBST([SYSTEM_GLM])
10042 dnl ===================================================================
10043 dnl Check for system odbc
10044 dnl ===================================================================
10045 AC_MSG_CHECKING([which odbc headers to use])
10046 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
10047     AC_MSG_RESULT([external])
10048     SYSTEM_ODBC_HEADERS=TRUE
10050     if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10051         save_CPPFLAGS=$CPPFLAGS
10052         find_winsdk
10053         PathFormat "$winsdktest"
10054         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"
10055         AC_CHECK_HEADER(sqlext.h, [],
10056             [AC_MSG_ERROR(odbc not found. install odbc)],
10057             [#include <windows.h>])
10058         CPPFLAGS=$save_CPPFLAGS
10059     else
10060         AC_CHECK_HEADER(sqlext.h, [],
10061             [AC_MSG_ERROR(odbc not found. install odbc)],[])
10062     fi
10063 elif test "$enable_database_connectivity" != yes; then
10064     AC_MSG_RESULT([none])
10065 else
10066     AC_MSG_RESULT([internal])
10067     SYSTEM_ODBC_HEADERS=
10069 AC_SUBST(SYSTEM_ODBC_HEADERS)
10071 dnl ===================================================================
10072 dnl Enable LDAP support
10073 dnl ===================================================================
10075 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then
10076 AC_MSG_CHECKING([whether to enable LDAP support])
10077     if test "$enable_ldap" != "yes"; then
10078         AC_MSG_RESULT([no])
10079         ENABLE_LDAP=""
10080         enable_ldap=no
10081     else
10082         AC_MSG_RESULT([yes])
10083         ENABLE_LDAP="TRUE"
10084     fi
10086 AC_SUBST(ENABLE_LDAP)
10088 dnl ===================================================================
10089 dnl Check for system openldap
10090 dnl ===================================================================
10092 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then
10093 AC_MSG_CHECKING([which openldap library to use])
10094 if test "$with_system_openldap" = "yes"; then
10095     AC_MSG_RESULT([external])
10096     SYSTEM_OPENLDAP=TRUE
10097     AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10098     AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10099     AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10100 else
10101     AC_MSG_RESULT([internal])
10102     SYSTEM_OPENLDAP=
10103     BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10106 AC_SUBST(SYSTEM_OPENLDAP)
10108 dnl ===================================================================
10109 dnl Check for system NSS
10110 dnl ===================================================================
10111 if test "$enable_fuzzers" != "yes"; then
10112     libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10113     AC_DEFINE(HAVE_FEATURE_NSS)
10114     ENABLE_NSS="TRUE"
10115     AC_DEFINE(ENABLE_NSS)
10116 elif test $_os != iOS ; then
10117     with_tls=openssl
10119 AC_SUBST(ENABLE_NSS)
10121 dnl ===================================================================
10122 dnl Check for TLS/SSL and cryptographic implementation to use
10123 dnl ===================================================================
10124 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10125 if test -n "$with_tls"; then
10126     case $with_tls in
10127     openssl)
10128         AC_DEFINE(USE_TLS_OPENSSL)
10129         TLS=OPENSSL
10130         AC_MSG_RESULT([$TLS])
10132         if test "$enable_openssl" != "yes"; then
10133             AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10134         fi
10136         # warn that OpenSSL has been selected but not all TLS code has this option
10137         AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10138         add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10139         ;;
10140     nss)
10141         AC_DEFINE(USE_TLS_NSS)
10142         TLS=NSS
10143         AC_MSG_RESULT([$TLS])
10144         ;;
10145     no)
10146         AC_MSG_RESULT([none])
10147         AC_MSG_WARN([Skipping TLS/SSL])
10148         ;;
10149     *)
10150         AC_MSG_RESULT([])
10151         AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10152 openssl - OpenSSL
10153 nss - Mozilla's Network Security Services (NSS)
10154     ])
10155         ;;
10156     esac
10157 else
10158     # default to using NSS, it results in smaller oox lib
10159     AC_DEFINE(USE_TLS_NSS)
10160     TLS=NSS
10161     AC_MSG_RESULT([$TLS])
10163 AC_SUBST(TLS)
10165 dnl ===================================================================
10166 dnl Check for system sane
10167 dnl ===================================================================
10168 AC_MSG_CHECKING([which sane header to use])
10169 if test "$with_system_sane" = "yes"; then
10170     AC_MSG_RESULT([external])
10171     AC_CHECK_HEADER(sane/sane.h, [],
10172       [AC_MSG_ERROR(sane not found. install sane)], [])
10173 else
10174     AC_MSG_RESULT([internal])
10175     BUILD_TYPE="$BUILD_TYPE SANE"
10178 dnl ===================================================================
10179 dnl Check for system icu
10180 dnl ===================================================================
10181 SYSTEM_GENBRK=
10182 SYSTEM_GENCCODE=
10183 SYSTEM_GENCMN=
10185 ICU_MAJOR=68
10186 ICU_MINOR=1
10187 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10188 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10189 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10190 AC_MSG_CHECKING([which icu to use])
10191 if test "$with_system_icu" = "yes"; then
10192     AC_MSG_RESULT([external])
10193     SYSTEM_ICU=TRUE
10194     AC_LANG_PUSH([C++])
10195     AC_MSG_CHECKING([for unicode/rbbi.h])
10196     AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10197     AC_LANG_POP([C++])
10199     if test "$cross_compiling" != "yes"; then
10200         PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10201         ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10202         ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10203         ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10204     fi
10206     if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10207         ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10208         ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10209         ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10210         AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10211         if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10212             AC_MSG_RESULT([yes])
10213         else
10214             AC_MSG_RESULT([no])
10215             if test "$with_system_icu_for_build" != "force"; then
10216                 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10217 You can use --with-system-icu-for-build=force to use it anyway.])
10218             fi
10219         fi
10220     fi
10222     if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10223         # using the system icu tools can lead to version confusion, use the
10224         # ones from the build environment when cross-compiling
10225         AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10226         if test -z "$SYSTEM_GENBRK"; then
10227             AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10228         fi
10229         AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10230         if test -z "$SYSTEM_GENCCODE"; then
10231             AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10232         fi
10233         AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10234         if test -z "$SYSTEM_GENCMN"; then
10235             AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10236         fi
10237         if test "$ICU_MAJOR" -ge "49"; then
10238             ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10239             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10240             ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10241         else
10242             ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10243             ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10244             ICU_RECLASSIFIED_HEBREW_LETTER=
10245         fi
10246     fi
10248     if test "$cross_compiling" = "yes"; then
10249         if test "$ICU_MAJOR" -ge "50"; then
10250             AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10251             ICU_MINOR=""
10252         fi
10253     fi
10254 else
10255     AC_MSG_RESULT([internal])
10256     SYSTEM_ICU=
10257     BUILD_TYPE="$BUILD_TYPE ICU"
10258     # surprisingly set these only for "internal" (to be used by various other
10259     # external libs): the system icu-config is quite unhelpful and spits out
10260     # dozens of weird flags and also default path -I/usr/include
10261     ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10262     ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10264 if test "$ICU_MAJOR" -ge "59"; then
10265     # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10266     # with -std=c++11 but not all external libraries can be built with that,
10267     # for those use a bit-compatible typedef uint16_t UChar; see
10268     # icu/source/common/unicode/umachine.h
10269     ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10270 else
10271     ICU_UCHAR_TYPE=""
10273 AC_SUBST(SYSTEM_ICU)
10274 AC_SUBST(SYSTEM_GENBRK)
10275 AC_SUBST(SYSTEM_GENCCODE)
10276 AC_SUBST(SYSTEM_GENCMN)
10277 AC_SUBST(ICU_MAJOR)
10278 AC_SUBST(ICU_MINOR)
10279 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10280 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10281 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10282 AC_SUBST(ICU_CFLAGS)
10283 AC_SUBST(ICU_LIBS)
10284 AC_SUBST(ICU_UCHAR_TYPE)
10286 dnl ==================================================================
10287 dnl Breakpad
10288 dnl ==================================================================
10289 DEFAULT_CRASHDUMP_VALUE="true"
10290 AC_MSG_CHECKING([whether to enable breakpad])
10291 if test "$enable_breakpad" != yes; then
10292     AC_MSG_RESULT([no])
10293 else
10294     AC_MSG_RESULT([yes])
10295     ENABLE_BREAKPAD="TRUE"
10296     AC_DEFINE(ENABLE_BREAKPAD)
10297     AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10298     BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10300     AC_MSG_CHECKING([for disable crash dump])
10301     if test "$enable_crashdump" = no; then
10302         DEFAULT_CRASHDUMP_VALUE="false"
10303         AC_MSG_RESULT([yes])
10304     else
10305        AC_MSG_RESULT([no])
10306     fi
10308     AC_MSG_CHECKING([for crashreport config])
10309     if test "$with_symbol_config" = "no"; then
10310         BREAKPAD_SYMBOL_CONFIG="invalid"
10311         AC_MSG_RESULT([no])
10312     else
10313         BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10314         AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10315         AC_MSG_RESULT([yes])
10316     fi
10317     AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10319 AC_SUBST(ENABLE_BREAKPAD)
10320 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10322 dnl ==================================================================
10323 dnl libfuzzer
10324 dnl ==================================================================
10325 AC_MSG_CHECKING([whether to enable fuzzers])
10326 if test "$enable_fuzzers" != yes; then
10327     AC_MSG_RESULT([no])
10328 else
10329     AC_MSG_RESULT([yes])
10330     ENABLE_FUZZERS="TRUE"
10331     AC_DEFINE([ENABLE_FUZZERS],1)
10332     BUILD_TYPE="$BUILD_TYPE FUZZERS"
10334 AC_SUBST(ENABLE_FUZZERS)
10336 dnl ===================================================================
10337 dnl Orcus
10338 dnl ===================================================================
10339 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
10340 if test "$with_system_orcus" != "yes"; then
10341     if test "$SYSTEM_BOOST" = "TRUE"; then
10342         # ===========================================================
10343         # Determine if we are going to need to link with Boost.System
10344         # ===========================================================
10345         dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10346         dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10347         dnl in documentation has no effect.
10348         AC_MSG_CHECKING([if we need to link with Boost.System])
10349         AC_LANG_PUSH([C++])
10350         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
10351                 @%:@include <boost/version.hpp>
10352             ]],[[
10353                 #if BOOST_VERSION >= 105000
10354                 #   error yes, we need to link with Boost.System
10355                 #endif
10356             ]])],[
10357                 AC_MSG_RESULT([no])
10358             ],[
10359                 AC_MSG_RESULT([yes])
10360                 AX_BOOST_SYSTEM
10361         ])
10362         AC_LANG_POP([C++])
10363     fi
10365 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10366 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10367 AC_SUBST([BOOST_SYSTEM_LIB])
10368 AC_SUBST(SYSTEM_LIBORCUS)
10370 dnl ===================================================================
10371 dnl HarfBuzz
10372 dnl ===================================================================
10373 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10374                          ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10375                          ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10377 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10378                          ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10379                          ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10381 if test "$COM" = "MSC"; then # override the above
10382     GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10383     HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10386 if test "$with_system_harfbuzz" = "yes"; then
10387     if test "$with_system_graphite" = "no"; then
10388         AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10389     fi
10390     AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10391     save_LIBS="$LIBS"
10392     save_CFLAGS="$CFLAGS"
10393     LIBS="$LIBS $HARFBUZZ_LIBS"
10394     CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10395     AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10396     LIBS="$save_LIBS"
10397     CFLAGS="$save_CFLAGS"
10398 else
10399     if test "$with_system_graphite" = "yes"; then
10400         AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10401     fi
10404 AC_MSG_CHECKING([whether to use X11])
10405 dnl ***************************************
10406 dnl testing for X libraries and includes...
10407 dnl ***************************************
10408 if test "$USING_X11" = TRUE; then
10409     AC_DEFINE(HAVE_FEATURE_X11)
10411 AC_MSG_RESULT([$USING_X11])
10413 if test "$USING_X11" = TRUE; then
10414     AC_PATH_X
10415     AC_PATH_XTRA
10416     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10418     if test -z "$x_includes"; then
10419         x_includes="default_x_includes"
10420     fi
10421     if test -z "$x_libraries"; then
10422         x_libraries="default_x_libraries"
10423     fi
10424     CFLAGS="$CFLAGS $X_CFLAGS"
10425     LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10426     AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10427 else
10428     x_includes="no_x_includes"
10429     x_libraries="no_x_libraries"
10432 if test "$USING_X11" = TRUE; then
10433     dnl ===================================================================
10434     dnl Check for extension headers
10435     dnl ===================================================================
10436     AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10437      [#include <X11/extensions/shape.h>])
10439     # vcl needs ICE and SM
10440     AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10441     AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10442         [AC_MSG_ERROR(ICE library not found)])
10443     AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10444     AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10445         [AC_MSG_ERROR(SM library not found)])
10448 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10449     # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10450     AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10453 dnl ===================================================================
10454 dnl Check for system Xrender
10455 dnl ===================================================================
10456 AC_MSG_CHECKING([whether to use Xrender])
10457 if test "$USING_X11" = TRUE -a  "$test_xrender" = "yes"; then
10458     AC_MSG_RESULT([yes])
10459     PKG_CHECK_MODULES(XRENDER, xrender)
10460     XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10461     FilterLibs "${XRENDER_LIBS}"
10462     XRENDER_LIBS="${filteredlibs}"
10463     AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10464       [AC_MSG_ERROR(libXrender not found or functional)], [])
10465     AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10466       [AC_MSG_ERROR(Xrender not found. install X)], [])
10467 else
10468     AC_MSG_RESULT([no])
10470 AC_SUBST(XRENDER_CFLAGS)
10471 AC_SUBST(XRENDER_LIBS)
10473 dnl ===================================================================
10474 dnl Check for XRandr
10475 dnl ===================================================================
10476 AC_MSG_CHECKING([whether to enable RandR support])
10477 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10478     AC_MSG_RESULT([yes])
10479     PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10480     if test "$ENABLE_RANDR" != "TRUE"; then
10481         AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10482                     [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10483         XRANDR_CFLAGS=" "
10484         AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10485           [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10486         XRANDR_LIBS="-lXrandr "
10487         ENABLE_RANDR="TRUE"
10488     fi
10489     XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10490     FilterLibs "${XRANDR_LIBS}"
10491     XRANDR_LIBS="${filteredlibs}"
10492 else
10493     ENABLE_RANDR=""
10494     AC_MSG_RESULT([no])
10496 AC_SUBST(XRANDR_CFLAGS)
10497 AC_SUBST(XRANDR_LIBS)
10498 AC_SUBST(ENABLE_RANDR)
10500 if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
10501     if test -z "$WITH_WEBDAV"; then
10502         WITH_WEBDAV="serf"
10503     fi
10505 if test $_os = iOS -o $_os = Android; then
10506     WITH_WEBDAV="no"
10508 AC_MSG_CHECKING([for webdav library])
10509 case "$WITH_WEBDAV" in
10510 serf)
10511     AC_MSG_RESULT([serf])
10512     # Check for system apr-util
10513     libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10514                              ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10515                              ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10516     if test "$COM" = "MSC"; then
10517         APR_LIB_DIR="LibR"
10518         test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10519         APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10520     fi
10522     # Check for system serf
10523     libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"],
10524                              ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"])
10525     if test "$COM" = "MSC"; then
10526         SERF_LIB_DIR="Release"
10527         test -n "${MSVC_USE_DEBUG_RUNTIME}" && SERF_LIB_DIR="Debug"
10528         SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/${SERF_LIB_DIR}/serf-1.lib"
10529     fi
10530     ;;
10531 neon)
10532     AC_MSG_RESULT([neon])
10533     # Check for system neon
10534     libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.1])
10535     if test "$with_system_neon" = "yes"; then
10536         NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10537     else
10538         NEON_VERSION=0311
10539     fi
10540     AC_SUBST(NEON_VERSION)
10541     ;;
10543     AC_MSG_RESULT([none, disabled])
10544     WITH_WEBDAV=""
10545     ;;
10546 esac
10547 AC_SUBST(WITH_WEBDAV)
10549 dnl ===================================================================
10550 dnl Check for disabling cve_tests
10551 dnl ===================================================================
10552 AC_MSG_CHECKING([whether to execute CVE tests])
10553 # If not explicitly enabled or disabled, default
10554 if test -z "$enable_cve_tests"; then
10555     case "$OS" in
10556     WNT)
10557         # Default cves off for Windows with its wild and wonderful
10558         # variety of AV software kicking in and panicking
10559         enable_cve_tests=no
10560         ;;
10561     *)
10562         # otherwise yes
10563         enable_cve_tests=yes
10564         ;;
10565     esac
10567 if test "$enable_cve_tests" = "no"; then
10568     AC_MSG_RESULT([no])
10569     DISABLE_CVE_TESTS=TRUE
10570     AC_SUBST(DISABLE_CVE_TESTS)
10571 else
10572     AC_MSG_RESULT([yes])
10575 dnl ===================================================================
10576 dnl Check for enabling chart XShape tests
10577 dnl ===================================================================
10578 AC_MSG_CHECKING([whether to execute chart XShape tests])
10579 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10580     AC_MSG_RESULT([yes])
10581     ENABLE_CHART_TESTS=TRUE
10582     AC_SUBST(ENABLE_CHART_TESTS)
10583 else
10584     AC_MSG_RESULT([no])
10587 dnl ===================================================================
10588 dnl Check for system openssl
10589 dnl ===================================================================
10590 DISABLE_OPENSSL=
10591 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10592 if test "$enable_openssl" = "yes"; then
10593     AC_MSG_RESULT([no])
10594     if test "$_os" = Darwin ; then
10595         # OpenSSL is deprecated when building for 10.7 or later.
10596         #
10597         # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10598         # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10600         with_system_openssl=no
10601         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10602     elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10603             && test "$with_system_openssl" != "no"; then
10604         with_system_openssl=yes
10605         SYSTEM_OPENSSL=TRUE
10606         OPENSSL_CFLAGS=
10607         OPENSSL_LIBS="-lssl -lcrypto"
10608     else
10609         libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10610     fi
10611     if test "$with_system_openssl" = "yes"; then
10612         AC_MSG_CHECKING([whether openssl supports SHA512])
10613         AC_LANG_PUSH([C])
10614         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10615             SHA512_CTX context;
10616 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10617         AC_LANG_POP(C)
10618     fi
10619 else
10620     AC_MSG_RESULT([yes])
10621     DISABLE_OPENSSL=TRUE
10623     # warn that although OpenSSL is disabled, system libraries may depend on it
10624     AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10625     add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10628 AC_SUBST([DISABLE_OPENSSL])
10630 if test "$enable_cipher_openssl_backend" = yes && test "$DISABLE_OPENSSL" = TRUE; then
10631     if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10632         AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10633         enable_cipher_openssl_backend=no
10634     else
10635         AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10636     fi
10638 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10639 ENABLE_CIPHER_OPENSSL_BACKEND=
10640 if test "$enable_cipher_openssl_backend" = yes; then
10641     AC_MSG_RESULT([yes])
10642     ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10643 else
10644     AC_MSG_RESULT([no])
10646 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10648 dnl ===================================================================
10649 dnl Check for building gnutls
10650 dnl ===================================================================
10651 AC_MSG_CHECKING([whether to use gnutls])
10652 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10653     AC_MSG_RESULT([yes])
10654     AM_PATH_LIBGCRYPT()
10655     PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10656         AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10657                       available in the system to use as replacement.]]))
10658     FilterLibs "${LIBGCRYPT_LIBS}"
10659     LIBGCRYPT_LIBS="${filteredlibs}"
10660 else
10661     AC_MSG_RESULT([no])
10664 AC_SUBST([LIBGCRYPT_CFLAGS])
10665 AC_SUBST([LIBGCRYPT_LIBS])
10667 dnl ===================================================================
10668 dnl Check for system redland
10669 dnl ===================================================================
10670 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10671 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10672 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10673 if test "$with_system_redland" = "yes"; then
10674     AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10675             [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10676 else
10677     RAPTOR_MAJOR="0"
10678     RASQAL_MAJOR="3"
10679     REDLAND_MAJOR="0"
10681 AC_SUBST(RAPTOR_MAJOR)
10682 AC_SUBST(RASQAL_MAJOR)
10683 AC_SUBST(REDLAND_MAJOR)
10685 dnl ===================================================================
10686 dnl Check for system hunspell
10687 dnl ===================================================================
10688 AC_MSG_CHECKING([which libhunspell to use])
10689 if test "$_os" = iOS; then
10690    AC_MSG_RESULT([none])
10691 elif test "$with_system_hunspell" = "yes"; then
10692     AC_MSG_RESULT([external])
10693     SYSTEM_HUNSPELL=TRUE
10694     AC_LANG_PUSH([C++])
10695     PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10696     if test "$HUNSPELL_PC" != "TRUE"; then
10697         AC_CHECK_HEADER(hunspell.hxx, [],
10698             [
10699             AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10700             [AC_MSG_ERROR(hunspell headers not found.)], [])
10701             ], [])
10702         AC_CHECK_LIB([hunspell], [main], [:],
10703            [ AC_MSG_ERROR(hunspell library not found.) ], [])
10704         HUNSPELL_LIBS=-lhunspell
10705     fi
10706     AC_LANG_POP([C++])
10707     HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10708     FilterLibs "${HUNSPELL_LIBS}"
10709     HUNSPELL_LIBS="${filteredlibs}"
10710 else
10711     AC_MSG_RESULT([internal])
10712     SYSTEM_HUNSPELL=
10713     HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10714     if test "$COM" = "MSC"; then
10715         HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10716     else
10717         HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10718     fi
10719     BUILD_TYPE="$BUILD_TYPE HUNSPELL"
10721 AC_SUBST(SYSTEM_HUNSPELL)
10722 AC_SUBST(HUNSPELL_CFLAGS)
10723 AC_SUBST(HUNSPELL_LIBS)
10725 dnl ===================================================================
10726 dnl Check for system qrcodegen
10727 dnl ===================================================================
10728 AC_MSG_CHECKING([whether to use libqrcodegen])
10729 if test "$enable_qrcodegen" = "no"; then
10730     AC_MSG_RESULT([no])
10731     ENABLE_QRCODEGEN=
10732     SYSTEM_QRCODEGEN=
10733 else
10734     AC_MSG_RESULT([yes])
10735     ENABLE_QRCODEGEN=TRUE
10736     AC_MSG_CHECKING([which libqrcodegen to use])
10737     if test "$with_system_qrcodegen" = "yes"; then
10738         AC_MSG_RESULT([external])
10739         SYSTEM_QRCODEGEN=TRUE
10740         AC_LANG_PUSH([C++])
10741         AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
10742             [AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
10743         AC_CHECK_LIB([qrcodegencpp], [main], [:],
10744             [ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
10745         QRCODEGEN_LIBS=-lqrcodegencpp
10746         AC_LANG_POP([C++])
10747         QRCODEGEN_CFLAGS=$(printf '%s' "$QRCODEGEN_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10748         FilterLibs "${QRCODEGEN_LIBS}"
10749         QRCODEGEN_LIBS="${filteredlibs}"
10750     else
10751         AC_MSG_RESULT([internal])
10752         SYSTEM_QRCODEGEN=
10753         BUILD_TYPE="$BUILD_TYPE QRCODEGEN"
10754     fi
10755     if test "$ENABLE_QRCODEGEN" = TRUE; then
10756         AC_DEFINE(ENABLE_QRCODEGEN)
10757     fi
10759 AC_SUBST(SYSTEM_QRCODEGEN)
10760 AC_SUBST(ENABLE_QRCODEGEN)
10761 AC_SUBST(QRCODEGEN_CFLAGS)
10762 AC_SUBST(QRCODEGEN_LIBS)
10764 dnl ===================================================================
10765 dnl Check for system box2d
10766 dnl ===================================================================
10767 AC_MSG_CHECKING([which box2d to use])
10768 if test "$with_system_box2d" = "yes"; then
10769     AC_MSG_RESULT([external])
10770     SYSTEM_BOX2D=TRUE
10771     AC_LANG_PUSH([C++])
10772     AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
10773         [BOX2D_H_FOUND='FALSE'])
10774     if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
10775         _BOX2D_LIB=box2d
10776         AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
10777     else
10778         # fail this. there's no other alternative to check when we are here.
10779         AC_CHECK_HEADER([Box2D/Box2D.h], [],
10780                 [AC_MSG_ERROR(box2d headers not found.)])
10781         _BOX2D_LIB=Box2D
10782         AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
10783     fi
10784     AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
10785         [ AC_MSG_ERROR(box2d library not found.) ], [])
10786     BOX2D_LIBS=-l$_BOX2D_LIB
10787     AC_LANG_POP([C++])
10788     BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10789     FilterLibs "${BOX2D_LIBS}"
10790     BOX2D_LIBS="${filteredlibs}"
10791 else
10792     AC_MSG_RESULT([internal])
10793     SYSTEM_BOX2D=
10794     BUILD_TYPE="$BUILD_TYPE BOX2D"
10796 AC_SUBST(SYSTEM_BOX2D)
10797 AC_SUBST(BOX2D_CFLAGS)
10798 AC_SUBST(BOX2D_LIBS)
10800 dnl ===================================================================
10801 dnl Checking for altlinuxhyph
10802 dnl ===================================================================
10803 AC_MSG_CHECKING([which altlinuxhyph to use])
10804 if test "$with_system_altlinuxhyph" = "yes"; then
10805     AC_MSG_RESULT([external])
10806     SYSTEM_HYPH=TRUE
10807     AC_CHECK_HEADER(hyphen.h, [],
10808        [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
10809     AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
10810        [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
10811        [#include <hyphen.h>])
10812     AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
10813         [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10814     if test -z "$HYPHEN_LIB"; then
10815         AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
10816            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10817     fi
10818     if test -z "$HYPHEN_LIB"; then
10819         AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
10820            [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10821     fi
10822 else
10823     AC_MSG_RESULT([internal])
10824     SYSTEM_HYPH=
10825     BUILD_TYPE="$BUILD_TYPE HYPHEN"
10826     if test "$COM" = "MSC"; then
10827         HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
10828     else
10829         HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
10830     fi
10832 AC_SUBST(SYSTEM_HYPH)
10833 AC_SUBST(HYPHEN_LIB)
10835 dnl ===================================================================
10836 dnl Checking for mythes
10837 dnl ===================================================================
10838 AC_MSG_CHECKING([which mythes to use])
10839 if test "$_os" = iOS; then
10840    AC_MSG_RESULT([none])
10841 elif test "$with_system_mythes" = "yes"; then
10842     AC_MSG_RESULT([external])
10843     SYSTEM_MYTHES=TRUE
10844     AC_LANG_PUSH([C++])
10845     PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
10846     if test "$MYTHES_PKGCONFIG" = "no"; then
10847         AC_CHECK_HEADER(mythes.hxx, [],
10848             [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
10849         AC_CHECK_LIB([mythes-1.2], [main], [:],
10850             [ MYTHES_FOUND=no], [])
10851     if test "$MYTHES_FOUND" = "no"; then
10852         AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
10853                 [ MYTHES_FOUND=no], [])
10854     fi
10855     if test "$MYTHES_FOUND" = "no"; then
10856         AC_MSG_ERROR([mythes library not found!.])
10857     fi
10858     fi
10859     AC_LANG_POP([C++])
10860     MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10861     FilterLibs "${MYTHES_LIBS}"
10862     MYTHES_LIBS="${filteredlibs}"
10863 else
10864     AC_MSG_RESULT([internal])
10865     SYSTEM_MYTHES=
10866     BUILD_TYPE="$BUILD_TYPE MYTHES"
10867     if test "$COM" = "MSC"; then
10868         MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
10869     else
10870         MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
10871     fi
10873 AC_SUBST(SYSTEM_MYTHES)
10874 AC_SUBST(MYTHES_CFLAGS)
10875 AC_SUBST(MYTHES_LIBS)
10877 dnl ===================================================================
10878 dnl How should we build the linear programming solver ?
10879 dnl ===================================================================
10881 ENABLE_COINMP=
10882 AC_MSG_CHECKING([whether to build with CoinMP])
10883 if test "$enable_coinmp" != "no"; then
10884     ENABLE_COINMP=TRUE
10885     AC_MSG_RESULT([yes])
10886     if test "$with_system_coinmp" = "yes"; then
10887         SYSTEM_COINMP=TRUE
10888         PKG_CHECK_MODULES(COINMP, coinmp coinutils)
10889         FilterLibs "${COINMP_LIBS}"
10890         COINMP_LIBS="${filteredlibs}"
10891     else
10892         BUILD_TYPE="$BUILD_TYPE COINMP"
10893     fi
10894 else
10895     AC_MSG_RESULT([no])
10897 AC_SUBST(ENABLE_COINMP)
10898 AC_SUBST(SYSTEM_COINMP)
10899 AC_SUBST(COINMP_CFLAGS)
10900 AC_SUBST(COINMP_LIBS)
10902 ENABLE_LPSOLVE=
10903 AC_MSG_CHECKING([whether to build with lpsolve])
10904 if test "$enable_lpsolve" != "no"; then
10905     ENABLE_LPSOLVE=TRUE
10906     AC_MSG_RESULT([yes])
10907 else
10908     AC_MSG_RESULT([no])
10910 AC_SUBST(ENABLE_LPSOLVE)
10912 if test "$ENABLE_LPSOLVE" = TRUE; then
10913     AC_MSG_CHECKING([which lpsolve to use])
10914     if test "$with_system_lpsolve" = "yes"; then
10915         AC_MSG_RESULT([external])
10916         SYSTEM_LPSOLVE=TRUE
10917         AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
10918            [ AC_MSG_ERROR(lpsolve headers not found.)], [])
10919         save_LIBS=$LIBS
10920         # some systems need this. Like Ubuntu...
10921         AC_CHECK_LIB(m, floor)
10922         AC_CHECK_LIB(dl, dlopen)
10923         AC_CHECK_LIB([lpsolve55], [make_lp], [:],
10924             [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
10925         LIBS=$save_LIBS
10926     else
10927         AC_MSG_RESULT([internal])
10928         SYSTEM_LPSOLVE=
10929         BUILD_TYPE="$BUILD_TYPE LPSOLVE"
10930     fi
10932 AC_SUBST(SYSTEM_LPSOLVE)
10934 dnl ===================================================================
10935 dnl Checking for libexttextcat
10936 dnl ===================================================================
10937 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
10938 if test "$with_system_libexttextcat" = "yes"; then
10939     SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
10941 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
10943 dnl ===================================================================
10944 dnl Checking for libnumbertext
10945 dnl ===================================================================
10946 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
10947 if test "$with_system_libnumbertext" = "yes"; then
10948     SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
10949     SYSTEM_LIBNUMBERTEXT=YES
10950 else
10951     SYSTEM_LIBNUMBERTEXT=
10952     AC_LANG_PUSH([C++])
10953     save_CPPFLAGS=$CPPFLAGS
10954     CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
10955     AC_CHECK_HEADERS([codecvt regex])
10956     AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
10957             [ LIBNUMBERTEXT_CFLAGS=''
10958               AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
10959                            Enable libnumbertext fallback (missing number to number name conversion).])
10960             ])
10961     CPPFLAGS=$save_CPPFLAGS
10962     AC_LANG_POP([C++])
10964 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
10965 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
10966 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
10968 dnl ***************************************
10969 dnl testing libc version for Linux...
10970 dnl ***************************************
10971 if test "$_os" = "Linux"; then
10972     AC_MSG_CHECKING([whether libc is >= 2.1.1])
10973     exec 6>/dev/null # no output
10974     AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
10975     exec 6>&1 # output on again
10976     if test "$HAVE_LIBC"; then
10977         AC_MSG_RESULT([yes])
10978     else
10979         AC_MSG_ERROR([no, upgrade libc])
10980     fi
10983 dnl =========================================
10984 dnl Check for uuidgen
10985 dnl =========================================
10986 if test "$_os" = "WINNT"; then
10987     # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
10988     # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
10989     UUIDGEN=uuidgen.exe
10990     AC_SUBST(UUIDGEN)
10991 else
10992     AC_PATH_PROG([UUIDGEN], [uuidgen])
10993     if test -z "$UUIDGEN"; then
10994         AC_MSG_WARN([uuid is needed for building installation sets])
10995     fi
10998 dnl ***************************************
10999 dnl Checking for bison and flex
11000 dnl ***************************************
11001 AC_PATH_PROG(BISON, bison)
11002 if test -z "$BISON"; then
11003     AC_MSG_ERROR([no bison found in \$PATH, install it])
11004 else
11005     AC_MSG_CHECKING([the bison version])
11006     _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11007     _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11008     dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11009     dnl cause
11010     dnl
11011     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]
11012     dnl   typedef union YYSTYPE
11013     dnl           ~~~~~~^~~~~~~
11014     dnl
11015     dnl while at least 3.4.1 is know to be good:
11016     if test "$COMPILER_PLUGINS" = TRUE; then
11017         if test "$_bison_longver" -lt 2004; then
11018             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11019         fi
11020     else
11021         if test "$_bison_longver" -lt 2000; then
11022             AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11023         fi
11024     fi
11026 AC_SUBST([BISON])
11028 AC_PATH_PROG(FLEX, flex)
11029 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11030     FLEX=`cygpath -m $FLEX`
11032 if test -z "$FLEX"; then
11033     AC_MSG_ERROR([no flex found in \$PATH, install it])
11034 else
11035     AC_MSG_CHECKING([the flex version])
11036     _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11037     if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11038         AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11039     fi
11041 AC_SUBST([FLEX])
11042 dnl ***************************************
11043 dnl Checking for patch
11044 dnl ***************************************
11045 AC_PATH_PROG(PATCH, patch)
11046 if test -z "$PATCH"; then
11047     AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11050 dnl On Solaris or macOS, check if --with-gnu-patch was used
11051 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11052     if test -z "$with_gnu_patch"; then
11053         GNUPATCH=$PATCH
11054     else
11055         if test -x "$with_gnu_patch"; then
11056             GNUPATCH=$with_gnu_patch
11057         else
11058             AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11059         fi
11060     fi
11062     AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11063     if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11064         AC_MSG_RESULT([yes])
11065     else
11066         AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11067     fi
11068 else
11069     GNUPATCH=$PATCH
11072 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11073     GNUPATCH=`cygpath -m $GNUPATCH`
11076 dnl We also need to check for --with-gnu-cp
11078 if test -z "$with_gnu_cp"; then
11079     # check the place where the good stuff is hidden on Solaris...
11080     if test -x /usr/gnu/bin/cp; then
11081         GNUCP=/usr/gnu/bin/cp
11082     else
11083         AC_PATH_PROGS(GNUCP, gnucp cp)
11084     fi
11085     if test -z $GNUCP; then
11086         AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11087     fi
11088 else
11089     if test -x "$with_gnu_cp"; then
11090         GNUCP=$with_gnu_cp
11091     else
11092         AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11093     fi
11096 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11097     GNUCP=`cygpath -m $GNUCP`
11100 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11101 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11102     AC_MSG_RESULT([yes])
11103 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11104     AC_MSG_RESULT([yes])
11105 else
11106     case "$build_os" in
11107     darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11108         x_GNUCP=[\#]
11109         GNUCP=''
11110         AC_MSG_RESULT([no gnucp found - using the system's cp command])
11111         ;;
11112     *)
11113         AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11114         ;;
11115     esac
11118 AC_SUBST(GNUPATCH)
11119 AC_SUBST(GNUCP)
11120 AC_SUBST(x_GNUCP)
11122 dnl ***************************************
11123 dnl testing assembler path
11124 dnl ***************************************
11125 ML_EXE=""
11126 if test "$_os" = "WINNT"; then
11127     case "$WIN_HOST_ARCH" in
11128     x86) assembler=ml.exe ;;
11129     x64) assembler=ml64.exe ;;
11130     arm64) assembler=armasm64.exe ;;
11131     esac
11133     AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11134     if test -f "$MSVC_HOST_PATH/$assembler"; then
11135         ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11136         AC_MSG_RESULT([$ML_EXE])
11137     else
11138         AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11139     fi
11142 AC_SUBST(ML_EXE)
11144 dnl ===================================================================
11145 dnl We need zip and unzip
11146 dnl ===================================================================
11147 AC_PATH_PROG(ZIP, zip)
11148 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11149 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11150     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],,)
11153 AC_PATH_PROG(UNZIP, unzip)
11154 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11156 dnl ===================================================================
11157 dnl Zip must be a specific type for different build types.
11158 dnl ===================================================================
11159 if test $build_os = cygwin; then
11160     if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11161         AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11162     fi
11165 dnl ===================================================================
11166 dnl We need touch with -h option support.
11167 dnl ===================================================================
11168 AC_PATH_PROG(TOUCH, touch)
11169 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11170 touch warn
11171 if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then
11172     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],,)
11175 dnl ===================================================================
11176 dnl Check for system epoxy
11177 dnl ===================================================================
11178 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11180 dnl ===================================================================
11181 dnl Set vcl option: coordinate device in double or sal_Int32
11182 dnl ===================================================================
11184 dnl disabled for now, we don't want subtle differences between OSs
11185 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11186 dnl if test "$_os" = "Darwin" -o  $_os = iOS ; then
11187 dnl     AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11188 dnl     AC_MSG_RESULT([double])
11189 dnl else
11190 dnl     AC_MSG_RESULT([sal_Int32])
11191 dnl fi
11193 dnl ===================================================================
11194 dnl Test which vclplugs have to be built.
11195 dnl ===================================================================
11196 R=""
11197 if test "$USING_X11" != TRUE; then
11198     enable_gtk3=no
11201 ENABLE_GTK3=""
11202 if test "x$enable_gtk3" = "xyes"; then
11203     ENABLE_GTK3="TRUE"
11204     AC_DEFINE(ENABLE_GTK3)
11205     R="$R gtk3"
11207 AC_SUBST(ENABLE_GTK3)
11209 ENABLE_GTK3_KDE5=""
11210 if test "x$enable_gtk3_kde5" = "xyes"; then
11211     ENABLE_GTK3_KDE5="TRUE"
11212     AC_DEFINE(ENABLE_GTK3_KDE5)
11213     R="$R gtk3_kde5"
11215 AC_SUBST(ENABLE_GTK3_KDE5)
11217 ENABLE_QT5=""
11218 if test "x$enable_qt5" = "xyes"; then
11219     ENABLE_QT5="TRUE"
11220     AC_DEFINE(ENABLE_QT5)
11221     R="$R qt5"
11223 AC_SUBST(ENABLE_QT5)
11225 ENABLE_KF5=""
11226 if test "x$enable_kf5" = "xyes"; then
11227     ENABLE_KF5="TRUE"
11228     AC_DEFINE(ENABLE_KF5)
11229     R="$R kf5"
11231 AC_SUBST(ENABLE_KF5)
11233 GTK3_CFLAGS=""
11234 GTK3_LIBS=""
11235 if test "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11236     if test "$with_system_cairo" = no; then
11237         add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11238     fi
11239     : ${with_system_cairo:=yes}
11240     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)
11241     GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11242     FilterLibs "${GTK3_LIBS}"
11243     GTK3_LIBS="${filteredlibs}"
11245     dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11246     if test "$with_system_epoxy" != "yes"; then
11247         AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11248         AC_CHECK_HEADER(EGL/eglplatform.h, [],
11249                         [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11250     fi
11252 AC_SUBST(GTK3_LIBS)
11253 AC_SUBST(GTK3_CFLAGS)
11255 if test "$enable_introspection" = yes; then
11256     if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11257         GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11258     else
11259         AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11260     fi
11263 if test "$_os" = "WINNT"; then
11264     R="$R win"
11265 elif test "$_os" = "Darwin"; then
11266     R="$R osx"
11267 elif test "$_os" = "iOS"; then
11268     R="ios (builtin)"
11271 build_vcl_plugins="$R"
11272 if test -z "$build_vcl_plugins"; then
11273     build_vcl_plugins="none"
11275 AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins])
11277 dnl ===================================================================
11278 dnl check for dbus support
11279 dnl ===================================================================
11280 ENABLE_DBUS=""
11281 DBUS_CFLAGS=""
11282 DBUS_LIBS=""
11283 DBUS_GLIB_CFLAGS=""
11284 DBUS_GLIB_LIBS=""
11285 DBUS_HAVE_GLIB=""
11287 if test "$enable_dbus" = "no"; then
11288     test_dbus=no
11291 AC_MSG_CHECKING([whether to enable DBUS support])
11292 if test "$test_dbus" = "yes"; then
11293     ENABLE_DBUS="TRUE"
11294     AC_MSG_RESULT([yes])
11295     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11296     AC_DEFINE(ENABLE_DBUS)
11297     DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11298     FilterLibs "${DBUS_LIBS}"
11299     DBUS_LIBS="${filteredlibs}"
11301     # Glib is needed for BluetoothServer
11302     # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11303     PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11304         [
11305             DBUS_HAVE_GLIB="TRUE"
11306             AC_DEFINE(DBUS_HAVE_GLIB,1)
11307         ],
11308         AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11309     )
11310 else
11311     AC_MSG_RESULT([no])
11314 AC_SUBST(ENABLE_DBUS)
11315 AC_SUBST(DBUS_CFLAGS)
11316 AC_SUBST(DBUS_LIBS)
11317 AC_SUBST(DBUS_GLIB_CFLAGS)
11318 AC_SUBST(DBUS_GLIB_LIBS)
11319 AC_SUBST(DBUS_HAVE_GLIB)
11321 AC_MSG_CHECKING([whether to enable Impress remote control])
11322 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11323     AC_MSG_RESULT([yes])
11324     ENABLE_SDREMOTE=TRUE
11325     AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11327     if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11328         # The Bluetooth code doesn't compile with macOS SDK 10.15
11329         if test "$enable_sdremote_bluetooth" = yes; then
11330             AC_MSG_ERROR([macOS SDK $with_macosx_sdk does not currently support --enable-sdremote-bluetooth])
11331         fi
11332         enable_sdremote_bluetooth=no
11333     fi
11334     # If not explicitly enabled or disabled, default
11335     if test -z "$enable_sdremote_bluetooth"; then
11336         case "$OS" in
11337         LINUX|MACOSX|WNT)
11338             # Default to yes for these
11339             enable_sdremote_bluetooth=yes
11340             ;;
11341         *)
11342             # otherwise no
11343             enable_sdremote_bluetooth=no
11344             ;;
11345         esac
11346     fi
11347     # $enable_sdremote_bluetooth is guaranteed non-empty now
11349     if test "$enable_sdremote_bluetooth" != "no"; then
11350         if test "$OS" = "LINUX"; then
11351             if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11352                 AC_MSG_RESULT([yes])
11353                 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11354                 dnl ===================================================================
11355                 dnl Check for system bluez
11356                 dnl ===================================================================
11357                 AC_MSG_CHECKING([which Bluetooth header to use])
11358                 if test "$with_system_bluez" = "yes"; then
11359                     AC_MSG_RESULT([external])
11360                     AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11361                         [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11362                     SYSTEM_BLUEZ=TRUE
11363                 else
11364                     AC_MSG_RESULT([internal])
11365                     SYSTEM_BLUEZ=
11366                 fi
11367             else
11368                 AC_MSG_RESULT([no, dbus disabled])
11369                 ENABLE_SDREMOTE_BLUETOOTH=
11370                 SYSTEM_BLUEZ=
11371             fi
11372         else
11373             AC_MSG_RESULT([yes])
11374             ENABLE_SDREMOTE_BLUETOOTH=TRUE
11375             SYSTEM_BLUEZ=
11376         fi
11377     else
11378         AC_MSG_RESULT([no])
11379         ENABLE_SDREMOTE_BLUETOOTH=
11380         SYSTEM_BLUEZ=
11381     fi
11382 else
11383     ENABLE_SDREMOTE=
11384     SYSTEM_BLUEZ=
11385     AC_MSG_RESULT([no])
11387 AC_SUBST(ENABLE_SDREMOTE)
11388 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11389 AC_SUBST(SYSTEM_BLUEZ)
11391 dnl ===================================================================
11392 dnl Check whether to enable GIO support
11393 dnl ===================================================================
11394 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11395     AC_MSG_CHECKING([whether to enable GIO support])
11396     if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11397         dnl Need at least 2.26 for the dbus support.
11398         PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11399                           [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11400         if test "$ENABLE_GIO" = "TRUE"; then
11401             AC_DEFINE(ENABLE_GIO)
11402             GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11403             FilterLibs "${GIO_LIBS}"
11404             GIO_LIBS="${filteredlibs}"
11405         fi
11406     else
11407         AC_MSG_RESULT([no])
11408     fi
11410 AC_SUBST(ENABLE_GIO)
11411 AC_SUBST(GIO_CFLAGS)
11412 AC_SUBST(GIO_LIBS)
11415 dnl ===================================================================
11417 SPLIT_APP_MODULES=""
11418 if test "$enable_split_app_modules" = "yes"; then
11419     SPLIT_APP_MODULES="TRUE"
11421 AC_SUBST(SPLIT_APP_MODULES)
11423 SPLIT_OPT_FEATURES=""
11424 if test "$enable_split_opt_features" = "yes"; then
11425     SPLIT_OPT_FEATURES="TRUE"
11427 AC_SUBST(SPLIT_OPT_FEATURES)
11429 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then
11430     if test "$enable_cairo_canvas" = yes; then
11431         AC_MSG_ERROR([The cairo canvas should not be used for this platform])
11432     fi
11433     enable_cairo_canvas=no
11434 elif test -z "$enable_cairo_canvas"; then
11435     enable_cairo_canvas=yes
11438 ENABLE_CAIRO_CANVAS=""
11439 if test "$enable_cairo_canvas" = "yes"; then
11440     test_cairo=yes
11441     ENABLE_CAIRO_CANVAS="TRUE"
11442     AC_DEFINE(ENABLE_CAIRO_CANVAS)
11444 AC_SUBST(ENABLE_CAIRO_CANVAS)
11446 dnl ===================================================================
11447 dnl Check whether the GStreamer libraries are available.
11448 dnl ===================================================================
11450 ENABLE_GSTREAMER_1_0=""
11452 if test "$build_gstreamer_1_0" = "yes"; then
11454     AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11455     if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11456         ENABLE_GSTREAMER_1_0="TRUE"
11457         AC_MSG_RESULT([yes])
11458         PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11459         GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11460         FilterLibs "${GSTREAMER_1_0_LIBS}"
11461         GSTREAMER_1_0_LIBS="${filteredlibs}"
11462         AC_DEFINE(ENABLE_GSTREAMER_1_0)
11463     else
11464         AC_MSG_RESULT([no])
11465     fi
11467 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11468 AC_SUBST(GSTREAMER_1_0_LIBS)
11469 AC_SUBST(ENABLE_GSTREAMER_1_0)
11471 dnl ===================================================================
11472 dnl Check whether to build the VLC avmedia backend
11473 dnl ===================================================================
11475 ENABLE_VLC=""
11477 AC_MSG_CHECKING([whether to enable the VLC avmedia backend])
11478 if test "$enable_avmedia" = yes -a $_os != iOS -a $_os != Android -a "$enable_vlc" = yes; then
11479     ENABLE_VLC="TRUE"
11480     AC_MSG_RESULT([yes])
11481 else
11482     AC_MSG_RESULT([no])
11484 AC_SUBST(ENABLE_VLC)
11486 ENABLE_OPENGL_TRANSITIONS=
11487 ENABLE_OPENGL_CANVAS=
11488 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11489    : # disable
11490 elif test "$_os" = "Darwin"; then
11491     # We use frameworks on macOS, no need for detail checks
11492     ENABLE_OPENGL_TRANSITIONS=TRUE
11493     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11494     ENABLE_OPENGL_CANVAS=TRUE
11495 elif test $_os = WINNT; then
11496     ENABLE_OPENGL_TRANSITIONS=TRUE
11497     AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11498     ENABLE_OPENGL_CANVAS=TRUE
11499 else
11500     if test "$USING_X11" = TRUE; then
11501         AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11502         ENABLE_OPENGL_TRANSITIONS=TRUE
11503         AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11504         ENABLE_OPENGL_CANVAS=TRUE
11505     fi
11508 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11509 AC_SUBST(ENABLE_OPENGL_CANVAS)
11511 dnl =================================================
11512 dnl Check whether to build with OpenCL support.
11513 dnl =================================================
11515 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11516     # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11517     # platform (optional at run-time, used through clew).
11518     BUILD_TYPE="$BUILD_TYPE OPENCL"
11519     AC_DEFINE(HAVE_FEATURE_OPENCL)
11522 dnl =================================================
11523 dnl Check whether to build with dconf support.
11524 dnl =================================================
11526 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11527     PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11528         if test "$enable_dconf" = yes; then
11529             AC_MSG_ERROR([dconf not found])
11530         else
11531             enable_dconf=no
11532         fi])
11534 AC_MSG_CHECKING([whether to enable dconf])
11535 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11536     DCONF_CFLAGS=
11537     DCONF_LIBS=
11538     ENABLE_DCONF=
11539     AC_MSG_RESULT([no])
11540 else
11541     ENABLE_DCONF=TRUE
11542     AC_DEFINE(ENABLE_DCONF)
11543     AC_MSG_RESULT([yes])
11545 AC_SUBST([DCONF_CFLAGS])
11546 AC_SUBST([DCONF_LIBS])
11547 AC_SUBST([ENABLE_DCONF])
11549 # pdf import?
11550 AC_MSG_CHECKING([whether to build the PDF import feature])
11551 ENABLE_PDFIMPORT=
11552 if test $_os != iOS -a \( -z "$enable_pdfimport" -o "$enable_pdfimport" = yes \); then
11553     AC_MSG_RESULT([yes])
11554     ENABLE_PDFIMPORT=TRUE
11555     AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11556 else
11557     AC_MSG_RESULT([no])
11560 # Pdfium?
11561 AC_MSG_CHECKING([whether to build PDFium])
11562 ENABLE_PDFIUM=
11563 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11564     AC_MSG_RESULT([yes])
11565     ENABLE_PDFIUM=TRUE
11566     AC_DEFINE(HAVE_FEATURE_PDFIUM)
11567     BUILD_TYPE="$BUILD_TYPE PDFIUM"
11568 else
11569     AC_MSG_RESULT([no])
11571 AC_SUBST(ENABLE_PDFIUM)
11573 dnl ===================================================================
11574 dnl Check for poppler
11575 dnl ===================================================================
11576 ENABLE_POPPLER=
11577 AC_MSG_CHECKING([whether to build Poppler])
11578 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11579     AC_MSG_RESULT([yes])
11580     ENABLE_POPPLER=TRUE
11581     AC_DEFINE(HAVE_FEATURE_POPPLER)
11582 else
11583     AC_MSG_RESULT([no])
11585 AC_SUBST(ENABLE_POPPLER)
11587 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11588     AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11591 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11592     AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11595 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11596     dnl ===================================================================
11597     dnl Check for system poppler
11598     dnl ===================================================================
11599     AC_MSG_CHECKING([which PDF import poppler to use])
11600     if test "$with_system_poppler" = "yes"; then
11601         AC_MSG_RESULT([external])
11602         SYSTEM_POPPLER=TRUE
11603         PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11604         AC_LANG_PUSH([C++])
11605         save_CXXFLAGS=$CXXFLAGS
11606         save_CPPFLAGS=$CPPFLAGS
11607         CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11608         CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11609         AC_CHECK_HEADER([cpp/poppler-version.h],
11610             [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11611             [])
11612         CXXFLAGS=$save_CXXFLAGS
11613         CPPFLAGS=$save_CPPFLAGS
11614         AC_LANG_POP([C++])
11615         POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11617         FilterLibs "${POPPLER_LIBS}"
11618         POPPLER_LIBS="${filteredlibs}"
11619     else
11620         AC_MSG_RESULT([internal])
11621         SYSTEM_POPPLER=
11622         BUILD_TYPE="$BUILD_TYPE POPPLER"
11623         AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11624     fi
11625     AC_DEFINE([ENABLE_PDFIMPORT],1)
11627 AC_SUBST(ENABLE_PDFIMPORT)
11628 AC_SUBST(SYSTEM_POPPLER)
11629 AC_SUBST(POPPLER_CFLAGS)
11630 AC_SUBST(POPPLER_LIBS)
11632 # Skia?
11633 AC_MSG_CHECKING([whether to build Skia])
11634 ENABLE_SKIA=
11635 if test "$enable_skia" != "no" -a "$build_skia" = "yes"; then
11636     if test "$enable_skia" = "debug"; then
11637         AC_MSG_RESULT([yes (debug)])
11638         ENABLE_SKIA_DEBUG=TRUE
11639     else
11640         AC_MSG_RESULT([yes])
11641         ENABLE_SKIA_DEBUG=
11642     fi
11643     ENABLE_SKIA=TRUE
11644     AC_DEFINE(HAVE_FEATURE_SKIA)
11645     BUILD_TYPE="$BUILD_TYPE SKIA"
11646 else
11647     AC_MSG_RESULT([no])
11649 AC_SUBST(ENABLE_SKIA)
11650 AC_SUBST(ENABLE_SKIA_DEBUG)
11652 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11653 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11654 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11655 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11656 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11657 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11658 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11659 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11660 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11662 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE -a ! \( "$_os" = "WINNT" -a "$CPUNAME" = "ARM64" \); then
11663     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11664         AC_MSG_CHECKING([for Clang])
11665         AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
11666     else
11667         if test "$_os" = "WINNT"; then
11668             AC_MSG_CHECKING([for clang-cl])
11669             if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
11670                 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
11671                 dnl explicitly set -m32/-m64
11672                 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
11673                 LO_CLANG_CXX="$LO_CLANG_CC"
11674                 AC_MSG_RESULT([$LO_CLANG_CC])
11675             else
11676                 AC_MSG_RESULT([no])
11677             fi
11678         else
11679             AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
11680             AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
11681         fi
11682     fi
11683     if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11684         clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
11685         clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
11686         if test "$clang2_ver" -lt 50002; then
11687             AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
11688             LO_CLANG_CC=
11689             LO_CLANG_CXX=
11690         fi
11691     fi
11692     if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
11693         # Skia is the default on Windows, so hard-require Clang.
11694         # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
11695         if test "$_os" = "WINNT"; then
11696             AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
11697         else
11698             AC_MSG_WARN([Clang compiler not found.])
11699         fi
11700     else
11702         save_CXX="$CXX"
11703         CXX="$LO_CLANG_CXX"
11704         # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
11705         flag_sse2=-msse2
11706         flag_ssse3=-mssse3
11707         flag_sse41=-msse4.1
11708         flag_sse42=-msse4.2
11709         flag_avx=-mavx
11710         flag_avx2=-mavx2
11711         flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
11712         flag_f16c=-mf16c
11713         flag_fma=-mfma
11715         AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
11716         AC_LANG_PUSH([C++])
11717         save_CXXFLAGS=$CXXFLAGS
11718         CXXFLAGS="$CXXFLAGS $flag_sse2"
11719         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11720             #include <emmintrin.h>
11721             int main () {
11722                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11723                 c = _mm_xor_si128 (a, b);
11724                 return 0;
11725             }
11726             ])],
11727             [can_compile_sse2=yes],
11728             [can_compile_sse2=no])
11729         AC_LANG_POP([C++])
11730         CXXFLAGS=$save_CXXFLAGS
11731         AC_MSG_RESULT([${can_compile_sse2}])
11732         if test "${can_compile_sse2}" = "yes" ; then
11733             LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
11734         fi
11736         AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
11737         AC_LANG_PUSH([C++])
11738         save_CXXFLAGS=$CXXFLAGS
11739         CXXFLAGS="$CXXFLAGS $flag_ssse3"
11740         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11741             #include <tmmintrin.h>
11742             int main () {
11743                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11744                 c = _mm_maddubs_epi16 (a, b);
11745                 return 0;
11746             }
11747             ])],
11748             [can_compile_ssse3=yes],
11749             [can_compile_ssse3=no])
11750         AC_LANG_POP([C++])
11751         CXXFLAGS=$save_CXXFLAGS
11752         AC_MSG_RESULT([${can_compile_ssse3}])
11753         if test "${can_compile_ssse3}" = "yes" ; then
11754             LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
11755         fi
11757         AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
11758         AC_LANG_PUSH([C++])
11759         save_CXXFLAGS=$CXXFLAGS
11760         CXXFLAGS="$CXXFLAGS $flag_sse41"
11761         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11762             #include <smmintrin.h>
11763             int main () {
11764                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11765                 c = _mm_cmpeq_epi64 (a, b);
11766                 return 0;
11767             }
11768             ])],
11769             [can_compile_sse41=yes],
11770             [can_compile_sse41=no])
11771         AC_LANG_POP([C++])
11772         CXXFLAGS=$save_CXXFLAGS
11773         AC_MSG_RESULT([${can_compile_sse41}])
11774         if test "${can_compile_sse41}" = "yes" ; then
11775             LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
11776         fi
11778         AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
11779         AC_LANG_PUSH([C++])
11780         save_CXXFLAGS=$CXXFLAGS
11781         CXXFLAGS="$CXXFLAGS $flag_sse42"
11782         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11783             #include <nmmintrin.h>
11784             int main () {
11785                 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11786                 c = _mm_cmpgt_epi64 (a, b);
11787                 return 0;
11788             }
11789             ])],
11790             [can_compile_sse42=yes],
11791             [can_compile_sse42=no])
11792         AC_LANG_POP([C++])
11793         CXXFLAGS=$save_CXXFLAGS
11794         AC_MSG_RESULT([${can_compile_sse42}])
11795         if test "${can_compile_sse42}" = "yes" ; then
11796             LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
11797         fi
11799         AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
11800         AC_LANG_PUSH([C++])
11801         save_CXXFLAGS=$CXXFLAGS
11802         CXXFLAGS="$CXXFLAGS $flag_avx"
11803         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11804             #include <immintrin.h>
11805             int main () {
11806                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
11807                 c = _mm256_xor_ps(a, b);
11808                 return 0;
11809             }
11810             ])],
11811             [can_compile_avx=yes],
11812             [can_compile_avx=no])
11813         AC_LANG_POP([C++])
11814         CXXFLAGS=$save_CXXFLAGS
11815         AC_MSG_RESULT([${can_compile_avx}])
11816         if test "${can_compile_avx}" = "yes" ; then
11817             LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
11818         fi
11820         AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
11821         AC_LANG_PUSH([C++])
11822         save_CXXFLAGS=$CXXFLAGS
11823         CXXFLAGS="$CXXFLAGS $flag_avx2"
11824         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11825             #include <immintrin.h>
11826             int main () {
11827                 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
11828                 c = _mm256_maddubs_epi16(a, b);
11829                 return 0;
11830             }
11831             ])],
11832             [can_compile_avx2=yes],
11833             [can_compile_avx2=no])
11834         AC_LANG_POP([C++])
11835         CXXFLAGS=$save_CXXFLAGS
11836         AC_MSG_RESULT([${can_compile_avx2}])
11837         if test "${can_compile_avx2}" = "yes" ; then
11838             LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
11839         fi
11841         AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
11842         AC_LANG_PUSH([C++])
11843         save_CXXFLAGS=$CXXFLAGS
11844         CXXFLAGS="$CXXFLAGS $flag_avx512"
11845         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11846             #include <immintrin.h>
11847             int main () {
11848                 __m512i a = _mm512_loadu_si512(0);
11849                 return 0;
11850             }
11851             ])],
11852             [can_compile_avx512=yes],
11853             [can_compile_avx512=no])
11854         AC_LANG_POP([C++])
11855         CXXFLAGS=$save_CXXFLAGS
11856         AC_MSG_RESULT([${can_compile_avx512}])
11857         if test "${can_compile_avx512}" = "yes" ; then
11858             LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
11859         fi
11861         AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
11862         AC_LANG_PUSH([C++])
11863         save_CXXFLAGS=$CXXFLAGS
11864         CXXFLAGS="$CXXFLAGS $flag_f16c"
11865         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11866             #include <immintrin.h>
11867             int main () {
11868                 __m128i a = _mm_set1_epi32 (0);
11869                 __m128 c;
11870                 c = _mm_cvtph_ps(a);
11871                 return 0;
11872             }
11873             ])],
11874             [can_compile_f16c=yes],
11875             [can_compile_f16c=no])
11876         AC_LANG_POP([C++])
11877         CXXFLAGS=$save_CXXFLAGS
11878         AC_MSG_RESULT([${can_compile_f16c}])
11879         if test "${can_compile_f16c}" = "yes" ; then
11880             LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
11881         fi
11883         AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
11884         AC_LANG_PUSH([C++])
11885         save_CXXFLAGS=$CXXFLAGS
11886         CXXFLAGS="$CXXFLAGS $flag_fma"
11887         AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11888             #include <immintrin.h>
11889             int main () {
11890                 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
11891                 d = _mm256_fmadd_ps(a, b, c);
11892                 return 0;
11893             }
11894             ])],
11895             [can_compile_fma=yes],
11896             [can_compile_fma=no])
11897         AC_LANG_POP([C++])
11898         CXXFLAGS=$save_CXXFLAGS
11899         AC_MSG_RESULT([${can_compile_fma}])
11900         if test "${can_compile_fma}" = "yes" ; then
11901             LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
11902         fi
11904         CXX="$save_CXX"
11905     fi
11908 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
11910 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11911     AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
11912     AC_LANG_PUSH([C])
11913     save_CC="$CC"
11914     CC="$LO_CLANG_CC"
11915     save_CFLAGS=$CFLAGS
11916     CFLAGS="$CFLAGS --ccache-skip -O2"
11917     dnl an empty program will do, we're checking the compiler flags
11918     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11919                       [use_ccache=yes], [use_ccache=no])
11920     CFLAGS=$save_CFLAGS
11921     CC=$save_CC
11922     if test $use_ccache = yes; then
11923         AC_MSG_RESULT([yes])
11924     else
11925         LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
11926         AC_MSG_RESULT([no])
11927     fi
11928     AC_LANG_POP([C])
11930     AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
11931     AC_LANG_PUSH([C++])
11932     save_CXX="$CXX"
11933     CXX="$LO_CLANG_CXX"
11934     save_CXXFLAGS=$CXXFLAGS
11935     CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
11936     dnl an empty program will do, we're checking the compiler flags
11937     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11938                       [use_ccache=yes], [use_ccache=no])
11939     if test $use_ccache = yes; then
11940         AC_MSG_RESULT([yes])
11941     else
11942         LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
11943         AC_MSG_RESULT([no])
11944     fi
11945     CXXFLAGS=$save_CXXFLAGS
11946     CXX=$save_CXX
11947     AC_LANG_POP([C++])
11950 AC_SUBST(LO_CLANG_CC)
11951 AC_SUBST(LO_CLANG_CXX)
11952 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
11953 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
11954 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
11955 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
11956 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
11957 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
11958 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
11959 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
11960 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
11961 AC_SUBST(CLANG_USE_LD)
11963 SYSTEM_GPGMEPP=
11965 if test "$enable_gpgmepp" = no; then
11966     AC_MSG_CHECKING([whether to enable gpgmepp])
11967     AC_MSG_RESULT([no])
11968 elif test "$enable_mpl_subset" = "yes"; then
11969     AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
11970     AC_MSG_RESULT([yes])
11971 elif test "$enable_fuzzers" = "yes"; then
11972     AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
11973     AC_MSG_RESULT([yes])
11974 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
11975     dnl ===================================================================
11976     dnl Check for system gpgme
11977     dnl ===================================================================
11978     AC_MSG_CHECKING([which gpgmepp to use])
11979     if test "$with_system_gpgmepp" = "yes"; then
11980         AC_MSG_RESULT([external])
11981         SYSTEM_GPGMEPP=TRUE
11983         # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
11984         AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
11985             [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
11986         # progress_callback is the only func with plain C linkage
11987         # checking for it also filters out older, KDE-dependent libgpgmepp versions
11988         AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
11989             [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
11990         AC_CHECK_HEADER(gpgme.h, [],
11991             [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
11992     else
11993         AC_MSG_RESULT([internal])
11994         BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
11995         AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
11997         GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
11998         LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
11999         if test "$_os" != "WINNT"; then
12000             GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12001             LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12002         fi
12003     fi
12004     ENABLE_GPGMEPP=TRUE
12005     AC_DEFINE([HAVE_FEATURE_GPGME])
12006     AC_PATH_PROG(GPG, gpg)
12007     # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12008     # so let's exclude that manually for the moment
12009     if test -n "$GPG" -a "$_os" != "WINNT"; then
12010         # make sure we not only have a working gpgme, but a full working
12011         # gpg installation to run OpenPGP signature verification
12012         AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12013     fi
12014     if test "$_os" = "Linux"; then
12015       uid=`id -u`
12016       AC_MSG_CHECKING([for /run/user/$uid])
12017       if test -d /run/user/$uid; then
12018         AC_MSG_RESULT([yes])
12019         AC_PATH_PROG(GPGCONF, gpgconf)
12021         # Older versions of gpgconf are not working as expected, since
12022         # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12023         # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12024         # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12025         AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12026         GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12027         GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12028         if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12029           AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12030           AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12031           if $GPGCONF --dump-options > /dev/null ; then
12032             if $GPGCONF --dump-options | grep -q create-socketdir ; then
12033               AC_MSG_RESULT([yes])
12034               AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12035               AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12036             else
12037               AC_MSG_RESULT([no])
12038             fi
12039           else
12040             AC_MSG_RESULT([no. missing or broken gpgconf?])
12041           fi
12042         else
12043           AC_MSG_RESULT([no, $GPGCONF_VERSION])
12044         fi
12045       else
12046         AC_MSG_RESULT([no])
12047      fi
12048    fi
12050 AC_SUBST(ENABLE_GPGMEPP)
12051 AC_SUBST(SYSTEM_GPGMEPP)
12052 AC_SUBST(GPG_ERROR_CFLAGS)
12053 AC_SUBST(GPG_ERROR_LIBS)
12054 AC_SUBST(LIBASSUAN_CFLAGS)
12055 AC_SUBST(LIBASSUAN_LIBS)
12056 AC_SUBST(GPGMEPP_CFLAGS)
12057 AC_SUBST(GPGMEPP_LIBS)
12059 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12060 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12061     AC_MSG_RESULT([yes])
12062     ENABLE_MEDIAWIKI=TRUE
12063     BUILD_TYPE="$BUILD_TYPE XSLTML"
12064     if test  "x$with_java" = "xno"; then
12065         AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12066     fi
12067 else
12068     AC_MSG_RESULT([no])
12069     ENABLE_MEDIAWIKI=
12070     SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12072 AC_SUBST(ENABLE_MEDIAWIKI)
12074 AC_MSG_CHECKING([whether to build the Report Builder])
12075 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12076     AC_MSG_RESULT([yes])
12077     ENABLE_REPORTBUILDER=TRUE
12078     AC_MSG_CHECKING([which jfreereport libs to use])
12079     if test "$with_system_jfreereport" = "yes"; then
12080         SYSTEM_JFREEREPORT=TRUE
12081         AC_MSG_RESULT([external])
12082         if test -z $SAC_JAR; then
12083             SAC_JAR=/usr/share/java/sac.jar
12084         fi
12085         if ! test -f $SAC_JAR; then
12086              AC_MSG_ERROR(sac.jar not found.)
12087         fi
12089         if test -z $LIBXML_JAR; then
12090             if test -f /usr/share/java/libxml-1.0.0.jar; then
12091                 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12092             elif test -f /usr/share/java/libxml.jar; then
12093                 LIBXML_JAR=/usr/share/java/libxml.jar
12094             else
12095                 AC_MSG_ERROR(libxml.jar replacement not found.)
12096             fi
12097         elif ! test -f $LIBXML_JAR; then
12098             AC_MSG_ERROR(libxml.jar not found.)
12099         fi
12101         if test -z $FLUTE_JAR; then
12102             if test -f /usr/share/java/flute-1.3.0.jar; then
12103                 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12104             elif test -f /usr/share/java/flute.jar; then
12105                 FLUTE_JAR=/usr/share/java/flute.jar
12106             else
12107                 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12108             fi
12109         elif ! test -f $FLUTE_JAR; then
12110             AC_MSG_ERROR(flute-1.3.0.jar not found.)
12111         fi
12113         if test -z $JFREEREPORT_JAR; then
12114             if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12115                 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12116             elif test -f /usr/share/java/flow-engine.jar; then
12117                 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12118             else
12119                 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12120             fi
12121         elif ! test -f  $JFREEREPORT_JAR; then
12122                 AC_MSG_ERROR(jfreereport.jar not found.)
12123         fi
12125         if test -z $LIBLAYOUT_JAR; then
12126             if test -f /usr/share/java/liblayout-0.2.9.jar; then
12127                 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12128             elif test -f /usr/share/java/liblayout.jar; then
12129                 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12130             else
12131                 AC_MSG_ERROR(liblayout.jar replacement not found.)
12132             fi
12133         elif ! test -f $LIBLAYOUT_JAR; then
12134                 AC_MSG_ERROR(liblayout.jar not found.)
12135         fi
12137         if test -z $LIBLOADER_JAR; then
12138             if test -f /usr/share/java/libloader-1.0.0.jar; then
12139                 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12140             elif test -f /usr/share/java/libloader.jar; then
12141                 LIBLOADER_JAR=/usr/share/java/libloader.jar
12142             else
12143                 AC_MSG_ERROR(libloader.jar replacement not found.)
12144             fi
12145         elif ! test -f  $LIBLOADER_JAR; then
12146             AC_MSG_ERROR(libloader.jar not found.)
12147         fi
12149         if test -z $LIBFORMULA_JAR; then
12150             if test -f /usr/share/java/libformula-0.2.0.jar; then
12151                 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12152             elif test -f /usr/share/java/libformula.jar; then
12153                 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12154             else
12155                 AC_MSG_ERROR(libformula.jar replacement not found.)
12156             fi
12157         elif ! test -f $LIBFORMULA_JAR; then
12158                 AC_MSG_ERROR(libformula.jar not found.)
12159         fi
12161         if test -z $LIBREPOSITORY_JAR; then
12162             if test -f /usr/share/java/librepository-1.0.0.jar; then
12163                 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12164             elif test -f /usr/share/java/librepository.jar; then
12165                 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12166             else
12167                 AC_MSG_ERROR(librepository.jar replacement not found.)
12168             fi
12169         elif ! test -f $LIBREPOSITORY_JAR; then
12170             AC_MSG_ERROR(librepository.jar not found.)
12171         fi
12173         if test -z $LIBFONTS_JAR; then
12174             if test -f /usr/share/java/libfonts-1.0.0.jar; then
12175                 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12176             elif test -f /usr/share/java/libfonts.jar; then
12177                 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12178             else
12179                 AC_MSG_ERROR(libfonts.jar replacement not found.)
12180             fi
12181         elif ! test -f $LIBFONTS_JAR; then
12182                 AC_MSG_ERROR(libfonts.jar not found.)
12183         fi
12185         if test -z $LIBSERIALIZER_JAR; then
12186             if test -f /usr/share/java/libserializer-1.0.0.jar; then
12187                 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12188             elif test -f /usr/share/java/libserializer.jar; then
12189                 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12190             else
12191                 AC_MSG_ERROR(libserializer.jar replacement not found.)
12192             fi
12193         elif ! test -f $LIBSERIALIZER_JAR; then
12194                 AC_MSG_ERROR(libserializer.jar not found.)
12195         fi
12197         if test -z $LIBBASE_JAR; then
12198             if test -f /usr/share/java/libbase-1.0.0.jar; then
12199                 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12200             elif test -f /usr/share/java/libbase.jar; then
12201                 LIBBASE_JAR=/usr/share/java/libbase.jar
12202             else
12203                 AC_MSG_ERROR(libbase.jar replacement not found.)
12204             fi
12205         elif ! test -f $LIBBASE_JAR; then
12206             AC_MSG_ERROR(libbase.jar not found.)
12207         fi
12209     else
12210         AC_MSG_RESULT([internal])
12211         SYSTEM_JFREEREPORT=
12212         BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12213         NEED_ANT=TRUE
12214     fi
12215 else
12216     AC_MSG_RESULT([no])
12217     ENABLE_REPORTBUILDER=
12218     SYSTEM_JFREEREPORT=
12220 AC_SUBST(ENABLE_REPORTBUILDER)
12221 AC_SUBST(SYSTEM_JFREEREPORT)
12222 AC_SUBST(SAC_JAR)
12223 AC_SUBST(LIBXML_JAR)
12224 AC_SUBST(FLUTE_JAR)
12225 AC_SUBST(JFREEREPORT_JAR)
12226 AC_SUBST(LIBBASE_JAR)
12227 AC_SUBST(LIBLAYOUT_JAR)
12228 AC_SUBST(LIBLOADER_JAR)
12229 AC_SUBST(LIBFORMULA_JAR)
12230 AC_SUBST(LIBREPOSITORY_JAR)
12231 AC_SUBST(LIBFONTS_JAR)
12232 AC_SUBST(LIBSERIALIZER_JAR)
12234 # this has to be here because both the Wiki Publisher and the SRB use
12235 # commons-logging
12236 COMMONS_LOGGING_VERSION=1.2
12237 if test "$ENABLE_REPORTBUILDER" = "TRUE"; then
12238     AC_MSG_CHECKING([which Apache commons-* libs to use])
12239     if test "$with_system_apache_commons" = "yes"; then
12240         SYSTEM_APACHE_COMMONS=TRUE
12241         AC_MSG_RESULT([external])
12242         if test -z $COMMONS_LOGGING_JAR; then
12243             if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then
12244                COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar
12245            elif test -f /usr/share/java/commons-logging.jar; then
12246                 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar
12247             else
12248                 AC_MSG_ERROR(commons-logging.jar replacement not found.)
12249             fi
12250         elif ! test -f $COMMONS_LOGGING_JAR; then
12251             AC_MSG_ERROR(commons-logging.jar not found.)
12252         fi
12253     else
12254         AC_MSG_RESULT([internal])
12255         SYSTEM_APACHE_COMMONS=
12256         BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS"
12257         NEED_ANT=TRUE
12258     fi
12260 AC_SUBST(SYSTEM_APACHE_COMMONS)
12261 AC_SUBST(COMMONS_LOGGING_JAR)
12262 AC_SUBST(COMMONS_LOGGING_VERSION)
12264 # scripting provider for BeanShell?
12265 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12266 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12267     AC_MSG_RESULT([yes])
12268     ENABLE_SCRIPTING_BEANSHELL=TRUE
12270     dnl ===================================================================
12271     dnl Check for system beanshell
12272     dnl ===================================================================
12273     AC_MSG_CHECKING([which beanshell to use])
12274     if test "$with_system_beanshell" = "yes"; then
12275         AC_MSG_RESULT([external])
12276         SYSTEM_BSH=TRUE
12277         if test -z $BSH_JAR; then
12278             BSH_JAR=/usr/share/java/bsh.jar
12279         fi
12280         if ! test -f $BSH_JAR; then
12281             AC_MSG_ERROR(bsh.jar not found.)
12282         fi
12283     else
12284         AC_MSG_RESULT([internal])
12285         SYSTEM_BSH=
12286         BUILD_TYPE="$BUILD_TYPE BSH"
12287     fi
12288 else
12289     AC_MSG_RESULT([no])
12290     ENABLE_SCRIPTING_BEANSHELL=
12291     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12293 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12294 AC_SUBST(SYSTEM_BSH)
12295 AC_SUBST(BSH_JAR)
12297 # scripting provider for JavaScript?
12298 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12299 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12300     AC_MSG_RESULT([yes])
12301     ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12303     dnl ===================================================================
12304     dnl Check for system rhino
12305     dnl ===================================================================
12306     AC_MSG_CHECKING([which rhino to use])
12307     if test "$with_system_rhino" = "yes"; then
12308         AC_MSG_RESULT([external])
12309         SYSTEM_RHINO=TRUE
12310         if test -z $RHINO_JAR; then
12311             RHINO_JAR=/usr/share/java/js.jar
12312         fi
12313         if ! test -f $RHINO_JAR; then
12314             AC_MSG_ERROR(js.jar not found.)
12315         fi
12316     else
12317         AC_MSG_RESULT([internal])
12318         SYSTEM_RHINO=
12319         BUILD_TYPE="$BUILD_TYPE RHINO"
12320         NEED_ANT=TRUE
12321     fi
12322 else
12323     AC_MSG_RESULT([no])
12324     ENABLE_SCRIPTING_JAVASCRIPT=
12325     SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12327 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12328 AC_SUBST(SYSTEM_RHINO)
12329 AC_SUBST(RHINO_JAR)
12331 # This is only used in Qt5/KF5 checks to determine if /usr/lib64
12332 # paths should be added to library search path. So lets put all 64-bit
12333 # platforms there.
12334 supports_multilib=
12335 case "$host_cpu" in
12336 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12337     if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12338         supports_multilib="yes"
12339     fi
12340     ;;
12342     ;;
12343 esac
12345 dnl ===================================================================
12346 dnl QT5 Integration
12347 dnl ===================================================================
12349 QT5_CFLAGS=""
12350 QT5_LIBS=""
12351 QMAKE5="qmake"
12352 MOC5="moc"
12353 QT5_GOBJECT_CFLAGS=""
12354 QT5_GOBJECT_LIBS=""
12355 QT5_HAVE_GOBJECT=""
12356 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12357         \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12358         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12359 then
12360     qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12361     qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12363     if test -n "$supports_multilib"; then
12364         qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12365     fi
12367     qt5_test_include="QtWidgets/qapplication.h"
12368     qt5_test_library="libQt5Widgets.so"
12370     dnl Check for qmake5
12371     AC_PATH_PROGS( QMAKE5, [qmake-qt5 qmake], no, [$QT5DIR/bin:$PATH])
12372     if test "$QMAKE5" = "no"; then
12373         AC_MSG_ERROR([Qmake not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12374     else
12375         qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12376         if test -z "$qmake5_test_ver"; then
12377             AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12378         fi
12379         qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12380         qt5_minimal_minor="6"
12381         if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12382             AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12383         else
12384             AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12385         fi
12386     fi
12388     qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12389     qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12391     AC_MSG_CHECKING([for Qt5 headers])
12392     qt5_incdir="no"
12393     for inc_dir in $qt5_incdirs; do
12394         if test -r "$inc_dir/$qt5_test_include"; then
12395             qt5_incdir="$inc_dir"
12396             break
12397         fi
12398     done
12399     AC_MSG_RESULT([$qt5_incdir])
12400     if test "x$qt5_incdir" = "xno"; then
12401         AC_MSG_ERROR([Qt5 headers not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12402     fi
12403     # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12404     AC_LANG_PUSH([C++])
12405     save_CPPFLAGS=$CPPFLAGS
12406     CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12407     AC_CHECK_HEADER(QtCore/qconfig.h, [],
12408         [AC_MSG_ERROR(qconfig.h header not found.)], [])
12409     CPPFLAGS=$save_CPPFLAGS
12410     AC_LANG_POP([C++])
12412     AC_MSG_CHECKING([for Qt5 libraries])
12413     qt5_libdir="no"
12414     for lib_dir in $qt5_libdirs; do
12415         if test -r "$lib_dir/$qt5_test_library"; then
12416             qt5_libdir="$lib_dir"
12417             break
12418         fi
12419     done
12420     AC_MSG_RESULT([$qt5_libdir])
12421     if test "x$qt5_libdir" = "xno"; then
12422         AC_MSG_ERROR([Qt5 libraries not found.  Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12423     fi
12425     QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12426     QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12427     QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12429     if test "$USING_X11" = TRUE; then
12430         PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12431         PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12432             QT5_HAVE_XCB_ICCCM=1
12433             AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12434         ],[
12435             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)])
12436             add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12437         ])
12438         QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12439         QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12440         QT5_USING_X11=1
12441         AC_DEFINE(QT5_USING_X11)
12442     fi
12444     dnl Check for Meta Object Compiler
12446     AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12447     if test "$MOC5" = "no"; then
12448         AC_MSG_ERROR([Qt Meta Object Compiler not found.  Please specify
12449 the root of your Qt installation by exporting QT5DIR before running "configure".])
12450     fi
12452     if test "$build_gstreamer_1_0" = "yes"; then
12453         PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12454                 QT5_HAVE_GOBJECT=1
12455                 AC_DEFINE(QT5_HAVE_GOBJECT)
12456             ],
12457             AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12458         )
12459     fi
12461 AC_SUBST(QT5_CFLAGS)
12462 AC_SUBST(QT5_LIBS)
12463 AC_SUBST(MOC5)
12464 AC_SUBST(QT5_GOBJECT_CFLAGS)
12465 AC_SUBST(QT5_GOBJECT_LIBS)
12466 AC_SUBST(QT5_HAVE_GOBJECT)
12468 dnl ===================================================================
12469 dnl KF5 Integration
12470 dnl ===================================================================
12472 KF5_CFLAGS=""
12473 KF5_LIBS=""
12474 KF5_CONFIG="kf5-config"
12475 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12476         \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12477 then
12478     if test "$OS" = "HAIKU"; then
12479         haiku_arch="`echo $RTL_ARCH | tr X x`"
12480         kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12481         kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12482     fi
12484     kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12485     kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12486     if test -n "$supports_multilib"; then
12487         kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12488     fi
12490     kf5_test_include="KF5/kcoreaddons_version.h"
12491     kf5_test_library="libKF5CoreAddons.so"
12492     kf5_libdirs="$qt5_libdir $kf5_libdirs"
12494     dnl kf5 KDE4 support compatibility installed
12495     AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12496     if test "$KF5_CONFIG" != "no"; then
12497         kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12498         kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12499     fi
12501     dnl Check for KF5 headers
12502     AC_MSG_CHECKING([for KF5 headers])
12503     kf5_incdir="no"
12504     for kf5_check in $kf5_incdirs; do
12505         if test -r "$kf5_check/$kf5_test_include"; then
12506             kf5_incdir="$kf5_check/KF5"
12507             break
12508         fi
12509     done
12510     AC_MSG_RESULT([$kf5_incdir])
12511     if test "x$kf5_incdir" = "xno"; then
12512         AC_MSG_ERROR([KF5 headers not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12513     fi
12515     dnl Check for KF5 libraries
12516     AC_MSG_CHECKING([for KF5 libraries])
12517     kf5_libdir="no"
12518     for kf5_check in $kf5_libdirs; do
12519         if test -r "$kf5_check/$kf5_test_library"; then
12520             kf5_libdir="$kf5_check"
12521             break
12522         fi
12523     done
12525     AC_MSG_RESULT([$kf5_libdir])
12526     if test "x$kf5_libdir" = "xno"; then
12527         AC_MSG_ERROR([KF5 libraries not found.  Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12528     fi
12530     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"
12531     KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12532     KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12534     if test "$USING_X11" = TRUE; then
12535         KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
12536     fi
12538     AC_LANG_PUSH([C++])
12539     save_CXXFLAGS=$CXXFLAGS
12540     CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
12541     AC_MSG_CHECKING([whether KDE is >= 5.0])
12542        AC_RUN_IFELSE([AC_LANG_SOURCE([[
12543 #include <kcoreaddons_version.h>
12545 int main(int argc, char **argv) {
12546        if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
12547        else return 1;
12549        ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
12550     CXXFLAGS=$save_CXXFLAGS
12551     AC_LANG_POP([C++])
12553 AC_SUBST(KF5_CFLAGS)
12554 AC_SUBST(KF5_LIBS)
12556 dnl ===================================================================
12557 dnl Test whether to include Evolution 2 support
12558 dnl ===================================================================
12559 AC_MSG_CHECKING([whether to enable evolution 2 support])
12560 if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then
12561     AC_MSG_RESULT([yes])
12562     PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
12563     GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12564     FilterLibs "${GOBJECT_LIBS}"
12565     GOBJECT_LIBS="${filteredlibs}"
12566     ENABLE_EVOAB2="TRUE"
12567 else
12568     ENABLE_EVOAB2=""
12569     AC_MSG_RESULT([no])
12571 AC_SUBST(ENABLE_EVOAB2)
12572 AC_SUBST(GOBJECT_CFLAGS)
12573 AC_SUBST(GOBJECT_LIBS)
12575 dnl ===================================================================
12576 dnl Test which themes to include
12577 dnl ===================================================================
12578 AC_MSG_CHECKING([which themes to include])
12579 # if none given use default subset of available themes
12580 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
12581     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"
12584 WITH_THEMES=""
12585 if test "x$with_theme" != "xno"; then
12586     for theme in $with_theme; do
12587         case $theme in
12588         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" ;;
12589         default) real_theme=colibre ;;
12590         *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
12591         esac
12592         WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
12593     done
12595 AC_MSG_RESULT([$WITH_THEMES])
12596 AC_SUBST([WITH_THEMES])
12597 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
12598 for theme in $with_theme; do
12599     case $theme in
12600     default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
12601     *) ;;
12602     esac
12603 done
12605 dnl ===================================================================
12606 dnl Test whether to integrate helppacks into the product's installer
12607 dnl ===================================================================
12608 AC_MSG_CHECKING([for helppack integration])
12609 if test "$with_helppack_integration" = "no"; then
12610     AC_MSG_RESULT([no integration])
12611 else
12612     SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
12613     AC_MSG_RESULT([integration])
12616 ###############################################################################
12617 # Extensions checking
12618 ###############################################################################
12619 AC_MSG_CHECKING([for extensions integration])
12620 if test "x$enable_extension_integration" != "xno"; then
12621     WITH_EXTENSION_INTEGRATION=TRUE
12622     SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
12623     AC_MSG_RESULT([yes, use integration])
12624 else
12625     WITH_EXTENSION_INTEGRATION=
12626     AC_MSG_RESULT([no, do not integrate])
12628 AC_SUBST(WITH_EXTENSION_INTEGRATION)
12630 dnl Should any extra extensions be included?
12631 dnl There are standalone tests for each of these below.
12632 WITH_EXTRA_EXTENSIONS=
12633 AC_SUBST([WITH_EXTRA_EXTENSIONS])
12635 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
12636 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
12637 if test "x$with_java" != "xno"; then
12638     libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
12639     libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
12642 AC_MSG_CHECKING([whether to build opens___.ttf])
12643 if test "$enable_build_opensymbol" = "yes"; then
12644     AC_MSG_RESULT([yes])
12645     AC_PATH_PROG(FONTFORGE, fontforge)
12646     if test -z "$FONTFORGE"; then
12647         AC_MSG_ERROR([fontforge not installed])
12648     fi
12649 else
12650     AC_MSG_RESULT([no])
12651     OPENSYMBOL_TTF=f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
12652     BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
12654 AC_SUBST(OPENSYMBOL_TTF)
12655 AC_SUBST(FONTFORGE)
12657 dnl ===================================================================
12658 dnl Test whether to include fonts
12659 dnl ===================================================================
12660 AC_MSG_CHECKING([whether to include third-party fonts])
12661 if test "$with_fonts" != "no"; then
12662     AC_MSG_RESULT([yes])
12663     WITH_FONTS=TRUE
12664     BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
12665     AC_DEFINE(HAVE_MORE_FONTS)
12666 else
12667     AC_MSG_RESULT([no])
12668     WITH_FONTS=
12669     SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
12671 AC_SUBST(WITH_FONTS)
12674 dnl ===================================================================
12675 dnl Test whether to enable online update service
12676 dnl ===================================================================
12677 AC_MSG_CHECKING([whether to enable online update])
12678 ENABLE_ONLINE_UPDATE=
12679 ENABLE_ONLINE_UPDATE_MAR=
12680 UPDATE_CONFIG=
12681 if test "$enable_online_update" = ""; then
12682     if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12683         AC_MSG_RESULT([yes])
12684         ENABLE_ONLINE_UPDATE="TRUE"
12685     else
12686         AC_MSG_RESULT([no])
12687     fi
12688 else
12689     if test "$enable_online_update" = "mar"; then
12690         AC_MSG_RESULT([yes - MAR-based online update])
12691         ENABLE_ONLINE_UPDATE_MAR="TRUE"
12692         if test "$with_update_config" = ""; then
12693             AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
12694         fi
12695         UPDATE_CONFIG="$with_update_config"
12696         AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
12697     elif test "$enable_online_update" = "yes"; then
12698         AC_MSG_RESULT([yes])
12699         ENABLE_ONLINE_UPDATE="TRUE"
12700     else
12701         AC_MSG_RESULT([no])
12702     fi
12704 AC_SUBST(ENABLE_ONLINE_UPDATE)
12705 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
12706 AC_SUBST(UPDATE_CONFIG)
12708 dnl ===================================================================
12709 dnl Test whether we need bzip2
12710 dnl ===================================================================
12711 SYSTEM_BZIP2=
12712 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
12713     AC_MSG_CHECKING([whether to use system bzip2])
12714     if test "$with_system_bzip2" = yes; then
12715         SYSTEM_BZIP2=TRUE
12716         AC_MSG_RESULT([yes])
12717         PKG_CHECK_MODULES(BZIP2, bzip2)
12718         FilterLibs "${BZIP2_LIBS}"
12719         BZIP2_LIBS="${filteredlibs}"
12720     else
12721         AC_MSG_RESULT([no])
12722         BUILD_TYPE="$BUILD_TYPE BZIP2"
12723     fi
12725 AC_SUBST(SYSTEM_BZIP2)
12726 AC_SUBST(BZIP2_CFLAGS)
12727 AC_SUBST(BZIP2_LIBS)
12729 dnl ===================================================================
12730 dnl Test whether to enable extension update
12731 dnl ===================================================================
12732 AC_MSG_CHECKING([whether to enable extension update])
12733 ENABLE_EXTENSION_UPDATE=
12734 if test "x$enable_extension_update" = "xno"; then
12735     AC_MSG_RESULT([no])
12736 else
12737     AC_MSG_RESULT([yes])
12738     ENABLE_EXTENSION_UPDATE="TRUE"
12739     AC_DEFINE(ENABLE_EXTENSION_UPDATE)
12740     SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
12742 AC_SUBST(ENABLE_EXTENSION_UPDATE)
12745 dnl ===================================================================
12746 dnl Test whether to create MSI with LIMITUI=1 (silent install)
12747 dnl ===================================================================
12748 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
12749 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
12750     AC_MSG_RESULT([no])
12751     ENABLE_SILENT_MSI=
12752 else
12753     AC_MSG_RESULT([yes])
12754     ENABLE_SILENT_MSI=TRUE
12755     SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
12757 AC_SUBST(ENABLE_SILENT_MSI)
12759 AC_MSG_CHECKING([whether and how to use Xinerama])
12760 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
12761     if test "$x_libraries" = "default_x_libraries"; then
12762         XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
12763         if test "x$XINERAMALIB" = x; then
12764            XINERAMALIB="/usr/lib"
12765         fi
12766     else
12767         XINERAMALIB="$x_libraries"
12768     fi
12769     if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
12770         # we have both versions, let the user decide but use the dynamic one
12771         # per default
12772         USE_XINERAMA=TRUE
12773         if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
12774             XINERAMA_LINK=dynamic
12775         else
12776             XINERAMA_LINK=static
12777         fi
12778     elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
12779         # we have only the dynamic version
12780         USE_XINERAMA=TRUE
12781         XINERAMA_LINK=dynamic
12782     elif test -e "$XINERAMALIB/libXinerama.a"; then
12783         # static version
12784         if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
12785             USE_XINERAMA=TRUE
12786             XINERAMA_LINK=static
12787         else
12788             USE_XINERAMA=
12789             XINERAMA_LINK=none
12790         fi
12791     else
12792         # no Xinerama
12793         USE_XINERAMA=
12794         XINERAMA_LINK=none
12795     fi
12796     if test "$USE_XINERAMA" = "TRUE"; then
12797         AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
12798         AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
12799             [AC_MSG_ERROR(Xinerama header not found.)], [])
12800         XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
12801         if test "x$XEXTLIB" = x; then
12802            XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
12803         fi
12804         XINERAMA_EXTRA_LIBS="$XEXTLIBS"
12805         if test "$_os" = "FreeBSD"; then
12806             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
12807         fi
12808         if test "$_os" = "Linux"; then
12809             XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
12810         fi
12811         AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
12812             [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
12813     else
12814         AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
12815     fi
12816 else
12817     USE_XINERAMA=
12818     XINERAMA_LINK=none
12819     AC_MSG_RESULT([no])
12821 AC_SUBST(USE_XINERAMA)
12822 AC_SUBST(XINERAMA_LINK)
12824 dnl ===================================================================
12825 dnl Test whether to build cairo or rely on the system version
12826 dnl ===================================================================
12828 if test "$USING_X11" = TRUE; then
12829     # Used in vcl/Library_vclplug_gen.mk
12830     test_cairo=yes
12833 if test "$test_cairo" = "yes"; then
12834     AC_MSG_CHECKING([whether to use the system cairo])
12836     : ${with_system_cairo:=$with_system_libs}
12837     if test "$with_system_cairo" = "yes"; then
12838         SYSTEM_CAIRO=TRUE
12839         AC_MSG_RESULT([yes])
12841         PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
12842         CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12843         FilterLibs "${CAIRO_LIBS}"
12844         CAIRO_LIBS="${filteredlibs}"
12846         if test "$test_xrender" = "yes"; then
12847             AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
12848             AC_LANG_PUSH([C])
12849             AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
12850 #ifdef PictStandardA8
12851 #else
12852       return fail;
12853 #endif
12854 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
12856             AC_LANG_POP([C])
12857         fi
12858     else
12859         SYSTEM_CAIRO=
12860         AC_MSG_RESULT([no])
12862         BUILD_TYPE="$BUILD_TYPE CAIRO"
12863     fi
12866 AC_SUBST(SYSTEM_CAIRO)
12867 AC_SUBST(CAIRO_CFLAGS)
12868 AC_SUBST(CAIRO_LIBS)
12870 dnl ===================================================================
12871 dnl Test whether to use avahi
12872 dnl ===================================================================
12873 if test "$_os" = "WINNT"; then
12874     # Windows uses bundled mDNSResponder
12875     BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
12876 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
12877     PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
12878                       [ENABLE_AVAHI="TRUE"])
12879     AC_DEFINE(HAVE_FEATURE_AVAHI)
12880     AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12881     FilterLibs "${AVAHI_LIBS}"
12882     AVAHI_LIBS="${filteredlibs}"
12885 AC_SUBST(ENABLE_AVAHI)
12886 AC_SUBST(AVAHI_CFLAGS)
12887 AC_SUBST(AVAHI_LIBS)
12889 dnl ===================================================================
12890 dnl Test whether to use liblangtag
12891 dnl ===================================================================
12892 SYSTEM_LIBLANGTAG=
12893 AC_MSG_CHECKING([whether to use system liblangtag])
12894 if test "$with_system_liblangtag" = yes; then
12895     SYSTEM_LIBLANGTAG=TRUE
12896     AC_MSG_RESULT([yes])
12897     PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
12898     dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
12899     PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
12900     LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12901     FilterLibs "${LIBLANGTAG_LIBS}"
12902     LIBLANGTAG_LIBS="${filteredlibs}"
12903 else
12904     SYSTEM_LIBLANGTAG=
12905     AC_MSG_RESULT([no])
12906     BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
12907     LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
12908     if test "$COM" = "MSC"; then
12909         LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
12910     else
12911         LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
12912     fi
12914 AC_SUBST(SYSTEM_LIBLANGTAG)
12915 AC_SUBST(LIBLANGTAG_CFLAGS)
12916 AC_SUBST(LIBLANGTAG_LIBS)
12918 dnl ===================================================================
12919 dnl Test whether to build libpng or rely on the system version
12920 dnl ===================================================================
12922 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
12924 dnl ===================================================================
12925 dnl Check for runtime JVM search path
12926 dnl ===================================================================
12927 if test "$ENABLE_JAVA" != ""; then
12928     AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
12929     if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
12930         AC_MSG_RESULT([yes])
12931         if ! test -d "$with_jvm_path"; then
12932             AC_MSG_ERROR(["$with_jvm_path" not a directory])
12933         fi
12934         if ! test -d "$with_jvm_path"jvm; then
12935             AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
12936         fi
12937         JVM_ONE_PATH_CHECK="$with_jvm_path"
12938         AC_SUBST(JVM_ONE_PATH_CHECK)
12939     else
12940         AC_MSG_RESULT([no])
12941     fi
12944 dnl ===================================================================
12945 dnl Test for the presence of Ant and that it works
12946 dnl ===================================================================
12948 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
12949     ANT_HOME=; export ANT_HOME
12950     WITH_ANT_HOME=; export WITH_ANT_HOME
12951     if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
12952         if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
12953             if test "$_os" = "WINNT"; then
12954                 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
12955             else
12956                 with_ant_home="$LODE_HOME/opt/ant"
12957             fi
12958         elif test -x  "$LODE_HOME/opt/bin/ant" ; then
12959             with_ant_home="$LODE_HOME/opt/ant"
12960         fi
12961     fi
12962     if test -z "$with_ant_home"; then
12963         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
12964     else
12965         if test "$_os" = "WINNT"; then
12966             # AC_PATH_PROGS needs unix path
12967             with_ant_home=`cygpath -u "$with_ant_home"`
12968         fi
12969         AbsolutePath "$with_ant_home"
12970         with_ant_home=$absolute_path
12971         AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
12972         WITH_ANT_HOME=$with_ant_home
12973         ANT_HOME=$with_ant_home
12974     fi
12976     if test -z "$ANT"; then
12977         AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
12978     else
12979         # resolve relative or absolute symlink
12980         while test -h "$ANT"; do
12981             a_cwd=`pwd`
12982             a_basename=`basename "$ANT"`
12983             a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
12984             cd "`dirname "$ANT"`"
12985             cd "`dirname "$a_script"`"
12986             ANT="`pwd`"/"`basename "$a_script"`"
12987             cd "$a_cwd"
12988         done
12990         AC_MSG_CHECKING([if $ANT works])
12991         mkdir -p conftest.dir
12992         a_cwd=$(pwd)
12993         cd conftest.dir
12994         cat > conftest.java << EOF
12995         public class conftest {
12996             int testmethod(int a, int b) {
12997                     return a + b;
12998             }
12999         }
13002         cat > conftest.xml << EOF
13003         <project name="conftest" default="conftest">
13004         <target name="conftest">
13005             <javac srcdir="." includes="conftest.java">
13006             </javac>
13007         </target>
13008         </project>
13011         AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13012         if test $? = 0 -a -f ./conftest.class; then
13013             AC_MSG_RESULT([Ant works])
13014             if test -z "$WITH_ANT_HOME"; then
13015                 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13016                 if test -z "$ANT_HOME"; then
13017                     ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13018                 fi
13019             else
13020                 ANT_HOME="$WITH_ANT_HOME"
13021             fi
13022         else
13023             echo "configure: Ant test failed" >&5
13024             cat conftest.java >&5
13025             cat conftest.xml >&5
13026             AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13027         fi
13028         cd "$a_cwd"
13029         rm -fr conftest.dir
13030     fi
13031     if test -z "$ANT_HOME"; then
13032         ANT_HOME="NO_ANT_HOME"
13033     else
13034         PathFormat "$ANT_HOME"
13035         ANT_HOME="$formatted_path"
13036         PathFormat "$ANT"
13037         ANT="$formatted_path"
13038     fi
13040     dnl Checking for ant.jar
13041     if test "$ANT_HOME" != "NO_ANT_HOME"; then
13042         AC_MSG_CHECKING([Ant lib directory])
13043         if test -f $ANT_HOME/lib/ant.jar; then
13044             ANT_LIB="$ANT_HOME/lib"
13045         else
13046             if test -f $ANT_HOME/ant.jar; then
13047                 ANT_LIB="$ANT_HOME"
13048             else
13049                 if test -f /usr/share/java/ant.jar; then
13050                     ANT_LIB=/usr/share/java
13051                 else
13052                     if test -f /usr/share/ant-core/lib/ant.jar; then
13053                         ANT_LIB=/usr/share/ant-core/lib
13054                     else
13055                         if test -f $ANT_HOME/lib/ant/ant.jar; then
13056                             ANT_LIB="$ANT_HOME/lib/ant"
13057                         else
13058                             if test -f /usr/share/lib/ant/ant.jar; then
13059                                 ANT_LIB=/usr/share/lib/ant
13060                             else
13061                                 AC_MSG_ERROR([Ant libraries not found!])
13062                             fi
13063                         fi
13064                     fi
13065                 fi
13066             fi
13067         fi
13068         PathFormat "$ANT_LIB"
13069         ANT_LIB="$formatted_path"
13070         AC_MSG_RESULT([Ant lib directory found.])
13071     fi
13073     ant_minver=1.6.0
13074     ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13076     AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13077     ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13078     ant_version_major=`echo $ant_version | cut -d. -f1`
13079     ant_version_minor=`echo $ant_version | cut -d. -f2`
13080     echo "configure: ant_version $ant_version " >&5
13081     echo "configure: ant_version_major $ant_version_major " >&5
13082     echo "configure: ant_version_minor $ant_version_minor " >&5
13083     if test "$ant_version_major" -ge "2"; then
13084         AC_MSG_RESULT([yes, $ant_version])
13085     elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13086         AC_MSG_RESULT([yes, $ant_version])
13087     else
13088         AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13089     fi
13091     rm -f conftest* core core.* *.core
13093 AC_SUBST(ANT)
13094 AC_SUBST(ANT_HOME)
13095 AC_SUBST(ANT_LIB)
13097 OOO_JUNIT_JAR=
13098 HAMCREST_JAR=
13099 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13100     AC_MSG_CHECKING([for JUnit 4])
13101     if test "$with_junit" = "yes"; then
13102         if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13103             OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13104         elif test -e /usr/share/java/junit4.jar; then
13105             OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13106         else
13107            if test -e /usr/share/lib/java/junit.jar; then
13108               OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13109            else
13110               OOO_JUNIT_JAR=/usr/share/java/junit.jar
13111            fi
13112         fi
13113     else
13114         OOO_JUNIT_JAR=$with_junit
13115     fi
13116     if test "$_os" = "WINNT"; then
13117         OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13118     fi
13119     printf 'import org.junit.Before;' > conftest.java
13120     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13121         AC_MSG_RESULT([$OOO_JUNIT_JAR])
13122     else
13123         AC_MSG_ERROR(
13124 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13125  specify its pathname via --with-junit=..., or disable it via --without-junit])
13126     fi
13127     rm -f conftest.class conftest.java
13128     if test $OOO_JUNIT_JAR != ""; then
13129         BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13130     fi
13132     AC_MSG_CHECKING([for included Hamcrest])
13133     printf 'import org.hamcrest.BaseDescription;' > conftest.java
13134     if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13135         AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13136     else
13137         AC_MSG_RESULT([Not included])
13138         AC_MSG_CHECKING([for standalone hamcrest jar.])
13139         if test "$with_hamcrest" = "yes"; then
13140             if test -e /usr/share/lib/java/hamcrest.jar; then
13141                 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13142             elif test -e /usr/share/java/hamcrest/core.jar; then
13143                 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13144             else
13145                 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13146             fi
13147         else
13148             HAMCREST_JAR=$with_hamcrest
13149         fi
13150         if test "$_os" = "WINNT"; then
13151             HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13152         fi
13153         if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13154             AC_MSG_RESULT([$HAMCREST_JAR])
13155         else
13156             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),
13157                           specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13158         fi
13159     fi
13160     rm -f conftest.class conftest.java
13162 AC_SUBST(OOO_JUNIT_JAR)
13163 AC_SUBST(HAMCREST_JAR)
13166 AC_SUBST(SCPDEFS)
13169 # check for wget and curl
13171 WGET=
13172 CURL=
13174 if test "$enable_fetch_external" != "no"; then
13176 CURL=`which curl 2>/dev/null`
13178 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13179     # wget new enough?
13180     $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13181     if test $? -eq 0; then
13182         WGET=$i
13183         break
13184     fi
13185 done
13187 if test -z "$WGET" -a -z "$CURL"; then
13188     AC_MSG_ERROR([neither wget nor curl found!])
13193 AC_SUBST(WGET)
13194 AC_SUBST(CURL)
13197 # check for sha256sum
13199 SHA256SUM=
13201 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13202     eval "$i -a 256 --version" > /dev/null 2>&1
13203     ret=$?
13204     if test $ret -eq 0; then
13205         SHA256SUM="$i -a 256"
13206         break
13207     fi
13208 done
13210 if test -z "$SHA256SUM"; then
13211     for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13212         eval "$i --version" > /dev/null 2>&1
13213         ret=$?
13214         if test $ret -eq 0; then
13215             SHA256SUM=$i
13216             break
13217         fi
13218     done
13221 if test -z "$SHA256SUM"; then
13222     AC_MSG_ERROR([no sha256sum found!])
13225 AC_SUBST(SHA256SUM)
13227 dnl ===================================================================
13228 dnl Dealing with l10n options
13229 dnl ===================================================================
13230 AC_MSG_CHECKING([which languages to be built])
13231 # get list of all languages
13232 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13233 # the sed command does the following:
13234 #   + if a line ends with a backslash, append the next line to it
13235 #   + adds " on the beginning of the value (after =)
13236 #   + adds " at the end of the value
13237 #   + removes en-US; we want to put it on the beginning
13238 #   + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13239 [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)]
13240 ALL_LANGS="en-US $completelangiso"
13241 # check the configured localizations
13242 WITH_LANG="$with_lang"
13244 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13245 # (Norwegian is "nb" and "nn".)
13246 if test "$WITH_LANG" = "no"; then
13247     WITH_LANG=
13250 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13251     AC_MSG_RESULT([en-US])
13252 else
13253     AC_MSG_RESULT([$WITH_LANG])
13254     GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13255     if test -z "$MSGFMT"; then
13256         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13257             MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13258         elif test -x "/opt/lo/bin/msgfmt"; then
13259             MSGFMT="/opt/lo/bin/msgfmt"
13260         else
13261             AC_CHECK_PROGS(MSGFMT, [msgfmt])
13262             if test -z "$MSGFMT"; then
13263                 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13264             fi
13265         fi
13266     fi
13267     if test -z "$MSGUNIQ"; then
13268         if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13269             MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13270         elif test -x "/opt/lo/bin/msguniq"; then
13271             MSGUNIQ="/opt/lo/bin/msguniq"
13272         else
13273             AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13274             if test -z "$MSGUNIQ"; then
13275                 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13276             fi
13277         fi
13278     fi
13280 AC_SUBST(MSGFMT)
13281 AC_SUBST(MSGUNIQ)
13282 # check that the list is valid
13283 for lang in $WITH_LANG; do
13284     test "$lang" = "ALL" && continue
13285     # need to check for the exact string, so add space before and after the list of all languages
13286     for vl in $ALL_LANGS; do
13287         if test "$vl" = "$lang"; then
13288            break
13289         fi
13290     done
13291     if test "$vl" != "$lang"; then
13292         # if you're reading this - you prolly quoted your languages remove the quotes ...
13293         AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13294     fi
13295 done
13296 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13297     echo $WITH_LANG | grep -q en-US
13298     test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13300 # list with substituted ALL
13301 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13302 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13303 test "$WITH_LANG" = "en-US" && WITH_LANG=
13304 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13305     test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13306     ALL_LANGS=`echo $ALL_LANGS qtz`
13308 AC_SUBST(ALL_LANGS)
13309 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13310 AC_SUBST(WITH_LANG)
13311 AC_SUBST(WITH_LANG_LIST)
13312 AC_SUBST(GIT_NEEDED_SUBMODULES)
13314 WITH_POOR_HELP_LOCALIZATIONS=
13315 if test -d "$SRC_ROOT/translations/source"; then
13316     for l in `ls -1 $SRC_ROOT/translations/source`; do
13317         if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13318             WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13319         fi
13320     done
13322 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13324 if test -n "$with_locales"; then
13325     WITH_LOCALES="$with_locales"
13327     just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13328     # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13329     # config_host/config_locales.h.in
13330     for locale in $WITH_LOCALES; do
13331         lang=${locale%_*}
13333         AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13335         case $lang in
13336         hi|mr*ne)
13337             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13338             ;;
13339         bg|ru)
13340             AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13341             ;;
13342         esac
13343     done
13344 else
13345     AC_DEFINE(WITH_LOCALE_ALL)
13347 AC_SUBST(WITH_LOCALES)
13349 dnl git submodule update --reference
13350 dnl ===================================================================
13351 if test -n "${GIT_REFERENCE_SRC}"; then
13352     for repo in ${GIT_NEEDED_SUBMODULES}; do
13353         if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13354             AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13355         fi
13356     done
13358 AC_SUBST(GIT_REFERENCE_SRC)
13360 dnl git submodules linked dirs
13361 dnl ===================================================================
13362 if test -n "${GIT_LINK_SRC}"; then
13363     for repo in ${GIT_NEEDED_SUBMODULES}; do
13364         if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13365             AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13366         fi
13367     done
13369 AC_SUBST(GIT_LINK_SRC)
13371 dnl branding
13372 dnl ===================================================================
13373 AC_MSG_CHECKING([for alternative branding images directory])
13374 # initialize mapped arrays
13375 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13376 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg about.svg"
13378 if test -z "$with_branding" -o "$with_branding" = "no"; then
13379     AC_MSG_RESULT([none])
13380     DEFAULT_BRAND_IMAGES="$brand_files"
13381 else
13382     if ! test -d $with_branding ; then
13383         AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13384     else
13385         AC_MSG_RESULT([$with_branding])
13386         CUSTOM_BRAND_DIR="$with_branding"
13387         for lfile in $brand_files
13388         do
13389             if ! test -f $with_branding/$lfile ; then
13390                 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13391                 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13392             else
13393                 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13394             fi
13395         done
13396         check_for_progress="yes"
13397     fi
13399 AC_SUBST([BRAND_INTRO_IMAGES])
13400 AC_SUBST([CUSTOM_BRAND_DIR])
13401 AC_SUBST([CUSTOM_BRAND_IMAGES])
13402 AC_SUBST([DEFAULT_BRAND_IMAGES])
13405 AC_MSG_CHECKING([for 'intro' progress settings])
13406 PROGRESSBARCOLOR=
13407 PROGRESSSIZE=
13408 PROGRESSPOSITION=
13409 PROGRESSFRAMECOLOR=
13410 PROGRESSTEXTCOLOR=
13411 PROGRESSTEXTBASELINE=
13413 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13414     source "$with_branding/progress.conf"
13415     AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13416 else
13417     AC_MSG_RESULT([none])
13420 AC_SUBST(PROGRESSBARCOLOR)
13421 AC_SUBST(PROGRESSSIZE)
13422 AC_SUBST(PROGRESSPOSITION)
13423 AC_SUBST(PROGRESSFRAMECOLOR)
13424 AC_SUBST(PROGRESSTEXTCOLOR)
13425 AC_SUBST(PROGRESSTEXTBASELINE)
13428 dnl ===================================================================
13429 dnl Custom build version
13430 dnl ===================================================================
13431 AC_MSG_CHECKING([for extra build ID])
13432 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13433     EXTRA_BUILDID="$with_extra_buildid"
13435 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13436 if test -n "$EXTRA_BUILDID" ; then
13437     AC_MSG_RESULT([$EXTRA_BUILDID])
13438 else
13439     AC_MSG_RESULT([not set])
13441 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13443 OOO_VENDOR=
13444 AC_MSG_CHECKING([for vendor])
13445 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13446     OOO_VENDOR="$USERNAME"
13448     if test -z "$OOO_VENDOR"; then
13449         OOO_VENDOR="$USER"
13450     fi
13452     if test -z "$OOO_VENDOR"; then
13453         OOO_VENDOR="`id -u -n`"
13454     fi
13456     AC_MSG_RESULT([not set, using $OOO_VENDOR])
13457 else
13458     OOO_VENDOR="$with_vendor"
13459     AC_MSG_RESULT([$OOO_VENDOR])
13461 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13462 AC_SUBST(OOO_VENDOR)
13464 if test "$_os" = "Android" ; then
13465     ANDROID_PACKAGE_NAME=
13466     AC_MSG_CHECKING([for Android package name])
13467     if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13468         if test -n "$ENABLE_DEBUG"; then
13469             # Default to the package name that makes ndk-gdb happy.
13470             ANDROID_PACKAGE_NAME="org.libreoffice"
13471         else
13472             ANDROID_PACKAGE_NAME="org.example.libreoffice"
13473         fi
13475         AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13476     else
13477         ANDROID_PACKAGE_NAME="$with_android_package_name"
13478         AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13479     fi
13480     AC_SUBST(ANDROID_PACKAGE_NAME)
13483 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13484 if test "$with_compat_oowrappers" = "yes"; then
13485     WITH_COMPAT_OOWRAPPERS=TRUE
13486     AC_MSG_RESULT(yes)
13487 else
13488     WITH_COMPAT_OOWRAPPERS=
13489     AC_MSG_RESULT(no)
13491 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13493 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13494 AC_MSG_CHECKING([for install dirname])
13495 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13496     INSTALLDIRNAME="$with_install_dirname"
13498 AC_MSG_RESULT([$INSTALLDIRNAME])
13499 AC_SUBST(INSTALLDIRNAME)
13501 AC_MSG_CHECKING([for prefix])
13502 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13503 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13504 PREFIXDIR="$prefix"
13505 AC_MSG_RESULT([$PREFIXDIR])
13506 AC_SUBST(PREFIXDIR)
13508 LIBDIR=[$(eval echo $(eval echo $libdir))]
13509 AC_SUBST(LIBDIR)
13511 DATADIR=[$(eval echo $(eval echo $datadir))]
13512 AC_SUBST(DATADIR)
13514 MANDIR=[$(eval echo $(eval echo $mandir))]
13515 AC_SUBST(MANDIR)
13517 DOCDIR=[$(eval echo $(eval echo $docdir))]
13518 AC_SUBST(DOCDIR)
13520 BINDIR=[$(eval echo $(eval echo $bindir))]
13521 AC_SUBST(BINDIR)
13523 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
13524 AC_SUBST(INSTALLDIR)
13526 TESTINSTALLDIR="${BUILDDIR}/test-install"
13527 AC_SUBST(TESTINSTALLDIR)
13530 # ===================================================================
13531 # OAuth2 id and secrets
13532 # ===================================================================
13534 AC_MSG_CHECKING([for Google Drive client id and secret])
13535 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
13536     AC_MSG_RESULT([not set])
13537     GDRIVE_CLIENT_ID="\"\""
13538     GDRIVE_CLIENT_SECRET="\"\""
13539 else
13540     AC_MSG_RESULT([set])
13541     GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
13542     GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
13544 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
13545 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
13547 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
13548 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
13549     AC_MSG_RESULT([not set])
13550     ALFRESCO_CLOUD_CLIENT_ID="\"\""
13551     ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
13552 else
13553     AC_MSG_RESULT([set])
13554     ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
13555     ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
13557 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
13558 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
13560 AC_MSG_CHECKING([for OneDrive client id and secret])
13561 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
13562     AC_MSG_RESULT([not set])
13563     ONEDRIVE_CLIENT_ID="\"\""
13564     ONEDRIVE_CLIENT_SECRET="\"\""
13565 else
13566     AC_MSG_RESULT([set])
13567     ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
13568     ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
13570 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
13571 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
13574 dnl ===================================================================
13575 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
13576 dnl --enable-dependency-tracking configure option
13577 dnl ===================================================================
13578 AC_MSG_CHECKING([whether to enable dependency tracking])
13579 if test "$enable_dependency_tracking" = "no"; then
13580     nodep=TRUE
13581     AC_MSG_RESULT([no])
13582 else
13583     AC_MSG_RESULT([yes])
13585 AC_SUBST(nodep)
13587 dnl ===================================================================
13588 dnl Number of CPUs to use during the build
13589 dnl ===================================================================
13590 AC_MSG_CHECKING([for number of processors to use])
13591 # plain --with-parallelism is just the default
13592 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
13593     if test "$with_parallelism" = "no"; then
13594         PARALLELISM=0
13595     else
13596         PARALLELISM=$with_parallelism
13597     fi
13598 else
13599     if test "$enable_icecream" = "yes"; then
13600         PARALLELISM="40"
13601     else
13602         case `uname -s` in
13604         Darwin|FreeBSD|NetBSD|OpenBSD)
13605             PARALLELISM=`sysctl -n hw.ncpu`
13606             ;;
13608         Linux)
13609             PARALLELISM=`getconf _NPROCESSORS_ONLN`
13610         ;;
13611         # what else than above does profit here *and* has /proc?
13612         *)
13613             PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
13614             ;;
13615         esac
13617         # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
13618         # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
13619     fi
13622 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
13623     if test -z "$with_parallelism"; then
13624             AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
13625             add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
13626             PARALLELISM="1"
13627     else
13628         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."
13629     fi
13632 if test $PARALLELISM -eq 0; then
13633     AC_MSG_RESULT([explicit make -j option needed])
13634 else
13635     AC_MSG_RESULT([$PARALLELISM])
13637 AC_SUBST(PARALLELISM)
13639 IWYU_PATH="$with_iwyu"
13640 AC_SUBST(IWYU_PATH)
13641 if test ! -z "$IWYU_PATH"; then
13642     if test ! -f "$IWYU_PATH"; then
13643         AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
13644     fi
13648 # Set up ILIB for MSVC build
13650 ILIB1=
13651 if test "$build_os" = "cygwin"; then
13652     ILIB="."
13653     if test -n "$JAVA_HOME"; then
13654         ILIB="$ILIB;$JAVA_HOME/lib"
13655     fi
13656     ILIB1=-link
13657     ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
13658     ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
13659     ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13660     ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13661     if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
13662         ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13663         ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13664     fi
13665     PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
13666     ucrtlibpath_formatted=$formatted_path
13667     ILIB="$ILIB;$ucrtlibpath_formatted"
13668     ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
13669     if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
13670         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
13671     else
13672         ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
13673     fi
13675     if test "$cross_compiling" != "yes"; then
13676         ILIB_FOR_BUILD="$ILIB"
13677     fi
13679 AC_SUBST(ILIB)
13680 AC_SUBST(ILIB_FOR_BUILD)
13682 # ===================================================================
13683 # Creating bigger shared library to link against
13684 # ===================================================================
13685 AC_MSG_CHECKING([whether to create huge library])
13686 MERGELIBS=
13688 if test $_os = iOS -o $_os = Android; then
13689     # Never any point in mergelibs for these as we build just static
13690     # libraries anyway...
13691     enable_mergelibs=no
13694 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
13695     if test $_os != Linux -a $_os != WINNT; then
13696         add_warning "--enable-mergelibs is not tested for this platform"
13697     fi
13698     MERGELIBS="TRUE"
13699     AC_MSG_RESULT([yes])
13700     AC_DEFINE(ENABLE_MERGELIBS)
13701 else
13702     AC_MSG_RESULT([no])
13704 AC_SUBST([MERGELIBS])
13706 dnl ===================================================================
13707 dnl icerun is a wrapper that stops us spawning tens of processes
13708 dnl locally - for tools that can't be executed on the compile cluster
13709 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
13710 dnl ===================================================================
13711 AC_MSG_CHECKING([whether to use icerun wrapper])
13712 ICECREAM_RUN=
13713 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
13714     ICECREAM_RUN=icerun
13715     AC_MSG_RESULT([yes])
13716 else
13717     AC_MSG_RESULT([no])
13719 AC_SUBST(ICECREAM_RUN)
13721 dnl ===================================================================
13722 dnl Setup the ICECC_VERSION for the build the same way it was set for
13723 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
13724 dnl ===================================================================
13725 x_ICECC_VERSION=[\#]
13726 if test -n "$ICECC_VERSION" ; then
13727     x_ICECC_VERSION=
13729 AC_SUBST(x_ICECC_VERSION)
13730 AC_SUBST(ICECC_VERSION)
13732 dnl ===================================================================
13734 AC_MSG_CHECKING([MPL subset])
13735 MPL_SUBSET=
13737 if test "$enable_mpl_subset" = "yes"; then
13738     warn_report=false
13739     if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
13740         warn_report=true
13741     elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
13742         warn_report=true
13743     fi
13744     if test "$warn_report" = "true"; then
13745         AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
13746     fi
13747     if test "x$enable_postgresql_sdbc" != "xno"; then
13748         AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
13749     fi
13750     if test "$enable_lotuswordpro" = "yes"; then
13751         AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
13752     fi
13753     if test "$WITH_WEBDAV" = "neon"; then
13754         AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
13755     fi
13756     if test -n "$ENABLE_POPPLER"; then
13757         if test "x$SYSTEM_POPPLER" = "x"; then
13758             AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
13759         fi
13760     fi
13761     # cf. m4/libo_check_extension.m4
13762     if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
13763         AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
13764     fi
13765     for theme in $WITH_THEMES; do
13766         case $theme in
13767         breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
13768             AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
13769         *) : ;;
13770         esac
13771     done
13773     ENABLE_OPENGL_TRANSITIONS=
13775     if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
13776         AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
13777     fi
13779     MPL_SUBSET="TRUE"
13780     AC_DEFINE(MPL_HAVE_SUBSET)
13781     AC_MSG_RESULT([only])
13782 else
13783     AC_MSG_RESULT([no restrictions])
13785 AC_SUBST(MPL_SUBSET)
13787 dnl ===================================================================
13789 AC_MSG_CHECKING([formula logger])
13790 ENABLE_FORMULA_LOGGER=
13792 if test "x$enable_formula_logger" = "xyes"; then
13793     AC_MSG_RESULT([yes])
13794     AC_DEFINE(ENABLE_FORMULA_LOGGER)
13795     ENABLE_FORMULA_LOGGER=TRUE
13796 elif test -n "$ENABLE_DBGUTIL" ; then
13797     AC_MSG_RESULT([yes])
13798     AC_DEFINE(ENABLE_FORMULA_LOGGER)
13799     ENABLE_FORMULA_LOGGER=TRUE
13800 else
13801     AC_MSG_RESULT([no])
13804 AC_SUBST(ENABLE_FORMULA_LOGGER)
13806 dnl ===================================================================
13807 dnl Checking for active Antivirus software.
13808 dnl ===================================================================
13810 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
13811     AC_MSG_CHECKING([for active Antivirus software])
13812     ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
13813     if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
13814         if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
13815             AC_MSG_RESULT([found])
13816             EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
13817             echo $EICAR_STRING > $SRC_ROOT/eicar
13818             EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
13819             rm $SRC_ROOT/eicar
13820             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13821                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13822             fi
13823             echo $EICAR_STRING > $BUILDDIR/eicar
13824             EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
13825             rm $BUILDDIR/eicar
13826             if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13827                 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13828             fi
13829             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"
13830         else
13831             AC_MSG_RESULT([not found])
13832         fi
13833     else
13834         AC_MSG_RESULT([n/a])
13835     fi
13838 dnl ===================================================================
13839 dnl Setting up the environment.
13840 dnl ===================================================================
13841 AC_MSG_NOTICE([setting up the build environment variables...])
13843 AC_SUBST(COMPATH)
13845 if test "$build_os" = "cygwin"; then
13846     if test -d "$COMPATH/atlmfc/lib/spectre"; then
13847         ATL_LIB="$COMPATH/atlmfc/lib/spectre"
13848         ATL_INCLUDE="$COMPATH/atlmfc/include"
13849     elif test -d "$COMPATH/atlmfc/lib"; then
13850         ATL_LIB="$COMPATH/atlmfc/lib"
13851         ATL_INCLUDE="$COMPATH/atlmfc/include"
13852     else
13853         ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
13854         ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
13855     fi
13856     ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
13857     ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
13858     ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
13860     # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
13861     PathFormat "/usr/bin/find.exe"
13862     FIND="$formatted_path"
13863     PathFormat "/usr/bin/sort.exe"
13864     SORT="$formatted_path"
13865     PathFormat "/usr/bin/grep.exe"
13866     WIN_GREP="$formatted_path"
13867     PathFormat "/usr/bin/ls.exe"
13868     WIN_LS="$formatted_path"
13869     PathFormat "/usr/bin/touch.exe"
13870     WIN_TOUCH="$formatted_path"
13871 else
13872     FIND=find
13873     SORT=sort
13876 AC_SUBST(ATL_INCLUDE)
13877 AC_SUBST(ATL_LIB)
13878 AC_SUBST(FIND)
13879 AC_SUBST(SORT)
13880 AC_SUBST(WIN_GREP)
13881 AC_SUBST(WIN_LS)
13882 AC_SUBST(WIN_TOUCH)
13884 AC_SUBST(BUILD_TYPE)
13886 AC_SUBST(SOLARINC)
13888 PathFormat "$PERL"
13889 PERL="$formatted_path"
13890 AC_SUBST(PERL)
13892 if test -n "$TMPDIR"; then
13893     TEMP_DIRECTORY="$TMPDIR"
13894 else
13895     TEMP_DIRECTORY="/tmp"
13897 if test "$build_os" = "cygwin"; then
13898     TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
13900 AC_SUBST(TEMP_DIRECTORY)
13902 # setup the PATH for the environment
13903 if test -n "$LO_PATH_FOR_BUILD"; then
13904     LO_PATH="$LO_PATH_FOR_BUILD"
13905     case "$host_os" in
13906     cygwin*|wsl*)
13907         pathmunge "$MSVC_HOST_PATH" "before"
13908         ;;
13909     esac
13910 else
13911     LO_PATH="$PATH"
13913     case "$host_os" in
13915     aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
13916         if test "$ENABLE_JAVA" != ""; then
13917             pathmunge "$JAVA_HOME/bin" "after"
13918         fi
13919         ;;
13921     cygwin*|wsl*)
13922         # Win32 make needs native paths
13923         if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
13924             LO_PATH=`cygpath -p -m "$PATH"`
13925         fi
13926         if test "$WIN_BUILD_ARCH" = "x64"; then
13927             # needed for msi packaging
13928             pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
13929         fi
13930         # .NET 4.6 and higher don't have bin directory
13931         if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
13932             pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
13933         fi
13934         pathmunge "$WINDOWS_SDK_HOME/bin" "before"
13935         pathmunge "$CSC_PATH" "before"
13936         pathmunge "$MIDL_PATH" "before"
13937         pathmunge "$AL_PATH" "before"
13938         pathmunge "$MSVC_MULTI_PATH" "before"
13939         pathmunge "$MSVC_BUILD_PATH" "before"
13940         if test -n "$MSBUILD_PATH" ; then
13941             pathmunge "$MSBUILD_PATH" "before"
13942         fi
13943         pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
13944         if test "$ENABLE_JAVA" != ""; then
13945             if test -d "$JAVA_HOME/jre/bin/client"; then
13946                 pathmunge "$JAVA_HOME/jre/bin/client" "before"
13947             fi
13948             if test -d "$JAVA_HOME/jre/bin/hotspot"; then
13949                 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
13950             fi
13951             pathmunge "$JAVA_HOME/bin" "before"
13952         fi
13953         pathmunge "$MSVC_HOST_PATH" "before"
13954         ;;
13956     solaris*)
13957         pathmunge "/usr/css/bin" "before"
13958         if test "$ENABLE_JAVA" != ""; then
13959             pathmunge "$JAVA_HOME/bin" "after"
13960         fi
13961         ;;
13962     esac
13965 AC_SUBST(LO_PATH)
13967 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
13968 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
13969     x_LO_ELFCHECK_ALLOWLIST=
13970 else
13971     x_LO_ELFCHECK_ALLOWLIST=[\#]
13973 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
13974 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
13976 libo_FUZZ_SUMMARY
13978 # Generate a configuration sha256 we can use for deps
13979 if test -f config_host.mk; then
13980     config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
13982 if test -f config_host_lang.mk; then
13983     config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
13986 CFLAGS=$my_original_CFLAGS
13987 CXXFLAGS=$my_original_CXXFLAGS
13988 CPPFLAGS=$my_original_CPPFLAGS
13990 AC_CONFIG_LINKS([include:include])
13992 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
13993 # BUILD platform configuration] - otherwise breaks cross building
13994 AC_CONFIG_FILES([config_host.mk
13995                  config_host_lang.mk
13996                  Makefile
13997                  bin/bffvalidator.sh
13998                  bin/odfvalidator.sh
13999                  bin/officeotron.sh
14000                  hardened_runtime.xcent
14001                  instsetoo_native/util/openoffice.lst
14002                  sysui/desktop/macosx/Info.plist
14003                  vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in])
14004 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14005 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14006 AC_CONFIG_HEADERS([config_host/config_clang.h])
14007 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14008 AC_CONFIG_HEADERS([config_host/config_eot.h])
14009 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14010 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14011 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14012 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14013 AC_CONFIG_HEADERS([config_host/config_features.h])
14014 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14015 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14016 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14017 AC_CONFIG_HEADERS([config_host/config_folders.h])
14018 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14019 AC_CONFIG_HEADERS([config_host/config_gio.h])
14020 AC_CONFIG_HEADERS([config_host/config_global.h])
14021 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14022 AC_CONFIG_HEADERS([config_host/config_java.h])
14023 AC_CONFIG_HEADERS([config_host/config_langs.h])
14024 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14025 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14026 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14027 AC_CONFIG_HEADERS([config_host/config_locales.h])
14028 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14029 AC_CONFIG_HEADERS([config_host/config_oox.h])
14030 AC_CONFIG_HEADERS([config_host/config_options.h])
14031 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14032 AC_CONFIG_HEADERS([config_host/config_qrcodegen.h])
14033 AC_CONFIG_HEADERS([config_host/config_skia.h])
14034 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14035 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14036 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14037 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14038 AC_CONFIG_HEADERS([config_host/config_version.h])
14039 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14040 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14041 AC_CONFIG_HEADERS([config_host/config_python.h])
14042 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14043 AC_OUTPUT
14045 if test "$CROSS_COMPILING" = TRUE; then
14046     (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14049 # touch the config timestamp file
14050 if test ! -f config_host.mk.stamp; then
14051     echo > config_host.mk.stamp
14052 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14053     echo "Host Configuration unchanged - avoiding scp2 stamp update"
14054 else
14055     echo > config_host.mk.stamp
14058 # touch the config lang timestamp file
14059 if test ! -f config_host_lang.mk.stamp; then
14060     echo > config_host_lang.mk.stamp
14061 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14062     echo "Language Configuration unchanged - avoiding scp2 stamp update"
14063 else
14064     echo > config_host_lang.mk.stamp
14068 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14069         -a "$build_os" = "cygwin"; then
14071 cat << _EOS
14072 ****************************************************************************
14073 WARNING:
14074 Your make version is known to be horribly slow, and hard to debug
14075 problems with. To get a reasonably functional make please do:
14077 to install a pre-compiled binary make for Win32
14079  mkdir -p /opt/lo/bin
14080  cd /opt/lo/bin
14081  wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14082  cp make-4.2.1-msvc.exe make
14083  chmod +x make
14085 to install from source:
14086 place yourself in a working directory of you choice.
14088  git clone git://git.savannah.gnu.org/make.git
14090  [go to Start menu, open "Visual Studio 2019", click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14091  set PATH=%PATH%;C:\Cygwin\bin
14092  [or Cygwin64, if that is what you have]
14093  cd path-to-make-repo-you-cloned-above
14094  build_w32.bat --without-guile
14096 should result in a WinRel/gnumake.exe.
14097 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14099 Then re-run autogen.sh
14101 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14102 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14104 _EOS
14105 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14106     AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14111 cat << _EOF
14112 ****************************************************************************
14114 To build, run:
14115 $GNUMAKE
14117 To view some help, run:
14118 $GNUMAKE help
14120 _EOF
14122 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14123     cat << _EOF
14124 After the build has finished successfully, you can immediately run what you built using the command:
14125 _EOF
14127     if test $_os = Darwin; then
14128         echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14129     else
14130         echo instdir/program/soffice
14131     fi
14132     cat << _EOF
14134 If you want to run the smoketest, run:
14135 $GNUMAKE check
14137 _EOF
14140 if test -f warn; then
14141     cat warn
14142     rm warn
14145 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: