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([Collabora Office],[22.05.19.1],[],[],[https://collaboraoffice.com/])
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
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.])
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
46 # Return value: $filteredlibs
49 if test "$COM" = "MSC"; then
51 if test "x$f" != "x${f#-L}"; then
52 filteredlibs="$filteredlibs -LIBPATH:${f:2}"
53 elif test "x$f" != "x${f#-l}"; then
54 filteredlibs="$filteredlibs ${f:2}.lib"
56 filteredlibs="$filteredlibs $f"
62 # let's start with Fedora's paths for now
63 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
64 # ignore it: on UNIXoids it is searched by default anyway
65 # but if it's given explicitly then it may override other paths
66 # (on macOS it would be an error to use it instead of SDK)
69 filteredlibs="$filteredlibs $f"
78 # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
79 # function is called also on Unix.
81 # Return value: $formatted_path and $formatted_path_unix.
83 # $formatted_path is the argument in Windows format, but using forward slashes instead of
84 # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
85 # or shell metacharacters).
87 # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
88 # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
91 # Errors out if 8.3 names are needed but aren't present for some of the path components.
95 # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
97 # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
99 # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
101 # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
103 # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
105 # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
107 # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
109 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
110 printf "PathFormat $1 ==> "
114 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
115 if test "$build_os" = "wsl"; then
116 formatted_path=$(echo "$formatted_path" | tr -d '\r')
120 # spaces,parentheses,brackets,braces are problematic in pathname
122 case "$formatted_path" in
123 *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
127 if test "$pf_conv_to_dos" = "yes"; then
128 if test "$build_os" = "wsl"; then
129 case "$formatted_path" in
131 formatted_path=$(wslpath -w "$formatted_path")
134 formatted_path=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$formatted_path")
135 elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
136 formatted_path=`cygpath -sm "$formatted_path"`
138 formatted_path=`cygpath -d "$formatted_path"`
140 if test $? -ne 0; then
141 AC_MSG_ERROR([path conversion failed for "$1".])
144 fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
145 fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
146 if test "$fp_count_slash$fp_count_colon" != "00"; then
147 if test "$fp_count_colon" = "0"; then
148 new_formatted_path=`realpath "$formatted_path"`
149 if test $? -ne 0; then
150 AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
152 formatted_path="$new_formatted_path"
155 if test "$build_os" = "wsl"; then
156 if test "$fp_count_colon" != "0"; then
157 formatted_path=$(wslpath "$formatted_path")
159 case "$formatted_path" in
164 formatted_path=$(wslpath -m $formatted_path)
165 case "$formatted_path" in
169 formatted_path="$formatted_path"$final_slash
173 formatted_path=$(wslpath -m "$formatted_path")
176 formatted_path=`cygpath -m "$formatted_path"`
178 if test $? -ne 0; then
179 AC_MSG_ERROR([path conversion failed for "$1".])
182 fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
183 if test "$fp_count_space" != "0"; then
184 AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
187 if test "$build_os" = "wsl"; then
188 # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
189 formatted_path_unix=$(wslpath "$formatted_path")
192 formatted_path_unix="$formatted_path"
198 # There appears to be no simple and portable method to get an absolute and
199 # canonical path, so we try creating the directory if does not exist and
200 # utilizing the shell and pwd.
202 # Args: $1: A possibly relative pathname
203 # Return value: $absolute_path
207 test ! -e "$rel" && mkdir -p "$rel"
208 if test -d "$rel" ; then
209 cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
210 absolute_path="$(pwd)"
213 AC_MSG_ERROR([Failed to resolve absolute path. "$rel" does not exist or is not a directory.])
217 WARNINGS_FILE=config.warn
218 WARNINGS_FILE_FOR_BUILD=config.Build.warn
219 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
223 if test "$have_WARNINGS" = "no"; then
224 echo "*************************************" > "$WARNINGS_FILE"
226 if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
227 dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
228 COLORWARN='*
\e@<:@1;33;40m WARNING
\e@<:@0m:'
230 COLORWARN="* WARNING :"
233 echo "$COLORWARN $@" >> "$WARNINGS_FILE"
236 dnl Some Mac User have the bad habit of letting a lot of crap
237 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
238 dnl that confuse the build.
239 dnl For the ones that use LODE, let's be nice and protect them
244 mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
245 dnl a common but nevertheless necessary thing that may be in a fancy
246 dnl path location is git, so make sure we have it
247 mac_git_path=`which git 2>/dev/null`
248 if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
249 mac_path="$mac_path:`dirname $mac_git_path`"
251 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
252 dnl path location is gpg, so make sure we find it
253 mac_gpg_path=`which gpg 2>/dev/null`
254 if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
255 mac_path="$mac_path:`dirname $mac_gpg_path`"
263 echo "********************************************************************"
265 echo "* Running ${PACKAGE_NAME} build configuration."
267 echo "********************************************************************"
270 dnl ===================================================================
271 dnl checks build and host OSes
272 dnl do this before argument processing to allow for platform dependent defaults
273 dnl ===================================================================
275 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
276 # Linux on WSL) trust that.
277 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
278 ac_cv_host="x86_64-pc-wsl"
279 ac_cv_host_cpu="x86_64"
281 ac_cv_build="$ac_cv_host"
282 ac_cv_build_cpu="$ac_cv_host_cpu"
283 ac_cv_build_os="$ac_cv_host_os"
285 # Emulation of Cygwin's cygpath command for WSL.
288 if test -n "$UNITTEST_WSL_CYGPATH"; then
289 echo -n cygpath "$@" "==> "
292 # Cygwin's real cygpath has a plethora of options but we use only a few here.
295 local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
298 while getopts dmuwlsp opt; do
301 AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
311 if test $# -ne 1; then
312 AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
319 if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
320 # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
322 if test -n "$opt_u"; then
323 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
328 # A Windows file in WSL format
329 input=$(wslpath -w "$input")
331 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
332 # Already in Windows format
335 input=$(wslpath -w "$input")
338 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
341 if test -n "$opt_d" -o -n "$opt_s"; then
342 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input")
344 if test -n "$opt_m"; then
345 input="${input//\\//}"
352 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
359 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
365 if test -n "$UNITTEST_WSL_CYGPATH"; then
368 # Nothing special with these file names, just arbitrary ones picked to test with
369 cygpath -d /usr/lib64/ld-linux-x86-64.so.2
370 cygpath -w /usr/lib64/ld-linux-x86-64.so.2
371 cygpath -m /usr/lib64/ld-linux-x86-64.so.2
372 cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
373 # At least on my machine for instance this file does have an 8.3 name
374 cygpath -d /mnt/c/windows/WindowsUpdate.log
375 # But for instance this one doesn't
376 cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
377 cygpath -ws /mnt/c/windows/WindowsUpdate.log
378 cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
379 cygpath -ms /mnt/c/windows/WindowsUpdate.log
381 cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
382 cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
391 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
395 # Use of PathFormat must be after AC_CANONICAL_BUILD above
397 printf "$formatted_path , $formatted_path_unix\n"
400 printf "$formatted_path , $formatted_path_unix\n"
402 PathFormat "$PROGRAMFILESX86"
403 printf "$formatted_path , $formatted_path_unix\n"
408 AC_MSG_CHECKING([for product name])
409 PRODUCTNAME="AC_PACKAGE_NAME"
410 if test -n "$with_product_name" -a "$with_product_name" != no; then
411 PRODUCTNAME="$with_product_name"
413 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
414 PRODUCTNAME="${PRODUCTNAME}Dev"
415 PRODUCTNAME=AC_PACKAGE_NAME
417 AC_MSG_RESULT([$PRODUCTNAME])
418 AC_SUBST(PRODUCTNAME)
419 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
420 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
422 dnl ===================================================================
423 dnl Our version is defined by the AC_INIT() at the top of this script.
424 dnl ===================================================================
426 AC_MSG_CHECKING([for package version])
427 if test -n "$with_package_version" -a "$with_package_version" != no; then
428 PACKAGE_VERSION="$with_package_version"
430 AC_MSG_RESULT([$PACKAGE_VERSION])
432 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
434 LIBO_VERSION_MAJOR=$1
435 LIBO_VERSION_MINOR=$2
436 LIBO_VERSION_MICRO=$3
437 LIBO_VERSION_PATCH=$4
439 LIBO_VERSION_SUFFIX=$5
441 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
442 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
443 # they get undoubled before actually passed to sed.
444 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
445 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
446 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
447 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
449 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
450 # three non-negative integers. Please find more information about CFBundleVersion at
451 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
453 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
454 # of at most three non-negative integers. Please find more information about
455 # CFBundleShortVersionString at
456 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
458 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
459 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
461 AC_SUBST(LIBO_VERSION_MAJOR)
462 AC_SUBST(LIBO_VERSION_MINOR)
463 AC_SUBST(LIBO_VERSION_MICRO)
464 AC_SUBST(LIBO_VERSION_PATCH)
465 AC_SUBST(LIBO_VERSION_SUFFIX)
466 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
467 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
468 AC_SUBST(MACOSX_BUNDLE_VERSION)
470 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
471 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
472 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
473 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
475 LIBO_THIS_YEAR=`date +%Y`
476 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
478 AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$ac_configure_args"]],[Options passed to configure script])
480 dnl ===================================================================
482 dnl ===================================================================
483 AC_MSG_CHECKING([for product version])
484 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
485 AC_MSG_RESULT([$PRODUCTVERSION])
486 AC_SUBST(PRODUCTVERSION)
489 # AC_PROG_EGREP doesn't set GREP on all systems as well
490 AC_PATH_PROG(GREP, grep)
498 dnl ======================================
499 dnl Required GObject introspection version
500 dnl ======================================
501 INTROSPECTION_REQUIRED_VERSION=1.32.0
503 dnl ===================================================================
504 dnl Search all the common names for GNU Make
505 dnl ===================================================================
506 AC_MSG_CHECKING([for GNU Make])
508 # try to use our own make if it is available and GNUMAKE was not already defined
509 if test -z "$GNUMAKE"; then
510 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
511 GNUMAKE="$LODE_HOME/opt/bin/make"
512 elif test -x "/opt/lo/bin/make"; then
513 GNUMAKE="/opt/lo/bin/make"
518 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
519 if test -n "$a"; then
520 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null
521 if test $? -eq 0; then
522 if test "$build_os" = "cygwin"; then
523 if test -n "$($a -v | grep 'Built for Windows')" ; then
524 GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
525 GNUMAKE_WIN_NATIVE="TRUE"
536 AC_MSG_RESULT($GNUMAKE)
537 if test -z "$GNUMAKE"; then
538 AC_MSG_ERROR([not found. install GNU Make.])
540 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
541 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
545 win_short_path_for_make()
547 local short_path="$1"
548 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
549 cygpath -sm "$short_path"
551 cygpath -u "$(cygpath -d "$short_path")"
556 if test "$build_os" = "cygwin"; then
557 PathFormat "$SRC_ROOT"
558 SRC_ROOT="$formatted_path"
559 PathFormat "$BUILDDIR"
560 BUILDDIR="$formatted_path"
562 AC_MSG_CHECKING(for explicit COMSPEC)
563 if test -z "$COMSPEC"; then
564 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
566 AC_MSG_RESULT([found: $COMSPEC])
573 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
574 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
575 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
577 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
578 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
581 # need sed in os checks...
582 AC_PATH_PROGS(SED, sed)
583 if test -z "$SED"; then
584 AC_MSG_ERROR([install sed to run this script])
587 # Set the ENABLE_LTO variable
588 # ===================================================================
589 AC_MSG_CHECKING([whether to use link-time optimization])
590 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
599 AC_ARG_ENABLE(fuzz-options,
600 AS_HELP_STRING([--enable-fuzz-options],
601 [Randomly enable or disable each of those configurable options
602 that are supposed to be freely selectable without interdependencies,
603 or where bad interaction from interdependencies is automatically avoided.])
606 dnl ===================================================================
607 dnl When building for Android, --with-android-ndk,
608 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
610 dnl ===================================================================
612 AC_ARG_WITH(android-ndk,
613 AS_HELP_STRING([--with-android-ndk],
614 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
617 AC_ARG_WITH(android-ndk-toolchain-version,
618 AS_HELP_STRING([--with-android-ndk-toolchain-version],
619 [Specify which toolchain version to use, of those present in the
620 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
621 with_android_ndk_toolchain_version=clang5.0)
623 AC_ARG_WITH(android-sdk,
624 AS_HELP_STRING([--with-android-sdk],
625 [Specify location of the Android SDK. Mandatory when building for Android.]),
628 AC_ARG_WITH(android-api-level,
629 AS_HELP_STRING([--with-android-api-level],
630 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
634 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
635 with_android_ndk="$SRC_ROOT/external/android-ndk"
637 if test -n "$with_android_ndk"; then
638 eval ANDROID_NDK_HOME=$with_android_ndk
640 # Set up a lot of pre-canned defaults
642 if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then
643 if test ! -f $ANDROID_NDK_HOME/source.properties; then
644 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.])
646 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
648 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
650 if test -z "$ANDROID_NDK_VERSION"; then
651 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
653 case $ANDROID_NDK_VERSION in
655 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
657 11.1.*|12.1.*|13.1.*|14.1.*)
658 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
660 16.*|17.*|18.*|19.*|20.*)
663 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
664 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
669 if test -n "$with_android_api_level" ; then
670 ANDROID_API_LEVEL="$with_android_api_level"
673 android_cpu=$host_cpu
674 if test $host_cpu = arm; then
675 android_platform_prefix=arm-linux-androideabi
676 android_gnu_prefix=$android_platform_prefix
677 LLVM_TRIPLE=armv7a-linux-androideabi
678 ANDROID_APP_ABI=armeabi-v7a
679 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
680 elif test $host_cpu = aarch64; then
681 android_platform_prefix=aarch64-linux-android
682 android_gnu_prefix=$android_platform_prefix
683 LLVM_TRIPLE=$android_platform_prefix
684 # minimum android version that supports aarch64
685 if test "$ANDROID_API_LEVEL" -lt "21" ; then
688 ANDROID_APP_ABI=arm64-v8a
689 elif test $host_cpu = x86_64; then
690 android_platform_prefix=x86_64-linux-android
691 android_gnu_prefix=$android_platform_prefix
692 LLVM_TRIPLE=$android_platform_prefix
693 # minimum android version that supports x86_64
695 ANDROID_APP_ABI=x86_64
697 # host_cpu is something like "i386" or "i686" I guess, NDK uses
698 # "x86" in some contexts
700 android_platform_prefix=$android_cpu
701 android_gnu_prefix=i686-linux-android
702 LLVM_TRIPLE=$android_gnu_prefix
706 case "$with_android_ndk_toolchain_version" in
708 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
711 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
714 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
716 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
717 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
718 # manage to link the (app-specific) single huge .so that is built for the app in
719 # android/source/ if there is debug information in a significant part of the object files.
720 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
721 # all objects have been built with debug information.)
724 android_HOST_TAG=linux-x86_64
727 android_HOST_TAG=darwin-x86_64
730 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
731 # ndk would also support windows and windows-x86_64
734 android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG
735 ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
736 dnl TODO: NSS build uses it...
737 ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
738 AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
740 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
741 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
742 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
743 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
744 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
746 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
747 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
748 if test "$ENABLE_LTO" = TRUE; then
749 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
750 # $CC and $CXX when building external libraries
751 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
754 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
756 if test -z "$CC"; then
757 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
760 if test -z "$CXX"; then
761 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
765 AC_SUBST(ANDROID_NDK_HOME)
766 AC_SUBST(ANDROID_APP_ABI)
767 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
769 dnl ===================================================================
770 dnl --with-android-sdk
771 dnl ===================================================================
773 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
774 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
776 if test -n "$with_android_sdk"; then
777 eval ANDROID_SDK_HOME=$with_android_sdk
778 PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
780 AC_SUBST(ANDROID_SDK_HOME)
782 AC_ARG_ENABLE([android-lok],
783 AS_HELP_STRING([--enable-android-lok],
784 [The Android app from the android/ subdir needs several tweaks all
785 over the place that break the LOK when used in the Online-based
786 Android app. This switch indicates that the intent of this build is
787 actually the Online-based, non-modified LOK.])
790 if test -n "$ANDROID_NDK_HOME" ; then
791 if test "$enable_android_lok" = yes; then
792 ENABLE_ANDROID_LOK=TRUE
793 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
794 AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
796 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
799 AC_SUBST([ENABLE_ANDROID_LOK])
801 libo_FUZZ_ARG_ENABLE([android-editing],
802 AS_HELP_STRING([--enable-android-editing],
803 [Enable the experimental editing feature on Android.])
805 ENABLE_ANDROID_EDITING=
806 if test "$enable_android_editing" = yes; then
807 ENABLE_ANDROID_EDITING=TRUE
809 AC_SUBST([ENABLE_ANDROID_EDITING])
811 disable_database_connectivity_dependencies()
814 enable_firebird_sdbc=no
815 enable_mariadb_sdbc=no
816 enable_postgresql_sdbc=no
817 enable_report_builder=no
820 # ===================================================================
822 # Start initial platform setup
824 # The using_* variables reflect platform support and should not be
825 # changed after the "End initial platform setup" block.
826 # This is also true for most test_* variables.
827 # ===================================================================
836 # There is currently just iOS not using salplug, so this explicitly enables it.
837 # must: using_freetype_fontconfig
838 # may: using_headless_plugin defaults to $using_freetype_fontconfig
842 # Default values, as such probably valid just for Linux, set
843 # differently below just for Mac OSX, but at least better than
844 # hardcoding these as we used to do. Much of this is duplicated also
845 # in solenv for old build system and for gbuild, ideally we should
846 # perhaps define stuff like this only here in configure.ac?
848 LINKFLAGSSHL="-shared"
852 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
855 INSTROOTCONTENTSUFFIX=
858 HOST_PLATFORM="$host"
860 host_cpu_for_clang="$host_cpu"
865 using_freetype_fontconfig=yes
870 dnl ===========================================================
871 dnl Check whether we're using Solaris 10 - SPARC or Intel.
872 dnl ===========================================================
873 AC_MSG_CHECKING([the Solaris operating system release])
874 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
875 if test "$_os_release" -lt "10"; then
876 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
878 AC_MSG_RESULT([ok ($_os_release)])
881 dnl Check whether we're using a SPARC or i386 processor
882 AC_MSG_CHECKING([the processor type])
883 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
884 AC_MSG_RESULT([ok ($host_cpu)])
886 AC_MSG_ERROR([only SPARC and i386 processors are supported])
890 linux-gnu*|k*bsd*-gnu*|linux-musl*)
891 using_freetype_fontconfig=yes
896 if test "$enable_fuzzers" = yes; then
897 test_system_freetype=no
903 using_freetype_fontconfig=yes
909 # When building on Windows normally with MSVC under Cygwin,
910 # configure thinks that the host platform (the platform the
911 # built code will run on) is Cygwin, even if it obviously is
912 # Windows, which in Autoconf terminology is called
913 # "mingw32". (Which is misleading as MinGW is the name of the
914 # tool-chain, not an operating system.)
916 # Somewhat confusing, yes. But this configure script doesn't
917 # look at $host etc that much, it mostly uses its own $_os
918 # variable, set here in this case statement.
920 using_freetype_fontconfig=no
929 if test "$host_cpu" = "aarch64"; then
933 enable_firebird_sdbc=no
937 darwin*|macos*) # macOS
938 using_freetype_fontconfig=no
941 if test -n "$LODE_HOME" ; then
943 AC_MSG_NOTICE([sanitized the PATH to $PATH])
946 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
947 INSTROOTCONTENTSUFFIX=/Contents
948 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
949 # See comment above the case "$host_os"
950 LINKFLAGSSHL="-dynamiclib -single_module"
957 # -undefined error is the default
963 # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
964 # the "macos" part so be sure to use aarch64-apple-darwin for now.
965 HOST_PLATFORM=aarch64-apple-darwin
969 # Apple's Clang uses "arm64"
970 host_cpu_for_clang=arm64
975 using_freetype_fontconfig=no
982 if test -n "$LODE_HOME" ; then
984 AC_MSG_NOTICE([sanitized the PATH to $PATH])
988 enable_mpl_subset=yes
989 enable_lotuswordpro=no
990 disable_database_connectivity_dependencies
993 enable_extension_integration=no
996 if test "$enable_ios_simulator" = "yes"; then
997 host=x86_64-apple-darwin
999 # See comment above the case "$host_os"
1000 LINKFLAGSSHL="-dynamiclib -single_module"
1007 # -undefined error is the default
1008 LINKFLAGSNOUNDEFS=""
1010 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1011 # part, so use aarch64-apple-darwin for now.
1012 HOST_PLATFORM=aarch64-apple-darwin
1014 # Apple's Clang uses "arm64"
1015 host_cpu_for_clang=arm64
1019 using_freetype_fontconfig=yes
1022 AC_MSG_CHECKING([the FreeBSD operating system release])
1023 if test -n "$with_os_version"; then
1024 OSVERSION="$with_os_version"
1026 OSVERSION=`/sbin/sysctl -n kern.osreldate`
1028 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1029 AC_MSG_CHECKING([which thread library to use])
1030 if test "$OSVERSION" -lt "500016"; then
1031 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1032 PTHREAD_LIBS="-pthread"
1033 elif test "$OSVERSION" -lt "502102"; then
1034 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1035 PTHREAD_LIBS="-lc_r"
1038 PTHREAD_LIBS="-pthread"
1040 AC_MSG_RESULT([$PTHREAD_LIBS])
1045 using_freetype_fontconfig=yes
1049 PTHREAD_LIBS="-pthread -lpthread"
1054 using_freetype_fontconfig=yes
1057 test_gstreamer_1_0=no
1058 PTHREAD_LIBS=-pthread
1063 using_freetype_fontconfig=yes
1065 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1066 PTHREAD_LIBS="-pthread"
1071 using_freetype_fontconfig=yes
1074 PTHREAD_LIBS="-pthread"
1079 using_freetype_fontconfig=yes
1080 using_headless_plugin=no
1084 test_system_freetype=no
1086 disable_database_connectivity_dependencies
1087 enable_lotuswordpro=no
1088 enable_mpl_subset=yes
1089 enable_cairo_canvas=no
1097 AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
1101 using_freetype_fontconfig=yes
1109 enable_postgresql_sdbc=no
1110 enable_firebird_sdbc=no
1115 using_freetype_fontconfig=yes
1118 enable_compiler_plugins=no
1121 enable_database_connectivity=no
1130 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1134 AC_SUBST(HOST_PLATFORM)
1136 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1137 AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1140 # Set defaults, if not set by platform
1141 test "${test_cups+set}" = set || test_cups="$using_x11"
1142 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1143 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1144 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1145 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1146 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1147 # don't handle test_qt5, so it can disable test_kf5 later
1148 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1149 test "${test_randr+set}" = set || test_randr="$using_x11"
1150 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1151 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1153 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1154 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1155 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1157 # convenience / platform overriding "fixes"
1159 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1160 test "$test_kf5" = yes && test_qt5=yes
1161 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1162 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1163 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1165 # Keep in sync with the above $using_x11 depending test default list
1170 test_gstreamer_1_0=no
1181 test "$using_x11" = yes && USING_X11=TRUE
1183 if test "$using_freetype_fontconfig" = yes; then
1184 if test "$using_headless_plugin" = yes; then
1185 AC_DEFINE(ENABLE_HEADLESS)
1186 ENABLE_HEADLESS=TRUE
1193 AC_SUBST(ENABLE_HEADLESS)
1195 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1196 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1197 AC_MSG_NOTICE([VCL platform uses vclplug: $using_vclplug])
1198 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1200 # ===================================================================
1202 # End initial platform setup
1204 # ===================================================================
1206 if test "$_os" = "Android" ; then
1207 # Verify that the NDK and SDK options are proper
1208 if test -z "$with_android_ndk"; then
1209 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1210 elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1211 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1214 if test -z "$ANDROID_SDK_HOME"; then
1215 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1216 elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1217 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1220 BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1221 if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1222 AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1223 $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1224 or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1225 add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1226 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1227 add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1229 if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1230 AC_MSG_WARN([android support repository not found - install with
1231 $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1232 to allow the build to download the specified version of the android support libraries])
1233 add_warning "android support repository not found - install with"
1234 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1235 add_warning "to allow the build to download the specified version of the android support libraries"
1239 if test "$_os" = "AIX"; then
1240 AC_PATH_PROG(GAWK, gawk)
1241 if test -z "$GAWK"; then
1242 AC_MSG_ERROR([gawk not found in \$PATH])
1246 AC_SUBST(SDKDIRNAME)
1248 AC_SUBST(PTHREAD_CFLAGS)
1249 AC_SUBST(PTHREAD_LIBS)
1251 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1252 # By default use the ones specified by our build system,
1253 # but explicit override is possible.
1254 AC_MSG_CHECKING(for explicit AFLAGS)
1255 if test -n "$AFLAGS"; then
1256 AC_MSG_RESULT([$AFLAGS])
1262 AC_MSG_CHECKING(for explicit CFLAGS)
1263 if test -n "$CFLAGS"; then
1264 AC_MSG_RESULT([$CFLAGS])
1270 AC_MSG_CHECKING(for explicit CXXFLAGS)
1271 if test -n "$CXXFLAGS"; then
1272 AC_MSG_RESULT([$CXXFLAGS])
1278 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1279 if test -n "$OBJCFLAGS"; then
1280 AC_MSG_RESULT([$OBJCFLAGS])
1286 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1287 if test -n "$OBJCXXFLAGS"; then
1288 AC_MSG_RESULT([$OBJCXXFLAGS])
1294 AC_MSG_CHECKING(for explicit LDFLAGS)
1295 if test -n "$LDFLAGS"; then
1296 AC_MSG_RESULT([$LDFLAGS])
1306 AC_SUBST(OBJCXXFLAGS)
1310 AC_SUBST(x_CXXFLAGS)
1311 AC_SUBST(x_OBJCFLAGS)
1312 AC_SUBST(x_OBJCXXFLAGS)
1315 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1316 my_original_CFLAGS=$CFLAGS
1317 my_original_CXXFLAGS=$CXXFLAGS
1318 my_original_CPPFLAGS=$CPPFLAGS
1320 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1321 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1322 dnl AC_PROG_CC internally.
1323 if test "$_os" != "WINNT"; then
1324 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1328 if test -z "$CC_BASE"; then
1329 CC_BASE=`first_arg_basename "$CC"`
1333 if test "$_os" != "WINNT"; then
1334 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1338 AC_SUBST(ENDIANNESS)
1340 if test $_os != "WINNT"; then
1342 AC_SEARCH_LIBS([dlsym], [dl],
1343 [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1344 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1347 AC_SUBST(DLOPEN_LIBS)
1349 # Check for a (GNU) backtrace implementation
1350 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1351 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1352 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1354 AC_SEARCH_LIBS([backtrace], [libexecinfo],
1355 [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1356 [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1359 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1360 AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1363 dnl ===================================================================
1364 dnl Sanity checks for Emscripten SDK setup
1365 dnl ===================================================================
1367 if test "$_os" = "Emscripten"; then
1369 if ! which emconfigure >/dev/null 2>&1; then
1370 AC_MSG_WARN([emconfigure must be in your \$PATH])
1373 if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1374 AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1377 if test $EMSCRIPTEN_ERROR -ne 0; then
1378 AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1382 ###############################################################################
1383 # Extensions switches --enable/--disable
1384 ###############################################################################
1385 # By default these should be enabled unless having extra dependencies.
1386 # If there is extra dependency over configure options then the enable should
1387 # be automagic based on whether the requiring feature is enabled or not.
1388 # All this options change anything only with --enable-extension-integration.
1390 # The name of this option and its help string makes it sound as if
1391 # extensions are built anyway, just not integrated in the installer,
1392 # if you use --disable-extension-integration. Is that really the
1395 AC_ARG_ENABLE(ios-simulator,
1396 AS_HELP_STRING([--enable-ios-simulator],
1397 [build for iOS simulator])
1400 libo_FUZZ_ARG_ENABLE(extension-integration,
1401 AS_HELP_STRING([--disable-extension-integration],
1402 [Disable integration of the built extensions in the installer of the
1403 product. Use this switch to disable the integration.])
1406 AC_ARG_ENABLE(avmedia,
1407 AS_HELP_STRING([--disable-avmedia],
1408 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1411 AC_ARG_ENABLE(database-connectivity,
1412 AS_HELP_STRING([--disable-database-connectivity],
1413 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1416 # This doesn't mean not building (or "integrating") extensions
1417 # (although it probably should; i.e. it should imply
1418 # --disable-extension-integration I guess), it means not supporting
1419 # any extension mechanism at all
1420 libo_FUZZ_ARG_ENABLE(extensions,
1421 AS_HELP_STRING([--disable-extensions],
1422 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1425 AC_ARG_ENABLE(scripting,
1426 AS_HELP_STRING([--disable-scripting],
1427 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1430 # This is mainly for Android and iOS, but could potentially be used in some
1431 # special case otherwise, too, so factored out as a separate setting
1433 AC_ARG_ENABLE(dynamic-loading,
1434 AS_HELP_STRING([--disable-dynamic-loading],
1435 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1438 libo_FUZZ_ARG_ENABLE(report-builder,
1439 AS_HELP_STRING([--disable-report-builder],
1440 [Disable the Report Builder.])
1443 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1444 AS_HELP_STRING([--enable-ext-wiki-publisher],
1445 [Enable the Wiki Publisher extension.])
1448 libo_FUZZ_ARG_ENABLE(lpsolve,
1449 AS_HELP_STRING([--disable-lpsolve],
1450 [Disable compilation of the lp solve solver ])
1452 libo_FUZZ_ARG_ENABLE(coinmp,
1453 AS_HELP_STRING([--disable-coinmp],
1454 [Disable compilation of the CoinMP solver ])
1457 libo_FUZZ_ARG_ENABLE(pdfimport,
1458 AS_HELP_STRING([--disable-pdfimport],
1459 [Disable building the PDF import feature.])
1462 libo_FUZZ_ARG_ENABLE(pdfium,
1463 AS_HELP_STRING([--disable-pdfium],
1464 [Disable building PDFium. Results in unsecure PDF signature verification.])
1467 libo_FUZZ_ARG_ENABLE(skia,
1468 AS_HELP_STRING([--disable-skia],
1469 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1472 ###############################################################################
1474 dnl ---------- *** ----------
1476 libo_FUZZ_ARG_ENABLE(mergelibs,
1477 AS_HELP_STRING([--enable-mergelibs],
1478 [Merge several of the smaller libraries into one big, "merged", one.])
1481 libo_FUZZ_ARG_ENABLE(breakpad,
1482 AS_HELP_STRING([--enable-breakpad],
1483 [Enables breakpad for crash reporting.])
1486 libo_FUZZ_ARG_ENABLE(crashdump,
1487 AS_HELP_STRING([--disable-crashdump],
1488 [Disable dump.ini and dump-file, when --enable-breakpad])
1491 AC_ARG_ENABLE(fetch-external,
1492 AS_HELP_STRING([--disable-fetch-external],
1493 [Disables fetching external tarballs from web sources.])
1496 AC_ARG_ENABLE(fuzzers,
1497 AS_HELP_STRING([--enable-fuzzers],
1498 [Enables building libfuzzer targets for fuzz testing.])
1501 libo_FUZZ_ARG_ENABLE(pch,
1502 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1503 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1504 Using 'system' will include only external headers, 'base' will add also headers
1505 from base modules, 'normal' will also add all headers except from the module built,
1506 'full' will use all suitable headers even from a module itself.])
1509 libo_FUZZ_ARG_ENABLE(epm,
1510 AS_HELP_STRING([--enable-epm],
1511 [LibreOffice includes self-packaging code, that requires epm, however epm is
1512 useless for large scale package building.])
1515 libo_FUZZ_ARG_ENABLE(odk,
1516 AS_HELP_STRING([--enable-odk],
1517 [Enable building the Office Development Kit, the part that extensions need to build against])
1520 AC_ARG_ENABLE(mpl-subset,
1521 AS_HELP_STRING([--enable-mpl-subset],
1522 [Don't compile any pieces which are not MPL or more liberally licensed])
1525 libo_FUZZ_ARG_ENABLE(evolution2,
1526 AS_HELP_STRING([--enable-evolution2],
1527 [Allows the built-in evolution 2 addressbook connectivity build to be
1531 AC_ARG_ENABLE(avahi,
1532 AS_HELP_STRING([--enable-avahi],
1533 [Determines whether to use Avahi to advertise Impress to remote controls.])
1536 libo_FUZZ_ARG_ENABLE(werror,
1537 AS_HELP_STRING([--enable-werror],
1538 [Turn warnings to errors. (Has no effect in modules where the treating
1539 of warnings as errors is disabled explicitly.)]),
1542 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1543 AS_HELP_STRING([--enable-assert-always-abort],
1544 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1547 libo_FUZZ_ARG_ENABLE(dbgutil,
1548 AS_HELP_STRING([--enable-dbgutil],
1549 [Provide debugging support from --enable-debug and include additional debugging
1550 utilities such as object counting or more expensive checks.
1551 This is the recommended option for developers.
1552 Note that this makes the build ABI incompatible, it is not possible to mix object
1553 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1555 libo_FUZZ_ARG_ENABLE(debug,
1556 AS_HELP_STRING([--enable-debug],
1557 [Include debugging information, disable compiler optimization and inlining plus
1558 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1560 libo_FUZZ_ARG_ENABLE(split-debug,
1561 AS_HELP_STRING([--disable-split-debug],
1562 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1563 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1565 libo_FUZZ_ARG_ENABLE(gdb-index,
1566 AS_HELP_STRING([--disable-gdb-index],
1567 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1568 The feature requires the gold or lld linker.]))
1570 libo_FUZZ_ARG_ENABLE(sal-log,
1571 AS_HELP_STRING([--enable-sal-log],
1572 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1574 libo_FUZZ_ARG_ENABLE(symbols,
1575 AS_HELP_STRING([--enable-symbols],
1576 [Generate debug information.
1577 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1578 otherwise. It is possible to explicitly specify gbuild build targets
1579 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1580 everything in the directory; there is no ordering, more specific overrides
1581 more general, and disabling takes precedence).
1582 Example: --enable-symbols="all -sw/ -Library_sc".]))
1584 libo_FUZZ_ARG_ENABLE(optimized,
1585 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1586 [Whether to compile with optimization flags.
1587 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1588 otherwise. Using 'debug' will try to use only optimizations that should
1589 not interfere with debugging. For Emscripten we default to optimized (-O1)
1590 debug build, as otherwise binaries become too large.]))
1592 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1593 AS_HELP_STRING([--disable-runtime-optimizations],
1594 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1595 JVM JIT) that are known to interact badly with certain dynamic analysis
1596 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1597 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1598 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1600 AC_ARG_WITH(valgrind,
1601 AS_HELP_STRING([--with-valgrind],
1602 [Make availability of Valgrind headers a hard requirement.]))
1604 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1605 AS_HELP_STRING([--enable-compiler-plugins],
1606 [Enable compiler plugins that will perform additional checks during
1607 building. Enabled automatically by --enable-dbgutil.
1608 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1609 COMPILER_PLUGINS_DEBUG=
1610 if test "$enable_compiler_plugins" = debug; then
1611 enable_compiler_plugins=yes
1612 COMPILER_PLUGINS_DEBUG=TRUE
1615 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1616 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1617 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1618 relevant in the --disable-compiler-plugins case.]))
1620 libo_FUZZ_ARG_ENABLE(ooenv,
1621 AS_HELP_STRING([--enable-ooenv],
1622 [Enable ooenv for the instdir installation.]))
1625 AS_HELP_STRING([--enable-lto],
1626 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1627 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1630 AC_ARG_ENABLE(python,
1631 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1632 [Enables or disables Python support at run-time.
1633 Also specifies what Python to use at build-time.
1634 'fully-internal' even forces the internal version for uses of Python
1636 On macOS the only choices are
1637 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1640 libo_FUZZ_ARG_ENABLE(gtk3,
1641 AS_HELP_STRING([--disable-gtk3],
1642 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1643 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1646 AS_HELP_STRING([--enable-gtk4],
1647 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1649 AC_ARG_ENABLE(introspection,
1650 AS_HELP_STRING([--enable-introspection],
1651 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1652 Linux distributions.)]))
1654 AC_ARG_ENABLE(split-app-modules,
1655 AS_HELP_STRING([--enable-split-app-modules],
1656 [Split file lists for app modules, e.g. base, calc.
1657 Has effect only with make distro-pack-install]),
1660 AC_ARG_ENABLE(split-opt-features,
1661 AS_HELP_STRING([--enable-split-opt-features],
1662 [Split file lists for some optional features, e.g. pyuno, testtool.
1663 Has effect only with make distro-pack-install]),
1666 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1667 AS_HELP_STRING([--disable-cairo-canvas],
1668 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1671 libo_FUZZ_ARG_ENABLE(dbus,
1672 AS_HELP_STRING([--disable-dbus],
1673 [Determines whether to enable features that depend on dbus.
1674 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1675 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1677 libo_FUZZ_ARG_ENABLE(sdremote,
1678 AS_HELP_STRING([--disable-sdremote],
1679 [Determines whether to enable Impress remote control (i.e. the server component).]),
1680 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1682 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1683 AS_HELP_STRING([--disable-sdremote-bluetooth],
1684 [Determines whether to build sdremote with bluetooth support.
1685 Requires dbus on Linux.]))
1687 libo_FUZZ_ARG_ENABLE(gio,
1688 AS_HELP_STRING([--disable-gio],
1689 [Determines whether to use the GIO support.]),
1690 ,test "${enable_gio+set}" = set || enable_gio=yes)
1693 AS_HELP_STRING([--enable-qt5],
1694 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1699 AS_HELP_STRING([--enable-qt6],
1700 [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1705 AS_HELP_STRING([--enable-kf5],
1706 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1707 KF5 are available.]),
1710 AC_ARG_ENABLE(gtk3_kde5,
1711 AS_HELP_STRING([--enable-gtk3-kde5],
1712 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1713 platforms where Gtk3, Qt5 and Plasma is available.]),
1717 AS_HELP_STRING([--disable-gui],
1718 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1721 libo_FUZZ_ARG_ENABLE(randr,
1722 AS_HELP_STRING([--disable-randr],
1723 [Disable RandR support in the vcl project.]),
1724 ,test "${enable_randr+set}" = set || enable_randr=yes)
1726 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1727 AS_HELP_STRING([--disable-gstreamer-1-0],
1728 [Disable building with the gstreamer 1.0 avmedia backend.]),
1729 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1731 libo_FUZZ_ARG_ENABLE([eot],
1732 [AS_HELP_STRING([--enable-eot],
1733 [Enable support for Embedded OpenType fonts.])],
1734 ,test "${enable_eot+set}" = set || enable_eot=no)
1736 libo_FUZZ_ARG_ENABLE(cve-tests,
1737 AS_HELP_STRING([--disable-cve-tests],
1738 [Prevent CVE tests to be executed]),
1741 libo_FUZZ_ARG_ENABLE(chart-tests,
1742 AS_HELP_STRING([--enable-chart-tests],
1743 [Executes chart XShape tests. In a perfect world these tests would be
1744 stable and everyone could run them, in reality it is best to run them
1745 only on a few machines that are known to work and maintained by people
1746 who can judge if a test failure is a regression or not.]),
1749 AC_ARG_ENABLE(build-opensymbol,
1750 AS_HELP_STRING([--enable-build-opensymbol],
1751 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1752 fontforge installed.]),
1755 AC_ARG_ENABLE(dependency-tracking,
1756 AS_HELP_STRING([--enable-dependency-tracking],
1757 [Do not reject slow dependency extractors.])[
1758 --disable-dependency-tracking
1759 Disables generation of dependency information.
1760 Speed up one-time builds.],
1763 AC_ARG_ENABLE(icecream,
1764 AS_HELP_STRING([--enable-icecream],
1765 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1766 It defaults to /opt/icecream for the location of the icecream gcc/g++
1767 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1771 AS_HELP_STRING([--enable-ld=<linker>],
1772 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1773 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1774 If <linker> contains any ':', the part before the first ':' is used as the value of
1775 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1776 needed for Clang 12).]),
1779 libo_FUZZ_ARG_ENABLE(cups,
1780 AS_HELP_STRING([--disable-cups],
1781 [Do not build cups support.])
1784 AC_ARG_ENABLE(ccache,
1785 AS_HELP_STRING([--disable-ccache],
1786 [Do not try to use ccache automatically.
1787 By default we will try to detect if ccache is available; in that case if
1788 CC/CXX are not yet set, and --enable-icecream is not given, we
1789 attempt to use ccache. --disable-ccache disables ccache completely.
1790 Additionally ccache's depend mode is enabled if possible,
1791 use --enable-ccache=nodepend to enable ccache without depend mode.
1795 AC_ARG_ENABLE(z7-debug,
1796 AS_HELP_STRING([--enable-z7-debug],
1797 [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1798 more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1799 Enabled by default if ccache is detected.]))
1801 libo_FUZZ_ARG_ENABLE(online-update,
1802 AS_HELP_STRING([--enable-online-update],
1803 [Enable the online update service that will check for new versions of
1804 LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1805 If the value is "mar", the experimental Mozilla-like update will be
1806 enabled instead of the traditional update mechanism.]),
1809 AC_ARG_WITH(update-config,
1810 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1811 [Path to the update config ini file]))
1813 libo_FUZZ_ARG_ENABLE(extension-update,
1814 AS_HELP_STRING([--disable-extension-update],
1815 [Disable possibility to update installed extensions.]),
1818 libo_FUZZ_ARG_ENABLE(release-build,
1819 AS_HELP_STRING([--enable-release-build],
1820 [Enable release build. Note that the "release build" choice is orthogonal to
1821 whether symbols are present, debug info is generated, or optimization
1823 See http://wiki.documentfoundation.org/Development/DevBuild]),
1826 AC_ARG_ENABLE(windows-build-signing,
1827 AS_HELP_STRING([--enable-windows-build-signing],
1828 [Enable signing of windows binaries (*.exe, *.dll)]),
1831 AC_ARG_ENABLE(silent-msi,
1832 AS_HELP_STRING([--enable-silent-msi],
1833 [Enable MSI with LIMITUI=1 (silent install).]),
1836 AC_ARG_ENABLE(macosx-code-signing,
1837 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1838 [Sign executables, dylibs, frameworks and the app bundle. If you
1839 don't provide an identity the first suitable certificate
1840 in your keychain is used.]),
1843 AC_ARG_ENABLE(macosx-package-signing,
1844 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1845 [Create a .pkg suitable for uploading to the Mac App Store and sign
1846 it. If you don't provide an identity the first suitable certificate
1847 in your keychain is used.]),
1850 AC_ARG_ENABLE(macosx-sandbox,
1851 AS_HELP_STRING([--enable-macosx-sandbox],
1852 [Make the app bundle run in a sandbox. Requires code signing.
1853 Is required by apps distributed in the Mac App Store, and implies
1854 adherence to App Store rules.]),
1857 AC_ARG_WITH(macosx-bundle-identifier,
1858 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1859 [Define the macOS bundle identifier. Default is the somewhat weird
1860 org.libreoffice.script ("script", huh?).]),
1861 ,with_macosx_bundle_identifier=org.libreoffice.script)
1863 AC_ARG_WITH(macosx-provisioning-profile,
1864 AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1865 [Specify the path to a provisioning profile to use]),
1868 AC_ARG_WITH(product-name,
1869 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1870 [Define the product name. Default is AC_PACKAGE_NAME.]),
1871 ,with_product_name=$PRODUCTNAME)
1873 libo_FUZZ_ARG_ENABLE(community-flavor,
1874 AS_HELP_STRING([--disable-community-flavor],
1875 [Disable the Community branding.]),
1878 AC_ARG_WITH(package-version,
1879 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1880 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1883 libo_FUZZ_ARG_ENABLE(readonly-installset,
1884 AS_HELP_STRING([--enable-readonly-installset],
1885 [Prevents any attempts by LibreOffice to write into its installation. That means
1886 at least that no "system-wide" extensions can be added. Partly experimental work in
1887 progress, probably not fully implemented. Always enabled for macOS.]),
1890 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1891 AS_HELP_STRING([--disable-mariadb-sdbc],
1892 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1895 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1896 AS_HELP_STRING([--disable-postgresql-sdbc],
1897 [Disable the build of the PostgreSQL-SDBC driver.])
1900 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1901 AS_HELP_STRING([--disable-lotuswordpro],
1902 [Disable the build of the Lotus Word Pro filter.]),
1903 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1905 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1906 AS_HELP_STRING([--disable-firebird-sdbc],
1907 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1908 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1910 AC_ARG_ENABLE(bogus-pkg-config,
1911 AS_HELP_STRING([--enable-bogus-pkg-config],
1912 [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.]),
1915 AC_ARG_ENABLE(openssl,
1916 AS_HELP_STRING([--disable-openssl],
1917 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1918 components will either use GNUTLS or NSS. Work in progress,
1919 use only if you are hacking on it.]),
1920 ,enable_openssl=yes)
1922 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1923 AS_HELP_STRING([--enable-cipher-openssl-backend],
1924 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1925 Requires --enable-openssl.]))
1928 AS_HELP_STRING([--disable-nss],
1929 [Disable using NSS. If disabled,
1930 components will either use GNUTLS or openssl. Work in progress,
1931 use only if you are hacking on it.]),
1934 AC_ARG_ENABLE(library-bin-tar,
1935 AS_HELP_STRING([--enable-library-bin-tar],
1936 [Enable the building and reused of tarball of binary build for some 'external' libraries.
1937 Some libraries can save their build result in a tarball
1938 stored in TARFILE_LOCATION. That binary tarball is
1939 uniquely identified by the source tarball,
1940 the content of the config_host.mk file and the content
1941 of the top-level directory in core for that library
1942 If this option is enabled, then if such a tarfile exist, it will be untarred
1943 instead of the source tarfile, and the build step will be skipped for that
1945 If a proper tarfile does not exist, then the normal source-based
1946 build is done for that library and a proper binary tarfile is created
1947 for the next time.]),
1950 AC_ARG_ENABLE(dconf,
1951 AS_HELP_STRING([--disable-dconf],
1952 [Disable the dconf configuration backend (enabled by default where
1955 libo_FUZZ_ARG_ENABLE(formula-logger,
1957 [--enable-formula-logger],
1958 [Enable formula logger for logging formula calculation flow in Calc.]
1963 AS_HELP_STRING([--disable-ldap],
1964 [Disable LDAP support.]),
1967 AC_ARG_ENABLE(opencl,
1968 AS_HELP_STRING([--disable-opencl],
1969 [Disable OpenCL support.]),
1972 libo_FUZZ_ARG_ENABLE(librelogo,
1973 AS_HELP_STRING([--disable-librelogo],
1974 [Do not build LibreLogo.]),
1975 ,enable_librelogo=yes)
1978 AS_HELP_STRING([--disable-cmis],
1979 [Disable CMIS support.]),
1983 AS_HELP_STRING([--disable-curl],
1984 [Disable CURL support.]),
1987 AC_ARG_ENABLE(wasm-strip,
1988 AS_HELP_STRING([--enable-wasm-strip],
1989 [Strip the static build like for WASM/emscripten platform.]),
1990 ,enable_wasm_strip=yes)
1992 AC_ARG_ENABLE(xmlhelp,
1993 AS_HELP_STRING([--disable-xmlhelp],
1994 [Disable XML help support]),
1995 ,enable_xmlhelp=yes)
1998 dnl ===================================================================
1999 dnl Optional Packages (--with/without-)
2000 dnl ===================================================================
2002 AC_ARG_WITH(gcc-home,
2003 AS_HELP_STRING([--with-gcc-home],
2004 [Specify the location of gcc/g++ manually. This can be used in conjunction
2005 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2006 non-default path.]),
2009 AC_ARG_WITH(gnu-patch,
2010 AS_HELP_STRING([--with-gnu-patch],
2011 [Specify location of GNU patch on Solaris or FreeBSD.]),
2014 AC_ARG_WITH(build-platform-configure-options,
2015 AS_HELP_STRING([--with-build-platform-configure-options],
2016 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2020 AS_HELP_STRING([--with-gnu-cp],
2021 [Specify location of GNU cp on Solaris or FreeBSD.]),
2024 AC_ARG_WITH(external-tar,
2025 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2026 [Specify an absolute path of where to find (and store) tarfiles.]),
2027 TARFILE_LOCATION=$withval ,
2030 AC_ARG_WITH(referenced-git,
2031 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2032 [Specify another checkout directory to reference. This makes use of
2033 git submodule update --reference, and saves a lot of diskspace
2034 when having multiple trees side-by-side.]),
2035 GIT_REFERENCE_SRC=$withval ,
2038 AC_ARG_WITH(linked-git,
2039 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2040 [Specify a directory where the repositories of submodules are located.
2041 This uses a method similar to git-new-workdir to get submodules.]),
2042 GIT_LINK_SRC=$withval ,
2045 AC_ARG_WITH(galleries,
2046 AS_HELP_STRING([--with-galleries],
2047 [Specify how galleries should be built. It is possible either to
2048 build these internally from source ("build"),
2049 or to disable them ("no")]),
2053 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2054 [Choose which themes to include. By default those themes with an '*' are included.
2055 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
2056 *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
2059 libo_FUZZ_ARG_WITH(helppack-integration,
2060 AS_HELP_STRING([--without-helppack-integration],
2061 [It will not integrate the helppacks to the installer
2062 of the product. Please use this switch to use the online help
2063 or separate help packages.]),
2066 libo_FUZZ_ARG_WITH(fonts,
2067 AS_HELP_STRING([--without-fonts],
2068 [LibreOffice includes some third-party fonts to provide a reliable basis for
2069 help content, templates, samples, etc. When these fonts are already
2070 known to be available on the system then you should use this option.]),
2073 AC_ARG_ENABLE(noto-font,
2074 AS_HELP_STRING([--enable-noto-font],
2075 [Add more Google Noto fonts.]),
2079 AS_HELP_STRING([--with-epm],
2080 [Decides which epm to use. Default is to use the one from the system if
2081 one is built. When either this is not there or you say =internal epm
2085 AC_ARG_WITH(package-format,
2086 AS_HELP_STRING([--with-package-format],
2087 [Specify package format(s) for LibreOffice installation sets. The
2088 implicit --without-package-format leads to no installation sets being
2089 generated. Possible values: aix, archive, bsd, deb, dmg,
2090 installed, msi, pkg, and rpm.
2091 Example: --with-package-format='deb rpm']),
2095 AS_HELP_STRING([--with-tls],
2096 [Decides which TLS/SSL and cryptographic implementations to use for
2097 LibreOffice's code. Notice that this doesn't apply for depending
2098 libraries like "neon", for example. Default is to use NSS
2099 although OpenSSL is also possible. Notice that selecting NSS restricts
2100 the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2101 restrict by now the usage of NSS in LO's code. Possible values:
2102 openssl, nss. Example: --with-tls="nss"]),
2105 AC_ARG_WITH(system-libs,
2106 AS_HELP_STRING([--with-system-libs],
2107 [Use libraries already on system -- enables all --with-system-* flags.]),
2110 AC_ARG_WITH(system-bzip2,
2111 AS_HELP_STRING([--with-system-bzip2],
2112 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2113 [with_system_bzip2="$with_system_libs"])
2115 AC_ARG_WITH(system-headers,
2116 AS_HELP_STRING([--with-system-headers],
2117 [Use headers already on system -- enables all --with-system-* flags for
2118 external packages whose headers are the only entities used i.e.
2119 boost/odbc/sane-header(s).]),,
2120 [with_system_headers="$with_system_libs"])
2122 AC_ARG_WITH(system-jars,
2123 AS_HELP_STRING([--without-system-jars],
2124 [When building with --with-system-libs, also the needed jars are expected
2125 on the system. Use this to disable that]),,
2126 [with_system_jars="$with_system_libs"])
2128 AC_ARG_WITH(system-cairo,
2129 AS_HELP_STRING([--with-system-cairo],
2130 [Use cairo libraries already on system. Happens automatically for
2131 (implicit) --enable-gtk3.]))
2133 AC_ARG_WITH(system-epoxy,
2134 AS_HELP_STRING([--with-system-epoxy],
2135 [Use epoxy libraries already on system. Happens automatically for
2136 (implicit) --enable-gtk3.]),,
2137 [with_system_epoxy="$with_system_libs"])
2139 AC_ARG_WITH(myspell-dicts,
2140 AS_HELP_STRING([--with-myspell-dicts],
2141 [Adds myspell dictionaries to the LibreOffice installation set]),
2144 AC_ARG_WITH(system-dicts,
2145 AS_HELP_STRING([--without-system-dicts],
2146 [Do not use dictionaries from system paths.]),
2149 AC_ARG_WITH(external-dict-dir,
2150 AS_HELP_STRING([--with-external-dict-dir],
2151 [Specify external dictionary dir.]),
2154 AC_ARG_WITH(external-hyph-dir,
2155 AS_HELP_STRING([--with-external-hyph-dir],
2156 [Specify external hyphenation pattern dir.]),
2159 AC_ARG_WITH(external-thes-dir,
2160 AS_HELP_STRING([--with-external-thes-dir],
2161 [Specify external thesaurus dir.]),
2164 AC_ARG_WITH(system-zlib,
2165 AS_HELP_STRING([--with-system-zlib],
2166 [Use zlib already on system.]),,
2167 [with_system_zlib=auto])
2169 AC_ARG_WITH(system-jpeg,
2170 AS_HELP_STRING([--with-system-jpeg],
2171 [Use jpeg already on system.]),,
2172 [with_system_jpeg="$with_system_libs"])
2174 AC_ARG_WITH(system-clucene,
2175 AS_HELP_STRING([--with-system-clucene],
2176 [Use clucene already on system.]),,
2177 [with_system_clucene="$with_system_libs"])
2179 AC_ARG_WITH(system-expat,
2180 AS_HELP_STRING([--with-system-expat],
2181 [Use expat already on system.]),,
2182 [with_system_expat="$with_system_libs"])
2184 AC_ARG_WITH(system-libxml,
2185 AS_HELP_STRING([--with-system-libxml],
2186 [Use libxml/libxslt already on system.]),,
2187 [with_system_libxml=auto])
2189 AC_ARG_WITH(system-icu,
2190 AS_HELP_STRING([--with-system-icu],
2191 [Use icu already on system.]),,
2192 [with_system_icu="$with_system_libs"])
2194 AC_ARG_WITH(system-ucpp,
2195 AS_HELP_STRING([--with-system-ucpp],
2196 [Use ucpp already on system.]),,
2199 AC_ARG_WITH(system-openldap,
2200 AS_HELP_STRING([--with-system-openldap],
2201 [Use the OpenLDAP LDAP SDK already on system.]),,
2202 [with_system_openldap="$with_system_libs"])
2204 libo_FUZZ_ARG_ENABLE(poppler,
2205 AS_HELP_STRING([--disable-poppler],
2206 [Disable building Poppler.])
2209 AC_ARG_WITH(system-poppler,
2210 AS_HELP_STRING([--with-system-poppler],
2211 [Use system poppler (only needed for PDF import).]),,
2212 [with_system_poppler="$with_system_libs"])
2214 AC_ARG_WITH(system-abseil,
2215 AS_HELP_STRING([--with-system-abseil],
2216 [Use the abseil libraries already on system.]),,
2217 [with_system_abseil="$with_system_libs"])
2219 AC_ARG_WITH(system-openjpeg,
2220 AS_HELP_STRING([--with-system-openjpeg],
2221 [Use the OpenJPEG library already on system.]),,
2222 [with_system_openjpeg="$with_system_libs"])
2224 libo_FUZZ_ARG_ENABLE(gpgmepp,
2225 AS_HELP_STRING([--disable-gpgmepp],
2226 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2229 AC_ARG_WITH(system-gpgmepp,
2230 AS_HELP_STRING([--with-system-gpgmepp],
2231 [Use gpgmepp already on system]),,
2232 [with_system_gpgmepp="$with_system_libs"])
2234 AC_ARG_WITH(system-mariadb,
2235 AS_HELP_STRING([--with-system-mariadb],
2236 [Use MariaDB/MySQL libraries already on system.]),,
2237 [with_system_mariadb="$with_system_libs"])
2239 AC_ARG_ENABLE(bundle-mariadb,
2240 AS_HELP_STRING([--enable-bundle-mariadb],
2241 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2244 AC_ARG_WITH(system-postgresql,
2245 AS_HELP_STRING([--with-system-postgresql],
2246 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2247 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2248 [with_system_postgresql="$with_system_libs"])
2250 AC_ARG_WITH(libpq-path,
2251 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2252 [Use this PostgreSQL C interface (libpq) installation for building
2253 the PostgreSQL-SDBC extension.]),
2256 AC_ARG_WITH(system-firebird,
2257 AS_HELP_STRING([--with-system-firebird],
2258 [Use Firebird libraries already on system, for building the Firebird-SDBC
2259 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2260 [with_system_firebird="$with_system_libs"])
2262 AC_ARG_WITH(system-libtommath,
2263 AS_HELP_STRING([--with-system-libtommath],
2264 [Use libtommath already on system]),,
2265 [with_system_libtommath="$with_system_libs"])
2267 AC_ARG_WITH(system-hsqldb,
2268 AS_HELP_STRING([--with-system-hsqldb],
2269 [Use hsqldb already on system.]))
2271 AC_ARG_WITH(hsqldb-jar,
2272 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2273 [Specify path to jarfile manually.]),
2274 HSQLDB_JAR=$withval)
2276 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2277 AS_HELP_STRING([--disable-scripting-beanshell],
2278 [Disable support for scripts in BeanShell.]),
2282 AC_ARG_WITH(system-beanshell,
2283 AS_HELP_STRING([--with-system-beanshell],
2284 [Use beanshell already on system.]),,
2285 [with_system_beanshell="$with_system_jars"])
2287 AC_ARG_WITH(beanshell-jar,
2288 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2289 [Specify path to jarfile manually.]),
2292 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2293 AS_HELP_STRING([--disable-scripting-javascript],
2294 [Disable support for scripts in JavaScript.]),
2298 AC_ARG_WITH(system-rhino,
2299 AS_HELP_STRING([--with-system-rhino],
2300 [Use rhino already on system.]),,)
2301 # [with_system_rhino="$with_system_jars"])
2302 # Above is not used as we have different debug interface
2303 # patched into internal rhino. This code needs to be fixed
2304 # before we can enable it by default.
2306 AC_ARG_WITH(rhino-jar,
2307 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2308 [Specify path to jarfile manually.]),
2311 AC_ARG_WITH(system-jfreereport,
2312 AS_HELP_STRING([--with-system-jfreereport],
2313 [Use JFreeReport already on system.]),,
2314 [with_system_jfreereport="$with_system_jars"])
2316 AC_ARG_WITH(sac-jar,
2317 AS_HELP_STRING([--with-sac-jar=JARFILE],
2318 [Specify path to jarfile manually.]),
2321 AC_ARG_WITH(libxml-jar,
2322 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2323 [Specify path to jarfile manually.]),
2324 LIBXML_JAR=$withval)
2326 AC_ARG_WITH(flute-jar,
2327 AS_HELP_STRING([--with-flute-jar=JARFILE],
2328 [Specify path to jarfile manually.]),
2331 AC_ARG_WITH(jfreereport-jar,
2332 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2333 [Specify path to jarfile manually.]),
2334 JFREEREPORT_JAR=$withval)
2336 AC_ARG_WITH(liblayout-jar,
2337 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2338 [Specify path to jarfile manually.]),
2339 LIBLAYOUT_JAR=$withval)
2341 AC_ARG_WITH(libloader-jar,
2342 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2343 [Specify path to jarfile manually.]),
2344 LIBLOADER_JAR=$withval)
2346 AC_ARG_WITH(libformula-jar,
2347 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2348 [Specify path to jarfile manually.]),
2349 LIBFORMULA_JAR=$withval)
2351 AC_ARG_WITH(librepository-jar,
2352 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2353 [Specify path to jarfile manually.]),
2354 LIBREPOSITORY_JAR=$withval)
2356 AC_ARG_WITH(libfonts-jar,
2357 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2358 [Specify path to jarfile manually.]),
2359 LIBFONTS_JAR=$withval)
2361 AC_ARG_WITH(libserializer-jar,
2362 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2363 [Specify path to jarfile manually.]),
2364 LIBSERIALIZER_JAR=$withval)
2366 AC_ARG_WITH(libbase-jar,
2367 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2368 [Specify path to jarfile manually.]),
2369 LIBBASE_JAR=$withval)
2371 AC_ARG_WITH(system-odbc,
2372 AS_HELP_STRING([--with-system-odbc],
2373 [Use the odbc headers already on system.]),,
2374 [with_system_odbc="auto"])
2376 AC_ARG_WITH(system-sane,
2377 AS_HELP_STRING([--with-system-sane],
2378 [Use sane.h already on system.]),,
2379 [with_system_sane="$with_system_headers"])
2381 AC_ARG_WITH(system-bluez,
2382 AS_HELP_STRING([--with-system-bluez],
2383 [Use bluetooth.h already on system.]),,
2384 [with_system_bluez="$with_system_headers"])
2386 AC_ARG_WITH(system-curl,
2387 AS_HELP_STRING([--with-system-curl],
2388 [Use curl already on system.]),,
2389 [with_system_curl=auto])
2391 AC_ARG_WITH(system-boost,
2392 AS_HELP_STRING([--with-system-boost],
2393 [Use boost already on system.]),,
2394 [with_system_boost="$with_system_headers"])
2396 AC_ARG_WITH(system-glm,
2397 AS_HELP_STRING([--with-system-glm],
2398 [Use glm already on system.]),,
2399 [with_system_glm="$with_system_headers"])
2401 AC_ARG_WITH(system-hunspell,
2402 AS_HELP_STRING([--with-system-hunspell],
2403 [Use libhunspell already on system.]),,
2404 [with_system_hunspell="$with_system_libs"])
2406 libo_FUZZ_ARG_ENABLE(zxing,
2407 AS_HELP_STRING([--disable-zxing],
2408 [Disable use of zxing external library.]))
2410 AC_ARG_WITH(system-zxing,
2411 AS_HELP_STRING([--with-system-zxing],
2412 [Use libzxing already on system.]),,
2413 [with_system_zxing="$with_system_libs"])
2415 AC_ARG_WITH(system-box2d,
2416 AS_HELP_STRING([--with-system-box2d],
2417 [Use box2d already on system.]),,
2418 [with_system_box2d="$with_system_libs"])
2420 AC_ARG_WITH(system-mythes,
2421 AS_HELP_STRING([--with-system-mythes],
2422 [Use mythes already on system.]),,
2423 [with_system_mythes="$with_system_libs"])
2425 AC_ARG_WITH(system-altlinuxhyph,
2426 AS_HELP_STRING([--with-system-altlinuxhyph],
2427 [Use ALTLinuxhyph already on system.]),,
2428 [with_system_altlinuxhyph="$with_system_libs"])
2430 AC_ARG_WITH(system-lpsolve,
2431 AS_HELP_STRING([--with-system-lpsolve],
2432 [Use lpsolve already on system.]),,
2433 [with_system_lpsolve="$with_system_libs"])
2435 AC_ARG_WITH(system-coinmp,
2436 AS_HELP_STRING([--with-system-coinmp],
2437 [Use CoinMP already on system.]),,
2438 [with_system_coinmp="$with_system_libs"])
2440 AC_ARG_WITH(system-liblangtag,
2441 AS_HELP_STRING([--with-system-liblangtag],
2442 [Use liblangtag library already on system.]),,
2443 [with_system_liblangtag="$with_system_libs"])
2446 AS_HELP_STRING([--with-webdav],
2447 [Specify which library to use for webdav implementation.
2448 Possible values: "neon", "serf", "curl", "no". The default value is "neon".
2449 Example: --with-webdav="serf"]))
2451 AC_ARG_WITH(linker-hash-style,
2452 AS_HELP_STRING([--with-linker-hash-style],
2453 [Use linker with --hash-style=<style> when linking shared objects.
2454 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2455 if supported on the build system, and "sysv" otherwise.]))
2457 AC_ARG_WITH(jdk-home,
2458 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2459 [If you have installed JDK 9 or later on your system please supply the
2460 path here. Note that this is not the location of the java command but the
2461 location of the entire distribution. In case of cross-compiling, this
2462 is the JDK of the host os. Use --with-build-platform-configure-options
2463 to point to a different build platform JDK.]),
2467 AS_HELP_STRING([--with-help],
2468 [Enable the build of help. There is a special parameter "common" that
2469 can be used to bundle only the common part, .e.g help-specific icons.
2470 This is useful when you build the helpcontent separately.])
2472 Usage: --with-help build the old local help
2473 --without-help no local help (default)
2474 --with-help=html build the new HTML local help
2475 --with-help=online build the new HTML online help
2479 AC_ARG_WITH(omindex,
2480 AS_HELP_STRING([--with-omindex],
2481 [Enable the support of xapian-omega index for online help.])
2483 Usage: --with-omindex=server prepare the pages for omindex
2484 but let xapian-omega be built in server.
2485 --with-omindex=noxap do not prepare online pages
2490 libo_FUZZ_ARG_WITH(java,
2491 AS_HELP_STRING([--with-java=<java command>],
2492 [Specify the name of the Java interpreter command. Typically "java"
2493 which is the default.
2495 To build without support for Java components, applets, accessibility
2496 or the XML filters written in Java, use --without-java or --with-java=no.]),
2497 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2498 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2501 AC_ARG_WITH(jvm-path,
2502 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2503 [Use a specific JVM search path at runtime.
2504 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2507 AC_ARG_WITH(ant-home,
2508 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2509 [If you have installed Apache Ant on your system, please supply the path here.
2510 Note that this is not the location of the Ant binary but the location
2511 of the entire distribution.]),
2514 AC_ARG_WITH(symbol-config,
2515 AS_HELP_STRING([--with-symbol-config],
2516 [Configuration for the crashreport symbol upload]),
2518 [with_symbol_config=no])
2520 AC_ARG_WITH(export-validation,
2521 AS_HELP_STRING([--without-export-validation],
2522 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2523 ,with_export_validation=auto)
2525 AC_ARG_WITH(bffvalidator,
2526 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2527 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2528 Requires installed Microsoft Office Binary File Format Validator.
2529 Note: export-validation (--with-export-validation) is required to be turned on.
2530 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2531 ,with_bffvalidator=no)
2533 libo_FUZZ_ARG_WITH(junit,
2534 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2535 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2536 --without-junit disables those tests. Not relevant in the --without-java case.]),
2539 AC_ARG_WITH(hamcrest,
2540 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2541 [Specifies the hamcrest jar file to use for JUnit-based tests.
2542 --without-junit disables those tests. Not relevant in the --without-java case.]),
2545 AC_ARG_WITH(perl-home,
2546 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2547 [If you have installed Perl 5 Distribution, on your system, please
2548 supply the path here. Note that this is not the location of the Perl
2549 binary but the location of the entire distribution.]),
2552 libo_FUZZ_ARG_WITH(doxygen,
2554 [--with-doxygen=<absolute path to doxygen executable>],
2555 [Specifies the doxygen executable to use when generating ODK C/C++
2556 documentation. --without-doxygen disables generation of ODK C/C++
2557 documentation. Not relevant in the --disable-odk case.]),
2560 AC_ARG_WITH(visual-studio,
2561 AS_HELP_STRING([--with-visual-studio=<2019/2022>],
2562 [Specify which Visual Studio version to use in case several are
2563 installed. Currently 2019 (default) and 2022 are supported.]),
2566 AC_ARG_WITH(windows-sdk,
2567 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2568 [Specify which Windows SDK, or "Windows Kit", version to use
2569 in case the one that came with the selected Visual Studio
2570 is not what you want for some reason. Note that not all compiler/SDK
2571 combinations are supported. The intent is that this option should not
2576 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2577 [Use this option to build LibreOffice with additional UI language support.
2578 English (US) is always included by default.
2579 Separate multiple languages with space.
2580 For all languages, use --with-lang=ALL.]),
2583 AC_ARG_WITH(locales,
2584 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2585 [Use this option to limit the locale information built in.
2586 Separate multiple locales with space.
2587 Very experimental and might well break stuff.
2588 Just a desperate measure to shrink code and data size.
2589 By default all the locales available is included.
2590 This option is completely unrelated to --with-lang.])
2592 Affects also our character encoding conversion
2593 tables for encodings mainly targeted for a
2594 particular locale, like EUC-CN and EUC-TW for
2595 zh, ISO-2022-JP for ja.
2597 Affects also our add-on break iterator data for
2600 For the default, all locales, don't use this switch at all.
2601 Specifying just the language part of a locale means all matching
2602 locales will be included.
2606 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2607 libo_FUZZ_ARG_WITH(krb5,
2608 AS_HELP_STRING([--with-krb5],
2609 [Enable MIT Kerberos 5 support in modules that support it.
2610 By default automatically enabled on platforms
2611 where a good system Kerberos 5 is available.]),
2614 libo_FUZZ_ARG_WITH(gssapi,
2615 AS_HELP_STRING([--with-gssapi],
2616 [Enable GSSAPI support in modules that support it.
2617 By default automatically enabled on platforms
2618 where a good system GSSAPI is available.]),
2622 AS_HELP_STRING([--with-iwyu],
2623 [Use given IWYU binary path to check unneeded includes instead of building.
2624 Use only if you are hacking on it.]),
2627 libo_FUZZ_ARG_WITH(lxml,
2628 AS_HELP_STRING([--without-lxml],
2629 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2630 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2631 report widget classes and ids.]),
2634 libo_FUZZ_ARG_WITH(latest-c++,
2635 AS_HELP_STRING([--with-latest-c++],
2636 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2637 published standard.]),,
2638 [with_latest_c__=no])
2640 AC_ARG_WITH(gtk3-build,
2641 AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2642 [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2643 to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2645 dnl ===================================================================
2647 dnl ===================================================================
2649 AC_ARG_WITH(branding,
2650 AS_HELP_STRING([--with-branding=/path/to/images],
2651 [Use given path to retrieve branding images set.])
2653 Search for intro.png about.svg and logo.svg.
2654 If any is missing, default ones will be used instead.
2656 Search also progress.conf for progress
2657 settings on intro screen :
2659 PROGRESSBARCOLOR="255,255,255" Set color of
2660 progress bar. Comma separated RGB decimal values.
2661 PROGRESSSIZE="407,6" Set size of progress bar.
2662 Comma separated decimal values (width, height).
2663 PROGRESSPOSITION="61,317" Set position of progress
2664 bar from left,top. Comma separated decimal values.
2665 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2666 bar frame. Comma separated RGB decimal values.
2667 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2668 bar text. Comma separated RGB decimal values.
2669 PROGRESSTEXTBASELINE="287" Set vertical position of
2670 progress bar text from top. Decimal value.
2672 Default values will be used if not found.
2677 AC_ARG_WITH(extra-buildid,
2678 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2679 [Show addition build identification in about dialog.]),
2684 AS_HELP_STRING([--with-vendor="John the Builder"],
2685 [Set vendor of the build.]),
2688 AC_ARG_WITH(privacy-policy-url,
2689 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2690 [The URL to your privacy policy (needed when
2691 enabling online-update or crashreporting via breakpad)]),
2692 [if test "x$with_privacy_policy_url" = "xyes"; then
2693 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2694 elif test "x$with_privacy_policy_url" = "xno"; then
2695 with_privacy_policy_url="undefined"
2697 ,[with_privacy_policy_url="undefined"])
2699 AC_ARG_WITH(android-package-name,
2700 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2701 [Set Android package name of the build.]),
2704 AC_ARG_WITH(compat-oowrappers,
2705 AS_HELP_STRING([--with-compat-oowrappers],
2706 [Install oo* wrappers in parallel with
2707 lo* ones to keep backward compatibility.
2708 Has effect only with make distro-pack-install]),
2711 AC_ARG_WITH(os-version,
2712 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2713 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2716 AC_ARG_WITH(idlc-cpp,
2717 AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2718 [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2721 AC_ARG_WITH(parallelism,
2722 AS_HELP_STRING([--with-parallelism],
2723 [Number of jobs to run simultaneously during build. Parallel builds can
2724 save a lot of time on multi-cpu machines. Defaults to the number of
2725 CPUs on the machine, unless you configure --enable-icecream - then to
2729 AC_ARG_WITH(all-tarballs,
2730 AS_HELP_STRING([--with-all-tarballs],
2731 [Download all external tarballs unconditionally]))
2733 AC_ARG_WITH(gdrive-client-id,
2734 AS_HELP_STRING([--with-gdrive-client-id],
2735 [Provides the client id of the application for OAuth2 authentication
2736 on Google Drive. If either this or --with-gdrive-client-secret is
2737 empty, the feature will be disabled]),
2740 AC_ARG_WITH(gdrive-client-secret,
2741 AS_HELP_STRING([--with-gdrive-client-secret],
2742 [Provides the client secret of the application for OAuth2
2743 authentication on Google Drive. If either this or
2744 --with-gdrive-client-id is empty, the feature will be disabled]),
2747 AC_ARG_WITH(alfresco-cloud-client-id,
2748 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2749 [Provides the client id of the application for OAuth2 authentication
2750 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2751 empty, the feature will be disabled]),
2754 AC_ARG_WITH(alfresco-cloud-client-secret,
2755 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2756 [Provides the client secret of the application for OAuth2
2757 authentication on Alfresco Cloud. If either this or
2758 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2761 AC_ARG_WITH(onedrive-client-id,
2762 AS_HELP_STRING([--with-onedrive-client-id],
2763 [Provides the client id of the application for OAuth2 authentication
2764 on OneDrive. If either this or --with-onedrive-client-secret is
2765 empty, the feature will be disabled]),
2768 AC_ARG_WITH(onedrive-client-secret,
2769 AS_HELP_STRING([--with-onedrive-client-secret],
2770 [Provides the client secret of the application for OAuth2
2771 authentication on OneDrive. If either this or
2772 --with-onedrive-client-id is empty, the feature will be disabled]),
2774 dnl ===================================================================
2775 dnl Do we want to use pre-build binary tarball for recompile
2776 dnl ===================================================================
2778 if test "$enable_library_bin_tar" = "yes" ; then
2779 USE_LIBRARY_BIN_TAR=TRUE
2781 USE_LIBRARY_BIN_TAR=
2783 AC_SUBST(USE_LIBRARY_BIN_TAR)
2785 dnl ===================================================================
2786 dnl Test whether build target is Release Build
2787 dnl ===================================================================
2788 AC_MSG_CHECKING([whether build target is Release Build])
2789 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2791 ENABLE_RELEASE_BUILD=
2792 GET_TASK_ALLOW_ENTITLEMENT='
2793 <!-- We want to be able to debug a hardened process when not building for release -->
2794 <key>com.apple.security.get-task-allow</key>
2797 AC_MSG_RESULT([yes])
2798 ENABLE_RELEASE_BUILD=TRUE
2799 GET_TASK_ALLOW_ENTITLEMENT=''
2801 AC_SUBST(ENABLE_RELEASE_BUILD)
2802 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2804 AC_MSG_CHECKING([whether to build a Community flavor])
2805 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2806 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2807 AC_MSG_RESULT([yes])
2812 dnl ===================================================================
2813 dnl Test whether to sign Windows Build
2814 dnl ===================================================================
2815 AC_MSG_CHECKING([whether to sign windows build])
2816 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2817 AC_MSG_RESULT([yes])
2818 WINDOWS_BUILD_SIGNING="TRUE"
2821 WINDOWS_BUILD_SIGNING="FALSE"
2823 AC_SUBST(WINDOWS_BUILD_SIGNING)
2825 dnl ===================================================================
2826 dnl MacOSX build and runtime environment options
2827 dnl ===================================================================
2829 AC_ARG_WITH(macosx-version-min-required,
2830 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2831 [set the minimum OS version needed to run the built LibreOffice])
2833 e. g.: --with-macosx-version-min-required=10.12
2838 dnl ===================================================================
2839 dnl options for stuff used during cross-compilation build
2840 dnl Not quite superseded by --with-build-platform-configure-options.
2841 dnl TODO: check, if the "force" option is still needed anywhere.
2842 dnl ===================================================================
2844 AC_ARG_WITH(system-icu-for-build,
2845 AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2846 [Use icu already on system for build tools (cross-compilation only).]))
2849 dnl ===================================================================
2850 dnl Check for incompatible options set by fuzzing, and reset those
2851 dnl automatically to working combinations
2852 dnl ===================================================================
2854 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2855 "$enable_dbus" != "$enable_avahi"; then
2856 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2857 enable_avahi=$enable_dbus
2862 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2863 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2867 add_lopath_before ()
2872 for dir in $LO_PATH ; do
2873 if test "$dir" != "$1" ; then
2874 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2877 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2880 dnl ===================================================================
2881 dnl check for required programs (grep, awk, sed, bash)
2882 dnl ===================================================================
2887 if test -n "$1"; then
2888 if test "$build_os" = "cygwin"; then
2889 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2891 new_path=`cygpath -sm "$formatted_path"`
2894 new_path=`cygpath -u "$formatted_path"`
2899 if test "$2" = "after"; then
2900 add_lopath_after "$new_path"
2902 add_lopath_before "$new_path"
2908 AC_PATH_PROG( AWK, $AWK)
2909 if test -z "$AWK"; then
2910 AC_MSG_ERROR([install awk to run this script])
2913 AC_PATH_PROG(BASH, bash)
2914 if test -z "$BASH"; then
2915 AC_MSG_ERROR([bash not found in \$PATH])
2919 # prefer parallel comression tools, if available
2920 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2921 if test -z "$COMPRESSIONTOOL"; then
2922 AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2923 if test -z "$COMPRESSIONTOOL"; then
2924 AC_MSG_ERROR([gzip not found in \$PATH])
2927 AC_SUBST(COMPRESSIONTOOL)
2929 # use GNU parallel for packaging, if available
2930 AC_PATH_PROG(GNUPARALLEL, parallel)
2931 AC_SUBST(GNUPARALLEL)
2933 AC_MSG_CHECKING([for GNU or BSD tar])
2934 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2935 $a --version 2> /dev/null | egrep "GNU|bsdtar" 2>&1 > /dev/null
2936 if test $? -eq 0; then
2941 AC_MSG_RESULT($GNUTAR)
2942 if test -z "$GNUTAR"; then
2943 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2947 AC_MSG_CHECKING([for tar's option to strip components])
2948 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2949 if test $? -eq 0; then
2950 STRIP_COMPONENTS="--strip-components"
2952 $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2953 if test $? -eq 0; then
2954 STRIP_COMPONENTS="--strip-path"
2956 STRIP_COMPONENTS="unsupported"
2959 AC_MSG_RESULT($STRIP_COMPONENTS)
2960 if test x$STRIP_COMPONENTS = xunsupported; then
2961 AC_MSG_ERROR([you need a tar that is able to strip components.])
2963 AC_SUBST(STRIP_COMPONENTS)
2965 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2966 dnl desktop OSes from "mobile" ones.
2968 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2969 dnl In other words, that when building for an OS that is not a
2970 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2972 dnl Note the direction of the implication; there is no assumption that
2973 dnl cross-compiling would imply a non-desktop OS.
2975 if test $_os != iOS -a $_os != Android -a $_os != Emscripten -a "$enable_fuzzers" != "yes"; then
2976 BUILD_TYPE="$BUILD_TYPE DESKTOP"
2977 AC_DEFINE(HAVE_FEATURE_DESKTOP)
2978 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2981 # Whether to build "avmedia" functionality or not.
2983 if test -z "$enable_avmedia"; then
2987 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2988 if test "$enable_avmedia" = yes; then
2989 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2991 USE_AVMEDIA_DUMMY='TRUE'
2993 AC_SUBST(USE_AVMEDIA_DUMMY)
2995 # Decide whether to build database connectivity stuff (including Base) or not.
2996 if test "$enable_database_connectivity" != no; then
2997 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2998 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3000 if test "$_os" = iOS; then
3001 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3003 disable_database_connectivity_dependencies
3006 if test -z "$enable_extensions"; then
3007 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3008 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3009 enable_extensions=yes
3013 if test "$enable_extensions" = yes; then
3014 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3015 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3017 enable_extension_integration=no
3018 enable_extension_update=no
3021 if test -z "$enable_scripting"; then
3022 enable_scripting=yes
3025 DISABLE_SCRIPTING=''
3026 if test "$enable_scripting" = yes; then
3027 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3028 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3030 DISABLE_SCRIPTING='TRUE'
3031 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3034 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3035 # Disable dynamic_loading always for iOS and Android
3036 enable_dynamic_loading=no
3037 elif test -z "$enable_dynamic_loading"; then
3038 # Otherwise enable it unless specifically disabled
3039 enable_dynamic_loading=yes
3042 DISABLE_DYNLOADING=''
3043 if test "$enable_dynamic_loading" = yes; then
3044 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3046 DISABLE_DYNLOADING='TRUE'
3048 AC_SUBST(DISABLE_DYNLOADING)
3050 # remember SYSBASE value
3053 dnl ===================================================================
3054 dnl Sort out various gallery compilation options
3055 dnl ===================================================================
3056 WITH_GALLERY_BUILD=TRUE
3057 AC_MSG_CHECKING([how to build and package galleries])
3058 if test -n "${with_galleries}"; then
3059 if test "$with_galleries" = "build"; then
3060 if test "$enable_database_connectivity" = no; then
3061 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3063 AC_MSG_RESULT([build from source images internally])
3064 elif test "$with_galleries" = "no"; then
3066 AC_MSG_RESULT([disable non-internal gallery build])
3068 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3071 if test $_os != iOS -a $_os != Android; then
3072 AC_MSG_RESULT([internal src images for desktop])
3075 AC_MSG_RESULT([disable src image build])
3078 AC_SUBST(WITH_GALLERY_BUILD)
3080 dnl ===================================================================
3081 dnl Checks if ccache is available
3082 dnl ===================================================================
3084 if test "$enable_ccache" = "no"; then
3086 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3087 case "%$CC%$CXX%" in
3088 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3089 # assume that's good then
3090 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3091 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3092 CCACHE_DEPEND_MODE=1
3095 # try to use our own ccache if it is available and CCACHE was not already defined
3096 if test -z "$CCACHE"; then
3097 if test "$_os" = "WINNT"; then
3098 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3100 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3101 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3102 elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3103 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3106 AC_PATH_PROG([CCACHE],[ccache],[not found])
3107 if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3108 CCACHE=`win_short_path_for_make "$CCACHE"`
3109 # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3111 AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3112 CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3113 if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3121 if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3122 # on windows/VC perhaps sccache is around?
3123 case "%$CC%$CXX%" in
3124 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3125 # assume that's good then
3126 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3127 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3128 CCACHE_DEPEND_MODE=1
3132 # for sharing code below, reuse CCACHE env var
3133 AC_PATH_PROG([CCACHE],[sccache],[not found])
3134 if test "$CCACHE" != "not found"; then
3135 CCACHE=`win_short_path_for_make "$CCACHE"`
3137 CCACHE_DEPEND_MODE=1
3142 if test "$CCACHE" = "not found"; then
3145 if test -n "$CCACHE" -a -z "$SCCACHE"; then
3146 CCACHE_DEPEND_MODE=1
3147 # Need to check for ccache version: otherwise prevents
3148 # caching of the results (like "-x objective-c++" for Mac)
3149 if test $_os = Darwin -o $_os = iOS; then
3150 # Check ccache version
3151 AC_MSG_CHECKING([whether version of ccache is suitable])
3152 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3153 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3154 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3155 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3157 AC_MSG_RESULT([no, $CCACHE_VERSION])
3168 if test "$enable_ccache" = "nodepend"; then
3169 CCACHE_DEPEND_MODE=""
3171 AC_SUBST(CCACHE_DEPEND_MODE)
3173 # sccache defaults are good enough
3174 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3175 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3176 # -p works with both 4.2 and 4.4
3177 ccache_size_msg=$([ccache -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3178 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3179 if test "$ccache_size" = ""; then
3180 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3181 if test "$ccache_size" = ""; then
3184 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3185 if test $ccache_size -lt 1024; then
3187 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3188 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3190 # warn that ccache may be too small for debug build
3191 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3192 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3195 if test $ccache_size -lt 5; then
3196 #warn that ccache may be too small for debug build
3197 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3198 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3204 if test "$enable_z7_debug" != no; then
3205 if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3206 ENABLE_Z7_DEBUG=TRUE
3209 AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3210 add_warning "ccache will not work with --disable-z7-debug"
3212 AC_SUBST(ENABLE_Z7_DEBUG)
3214 dnl ===================================================================
3215 dnl Checks for C compiler,
3216 dnl The check for the C++ compiler is later on.
3217 dnl ===================================================================
3218 if test "$_os" != "WINNT"; then
3220 AC_MSG_CHECKING([gcc home])
3221 if test -z "$with_gcc_home"; then
3222 if test "$enable_icecream" = "yes"; then
3223 if test -d "/usr/lib/icecc/bin"; then
3224 GCC_HOME="/usr/lib/icecc/"
3225 elif test -d "/usr/libexec/icecc/bin"; then
3226 GCC_HOME="/usr/libexec/icecc/"
3227 elif test -d "/opt/icecream/bin"; then
3228 GCC_HOME="/opt/icecream/"
3230 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3234 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3235 GCC_HOME_SET="false"
3238 GCC_HOME="$with_gcc_home"
3240 AC_MSG_RESULT($GCC_HOME)
3243 if test "$GCC_HOME_SET" = "true"; then
3244 if test -z "$CC"; then
3245 CC="$GCC_HOME/bin/gcc"
3248 if test -z "$CXX"; then
3249 CXX="$GCC_HOME/bin/g++"
3255 COMPATH=`dirname "$CC"`
3256 if test "$COMPATH" = "."; then
3257 AC_PATH_PROGS(COMPATH, $CC)
3258 dnl double square bracket to get single because of M4 quote...
3259 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3261 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3263 dnl ===================================================================
3265 dnl ===================================================================
3266 AC_MSG_CHECKING([whether to build with Java support])
3267 if test "$with_java" != "no"; then
3268 if test "$DISABLE_SCRIPTING" = TRUE; then
3269 AC_MSG_RESULT([no, overridden by --disable-scripting])
3273 AC_MSG_RESULT([yes])
3275 AC_DEFINE(HAVE_FEATURE_JAVA)
3282 AC_SUBST(ENABLE_JAVA)
3284 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3286 dnl ENABLE_JAVA="" indicate no Java support at all
3288 dnl ===================================================================
3289 dnl Check macOS SDK and compiler
3290 dnl ===================================================================
3292 if test $_os = Darwin; then
3294 # The SDK in the currently selected Xcode should be found.
3296 AC_MSG_CHECKING([what macOS SDK to use])
3297 # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3298 # really supported anymore, instead you'd use different copies of Xcode, each with their own
3299 # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3300 # also restricting the SDK version to "known good" versions doesn't seem necessary anyomre, the
3301 # problems that existed in the PPC days with target versions not being respected or random
3302 # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3303 # SDK version is enough, no need to do both...
3304 MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3305 if test ! -d "$MACOSX_SDK_PATH"; then
3306 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3308 macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3309 MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3310 # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3311 # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3313 # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3314 # correct version in case such an old SDK is specified, it will be rejected later anyway
3315 MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3316 if test $MACOSX_SDK_VERSION -lt 101400; then
3317 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.14])
3319 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3320 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3322 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3324 AC_MSG_CHECKING([what minimum version of macOS to require])
3325 if test "$with_macosx_version_min_required" = "" ; then
3326 if test "$host_cpu" = x86_64; then
3327 with_macosx_version_min_required="10.12";
3329 with_macosx_version_min_required="11.0";
3332 # see same notes about MACOSX_SDK_VERSION above
3333 MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3334 if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101200; then
3335 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.12])
3337 AC_MSG_RESULT([$with_macosx_version_min_required])
3339 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3340 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3341 AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3343 AC_MSG_RESULT([yes])
3346 # export this so that "xcrun" invocations later return matching values
3347 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3348 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3349 export DEVELOPER_DIR
3350 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3351 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3353 AC_MSG_CHECKING([whether Xcode is new enough])
3354 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3355 my_xcode_ver2=${my_xcode_ver1#Xcode }
3356 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3357 if test "$my_xcode_ver3" -ge 1103; then
3358 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3360 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3363 my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3364 MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3366 LIBTOOL=/usr/bin/libtool
3367 INSTALL_NAME_TOOL=install_name_tool
3368 if test -z "$save_CC"; then
3369 stdlib=-stdlib=libc++
3371 AC_MSG_CHECKING([what C compiler to use])
3372 CC="`xcrun -find clang`"
3373 CC_BASE=`first_arg_basename "$CC"`
3374 if test "$host_cpu" = x86_64; then
3375 CC+=" -target x86_64-apple-macos"
3377 CC+=" -target arm64-apple-macos"
3379 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3380 AC_MSG_RESULT([$CC])
3382 AC_MSG_CHECKING([what C++ compiler to use])
3383 CXX="`xcrun -find clang++`"
3384 CXX_BASE=`first_arg_basename "$CXX"`
3385 if test "$host_cpu" = x86_64; then
3386 CXX+=" -target x86_64-apple-macos"
3388 CXX+=" -target arm64-apple-macos"
3390 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3391 AC_MSG_RESULT([$CXX])
3393 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3396 STRIP=`xcrun -find strip`
3397 LIBTOOL=`xcrun -find libtool`
3398 RANLIB=`xcrun -find ranlib`
3401 AC_MSG_CHECKING([whether to do code signing])
3403 if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3406 if test "$enable_macosx_code_signing" = yes; then
3407 # By default use the first suitable certificate (?).
3409 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3410 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3411 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3412 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3413 # "Developer ID Application" one.
3414 identity="Developer ID Application:"
3416 identity=$enable_macosx_code_signing
3418 identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3419 if test -n "$identity"; then
3420 MACOSX_CODESIGNING_IDENTITY=$identity
3421 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3422 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3424 AC_MSG_ERROR([cannot determine identity to use])
3428 AC_MSG_CHECKING([whether to create a Mac App Store package])
3430 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3432 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3433 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3435 if test "$enable_macosx_package_signing" = yes; then
3436 # By default use the first suitable certificate.
3437 # It should be a "3rd Party Mac Developer Installer" one
3438 identity="3rd Party Mac Developer Installer:"
3440 identity=$enable_macosx_package_signing
3442 identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3443 if test -n "$identity"; then
3444 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3445 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3446 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3448 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3452 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3453 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3456 AC_MSG_CHECKING([whether to sandbox the application])
3458 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3459 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3460 elif test "$enable_macosx_sandbox" = yes; then
3461 ENABLE_MACOSX_SANDBOX=TRUE
3462 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3463 AC_MSG_RESULT([yes])
3468 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3469 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3470 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3472 if test -n "$with_macosx_provisioning_profile" ; then
3473 if test ! -f "$with_macosx_provisioning_profile"; then
3474 AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3476 MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3477 MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3478 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3479 | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3480 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3484 AC_SUBST(MACOSX_SDK_PATH)
3485 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3486 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3487 AC_SUBST(INSTALL_NAME_TOOL)
3488 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3489 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3490 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3491 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3492 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3493 AC_SUBST(MACOSX_PROVISIONING_INFO)
3494 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3495 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3496 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3498 dnl ===================================================================
3499 dnl Check iOS SDK and compiler
3500 dnl ===================================================================
3502 if test $_os = iOS; then
3503 AC_MSG_CHECKING([what iOS SDK to use])
3504 current_sdk_ver=16.5
3505 older_sdk_vers="16.4 16.3 16.2 16.1 16.0 15.6 15.5 15.4 15.2 15.0"
3506 if test "$enable_ios_simulator" = "yes"; then
3507 platform=iPhoneSimulator
3508 versionmin=-mios-simulator-version-min=14.5
3511 versionmin=-miphoneos-version-min=14.5
3513 xcode_developer=`xcode-select -print-path`
3515 for sdkver in $current_sdk_ver $older_sdk_vers; do
3516 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3523 if test -z "$sysroot"; then
3524 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3527 AC_MSG_RESULT($sysroot)
3529 stdlib="-stdlib=libc++"
3531 AC_MSG_CHECKING([what C compiler to use])
3532 CC="`xcrun -find clang`"
3533 CC_BASE=`first_arg_basename "$CC"`
3534 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3535 AC_MSG_RESULT([$CC])
3537 AC_MSG_CHECKING([what C++ compiler to use])
3538 CXX="`xcrun -find clang++`"
3539 CXX_BASE=`first_arg_basename "$CXX"`
3540 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3541 AC_MSG_RESULT([$CXX])
3543 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3546 STRIP=`xcrun -find strip`
3547 LIBTOOL=`xcrun -find libtool`
3548 RANLIB=`xcrun -find ranlib`
3551 AC_MSG_CHECKING([whether to treat the installation as read-only])
3553 if test $_os = Darwin; then
3554 enable_readonly_installset=yes
3555 elif test "$enable_extensions" != yes; then
3556 enable_readonly_installset=yes
3558 if test "$enable_readonly_installset" = yes; then
3559 AC_MSG_RESULT([yes])
3560 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3565 dnl ===================================================================
3566 dnl Structure of install set
3567 dnl ===================================================================
3569 if test $_os = Darwin; then
3570 LIBO_BIN_FOLDER=MacOS
3571 LIBO_ETC_FOLDER=Resources
3572 LIBO_LIBEXEC_FOLDER=MacOS
3573 LIBO_LIB_FOLDER=Frameworks
3574 LIBO_LIB_PYUNO_FOLDER=Resources
3575 LIBO_SHARE_FOLDER=Resources
3576 LIBO_SHARE_HELP_FOLDER=Resources/help
3577 LIBO_SHARE_JAVA_FOLDER=Resources/java
3578 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3579 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3580 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3581 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3582 LIBO_URE_BIN_FOLDER=MacOS
3583 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3584 LIBO_URE_LIB_FOLDER=Frameworks
3585 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3586 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3587 elif test $_os = WINNT; then
3588 LIBO_BIN_FOLDER=program
3589 LIBO_ETC_FOLDER=program
3590 LIBO_LIBEXEC_FOLDER=program
3591 LIBO_LIB_FOLDER=program
3592 LIBO_LIB_PYUNO_FOLDER=program
3593 LIBO_SHARE_FOLDER=share
3594 LIBO_SHARE_HELP_FOLDER=help
3595 LIBO_SHARE_JAVA_FOLDER=program/classes
3596 LIBO_SHARE_PRESETS_FOLDER=presets
3597 LIBO_SHARE_READMES_FOLDER=readmes
3598 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3599 LIBO_SHARE_SHELL_FOLDER=program/shell
3600 LIBO_URE_BIN_FOLDER=program
3601 LIBO_URE_ETC_FOLDER=program
3602 LIBO_URE_LIB_FOLDER=program
3603 LIBO_URE_MISC_FOLDER=program
3604 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3606 LIBO_BIN_FOLDER=program
3607 LIBO_ETC_FOLDER=program
3608 LIBO_LIBEXEC_FOLDER=program
3609 LIBO_LIB_FOLDER=program
3610 LIBO_LIB_PYUNO_FOLDER=program
3611 LIBO_SHARE_FOLDER=share
3612 LIBO_SHARE_HELP_FOLDER=help
3613 LIBO_SHARE_JAVA_FOLDER=program/classes
3614 LIBO_SHARE_PRESETS_FOLDER=presets
3615 LIBO_SHARE_READMES_FOLDER=readmes
3616 if test "$enable_fuzzers" != yes; then
3617 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3619 LIBO_SHARE_RESOURCE_FOLDER=resource
3621 LIBO_SHARE_SHELL_FOLDER=program/shell
3622 LIBO_URE_BIN_FOLDER=program
3623 LIBO_URE_ETC_FOLDER=program
3624 LIBO_URE_LIB_FOLDER=program
3625 LIBO_URE_MISC_FOLDER=program
3626 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3628 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3629 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3630 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3631 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3632 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3633 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3634 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3635 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3636 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3637 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3638 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3639 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3640 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3641 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3642 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3643 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3645 # Not all of them needed in config_host.mk, add more if need arises
3646 AC_SUBST(LIBO_BIN_FOLDER)
3647 AC_SUBST(LIBO_ETC_FOLDER)
3648 AC_SUBST(LIBO_LIB_FOLDER)
3649 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3650 AC_SUBST(LIBO_SHARE_FOLDER)
3651 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3652 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3653 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3654 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3655 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3656 AC_SUBST(LIBO_URE_BIN_FOLDER)
3657 AC_SUBST(LIBO_URE_ETC_FOLDER)
3658 AC_SUBST(LIBO_URE_LIB_FOLDER)
3659 AC_SUBST(LIBO_URE_MISC_FOLDER)
3660 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3662 dnl ===================================================================
3663 dnl Windows specific tests and stuff
3664 dnl ===================================================================
3668 # Return value: $regvalue
3671 if test "$build_os" = "wsl"; then
3672 regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3676 local _regentry="/proc/registry${1}/${2}"
3677 if test -f "$_regentry"; then
3678 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3679 # Registry keys read via /proc/registry* are always \0 terminated!
3680 local _regvalue=$(tr -d '\0' < "$_regentry")
3681 if test $? -eq 0; then
3687 # Get a value from the 32-bit side of the Registry
3690 reg_get_value "32" "$1"
3693 # Get a value from the 64-bit side of the Registry
3696 reg_get_value "64" "$1"
3704 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3713 PLATFORMID=windows_x86_64
3715 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3717 WIN_MULTI_ARCH="x86"
3723 PLATFORMID=windows_x86
3726 WIN_OTHER_ARCH="x64"
3731 PLATFORMID=windows_aarch64
3733 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3734 WIN_HOST_ARCH="arm64"
3739 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3743 case "$build_cpu" in
3744 x86_64) WIN_BUILD_ARCH="x64" ;;
3745 i*86) WIN_BUILD_ARCH="x86" ;;
3746 aarch64) WIN_BUILD_ARCH="arm64" ;;
3748 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3752 SCPDEFS="$SCPDEFS -D_MSC_VER"
3756 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3757 # other-arch won't, but wouldn't break the build (x64 on x86).
3758 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3759 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3763 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3764 # To allow building Windows multi-arch releases without cross-tooling
3765 if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3766 cross_compiling="yes"
3770 ENABLE_WASM_STRIP=''
3771 if test "$cross_compiling" = "yes"; then
3772 export CROSS_COMPILING=TRUE
3773 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3774 ENABLE_WASM_STRIP=TRUE
3778 BUILD_TYPE="$BUILD_TYPE NATIVE"
3780 AC_SUBST(CROSS_COMPILING)
3781 AC_SUBST(ENABLE_WASM_STRIP)
3783 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3784 # NOTE: must _not_ be used for bundled external libraries!
3786 if test "$GCC" = "yes"; then
3787 AC_MSG_CHECKING( for -isystem )
3789 CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3790 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3792 if test -n "$ISYSTEM"; then
3798 if test -z "$ISYSTEM"; then
3799 # fall back to using -I
3804 dnl ===================================================================
3805 dnl Check which Visual Studio compiler is used
3806 dnl ===================================================================
3808 map_vs_year_to_version()
3810 # Return value: $vsversion
3820 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3824 vs_versions_to_check()
3826 # Args: $1 (optional) : versions to check, in the order of preference
3827 # Return value: $vsversions
3831 if test -n "$1"; then
3832 map_vs_year_to_version "$1"
3833 vsversions=$vsversion
3835 # Default version is 2019
3840 win_get_env_from_vsvars32bat()
3842 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3843 # Also seems to be located in another directory under the same name: vsvars32.bat
3844 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3845 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3846 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3847 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3849 if test "$build_os" = "wsl"; then
3850 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3852 chmod +x $WRAPPERBATCHFILEPATH
3853 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3855 rm -f $WRAPPERBATCHFILEPATH
3856 printf '%s' "$result"
3861 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3862 if test -n "$regvalue"; then
3863 PathFormat "$regvalue"
3864 UCRTSDKDIR=$formatted_path_unix
3865 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3866 UCRTVERSION=$regvalue
3868 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3872 if test -z "$UCRTSDKDIR"; then
3873 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3874 ide_env_file="${ide_env_dir}VsDevCmd.bat"
3875 if test -f "$ide_env_file"; then
3876 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3877 UCRTSDKDIR=$formatted_path
3878 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3879 dnl Hack needed at least by tml:
3880 if test "$UCRTVERSION" = 10.0.15063.0 \
3881 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3882 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3884 UCRTVERSION=10.0.14393.0
3887 AC_MSG_ERROR([No UCRT found])
3895 # Args: $1 (optional) : The VS version year
3896 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
3898 unset vctest vctoolset vcnumwithdot vcbuildnumber
3900 vs_versions_to_check "$1"
3901 if test "$build_os" = wsl; then
3902 vswhere="$PROGRAMFILESX86"
3904 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3906 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3907 PathFormat "$vswhere"
3908 vswhere=$formatted_path_unix
3909 for ver in $vsversions; do
3910 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3911 if test -z "$vswhereoutput"; then
3912 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3914 # Fall back to all MS products (this includes VC++ Build Tools)
3915 if ! test -n "$vswhereoutput"; then
3916 AC_MSG_CHECKING([VC++ Build Tools and similar])
3917 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3919 if test -n "$vswhereoutput"; then
3920 PathFormat "$vswhereoutput"
3921 vctest=$formatted_path_unix
3926 if test -n "$vctest"; then
3927 vcnumwithdot="$ver.0"
3928 case "$vcnumwithdot" in
3938 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3945 AC_MSG_CHECKING([$1 compiler])
3947 CL_EXE_PATH="$2/cl.exe"
3949 if test ! -f "$CL_EXE_PATH"; then
3950 if test "$1" = "multi-arch"; then
3951 AC_MSG_WARN([no compiler (cl.exe) in $2])
3954 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3958 dnl ===========================================================
3959 dnl Check for the corresponding mspdb*.dll
3960 dnl ===========================================================
3962 # MSVC 15.0 has libraries from 14.0?
3965 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3966 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3969 # The compiles has to find its shared libraries
3971 TEMP_PATH=`cygpath -d "$2"`
3972 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3974 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3975 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3980 AC_MSG_RESULT([$CL_EXE_PATH])
3986 if test "$_os" = "WINNT"; then
3987 AC_MSG_CHECKING([Visual C++])
3988 find_msvc "$with_visual_studio"
3989 if test -z "$vctest"; then
3990 if test -n "$with_visual_studio"; then
3991 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3993 AC_MSG_ERROR([no Visual Studio installation found])
3998 VC_PRODUCT_DIR="$vctest/VC"
3999 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4001 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4002 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4003 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4004 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4005 if test $? -ne 0; then
4011 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4012 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4013 test_cl_exe "build" "$MSVC_BUILD_PATH"
4016 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4017 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4018 test_cl_exe "host" "$MSVC_HOST_PATH"
4020 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4023 AC_MSG_CHECKING([for short pathname of VC product directory])
4024 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4025 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4030 AC_MSG_CHECKING([for UCRT location])
4032 # find_ucrt errors out if it doesn't find it
4033 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4034 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4035 ucrtincpath_formatted=$formatted_path
4036 # SOLARINC is used for external modules and must be set too.
4037 # And no, it's not sufficient to set SOLARINC only, as configure
4038 # itself doesn't honour it.
4039 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4040 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4041 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4042 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4044 AC_SUBST(UCRTSDKDIR)
4045 AC_SUBST(UCRTVERSION)
4047 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4048 # Find the proper version of MSBuild.exe to use based on the VS version
4049 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4050 if test -z "$regvalue" ; then
4051 if test "$WIN_BUILD_ARCH" != "x64"; then
4052 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4054 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4057 if test -d "$regvalue" ; then
4058 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4059 AC_MSG_RESULT([$regvalue])
4061 AC_MSG_ERROR([MSBuild.exe location not found])
4064 # Find the version of devenv.exe
4065 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4066 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4067 DEVENV_unix=$(cygpath -u "$DEVENV")
4068 if test ! -e "$DEVENV_unix"; then
4069 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4072 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4073 dnl needed when building CLR code:
4074 if test -z "$MSVC_CXX"; then
4075 # This gives us a posix path with 8.3 filename restrictions
4076 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4079 if test -z "$CC"; then
4081 CC_BASE=`first_arg_basename "$CC"`
4083 if test -z "$CXX"; then
4085 CXX_BASE=`first_arg_basename "$CXX"`
4088 if test -n "$CC"; then
4089 # Remove /cl.exe from CC case insensitive
4090 AC_MSG_NOTICE([found Visual C++ $vcyear])
4092 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4093 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4095 PathFormat "$COMPATH"
4096 COMPATH=`win_short_path_for_make "$formatted_path"`
4099 VCTOOLSET=$vctoolset
4101 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4102 # are always "better", we list them in reverse chronological order.
4104 case "$vcnumwithdot" in
4106 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4110 # The expectation is that --with-windows-sdk should not need to be used
4111 if test -n "$with_windows_sdk"; then
4112 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4113 *" "$with_windows_sdk" "*)
4114 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4117 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4122 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4127 AC_MSG_ERROR([Visual C++ not found after all, huh])
4130 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4131 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4132 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4133 // between Visual Studio versions and _MSC_VER:
4137 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4139 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4140 # version of the Explorer extension (and maybe other small
4141 # bits, too) needed when installing a 32-bit LibreOffice on a
4142 # 64-bit OS. The 64-bit Explorer extension is a feature that
4143 # has been present since long in OOo. Don't confuse it with
4144 # building LibreOffice itself as 64-bit code.
4149 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4150 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4151 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4152 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4155 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4156 AC_MSG_RESULT([found])
4158 AC_MSG_RESULT([not found])
4159 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4161 elif test "$WIN_HOST_ARCH" = "x64"; then
4166 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4167 AC_SUBST(CXX_X64_BINARY)
4169 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4170 # needed to support TWAIN scan on both 32- and 64-bit systems
4172 case "$WIN_HOST_ARCH" in
4174 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4175 if test -n "$CXX_X86_BINARY"; then
4177 AC_MSG_RESULT([preset])
4178 elif test -n "$WIN_MULTI_ARCH"; then
4180 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4181 CXX_X86_BINARY+=" /arch:SSE"
4182 AC_MSG_RESULT([found])
4184 AC_MSG_RESULT([not found])
4185 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4190 CXX_X86_BINARY=$MSVC_CXX
4194 AC_SUBST(CXX_X86_BINARY)
4202 AC_MSG_CHECKING([whether the compiler is actually Clang])
4203 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4209 [AC_MSG_RESULT([yes])
4211 [AC_MSG_RESULT([no])])
4212 AC_SUBST(COM_IS_CLANG)
4216 if test "$COM_IS_CLANG" = TRUE; then
4217 AC_MSG_CHECKING([whether Clang is new enough])
4218 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4219 #if !defined __apple_build_version__
4223 [my_apple_clang=yes],[my_apple_clang=])
4224 if test "$my_apple_clang" = yes; then
4225 AC_MSG_RESULT([assumed yes (Apple Clang)])
4226 elif test "$_os" = Emscripten; then
4227 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4229 if test "$_os" = WINNT; then
4230 dnl In which case, assume clang-cl:
4232 dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4240 CC_PLAIN="$CC_PLAIN $i"
4247 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4248 CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4249 CLANGVER=`echo $clang_version \
4250 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4251 if test "$CLANGVER" -ge 50002; then
4252 AC_MSG_RESULT([yes ($clang_version)])
4254 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4256 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4257 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4261 SHOWINCLUDES_PREFIX=
4262 if test "$_os" = WINNT; then
4263 dnl We need to guess the prefix of the -showIncludes output, it can be
4265 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4266 echo "#include <stdlib.h>" > conftest.c
4267 SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4268 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4269 rm -f conftest.c conftest.obj
4270 if test -z "$SHOWINCLUDES_PREFIX"; then
4271 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4273 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4276 AC_SUBST(SHOWINCLUDES_PREFIX)
4279 # prefix C with ccache if needed
4281 if test "$CCACHE" != ""; then
4282 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4286 CFLAGS="$CFLAGS --ccache-skip -O2"
4287 # msvc does not fail on unknown options, check stdout
4288 if test "$COM" = MSC; then
4289 CFLAGS="$CFLAGS -nologo"
4291 save_ac_c_werror_flag=$ac_c_werror_flag
4292 ac_c_werror_flag=yes
4293 dnl an empty program will do, we're checking the compiler flags
4294 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4295 [use_ccache=yes], [use_ccache=no])
4297 ac_c_werror_flag=$save_ac_c_werror_flag
4298 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4299 AC_MSG_RESULT([yes])
4302 CC_BASE="ccache $CC_BASE"
4308 # ===================================================================
4309 # check various GCC options that Clang does not support now but maybe
4310 # will somewhen in the future, check them even for GCC, so that the
4312 # ===================================================================
4315 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4316 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4318 CFLAGS="$CFLAGS -Werror -ggdb2"
4319 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4321 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4322 AC_MSG_RESULT([yes])
4327 if test "$host_cpu" = "m68k"; then
4328 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4330 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4331 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4333 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4334 AC_MSG_RESULT([yes])
4340 AC_SUBST(HAVE_GCC_GGDB2)
4342 dnl ===================================================================
4343 dnl Test the gcc version
4344 dnl ===================================================================
4345 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4346 AC_MSG_CHECKING([the GCC version])
4347 _gcc_version=`$CC -dumpfullversion`
4348 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4349 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4350 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4352 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4354 if test "$gcc_full_version" -lt 70000; then
4355 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4358 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4359 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4360 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4361 # (which reports itself as GCC 4.2.1).
4364 AC_SUBST(GCC_VERSION)
4366 dnl Set the ENABLE_DBGUTIL variable
4367 dnl ===================================================================
4368 AC_MSG_CHECKING([whether to build with additional debug utilities])
4369 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4370 ENABLE_DBGUTIL="TRUE"
4371 # this is an extra var so it can have different default on different MSVC
4372 # versions (in case there are version specific problems with it)
4373 MSVC_USE_DEBUG_RUNTIME="TRUE"
4375 AC_MSG_RESULT([yes])
4376 # cppunit and graphite expose STL in public headers
4377 if test "$with_system_cppunit" = "yes"; then
4378 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4380 with_system_cppunit=no
4382 if test "$with_system_graphite" = "yes"; then
4383 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4385 with_system_graphite=no
4386 if test -z "$with_system_harfbuzz"; then
4387 with_system_harfbuzz=no
4389 if test -z "$with_system_cairo"; then
4390 with_system_cairo=no
4392 if test -z "$with_system_fontconfig"; then
4393 with_system_fontconfig=no
4395 if test -z "$with_system_freetype"; then
4396 with_system_freetype=no
4399 if test "$with_system_orcus" = "yes"; then
4400 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4402 with_system_orcus=no
4404 if test "$with_system_libcmis" = "yes"; then
4405 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4407 with_system_libcmis=no
4409 if test "$with_system_hunspell" = "yes"; then
4410 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4412 with_system_hunspell=no
4414 if test "$with_system_gpgmepp" = "yes"; then
4415 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4417 with_system_gpgmepp=no
4419 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4420 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4421 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4422 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4423 # of those two is using the system variant:
4424 if test "$with_system_libnumbertext" = "yes"; then
4425 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4427 with_system_libnumbertext=no
4429 if test "$with_system_libwps" = "yes"; then
4430 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4432 with_system_libwps=no
4436 MSVC_USE_DEBUG_RUNTIME=""
4439 AC_SUBST(ENABLE_DBGUTIL)
4440 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4442 dnl Set the ENABLE_DEBUG variable.
4443 dnl ===================================================================
4444 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4445 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4447 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4448 if test -z "$libo_fuzzed_enable_debug"; then
4449 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4451 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4456 AC_MSG_CHECKING([whether to do a debug build])
4457 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4459 if test -n "$ENABLE_DBGUTIL" ; then
4460 AC_MSG_RESULT([yes (dbgutil)])
4462 AC_MSG_RESULT([yes])
4468 AC_SUBST(ENABLE_DEBUG)
4470 dnl ===================================================================
4471 dnl Select the linker to use (gold/lld/ld.bfd).
4472 dnl This is done only after compiler checks (need to know if Clang is
4473 dnl used, for different defaults) and after checking if a debug build
4474 dnl is wanted (non-debug builds get the default linker if not explicitly
4475 dnl specified otherwise).
4476 dnl All checks for linker features/options should come after this.
4477 dnl ===================================================================
4480 use_ld=-fuse-ld=${1%%:*}
4482 if test "$use_ld_path" != "$1"; then
4483 use_ld="$use_ld --ld-path=$use_ld_path"
4485 use_ld_fail_if_error=$2
4487 AC_MSG_CHECKING([for $use_ld linker support])
4488 use_ld_ldflags_save="$LDFLAGS"
4489 LDFLAGS="$LDFLAGS $use_ld"
4490 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4493 printf ("hello world\n");
4494 ])], USE_LD=$use_ld, [])
4495 if test -n "$USE_LD"; then
4496 AC_MSG_RESULT( yes )
4499 if test -n "$use_ld_fail_if_error"; then
4505 if test -n "$use_ld_ok"; then
4506 dnl keep the value of LDFLAGS
4509 LDFLAGS="$use_ld_ldflags_save"
4513 if test "$enable_ld" != "no"; then
4514 if test "$GCC" = "yes"; then
4515 if test -n "$enable_ld"; then
4516 check_use_ld "$enable_ld" fail_if_error
4517 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4518 dnl non-debug builds default to the default linker
4520 elif test -n "$COM_IS_CLANG"; then
4522 if test $? -ne 0; then
4526 # For gcc first try gold, new versions also support lld.
4528 if test $? -ne 0; then
4532 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4534 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4535 if test -z "$ld_used"; then
4538 AC_MSG_CHECKING([for linker that is used])
4539 AC_MSG_RESULT([$ld_used])
4540 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4541 if echo "$ld_used" | grep -q "^GNU ld"; then
4542 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4543 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4547 if test "$enable_ld" = "yes"; then
4548 AC_MSG_ERROR([--enable-ld not supported])
4554 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4555 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4556 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4557 bsymbolic_functions_ldflags_save=$LDFLAGS
4558 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4559 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4562 printf ("hello world\n");
4563 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4564 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4565 AC_MSG_RESULT( found )
4567 AC_MSG_RESULT( not found )
4569 LDFLAGS=$bsymbolic_functions_ldflags_save
4571 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4574 if test "$GCC" = "yes"; then
4575 for flag in "--gc-sections" "-dead_strip"; do
4576 AC_MSG_CHECKING([for $flag linker support])
4577 ldflags_save=$LDFLAGS
4578 LDFLAGS="$LDFLAGS -Wl,$flag"
4579 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4582 printf ("hello world\n");
4584 LD_GC_SECTIONS="-Wl,$flag"
4585 AC_MSG_RESULT( found )
4587 AC_MSG_RESULT( not found )
4589 LDFLAGS=$ldflags_save
4590 if test -n "$LD_GC_SECTIONS"; then
4595 AC_SUBST(LD_GC_SECTIONS)
4598 if test "$enable_split_debug" != no; then
4600 if test -n "$ENABLE_LTO"; then
4601 true # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4602 elif test "$enable_split_debug" = yes; then
4604 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4605 elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4608 if test -n "$use_split_debug"; then
4609 AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4611 CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4612 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4614 if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4615 AC_MSG_RESULT([yes])
4617 if test "$enable_split_debug" = yes; then
4624 if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4625 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4626 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4629 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4631 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4632 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4634 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4635 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4637 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4638 AC_MSG_RESULT([yes])
4642 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4645 if test "$enable_gdb_index" != "no"; then
4646 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4647 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4648 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4650 CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4652 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4653 if test "$have_ggnu_pubnames" != "TRUE"; then
4654 if test "$enable_gdb_index" = "yes"; then
4655 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4660 AC_MSG_RESULT( yes )
4661 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4662 ldflags_save=$LDFLAGS
4663 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4664 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4667 printf ("hello world\n");
4668 ])], ENABLE_GDB_INDEX=TRUE, [])
4669 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4670 AC_MSG_RESULT( yes )
4672 if test "$enable_gdb_index" = "yes"; then
4678 LDFLAGS=$ldflags_save
4682 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4683 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4684 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4687 AC_SUBST(ENABLE_GDB_INDEX)
4689 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4692 if test "$enable_sal_log" = yes; then
4695 AC_SUBST(ENABLE_SAL_LOG)
4697 dnl Check for enable symbols option
4698 dnl ===================================================================
4699 AC_MSG_CHECKING([whether to generate debug information])
4700 if test -z "$enable_symbols"; then
4701 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4707 if test "$enable_symbols" = yes; then
4708 ENABLE_SYMBOLS_FOR=all
4709 AC_MSG_RESULT([yes])
4710 elif test "$enable_symbols" = no; then
4714 # Selective debuginfo.
4715 ENABLE_SYMBOLS_FOR="$enable_symbols"
4716 AC_MSG_RESULT([for "$enable_symbols"])
4718 AC_SUBST(ENABLE_SYMBOLS_FOR)
4719 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4720 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4721 AC_MSG_CHECKING([whether enough memory is available for linking])
4722 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4723 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4724 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4725 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4727 AC_MSG_RESULT([yes])
4732 ENABLE_OPTIMIZED_DEBUG=
4733 AC_MSG_CHECKING([whether to compile with optimization flags])
4734 if test -z "$enable_optimized"; then
4735 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4738 enable_optimized=yes
4741 if test "$enable_optimized" = yes; then
4742 ENABLE_OPTIMIZED=TRUE
4743 AC_MSG_RESULT([yes])
4744 elif test "$enable_optimized" = debug; then
4745 ENABLE_OPTIMIZED_DEBUG=TRUE
4746 AC_MSG_RESULT([yes (debug)])
4748 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4749 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4751 CFLAGS="$CFLAGS -Werror -Og"
4752 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4754 if test "$HAVE_GCC_OG" = "TRUE"; then
4755 AC_MSG_RESULT([yes])
4760 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4761 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4766 AC_SUBST(ENABLE_OPTIMIZED)
4767 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4770 # determine CPUNAME, OS, ...
4780 PLATFORMID=aix_powerpc
4796 if test "$enable_ios_simulator" = "yes"; then
4801 PLATFORMID=macosx_aarch64
4805 if test "$enable_ios_simulator" = "yes"; then
4810 PLATFORMID=macosx_x86_64
4813 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4826 if test "$enable_ios_simulator" = "yes"; then
4827 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4831 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4836 PLATFORMID=ios_arm64
4849 PLATFORMID=dragonfly_x86
4854 PLATFORMID=dragonfly_x86_64
4857 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4871 PLATFORMID=freebsd_aarch64
4877 PLATFORMID=freebsd_x86
4882 PLATFORMID=freebsd_x86_64
4887 PLATFORMID=freebsd_powerpc64
4892 PLATFORMID=freebsd_powerpc
4895 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4911 PLATFORMID=haiku_x86
4916 PLATFORMID=haiku_x86_64
4919 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4935 PLATFORMID=kfreebsd_x86
4940 PLATFORMID=kfreebsd_x86_64
4943 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4948 linux-gnu*|linux-musl*)
4958 PLATFORMID=linux_aarch64
4960 EPM_FLAGS="-a arm64"
4965 PLATFORMID=linux_alpha
4971 PLATFORMID=linux_arm_eabi
4975 PLATFORMID=linux_arm_oabi
4983 PLATFORMID=linux_hppa
4988 PLATFORMID=linux_x86
4993 PLATFORMID=linux_ia64
4999 PLATFORMID=linux_mips_eb
5004 EPM_FLAGS="-a mips64"
5005 PLATFORMID=linux_mips64_eb
5010 EPM_FLAGS="-a mips64el"
5011 PLATFORMID=linux_mips64_el
5016 EPM_FLAGS="-a mipsel"
5017 PLATFORMID=linux_mips_el
5022 PLATFORMID=linux_m68k
5027 PLATFORMID=linux_powerpc
5032 PLATFORMID=linux_powerpc64
5036 RTL_ARCH=PowerPC_64_LE
5037 PLATFORMID=linux_powerpc64_le
5042 PLATFORMID=linux_sparc
5047 PLATFORMID=linux_sparc64
5052 PLATFORMID=linux_s390
5057 PLATFORMID=linux_s390x
5062 PLATFORMID=linux_x86_64
5065 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5081 PLATFORMID=android_arm_eabi
5086 PLATFORMID=android_aarch64
5091 PLATFORMID=android_x86
5096 PLATFORMID=android_x86_64
5099 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5114 PLATFORMID=netbsd_x86
5119 PLATFORMID=netbsd_powerpc
5124 PLATFORMID=netbsd_sparc
5129 PLATFORMID=netbsd_x86_64
5132 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5147 PLATFORMID=openbsd_x86
5152 PLATFORMID=openbsd_x86_64
5155 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5158 SOLARINC="$SOLARINC -I/usr/local/include"
5171 PLATFORMID=solaris_x86
5176 PLATFORMID=solaris_sparc
5181 PLATFORMID=solaris_sparc64
5184 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5187 SOLARINC="$SOLARINC -I/usr/local/include"
5200 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5205 PLATFORMID=linux_x86
5209 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5213 if test "$with_x" = "no"; then
5214 AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5218 if test "$enable_gui" = "no"; then
5219 if test "$using_x11" != yes; then
5220 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5225 AC_DEFINE(HAVE_FEATURE_UI)
5227 AC_SUBST(DISABLE_GUI)
5229 if test "$using_x11" = yes; then
5230 if test "$USING_X11" = TRUE; then
5231 AC_DEFINE(USING_X11)
5236 if test "$USING_X11" = TRUE; then
5237 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5241 WORKDIR="${BUILDDIR}/workdir"
5242 INSTDIR="${BUILDDIR}/instdir"
5243 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5244 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5245 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5253 AC_SUBST([INSTROOT])
5254 AC_SUBST([INSTROOTBASE])
5258 AC_SUBST(PLATFORMID)
5259 AC_SUBST(WINDOWS_X64)
5260 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5262 if test "$OS" = WNT -a "$COM" = MSC; then
5264 INTEL) CPPU_ENV=msci ;;
5265 X86_64) CPPU_ENV=mscx ;;
5266 AARCH64) CPPU_ENV=msca ;;
5268 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5276 dnl ===================================================================
5277 dnl Test which package format to use
5278 dnl ===================================================================
5279 AC_MSG_CHECKING([which package format to use])
5280 if test -n "$with_package_format" -a "$with_package_format" != no; then
5281 for i in $with_package_format; do
5283 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5286 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5287 aix - AIX software distribution
5288 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5289 deb - Debian software distribution
5290 pkg - Solaris software distribution
5291 rpm - RedHat software distribution
5293 LibreOffice additionally supports:
5294 archive - .tar.gz or .zip
5296 installed - installation tree
5302 # fakeroot is needed to ensure correct file ownerships/permissions
5303 # inside deb packages and tar archives created on Linux and Solaris.
5304 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5305 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5306 if test "$FAKEROOT" = "no"; then
5308 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5311 PKGFORMAT="$with_package_format"
5312 AC_MSG_RESULT([$PKGFORMAT])
5315 AC_MSG_RESULT([none])
5319 dnl ===================================================================
5320 dnl handle help related options
5322 dnl If you change help related options, please update README.help
5323 dnl ===================================================================
5330 AC_MSG_CHECKING([which help to build])
5331 if test -n "$with_help" -a "$with_help" != "no"; then
5332 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5333 BUILD_TYPE="$BUILD_TYPE HELP"
5334 case "$with_help" in
5336 ENABLE_HTMLHELP=TRUE
5338 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5339 AC_MSG_RESULT([HTML (local)])
5342 ENABLE_HTMLHELP=TRUE
5344 AC_MSG_RESULT([HTML (online)])
5348 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5349 AC_MSG_RESULT([XML (local)])
5352 AC_MSG_ERROR([Unknown --with-help=$with_help])
5359 AC_MSG_CHECKING([if we need to build the help index tooling])
5360 if test "$cross_compiling" != yes -a \( "$with_help" = yes -o "$enable_extension_integration" != no \); then
5361 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5363 AC_MSG_RESULT([yes])
5368 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5369 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5370 if test "$HELP_ONLINE" != TRUE; then
5371 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5373 case "$with_omindex" in
5375 HELP_OMINDEX_PAGE=TRUE
5376 AC_MSG_RESULT([SERVER])
5379 AC_MSG_RESULT([NOXAP])
5382 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5389 AC_MSG_CHECKING([whether to include the XML-help support])
5390 if test "$enable_xmlhelp" = yes; then
5391 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5393 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5394 AC_MSG_RESULT([yes])
5396 if test "$with_help" = yes; then
5397 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5402 dnl Test whether to integrate helppacks into the product's installer
5403 AC_MSG_CHECKING([for helppack integration])
5404 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5405 AC_MSG_RESULT([no integration])
5407 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5408 AC_MSG_RESULT([integration])
5411 AC_SUBST([ENABLE_HTMLHELP])
5412 AC_SUBST([HELP_OMINDEX_PAGE])
5413 AC_SUBST([HELP_ONLINE])
5414 # WITH_HELPPACKS is used only in configure
5416 dnl ===================================================================
5417 dnl Set up a different compiler to produce tools to run on the build
5418 dnl machine when doing cross-compilation
5419 dnl ===================================================================
5421 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5422 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5423 if test "$cross_compiling" = "yes"; then
5424 AC_MSG_CHECKING([for BUILD platform configuration])
5426 rm -rf CONF-FOR-BUILD config_build.mk
5427 mkdir CONF-FOR-BUILD
5428 # Here must be listed all files needed when running the configure script. In particular, also
5429 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5430 # keep them in the same order as there.
5431 (cd $SRC_ROOT && tar cf - \
5433 bin/get_config_variables \
5434 solenv/bin/getcompver.awk \
5435 solenv/inc/langlist.mk \
5438 config_host_lang.mk.in \
5441 bin/bffvalidator.sh.in \
5442 bin/odfvalidator.sh.in \
5443 bin/officeotron.sh.in \
5444 hardened_runtime.xcent.in \
5445 instsetoo_native/util/openoffice.lst.in \
5447 sysui/desktop/macosx/Info.plist.in \
5448 .vscode/vs-code-template.code-workspace.in \
5450 | (cd CONF-FOR-BUILD && tar xf -)
5451 cp configure CONF-FOR-BUILD
5452 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5454 unset COM USING_X11 OS CPUNAME
5455 unset CC CXX SYSBASE CFLAGS
5456 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5457 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5458 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5459 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5460 if test -n "$CC_FOR_BUILD"; then
5461 export CC="$CC_FOR_BUILD"
5462 CC_BASE=`first_arg_basename "$CC"`
5464 if test -n "$CXX_FOR_BUILD"; then
5465 export CXX="$CXX_FOR_BUILD"
5466 CXX_BASE=`first_arg_basename "$CXX"`
5468 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5471 # Handle host configuration, which affects the cross-toolset too
5473 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5474 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5475 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5476 if test -n "$ENABLE_JAVA"; then
5478 iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5480 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5481 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5484 if test -z "$with_jdk_home"; then
5485 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.])
5490 sub_conf_opts="$sub_conf_opts --without-java"
5492 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5493 test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5494 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5495 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5496 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5497 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5499 # Don't bother having configure look for stuff not needed for the build platform anyway
5500 sub_conf_defaults=" \
5501 --build="$build_alias" \
5502 --disable-cairo-canvas \
5504 --disable-customtarget-components \
5505 --disable-firebird-sdbc \
5507 --disable-gstreamer-1-0 \
5510 --disable-mariadb-sdbc \
5512 --disable-online-update \
5514 --disable-pdfimport \
5515 --disable-postgresql-sdbc \
5518 --enable-icecream="$enable_icecream" \
5521 --with-parallelism="$with_parallelism" \
5522 --with-theme="$with_theme" \
5523 --with-tls=openssl \
5525 echo " Running CONF-FOR-BUILD/configure" $sub_conf_defaults $sub_conf_opts $with_build_platform_configure_options --srcdir=$srcdir
5527 $sub_conf_defaults \
5529 $with_build_platform_configure_options \
5531 2>&1 | sed -e 's/^/ /'
5532 if test [${PIPESTATUS[0]}] -ne 0; then
5533 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5536 # filter permitted build targets
5537 PERMITTED_BUILD_TARGETS="
5570 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5571 # newlined lists, to use grep as a filter
5572 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5573 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5574 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5575 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5577 cp config_host.mk ../config_build.mk
5578 cp config_host_lang.mk ../config_build_lang.mk
5579 mv config.log ../config.Build.log
5580 mkdir -p ../config_build
5581 mv config_host/*.h ../config_build
5582 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5584 # all these will get a _FOR_BUILD postfix
5585 DIRECT_FOR_BUILD_SETTINGS="
5596 LIBO_URE_MISC_FOLDER
5602 # these overwrite host config with build config
5603 OVERWRITING_SETTINGS="
5608 JAVA_CLASSPATH_NOT_SET
5616 # these need some special handling
5617 EXTRA_HANDLED_SETTINGS="
5624 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5628 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5629 echo "$line" >>build-config
5631 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5633 VV=`eval "echo $VV"`
5634 if test -n "$VV"; then
5635 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5636 echo "$line" >>build-config
5640 for V in $OVERWRITING_SETTINGS; do
5642 VV=`eval "echo $VV"`
5643 if test -n "$VV"; then
5644 line=${V}='${'${V}:-$VV'}'
5645 echo "$line" >>build-config
5649 for V in INSTDIR INSTROOT WORKDIR; do
5651 VV=`eval "echo $VV"`
5652 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5653 if test -n "$VV"; then
5654 line="${V}_FOR_BUILD='$VV'"
5655 echo "$line" >>build-config
5660 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5661 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])
5662 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5663 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5665 eval `cat CONF-FOR-BUILD/build-config`
5667 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5669 rm -rf CONF-FOR-BUILD
5673 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5674 CXX_FOR_BUILD="$CXX"
5675 INSTDIR_FOR_BUILD="$INSTDIR"
5676 INSTROOT_FOR_BUILD="$INSTROOT"
5677 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5678 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5679 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5680 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5681 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5682 WORKDIR_FOR_BUILD="$WORKDIR"
5684 AC_SUBST(OS_FOR_BUILD)
5685 AC_SUBST(INSTDIR_FOR_BUILD)
5686 AC_SUBST(INSTROOT_FOR_BUILD)
5687 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5688 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5689 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5690 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5691 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5692 AC_SUBST(WORKDIR_FOR_BUILD)
5693 AC_SUBST(CC_FOR_BUILD)
5694 AC_SUBST(CXX_FOR_BUILD)
5695 AC_SUBST(CPPU_ENV_FOR_BUILD)
5697 dnl ===================================================================
5698 dnl Check for syslog header
5699 dnl ===================================================================
5700 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5702 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5703 dnl ===================================================================
5704 AC_MSG_CHECKING([whether to turn warnings to errors])
5705 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5706 ENABLE_WERROR="TRUE"
5707 PYTHONWARNINGS="error"
5708 AC_MSG_RESULT([yes])
5710 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5711 ENABLE_WERROR="TRUE"
5712 PYTHONWARNINGS="error"
5713 AC_MSG_RESULT([yes])
5718 AC_SUBST(ENABLE_WERROR)
5719 AC_SUBST(PYTHONWARNINGS)
5721 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5722 dnl ===================================================================
5723 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5724 if test -z "$enable_assert_always_abort"; then
5725 if test "$ENABLE_DEBUG" = TRUE; then
5726 enable_assert_always_abort=yes
5728 enable_assert_always_abort=no
5731 if test "$enable_assert_always_abort" = "yes"; then
5732 ASSERT_ALWAYS_ABORT="TRUE"
5733 AC_MSG_RESULT([yes])
5735 ASSERT_ALWAYS_ABORT="FALSE"
5738 AC_SUBST(ASSERT_ALWAYS_ABORT)
5740 # Determine whether to use ooenv for the instdir installation
5741 # ===================================================================
5742 if test $_os != "WINNT" -a $_os != "Darwin"; then
5743 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5744 if test -z "$enable_ooenv"; then
5745 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5751 if test "$enable_ooenv" = "no"; then
5755 AC_MSG_RESULT([yes])
5758 AC_SUBST(ENABLE_OOENV)
5760 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5761 if test "$enable_qt5" = "no"; then
5762 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5768 dnl ===================================================================
5769 dnl check for cups support
5770 dnl ===================================================================
5772 AC_MSG_CHECKING([whether to enable CUPS support])
5773 if test "$test_cups" = yes -a "$enable_cups" != no; then
5775 AC_MSG_RESULT([yes])
5777 AC_MSG_CHECKING([whether cups support is present])
5778 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5779 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5780 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5781 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5787 AC_SUBST(ENABLE_CUPS)
5789 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,,TRUE)
5791 dnl whether to find & fetch external tarballs?
5792 dnl ===================================================================
5793 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5794 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5795 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5797 TARFILE_LOCATION="$LODE_HOME/ext_tar"
5800 if test -z "$TARFILE_LOCATION"; then
5801 if test -d "$SRC_ROOT/src" ; then
5802 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5803 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5805 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5807 AbsolutePath "$TARFILE_LOCATION"
5808 PathFormat "${absolute_path}"
5809 TARFILE_LOCATION="${formatted_path}"
5811 AC_SUBST(TARFILE_LOCATION)
5813 AC_MSG_CHECKING([whether we want to fetch tarballs])
5814 if test "$enable_fetch_external" != "no"; then
5815 if test "$with_all_tarballs" = "yes"; then
5816 AC_MSG_RESULT([yes, all of them])
5817 DO_FETCH_TARBALLS="ALL"
5819 AC_MSG_RESULT([yes, if we use them])
5820 DO_FETCH_TARBALLS="TRUE"
5826 AC_SUBST(DO_FETCH_TARBALLS)
5828 dnl Test whether to include MySpell dictionaries
5829 dnl ===================================================================
5830 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5831 if test "$with_myspell_dicts" = "yes"; then
5832 AC_MSG_RESULT([yes])
5833 WITH_MYSPELL_DICTS=TRUE
5834 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5835 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5840 AC_SUBST(WITH_MYSPELL_DICTS)
5842 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5843 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5844 if test "$with_system_dicts" = yes; then
5845 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5847 with_system_dicts=no
5850 AC_MSG_CHECKING([whether to use dicts from external paths])
5851 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5852 AC_MSG_RESULT([yes])
5854 AC_MSG_CHECKING([for spelling dictionary directory])
5855 if test -n "$with_external_dict_dir"; then
5856 DICT_SYSTEM_DIR=file://$with_external_dict_dir
5858 DICT_SYSTEM_DIR=file:///usr/share/hunspell
5859 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5860 DICT_SYSTEM_DIR=file:///usr/share/myspell
5863 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5864 AC_MSG_CHECKING([for hyphenation patterns directory])
5865 if test -n "$with_external_hyph_dir"; then
5866 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5868 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5870 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5871 AC_MSG_CHECKING([for thesaurus directory])
5872 if test -n "$with_external_thes_dir"; then
5873 THES_SYSTEM_DIR=file://$with_external_thes_dir
5875 THES_SYSTEM_DIR=file:///usr/share/mythes
5877 AC_MSG_RESULT([$THES_SYSTEM_DIR])
5882 AC_SUBST(SYSTEM_DICTS)
5883 AC_SUBST(DICT_SYSTEM_DIR)
5884 AC_SUBST(HYPH_SYSTEM_DIR)
5885 AC_SUBST(THES_SYSTEM_DIR)
5887 dnl ===================================================================
5888 dnl Precompiled headers.
5890 AC_MSG_CHECKING([whether to enable pch feature])
5891 if test -z "$enable_pch"; then
5892 if test "$_os" = "WINNT"; then
5893 # Enabled by default on Windows.
5895 # never use sccache on auto-enabled PCH builds, except if requested explicitely
5896 if test -z "$enable_ccache" -a "$SCCACHE"; then
5903 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5904 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5906 if test "$enable_pch" = "system"; then
5908 AC_MSG_RESULT([yes (system headers)])
5909 elif test "$enable_pch" = "base"; then
5911 AC_MSG_RESULT([yes (system and base headers)])
5912 elif test "$enable_pch" = "normal"; then
5914 AC_MSG_RESULT([yes (normal)])
5915 elif test "$enable_pch" = "full"; then
5917 AC_MSG_RESULT([yes (full)])
5918 elif test "$enable_pch" = "yes"; then
5919 # Pick a suitable default.
5920 if test "$GCC" = "yes"; then
5921 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5922 # while making the PCHs larger and rebuilds more likely.
5924 AC_MSG_RESULT([yes (system and base headers)])
5926 # With MSVC the highest level makes a significant difference,
5927 # and it was the default when there used to be no PCH levels.
5929 AC_MSG_RESULT([yes (full)])
5931 elif test "$enable_pch" = "no"; then
5934 AC_MSG_ERROR([Unknown value for --enable-pch])
5936 AC_SUBST(ENABLE_PCH)
5937 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5938 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5939 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5940 if test "$CCACHE_BIN" != "not found"; then
5941 AC_MSG_CHECKING([ccache version])
5942 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5943 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5944 AC_MSG_RESULT([$CCACHE_VERSION])
5945 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5946 if test "$CCACHE_NUMVER" -gt "030701"; then
5947 AC_MSG_RESULT([yes])
5949 AC_MSG_RESULT([no (not newer than 3.7.1)])
5955 PCH_INSTANTIATE_TEMPLATES=
5956 if test -n "$ENABLE_PCH"; then
5957 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5959 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5960 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5962 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5968 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5970 BUILDING_PCH_WITH_OBJ=
5971 if test -n "$ENABLE_PCH"; then
5972 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5974 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5975 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5977 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5983 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5988 if test "$COM" = MSC; then
5989 fpch_prefix="-Xclang "
5991 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5992 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
5994 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
5995 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5997 PCH_CODEGEN="${fpch_prefix}-fpch-codegen"
5998 PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen"
6001 if test -n "$PCH_CODEGEN"; then
6007 AC_SUBST(PCH_CODEGEN)
6008 AC_SUBST(PCH_NO_CODEGEN)
6010 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6011 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6013 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6014 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6016 if test -n "$PCH_DEBUGINFO"; then
6022 AC_SUBST(PCH_DEBUGINFO)
6026 AC_MSG_CHECKING([the GNU Make version])
6027 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6028 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6029 if test "$_make_longver" -ge "038200"; then
6030 AC_MSG_RESULT([$GNUMAKE $_make_version])
6032 elif test "$_make_longver" -ge "038100"; then
6033 if test "$build_os" = "cygwin"; then
6034 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6036 AC_MSG_RESULT([$GNUMAKE $_make_version])
6038 dnl ===================================================================
6039 dnl Search all the common names for sha1sum
6040 dnl ===================================================================
6041 AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
6042 if test -z "$SHA1SUM"; then
6043 AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
6044 elif test "$SHA1SUM" = "openssl"; then
6045 SHA1SUM="openssl sha1"
6047 AC_MSG_CHECKING([for GNU Make bug 20033])
6048 TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
6049 $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
6050 A := \$(wildcard *.a)
6054 <TAB>@echo survived bug20033.
6058 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
6071 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
6072 <TAB>\$(call d1,\$(CHECKSUM)),\
6073 <TAB>\$(call d2,\$(CHECKSUM)))
6075 if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
6076 no_parallelism_make="YES"
6077 AC_MSG_RESULT([yes, disable parallelism])
6079 AC_MSG_RESULT([no, keep parallelism enabled])
6081 rm -rf $TESTGMAKEBUG20033
6083 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
6086 # find if gnumake support file function
6087 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6088 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6089 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6090 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6092 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6093 \$(file >test.txt,Success )
6100 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6101 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6102 HAVE_GNUMAKE_FILE_FUNC=TRUE
6103 AC_MSG_RESULT([yes])
6107 rm -rf $TESTGMAKEFILEFUNC
6108 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6110 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6112 if test "$_make_ver_check" = ""; then
6116 HAVE_LD_HASH_STYLE=FALSE
6117 WITH_LINKER_HASH_STYLE=
6118 AC_MSG_CHECKING([for --hash-style gcc linker support])
6119 if test "$GCC" = "yes"; then
6120 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6121 hash_styles="gnu sysv"
6122 elif test "$with_linker_hash_style" = "no"; then
6125 hash_styles="$with_linker_hash_style"
6128 for hash_style in $hash_styles; do
6129 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6130 hash_style_ldflags_save=$LDFLAGS
6131 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6133 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6140 HAVE_LD_HASH_STYLE=TRUE
6141 WITH_LINKER_HASH_STYLE=$hash_style
6143 [HAVE_LD_HASH_STYLE=FALSE],
6144 [HAVE_LD_HASH_STYLE=FALSE])
6145 LDFLAGS=$hash_style_ldflags_save
6148 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6149 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6153 LDFLAGS=$hash_style_ldflags_save
6157 AC_SUBST(HAVE_LD_HASH_STYLE)
6158 AC_SUBST(WITH_LINKER_HASH_STYLE)
6160 dnl ===================================================================
6161 dnl Check whether there's a Perl version available.
6162 dnl ===================================================================
6163 if test -z "$with_perl_home"; then
6164 AC_PATH_PROG(PERL, perl)
6166 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6167 _perl_path="$with_perl_home/bin/perl"
6168 if test -x "$_perl_path"; then
6171 AC_MSG_ERROR([$_perl_path not found])
6175 dnl ===================================================================
6176 dnl Testing for Perl version 5 or greater.
6177 dnl $] is the Perl version variable, it is returned as an integer
6178 dnl ===================================================================
6179 if test "$PERL"; then
6180 AC_MSG_CHECKING([the Perl version])
6181 ${PERL} -e "exit($]);"
6183 if test "$_perl_version" -lt 5; then
6184 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6186 AC_MSG_RESULT([Perl $_perl_version])
6188 AC_MSG_ERROR([Perl not found, install Perl 5])
6191 dnl ===================================================================
6192 dnl Testing for required Perl modules
6193 dnl ===================================================================
6195 AC_MSG_CHECKING([for required Perl modules])
6196 perl_use_string="use Cwd ; use Digest::MD5"
6197 if test "$_os" = "WINNT"; then
6198 if test -n "$PKGFORMAT"; then
6199 for i in $PKGFORMAT; do
6202 # for getting fonts versions to use in MSI
6203 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6209 if test "$with_system_hsqldb" = "yes"; then
6210 perl_use_string="$perl_use_string ; use Archive::Zip"
6212 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6213 # OpenSSL needs that to build
6214 perl_use_string="$perl_use_string ; use FindBin"
6216 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6217 AC_MSG_RESULT([all modules found])
6219 AC_MSG_RESULT([failed to find some modules])
6220 # Find out which modules are missing.
6221 for i in $perl_use_string; do
6222 if test "$i" != "use" -a "$i" != ";"; then
6223 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6224 missing_perl_modules="$missing_perl_modules $i"
6229 The missing Perl modules are: $missing_perl_modules
6230 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6233 dnl ===================================================================
6234 dnl Check for pkg-config
6235 dnl ===================================================================
6236 if test "$_os" != "WINNT"; then
6240 if test "$_os" != "WINNT"; then
6242 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6243 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6244 # explicitly. Or put /path/to/compiler in PATH yourself.
6246 # Use wrappers for LTO
6247 if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6248 AC_CHECK_TOOL(AR,gcc-ar)
6249 AC_CHECK_TOOL(NM,gcc-nm)
6250 AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6252 AC_CHECK_TOOL(AR,ar)
6253 AC_CHECK_TOOL(NM,nm)
6254 AC_CHECK_TOOL(RANLIB,ranlib)
6256 AC_CHECK_TOOL(OBJDUMP,objdump)
6257 AC_CHECK_TOOL(READELF,readelf)
6258 AC_CHECK_TOOL(STRIP,strip)
6264 AC_SUBST(PKG_CONFIG)
6265 AC_SUBST(PKG_CONFIG_PATH)
6266 AC_SUBST(PKG_CONFIG_LIBDIR)
6271 dnl ===================================================================
6272 dnl pkg-config checks on macOS
6273 dnl ===================================================================
6275 if test $_os = Darwin; then
6276 AC_MSG_CHECKING([for bogus pkg-config])
6277 if test -n "$PKG_CONFIG"; then
6278 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6279 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6281 if test "$enable_bogus_pkg_config" = "yes"; then
6282 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6284 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.])
6288 AC_MSG_RESULT([no, good])
6294 # Return value: $csctest
6298 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6299 if test -n "$regvalue"; then
6307 # Return value: $altest
6311 # We need this check to detect 4.6.1 or above.
6312 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6313 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6314 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6320 for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6321 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6322 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6333 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6334 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6335 if test -n "$regvalue"; then
6342 find_winsdk_version()
6344 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6345 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6347 unset winsdktest winsdkbinsubdir winsdklibsubdir
6351 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6352 if test -n "$regvalue"; then
6353 winsdktest=$regvalue
6354 winsdklibsubdir=win8
6359 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6360 if test -n "$regvalue"; then
6361 winsdktest=$regvalue
6362 winsdklibsubdir=winv6.3
6367 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6368 if test -n "$regvalue"; then
6369 winsdktest=$regvalue
6370 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6371 if test -n "$regvalue"; then
6372 winsdkbinsubdir="$regvalue".0
6373 winsdklibsubdir=$winsdkbinsubdir
6374 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6375 local tmppath_unix=$(cygpath -u "$tmppath")
6376 # test exist the SDK path
6377 if test -d "$tmppath_unix"; then
6378 # when path is convertible to a short path then path is okay
6379 cygpath -d "$tmppath" >/dev/null 2>&1
6380 if test $? -ne 0; then
6381 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6384 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6395 # Return value: From find_winsdk_version
6399 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6400 find_winsdk_version $ver
6401 if test -n "$winsdktest"; then
6409 # Return value: $msmdir
6411 AC_MSG_CHECKING([for MSVC merge modules directory])
6415 dnl Order my_msm_files in increasing order. Then check the directories returned
6416 dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6417 dnl the result will be the highest MSM version found in the highest directory.
6421 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6424 for f in $my_msm_files; do
6425 echo "$as_me:$LINENO: searching for $f" >&5
6431 for f in ${my_msm_files}; do
6432 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6433 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6434 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6435 if test -e "$my_msm_dir${f}"; then
6443 if test -n "$msmdir"; then
6444 msmdir=`cygpath -m "$msmdir"`
6445 AC_MSG_RESULT([$msmdir])
6447 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6448 AC_MSG_FAILURE([not found])
6450 AC_MSG_WARN([not found (check config.log)])
6451 add_warning "MSM none of ${my_msm_files} found"
6456 find_msvc_x64_dlls()
6458 # Return value: $msvcdllpath, $msvcdlls
6460 AC_MSG_CHECKING([for MSVC x64 DLL path])
6462 dnl Order crtver in increasing order. Then check the directories returned by
6463 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6464 dnl the result will be the highest CRT version found in the highest directory.
6466 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6469 for crtver in 141 142 143; do
6470 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6471 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6472 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6473 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6479 AC_MSG_RESULT([$msvcdllpath])
6480 AC_MSG_CHECKING([for MSVC x64 DLLs])
6481 msvcdlls="msvcp140.dll vcruntime140.dll"
6482 for dll in $msvcdlls; do
6483 if ! test -f "$msvcdllpath/$dll"; then
6484 AC_MSG_FAILURE([missing $dll])
6487 AC_MSG_RESULT([found all ($msvcdlls)])
6490 dnl =========================================
6491 dnl Check for the Windows SDK.
6492 dnl =========================================
6493 if test "$_os" = "WINNT"; then
6494 AC_MSG_CHECKING([for Windows SDK])
6495 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6497 WINDOWS_SDK_HOME=$winsdktest
6499 # normalize if found
6500 if test -n "$WINDOWS_SDK_HOME"; then
6501 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6502 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6505 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6508 if test -n "$WINDOWS_SDK_HOME"; then
6509 # Remove a possible trailing backslash
6510 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6512 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6513 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6514 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6515 have_windows_sdk_headers=yes
6516 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6517 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6518 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6519 have_windows_sdk_headers=yes
6520 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6521 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6522 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6523 have_windows_sdk_headers=yes
6525 have_windows_sdk_headers=no
6528 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6529 have_windows_sdk_libs=yes
6530 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6531 have_windows_sdk_libs=yes
6533 have_windows_sdk_libs=no
6536 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6537 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6538 the Windows SDK are installed.])
6542 if test -z "$WINDOWS_SDK_HOME"; then
6543 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6544 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6545 WINDOWS_SDK_VERSION=80
6546 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6547 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6548 WINDOWS_SDK_VERSION=81
6549 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6550 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6551 WINDOWS_SDK_VERSION=10
6552 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6554 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6556 PathFormat "$WINDOWS_SDK_HOME"
6557 WINDOWS_SDK_HOME="$formatted_path"
6558 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6559 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6560 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6561 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6562 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6563 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6564 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6568 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6569 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6570 dnl but not in v8.0), so allow this to be overridden with a
6571 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6572 dnl and configuration error if no WiLangId.vbs is found would arguably be
6573 dnl better, but I do not know under which conditions exactly it is needed by
6575 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6576 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6577 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6578 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6579 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6580 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6582 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6583 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6584 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6586 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6587 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6588 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6591 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6592 if test -n "$with_package_format" -a "$with_package_format" != no; then
6593 for i in "$with_package_format"; do
6594 if test "$i" = "msi"; then
6595 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6596 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6603 AC_SUBST(WINDOWS_SDK_HOME)
6604 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6605 AC_SUBST(WINDOWS_SDK_VERSION)
6606 AC_SUBST(WINDOWS_SDK_WILANGID)
6608 if test "$build_os" = "cygwin"; then
6609 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6610 dnl dir, it also determines that dir's path w/o an arch segment if any,
6611 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6612 AC_MSG_CHECKING([for midl.exe])
6615 if test -n "$winsdkbinsubdir" \
6616 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6618 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6619 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6620 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6621 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6622 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6623 elif test -f "$winsdktest/Bin/midl.exe"; then
6624 MIDL_PATH=$winsdktest/Bin
6625 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6627 if test ! -f "$MIDL_PATH/midl.exe"; then
6628 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6630 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6633 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6634 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6636 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6637 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6638 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6639 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6640 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6641 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6642 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6643 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6644 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6645 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6646 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6647 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6649 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6653 AC_MSG_CHECKING([for csc.exe])
6655 if test -f "$csctest/csc.exe"; then
6658 if test ! -f "$CSC_PATH/csc.exe"; then
6659 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6661 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6664 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6667 AC_MSG_CHECKING([for al.exe])
6669 if test -n "$winsdkbinsubdir" \
6670 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6672 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6673 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6674 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6675 elif test -f "$winsdktest/Bin/al.exe"; then
6676 AL_PATH="$winsdktest/Bin"
6679 if test -z "$AL_PATH"; then
6681 if test -f "$altest/bin/al.exe"; then
6682 AL_PATH="$altest/bin"
6683 elif test -f "$altest/al.exe"; then
6687 if test ! -f "$AL_PATH/al.exe"; then
6688 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6690 AC_MSG_RESULT([$AL_PATH/al.exe])
6693 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6695 dnl Check mscoree.lib / .NET Framework dir
6696 AC_MSG_CHECKING(.NET Framework)
6698 PathFormat "$frametest"
6699 frametest="$formatted_path"
6700 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6701 DOTNET_FRAMEWORK_HOME="$frametest"
6704 if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6705 DOTNET_FRAMEWORK_HOME="$winsdktest"
6708 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
6709 AC_MSG_ERROR([mscoree.lib not found])
6711 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6713 PathFormat "$MIDL_PATH"
6714 MIDL_PATH="$formatted_path"
6716 PathFormat "$AL_PATH"
6717 AL_PATH="$formatted_path"
6719 PathFormat "$DOTNET_FRAMEWORK_HOME"
6720 DOTNET_FRAMEWORK_HOME="$formatted_path"
6722 PathFormat "$CSC_PATH"
6723 CSC_PATH="$formatted_path"
6726 dnl ===================================================================
6727 dnl Testing for C++ compiler and version...
6728 dnl ===================================================================
6730 if test "$_os" != "WINNT"; then
6731 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6732 save_CXXFLAGS=$CXXFLAGS
6734 CXXFLAGS=$save_CXXFLAGS
6735 if test -z "$CXX_BASE"; then
6736 CXX_BASE=`first_arg_basename "$CXX"`
6740 dnl check for GNU C++ compiler version
6741 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6742 AC_MSG_CHECKING([the GNU C++ compiler version])
6744 _gpp_version=`$CXX -dumpversion`
6745 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6747 if test "$_gpp_majmin" -lt "700"; then
6748 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6750 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6753 dnl see https://code.google.com/p/android/issues/detail?id=41770
6757 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6758 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6759 #include <bits/c++config.h>]],[[
6760 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6761 && !defined(_GLIBCXX__PTHREADS) \
6762 && !defined(_GLIBCXX_HAS_GTHREADS)
6765 ]])],[AC_MSG_RESULT([yes])
6766 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6768 if test $glibcxx_threads = yes; then
6769 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6772 AC_SUBST(BOOST_CXXFLAGS)
6775 # prefx CXX with ccache if needed
6777 if test "$CCACHE" != ""; then
6778 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6780 save_CXXFLAGS=$CXXFLAGS
6781 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6782 # msvc does not fail on unknown options, check stdout
6783 if test "$COM" = MSC; then
6784 CXXFLAGS="$CXXFLAGS -nologo"
6786 save_ac_cxx_werror_flag=$ac_cxx_werror_flag
6787 ac_cxx_werror_flag=yes
6788 dnl an empty program will do, we're checking the compiler flags
6789 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6790 [use_ccache=yes], [use_ccache=no])
6791 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6792 AC_MSG_RESULT([yes])
6795 CXX_BASE="ccache $CXX_BASE"
6798 CXXFLAGS=$save_CXXFLAGS
6799 ac_cxx_werror_flag=$save_ac_cxx_werror_flag
6803 dnl ===================================================================
6804 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6805 dnl ===================================================================
6807 if test "$_os" != "WINNT"; then
6810 dnl Check whether there's a C pre-processor.
6815 dnl ===================================================================
6816 dnl Find integral type sizes and alignments
6817 dnl ===================================================================
6819 if test "$_os" != "WINNT"; then
6821 AC_CHECK_SIZEOF(long)
6822 AC_CHECK_SIZEOF(short)
6823 AC_CHECK_SIZEOF(int)
6824 AC_CHECK_SIZEOF(long long)
6825 AC_CHECK_SIZEOF(double)
6826 AC_CHECK_SIZEOF(void*)
6827 AC_CHECK_SIZEOF(size_t)
6829 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6830 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6831 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6832 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6833 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6834 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
6836 dnl Allow build without AC_CHECK_ALIGNOF, grrr
6837 m4_pattern_allow([AC_CHECK_ALIGNOF])
6838 m4_ifdef([AC_CHECK_ALIGNOF],
6840 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6841 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6842 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6843 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6846 case "$_os-$host_cpu" in
6848 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6849 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6850 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6851 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6854 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6855 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6856 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6857 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6860 if test -z "$ac_cv_alignof_short" -o \
6861 -z "$ac_cv_alignof_int" -o \
6862 -z "$ac_cv_alignof_long" -o \
6863 -z "$ac_cv_alignof_double"; then
6864 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.])
6870 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6871 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6872 if test $ac_cv_sizeof_long -eq 8; then
6873 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6874 elif test $ac_cv_sizeof_double -eq 8; then
6875 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6877 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6880 dnl Check for large file support
6882 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6883 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6885 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6886 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6890 SAL_TYPES_SIZEOFSHORT=2
6891 SAL_TYPES_SIZEOFINT=4
6892 SAL_TYPES_SIZEOFLONG=4
6893 SAL_TYPES_SIZEOFLONGLONG=8
6894 if test $WIN_HOST_BITS -eq 32; then
6895 SAL_TYPES_SIZEOFPOINTER=4
6898 SAL_TYPES_SIZEOFPOINTER=8
6901 SAL_TYPES_ALIGNMENT2=2
6902 SAL_TYPES_ALIGNMENT4=4
6903 SAL_TYPES_ALIGNMENT8=8
6906 AC_SUBST(LFS_CFLAGS)
6907 AC_SUBST(SIZEOF_SIZE_T)
6909 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6910 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6911 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6912 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6913 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6914 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6915 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6916 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6918 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
6919 AC_MSG_CHECKING([whether jumbo sheets are supported])
6920 if test "$_os" != "WINNT"; then
6921 if test $SAL_TYPES_SIZEOFLONG -gt 4; then
6922 AC_MSG_RESULT([yes])
6923 ENABLE_JUMBO_SHEETS=TRUE
6924 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
6929 if test $WIN_HOST_BITS -gt 32; then
6930 # 64bit windows is special-cased for tools::Long because long is 32bit
6931 AC_MSG_RESULT([yes])
6932 ENABLE_JUMBO_SHEETS=TRUE
6933 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
6938 AC_SUBST(ENABLE_JUMBO_SHEETS)
6940 dnl ===================================================================
6941 dnl Check whether to enable runtime optimizations
6942 dnl ===================================================================
6943 ENABLE_RUNTIME_OPTIMIZATIONS=
6944 AC_MSG_CHECKING([whether to enable runtime optimizations])
6945 if test -z "$enable_runtime_optimizations"; then
6949 enable_runtime_optimizations=no
6955 if test "$enable_runtime_optimizations" != no; then
6956 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6957 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6958 AC_MSG_RESULT([yes])
6962 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6964 dnl ===================================================================
6965 dnl Check if valgrind headers are available
6966 dnl ===================================================================
6968 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6969 prev_cppflags=$CPPFLAGS
6970 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6971 # or where does it come from?
6972 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6973 AC_CHECK_HEADER([valgrind/valgrind.h],
6974 [ENABLE_VALGRIND=TRUE])
6975 CPPFLAGS=$prev_cppflags
6977 AC_SUBST([ENABLE_VALGRIND])
6978 if test -z "$ENABLE_VALGRIND"; then
6979 if test "$with_valgrind" = yes; then
6980 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6984 AC_SUBST([VALGRIND_CFLAGS])
6987 dnl ===================================================================
6988 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6989 dnl ===================================================================
6991 # We need at least the sys/sdt.h include header.
6992 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6993 if test "$SDT_H_FOUND" = "TRUE"; then
6994 # Found sys/sdt.h header, now make sure the c++ compiler works.
6995 # Old g++ versions had problems with probes in constructors/destructors.
6996 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6998 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6999 #include <sys/sdt.h>
7007 ProbeClass(int& v, const char *n) : ref(v), name(n)
7009 DTRACE_PROBE2(_test_, cons, name, ref);
7012 void method(int min)
7014 DTRACE_PROBE3(_test_, meth, name, ref, min);
7020 DTRACE_PROBE2(_test_, dest, name, ref);
7025 DTRACE_PROBE1(_test_, call, i);
7026 ProbeClass inst = ProbeClass(i, "call");
7028 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7029 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7032 AC_CONFIG_HEADERS([config_host/config_probes.h])
7034 dnl ===================================================================
7036 dnl ===================================================================
7037 HAVE_GCC_STACK_CLASH_PROTECTION=
7038 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7039 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7041 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7043 [AC_LANG_PROGRAM(, [[return 0;]])],
7044 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7045 [AC_MSG_RESULT([no])])
7048 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7050 CFLAGS="$CFLAGS -Werror -mno-avx"
7051 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7053 if test "$HAVE_GCC_AVX" = "TRUE"; then
7054 AC_MSG_RESULT([yes])
7059 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7060 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7062 if (__sync_add_and_fetch(&v, 1) != 1 ||
7063 __sync_sub_and_fetch(&v, 1) != 0)
7065 __sync_synchronize();
7066 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7070 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7071 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7072 AC_MSG_RESULT([yes])
7073 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7078 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7080 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7083 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7085 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7086 AC_MSG_RESULT([yes])
7087 ], [AC_MSG_RESULT([no])])
7090 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7092 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7095 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7097 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7098 AC_MSG_RESULT([yes])
7099 ], [AC_MSG_RESULT([no])])
7102 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7104 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7106 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7108 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7109 AC_MSG_RESULT([yes])
7110 ], [AC_MSG_RESULT([no])])
7113 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7115 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7118 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7120 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7121 AC_MSG_RESULT([yes])
7122 ], [AC_MSG_RESULT([no])])
7125 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7127 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7130 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7132 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7133 AC_MSG_RESULT([yes])
7134 ], [AC_MSG_RESULT([no])])
7137 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7139 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7141 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7143 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7144 AC_MSG_RESULT([yes])
7145 ], [AC_MSG_RESULT([no])])
7148 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7150 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7152 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7154 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7155 AC_MSG_RESULT([yes])
7156 ], [AC_MSG_RESULT([no])])
7159 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7161 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7163 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7165 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7166 AC_MSG_RESULT([yes])
7167 ], [AC_MSG_RESULT([no])])
7170 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7172 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7175 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7177 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7178 AC_MSG_RESULT([yes])
7179 ], [AC_MSG_RESULT([no])])
7182 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7184 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7187 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7189 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7190 AC_MSG_RESULT([yes])
7191 ], [AC_MSG_RESULT([no])])
7195 AC_SUBST(HAVE_GCC_AVX)
7196 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7197 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7199 dnl ===================================================================
7200 dnl Identify the C++ library
7201 dnl ===================================================================
7203 AC_MSG_CHECKING([what the C++ library is])
7206 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7212 [CPP_LIBRARY=GLIBCXX
7213 cpp_library_name="GNU libstdc++"
7216 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7218 #ifndef _LIBCPP_VERSION
7223 cpp_library_name="LLVM libc++"
7224 AC_DEFINE([HAVE_LIBCXX])
7226 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7233 cpp_library_name="Microsoft"
7235 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7236 AC_MSG_RESULT([$cpp_library_name])
7238 AC_SUBST([HAVE_LIBSTDCPP])
7240 dnl ===================================================================
7242 dnl ===================================================================
7243 AC_PATH_PROG(GPERF, gperf)
7244 if test -z "$GPERF"; then
7245 AC_MSG_ERROR([gperf not found but needed. Install it.])
7247 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7248 GPERF=`cygpath -m $GPERF`
7250 AC_MSG_CHECKING([whether gperf is new enough])
7251 my_gperf_ver1=$($GPERF --version | head -n 1)
7252 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7253 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7254 if test "$my_gperf_ver3" -ge 301; then
7255 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7257 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7261 dnl ===================================================================
7262 dnl Check for system libcmis
7263 dnl ===================================================================
7264 # libcmis requires curl and we can't build curl for iOS
7265 if test "$test_cmis" = "yes" -a "$enable_cmis" = "yes"; then
7266 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7271 AC_SUBST(ENABLE_LIBCMIS)
7273 dnl ===================================================================
7275 dnl ===================================================================
7277 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7279 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7280 if test "$with_latest_c__" = yes; then
7281 CXXFLAGS_CXX11=-std:c++latest
7283 CXXFLAGS_CXX11=-std:c++17
7285 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7286 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7287 my_flags='-std=c++17 -std=c++1z'
7288 if test "$with_latest_c__" = yes; then
7289 my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7291 for flag in $my_flags; do
7292 if test "$COM" = MSC; then
7293 flag="-Xclang $flag"
7295 save_CXXFLAGS=$CXXFLAGS
7296 CXXFLAGS="$CXXFLAGS $flag -Werror"
7297 if test "$SYSTEM_LIBCMIS" = TRUE; then
7298 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7301 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7302 #include <algorithm>
7303 #include <functional>
7306 #if defined SYSTEM_LIBCMIS
7307 // See ucb/source/ucp/cmis/auth_provider.hxx:
7308 #if !defined __clang__
7309 #pragma GCC diagnostic push
7310 #pragma GCC diagnostic ignored "-Wdeprecated"
7311 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7313 #include <libcmis/libcmis.hxx>
7314 #if !defined __clang__
7315 #pragma GCC diagnostic pop
7319 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7320 std::sort(v.begin(), v.end(), fn);
7322 ]])],[CXXFLAGS_CXX11=$flag])
7324 CXXFLAGS=$save_CXXFLAGS
7325 if test -n "$CXXFLAGS_CXX11"; then
7330 if test -n "$CXXFLAGS_CXX11"; then
7331 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7335 AC_SUBST(CXXFLAGS_CXX11)
7337 if test "$GCC" = "yes"; then
7338 save_CXXFLAGS=$CXXFLAGS
7339 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7341 CXXFLAGS=$save_CXXFLAGS
7342 AC_SUBST(ATOMIC_LIB)
7345 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7346 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7347 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7348 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7349 dnl again towards 4.7.2:
7350 if test $CPP_LIBRARY = GLIBCXX; then
7351 AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7353 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7355 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7356 // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7357 // GCC 4.7.0: 20120322
7358 // GCC 4.7.1: 20120614
7359 // and using a range check is not possible as the mapping between
7360 // __GLIBCXX__ values and GCC versions is not monotonic
7365 ]])], [AC_MSG_RESULT(no, ok)],
7366 [AC_MSG_ERROR(yes)])
7370 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7371 save_CXXFLAGS=$CXXFLAGS
7372 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7375 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7378 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7394 a thinga[]={{0,0}, {1,1}};
7395 b thingb[]={{0,0}, {1,1}};
7396 size_t i = sizeof(sal_n_array_size(thinga));
7397 size_t j = sizeof(sal_n_array_size(thingb));
7398 return !(i != 0 && j != 0);
7400 ], [ AC_MSG_RESULT(yes) ],
7401 [ AC_MSG_ERROR(no)])
7403 CXXFLAGS=$save_CXXFLAGS
7405 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7406 if test "$GCC" = yes; then
7407 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7409 save_CXXFLAGS=$CXXFLAGS
7410 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7411 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7412 CXXFLAGS=$save_CXXFLAGS
7414 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7415 AC_MSG_RESULT([yes])
7420 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7422 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7424 save_CXXFLAGS=$CXXFLAGS
7425 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7426 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7427 #include <algorithm>
7428 #include <initializer_list>
7430 template<typename T> class S {
7434 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7436 constinit S<int> s{3, 2, 1};
7438 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7439 AC_MSG_RESULT([yes])
7440 ], [AC_MSG_RESULT([no])])
7441 CXXFLAGS=$save_CXXFLAGS
7444 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7446 save_CXXFLAGS=$CXXFLAGS
7447 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7448 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7450 #include <type_traits>
7451 // Don't check size_type directly, as it was called index_type before P1872R0:
7452 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7454 AC_DEFINE([HAVE_CPP_SPAN],[1])
7455 AC_MSG_RESULT([yes])
7456 ], [AC_MSG_RESULT([no])])
7457 CXXFLAGS=$save_CXXFLAGS
7460 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7462 save_CXXFLAGS=$CXXFLAGS
7463 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7464 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7465 struct S1 { S1(S1 &&); };
7467 S1 f(S2 s) { return s; }
7469 AC_DEFINE([HAVE_P1155R3],[1])
7470 AC_MSG_RESULT([yes])
7471 ], [AC_MSG_RESULT([no])])
7472 CXXFLAGS=$save_CXXFLAGS
7475 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7476 HAVE_CXX20_ATOMIC_REF=
7478 save_CXXFLAGS=$CXXFLAGS
7479 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7480 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7483 std::atomic_ref<int> y(x);
7485 HAVE_CXX20_ATOMIC_REF=TRUE
7486 AC_MSG_RESULT([yes])
7487 ], [AC_MSG_RESULT([no])])
7488 CXXFLAGS=$save_CXXFLAGS
7490 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7492 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7493 dnl which is included in -Wextra anyway):
7494 HAVE_WDEPRECATED_COPY_DTOR=
7495 if test "$GCC" = yes; then
7496 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7498 save_CXXFLAGS=$CXXFLAGS
7499 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7500 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7501 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7502 AC_MSG_RESULT([yes])
7503 ], [AC_MSG_RESULT([no])])
7504 CXXFLAGS=$save_CXXFLAGS
7507 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7509 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7510 dnl uninitialized warning for code like
7513 dnl boost::optional<OString> * g(bool b) {
7514 dnl boost::optional<OString> o;
7516 dnl return new boost::optional<OString>(o);
7519 dnl (as is e.g. present, in a slightly more elaborate form, in
7520 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7521 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7522 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7523 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7524 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7526 save_CXXFLAGS=$CXXFLAGS
7527 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7528 if test "$ENABLE_OPTIMIZED" = TRUE; then
7529 CXXFLAGS="$CXXFLAGS -O2"
7531 CXXFLAGS="$CXXFLAGS -O0"
7533 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7542 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7543 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7549 char stg[sizeof (S1)];
7557 ]])], [AC_MSG_RESULT([no])], [
7558 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7559 AC_MSG_RESULT([yes])
7561 CXXFLAGS=$save_CXXFLAGS
7564 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7566 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7567 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7568 dnl hits us e.g. with GCC 10 and --enable-optimized at
7570 dnl In file included from include/rtl/string.hxx:49,
7571 dnl from include/rtl/ustring.hxx:43,
7572 dnl from include/osl/file.hxx:35,
7573 dnl from include/codemaker/global.hxx:28,
7574 dnl from include/codemaker/options.hxx:23,
7575 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7576 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7577 dnl inlined from ‘static char* rtl::ToStringHelper<const char [N]>::addData(char*, const char*) [with long unsigned int N = 3]’ at include/rtl/stringconcat.hxx:147:85,
7578 dnl inlined from ‘char* rtl::OStringConcat<T1, T2>::addData(char*) const [with T1 = const char [3]; T2 = rtl::OString]’ at include/rtl/stringconcat.hxx:226:103,
7579 dnl inlined from ‘rtl::OStringBuffer& rtl::OStringBuffer::append(rtl::OStringConcat<T1, T2>&&) [with T1 = const char [3]; T2 = rtl::OString]’ at include/rtl/strbuf.hxx:599:30,
7580 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7581 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7582 dnl 78 | memcpy( buffer, data, length );
7583 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7584 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7585 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7586 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7588 save_CXXFLAGS=$CXXFLAGS
7589 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7590 if test "$ENABLE_OPTIMIZED" = TRUE; then
7591 CXXFLAGS="$CXXFLAGS -O2"
7593 CXXFLAGS="$CXXFLAGS -O0"
7595 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7596 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7597 void fill(char const * begin, char const * end, char c);
7603 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7604 __builtin_strncpy(c.username, "root", sizeof(c.username));
7606 ]])], [AC_MSG_RESULT([no])], [
7607 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7608 AC_MSG_RESULT([yes])
7610 CXXFLAGS=$save_CXXFLAGS
7613 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7615 HAVE_DLLEXPORTINLINES=
7616 dnl At least for Clang 14 trunk, -Zc:dllexportInlines- would cause lots of unresolved symbols when
7617 dnl linking e.g. Library_cppuhelper, for whatever reason:
7618 if test "$_os" = "WINNT" && test "$COM_IS_CLANG" != TRUE; then
7619 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7621 save_CXXFLAGS=$CXXFLAGS
7622 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7623 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7624 HAVE_DLLEXPORTINLINES=TRUE
7625 AC_MSG_RESULT([yes])
7626 ], [AC_MSG_RESULT([no])])
7627 CXXFLAGS=$save_CXXFLAGS
7630 AC_SUBST([HAVE_DLLEXPORTINLINES])
7632 dnl ===================================================================
7633 dnl CPU Intrinsics support - SSE, AVX
7634 dnl ===================================================================
7636 CXXFLAGS_INTRINSICS_SSE2=
7637 CXXFLAGS_INTRINSICS_SSSE3=
7638 CXXFLAGS_INTRINSICS_SSE41=
7639 CXXFLAGS_INTRINSICS_SSE42=
7640 CXXFLAGS_INTRINSICS_AVX=
7641 CXXFLAGS_INTRINSICS_AVX2=
7642 CXXFLAGS_INTRINSICS_AVX512=
7643 CXXFLAGS_INTRINSICS_AVX512F=
7644 CXXFLAGS_INTRINSICS_F16C=
7645 CXXFLAGS_INTRINSICS_FMA=
7647 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7648 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7655 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7656 flag_avx512f=-mavx512f
7660 # With MSVC using -arch is in fact not necessary for being able
7661 # to use CPU intrinsics, code using AVX512F intrinsics will compile
7662 # even if compiled with -arch:AVX, the -arch option really only affects
7663 # instructions generated for C/C++ code.
7664 # So use the matching same (or lower) -arch options, but only in order
7665 # to generate the best matching instructions for the C++ code surrounding
7667 # SSE2 is the default for x86/x64, so no need to specify the option.
7669 # No specific options for these, use the next lower.
7670 flag_ssse3="$flag_sse2"
7671 flag_sse41="$flag_sse2"
7672 flag_sse42="$flag_sse2"
7674 flag_avx2=-arch:AVX2
7675 flag_avx512=-arch:AVX512
7676 # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7677 flag_avx512f=-arch:AVX2
7678 # No MSVC options for these.
7679 flag_f16c="$flag_sse2"
7680 flag_fma="$flag_sse2"
7683 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7685 save_CXXFLAGS=$CXXFLAGS
7686 CXXFLAGS="$CXXFLAGS $flag_sse2"
7687 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7688 #include <emmintrin.h>
7690 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7691 c = _mm_xor_si128 (a, b);
7695 [can_compile_sse2=yes],
7696 [can_compile_sse2=no])
7698 CXXFLAGS=$save_CXXFLAGS
7699 AC_MSG_RESULT([${can_compile_sse2}])
7700 if test "${can_compile_sse2}" = "yes" ; then
7701 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7704 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7706 save_CXXFLAGS=$CXXFLAGS
7707 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7708 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7709 #include <tmmintrin.h>
7711 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7712 c = _mm_maddubs_epi16 (a, b);
7716 [can_compile_ssse3=yes],
7717 [can_compile_ssse3=no])
7719 CXXFLAGS=$save_CXXFLAGS
7720 AC_MSG_RESULT([${can_compile_ssse3}])
7721 if test "${can_compile_ssse3}" = "yes" ; then
7722 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7725 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7727 save_CXXFLAGS=$CXXFLAGS
7728 CXXFLAGS="$CXXFLAGS $flag_sse41"
7729 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7730 #include <smmintrin.h>
7732 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7733 c = _mm_cmpeq_epi64 (a, b);
7737 [can_compile_sse41=yes],
7738 [can_compile_sse41=no])
7740 CXXFLAGS=$save_CXXFLAGS
7741 AC_MSG_RESULT([${can_compile_sse41}])
7742 if test "${can_compile_sse41}" = "yes" ; then
7743 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7746 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7748 save_CXXFLAGS=$CXXFLAGS
7749 CXXFLAGS="$CXXFLAGS $flag_sse42"
7750 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7751 #include <nmmintrin.h>
7753 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7754 c = _mm_cmpgt_epi64 (a, b);
7758 [can_compile_sse42=yes],
7759 [can_compile_sse42=no])
7761 CXXFLAGS=$save_CXXFLAGS
7762 AC_MSG_RESULT([${can_compile_sse42}])
7763 if test "${can_compile_sse42}" = "yes" ; then
7764 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7767 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7769 save_CXXFLAGS=$CXXFLAGS
7770 CXXFLAGS="$CXXFLAGS $flag_avx"
7771 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7772 #include <immintrin.h>
7774 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7775 c = _mm256_xor_ps(a, b);
7779 [can_compile_avx=yes],
7780 [can_compile_avx=no])
7782 CXXFLAGS=$save_CXXFLAGS
7783 AC_MSG_RESULT([${can_compile_avx}])
7784 if test "${can_compile_avx}" = "yes" ; then
7785 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7788 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7790 save_CXXFLAGS=$CXXFLAGS
7791 CXXFLAGS="$CXXFLAGS $flag_avx2"
7792 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7793 #include <immintrin.h>
7795 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7796 c = _mm256_maddubs_epi16(a, b);
7800 [can_compile_avx2=yes],
7801 [can_compile_avx2=no])
7803 CXXFLAGS=$save_CXXFLAGS
7804 AC_MSG_RESULT([${can_compile_avx2}])
7805 if test "${can_compile_avx2}" = "yes" ; then
7806 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7809 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7811 save_CXXFLAGS=$CXXFLAGS
7812 CXXFLAGS="$CXXFLAGS $flag_avx512"
7813 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7814 #include <immintrin.h>
7816 __m512i a = _mm512_loadu_si512(0);
7817 __m512d v1 = _mm512_load_pd(0);
7818 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
7819 __m512d v2 = _mm512_abs_pd(v1);
7823 [can_compile_avx512=yes],
7824 [can_compile_avx512=no])
7826 CXXFLAGS=$save_CXXFLAGS
7827 AC_MSG_RESULT([${can_compile_avx512}])
7828 if test "${can_compile_avx512}" = "yes" ; then
7829 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7830 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
7833 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7835 save_CXXFLAGS=$CXXFLAGS
7836 CXXFLAGS="$CXXFLAGS $flag_f16c"
7837 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7838 #include <immintrin.h>
7840 __m128i a = _mm_set1_epi32 (0);
7842 c = _mm_cvtph_ps(a);
7846 [can_compile_f16c=yes],
7847 [can_compile_f16c=no])
7849 CXXFLAGS=$save_CXXFLAGS
7850 AC_MSG_RESULT([${can_compile_f16c}])
7851 if test "${can_compile_f16c}" = "yes" ; then
7852 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7855 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7857 save_CXXFLAGS=$CXXFLAGS
7858 CXXFLAGS="$CXXFLAGS $flag_fma"
7859 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7860 #include <immintrin.h>
7862 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7863 d = _mm256_fmadd_ps(a, b, c);
7867 [can_compile_fma=yes],
7868 [can_compile_fma=no])
7870 CXXFLAGS=$save_CXXFLAGS
7871 AC_MSG_RESULT([${can_compile_fma}])
7872 if test "${can_compile_fma}" = "yes" ; then
7873 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7876 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7877 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7878 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7879 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7880 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7881 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7882 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7883 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
7884 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7885 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7887 dnl ===================================================================
7888 dnl system stl sanity tests
7889 dnl ===================================================================
7890 if test "$_os" != "WINNT"; then
7894 save_CPPFLAGS="$CPPFLAGS"
7895 if test -n "$MACOSX_SDK_PATH"; then
7896 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7899 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7901 if test "$CPP_LIBRARY" = GLIBCXX; then
7902 dnl gcc#19664, gcc#22482, rhbz#162935
7903 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7904 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7905 AC_MSG_RESULT([$stlvisok])
7906 if test "$stlvisok" = "no"; then
7907 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7911 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7912 # when we don't make any dynamic libraries?
7913 if test "$DISABLE_DYNLOADING" = ""; then
7914 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7915 cat > conftestlib1.cc <<_ACEOF
7916 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7917 struct S2: S1<int> { virtual ~S2(); };
7920 cat > conftestlib2.cc <<_ACEOF
7921 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7922 struct S2: S1<int> { virtual ~S2(); };
7923 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7925 gccvisinlineshiddenok=yes
7926 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7927 gccvisinlineshiddenok=no
7929 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7930 dnl known to not work with -z defs (unsetting which makes the test
7932 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7933 if test "$COM_IS_CLANG" = TRUE; then
7934 for i in $CXX $CXXFLAGS; do
7937 my_linkflagsnoundefs=
7943 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7944 gccvisinlineshiddenok=no
7949 AC_MSG_RESULT([$gccvisinlineshiddenok])
7950 if test "$gccvisinlineshiddenok" = "no"; then
7951 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7955 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7956 cat >visibility.cxx <<_ACEOF
7957 #pragma GCC visibility push(hidden)
7958 struct __attribute__ ((visibility ("default"))) TestStruct {
7961 __attribute__ ((visibility ("default"))) void TestFunc() {
7965 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7970 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7973 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7985 rm -f visibility.s visibility.cxx
7987 AC_MSG_RESULT([$gccvisbroken])
7988 if test "$gccvisbroken" = "yes"; then
7989 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7992 CPPFLAGS="$save_CPPFLAGS"
7994 AC_MSG_CHECKING([if CET endbranch is recognized])
7995 cat > endbr.s <<_ACEOF
7998 HAVE_ASM_END_BRANCH_INS_SUPPORT=
7999 if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8000 AC_MSG_RESULT([yes])
8001 HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8005 rm -f endbr.s endbr.o
8006 AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8011 dnl ===================================================================
8013 dnl ===================================================================
8015 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8016 if test "$GCC" = "yes"; then
8017 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8019 save_CXXFLAGS=$CXXFLAGS
8020 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8021 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8022 CXXFLAGS=$save_CXXFLAGS
8024 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8025 AC_MSG_RESULT([yes])
8030 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8032 dnl ===================================================================
8033 dnl Compiler plugins
8034 dnl ===================================================================
8037 # currently only Clang
8039 if test "$COM_IS_CLANG" != "TRUE"; then
8040 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8041 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8042 enable_compiler_plugins=no
8046 COMPILER_PLUGINS_COM_IS_CLANG=
8047 if test "$COM_IS_CLANG" = "TRUE"; then
8048 if test -n "$enable_compiler_plugins"; then
8049 compiler_plugins="$enable_compiler_plugins"
8050 elif test -n "$ENABLE_DBGUTIL"; then
8051 compiler_plugins=test
8055 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8056 if test "$CLANGVER" -lt 50002; then
8057 if test "$compiler_plugins" = yes; then
8058 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
8064 if test "$compiler_plugins" != "no"; then
8065 dnl The prefix where Clang resides, override to where Clang resides if
8066 dnl using a source build:
8067 if test -z "$CLANGDIR"; then
8068 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8070 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8071 if test -z "$COMPILER_PLUGINS_CXX"; then
8072 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8074 clangbindir=$CLANGDIR/bin
8075 if test "$build_os" = "cygwin"; then
8076 clangbindir=$(cygpath -u "$clangbindir")
8078 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8079 if test -n "$LLVM_CONFIG"; then
8080 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8081 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8082 if test -z "$CLANGLIBDIR"; then
8083 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8085 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8086 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8087 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8088 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8089 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8091 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8092 clangobjdir=$($LLVM_CONFIG --obj-root)
8093 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8094 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8097 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8101 save_CPPFLAGS=$CPPFLAGS
8102 save_CXXFLAGS=$CXXFLAGS
8103 save_LDFLAGS=$LDFLAGS
8105 CXX=$COMPILER_PLUGINS_CXX
8106 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8107 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8108 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8109 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8110 [COMPILER_PLUGINS=TRUE],
8112 if test "$compiler_plugins" = "yes"; then
8113 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8115 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8116 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8119 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8120 dnl comment in compilerplugins/Makefile-clang.mk:
8121 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8123 AC_MSG_CHECKING([for clang libraries to use])
8124 if test -z "$CLANGTOOLLIBS"; then
8125 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8126 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8128 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8129 [[ clang::FullSourceLoc().dump(); ]])
8130 ],[CLANGTOOLLIBS="$LIBS"],[])
8132 if test -z "$CLANGTOOLLIBS"; then
8133 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8135 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8136 [[ clang::FullSourceLoc().dump(); ]])
8137 ],[CLANGTOOLLIBS="$LIBS"],[])
8139 AC_MSG_RESULT([$CLANGTOOLLIBS])
8140 if test -z "$CLANGTOOLLIBS"; then
8141 if test "$compiler_plugins" = "yes"; then
8142 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8144 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8145 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8149 if test -n "$COMPILER_PLUGINS"; then
8150 if test -z "$CLANGSYSINCLUDE"; then
8151 if test -n "$LLVM_CONFIG"; then
8152 # Path to the clang system headers (no idea if there's a better way to get it).
8153 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8160 CPPFLAGS=$save_CPPFLAGS
8161 CXXFLAGS=$save_CXXFLAGS
8162 LDFLAGS=$save_LDFLAGS
8166 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8167 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8173 [AC_MSG_RESULT([yes])
8174 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8175 [AC_MSG_RESULT([no])])
8176 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8179 if test "$enable_compiler_plugins" = "yes"; then
8180 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8183 COMPILER_PLUGINS_ANALYZER_PCH=
8184 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8185 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8187 AC_SUBST(COMPILER_PLUGINS)
8188 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8189 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8190 AC_SUBST(COMPILER_PLUGINS_CXX)
8191 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8192 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8193 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8194 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8196 AC_SUBST(CLANGLIBDIR)
8197 AC_SUBST(CLANGTOOLLIBS)
8198 AC_SUBST(CLANGSYSINCLUDE)
8200 # Plugin to help linker.
8201 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8202 # This makes --enable-lto build with clang work.
8205 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8206 AC_SUBST(HAVE_POSIX_FALLOCATE)
8208 JITC_PROCESSOR_TYPE=""
8209 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8210 # IBMs JDK needs this...
8211 JITC_PROCESSOR_TYPE=6
8212 export JITC_PROCESSOR_TYPE
8214 AC_SUBST([JITC_PROCESSOR_TYPE])
8216 # Misc Windows Stuff
8217 AC_ARG_WITH(ucrt-dir,
8218 AS_HELP_STRING([--with-ucrt-dir],
8219 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8220 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8221 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8222 Windows6.1-KB2999226-x64.msu
8223 Windows6.1-KB2999226-x86.msu
8224 Windows8.1-KB2999226-x64.msu
8225 Windows8.1-KB2999226-x86.msu
8226 Windows8-RT-KB2999226-x64.msu
8227 Windows8-RT-KB2999226-x86.msu
8228 A zip archive including those files is available from Microsoft site:
8229 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8232 UCRT_REDISTDIR="$with_ucrt_dir"
8233 if test $_os = "WINNT"; then
8235 for i in $PKGFORMAT; do
8236 if test "$i" = msi; then
8241 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8242 MSVC_DLLS="$msvcdlls"
8243 test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8244 # MSVC 15.3 changed it to VC141
8245 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8246 SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8247 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8248 SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8249 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8250 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8252 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8255 if test "$UCRT_REDISTDIR" = "no"; then
8256 dnl explicitly disabled
8259 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8260 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8261 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8262 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8263 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8264 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8266 if test -n "$PKGFORMAT"; then
8267 for i in $PKGFORMAT; do
8270 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8271 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8280 AC_SUBST(UCRT_REDISTDIR)
8281 AC_SUBST(MSVC_DLL_PATH)
8286 dnl ===================================================================
8288 dnl ===================================================================
8289 if test "$ENABLE_JAVA" != ""; then
8291 # Windows-specific tests
8292 if test "$build_os" = "cygwin"; then
8293 if test -z "$with_jdk_home"; then
8294 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8295 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8296 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8297 if test -n "$regvalue"; then
8299 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8300 with_jdk_home=$regvalue
8302 howfound="found automatically"
8304 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8305 howfound="you passed"
8308 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8309 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option (or fix the path) pointing to a $WIN_HOST_BITS-bit JDK >= 9])
8313 # 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.
8314 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8315 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8316 with_jdk_home=`/usr/libexec/java_home`
8319 JAVA_HOME=; export JAVA_HOME
8320 if test -z "$with_jdk_home"; then
8321 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8323 _java_path="$with_jdk_home/bin/$with_java"
8324 dnl Check if there is a Java interpreter at all.
8325 if test -x "$_java_path"; then
8326 JAVAINTERPRETER=$_java_path
8328 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8332 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8333 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8334 dnl loaded by java to run JunitTests:
8335 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8336 shortjdkhome=`cygpath -d "$with_jdk_home"`
8337 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
8338 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8339 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8340 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
8341 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8342 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8345 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8346 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8348 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8349 elif test "$cross_compiling" != "yes"; then
8351 AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8352 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8353 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8354 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8357 *) # assumption: everything else 32-bit
8358 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8359 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8360 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8367 dnl ===================================================================
8369 dnl ===================================================================
8371 # Whether all the complexity here actually is needed any more or not, no idea.
8373 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8375 AC_MSG_CHECKING([the installed JDK])
8376 if test -n "$JAVAINTERPRETER"; then
8377 dnl java -version sends output to stderr!
8378 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8379 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8380 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8381 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8382 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8383 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8384 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8385 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8389 dnl Sun JDK specific tests
8390 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8391 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8393 if test "$_jdk_ver" -lt 10900; then
8394 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8396 if test "$_jdk_ver" -gt 10900; then
8397 JAVA_CLASSPATH_NOT_SET=TRUE
8400 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8401 if test "$_os" = "WINNT"; then
8402 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8404 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8406 # set to limit VM usage for JunitTests
8408 # set to limit VM usage for javac
8409 JAVACFLAGS=-J-Xmx128M
8412 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8415 if test -z "$ENABLE_JAVA"; then
8419 elif test "$cross_compiling" = "yes"; then
8420 # Just assume compatibility of build and host JDK
8422 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8426 dnl ===================================================================
8427 dnl Checks for javac
8428 dnl ===================================================================
8429 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8430 javacompiler="javac"
8431 : ${JAVA_SOURCE_VER=8}
8432 : ${JAVA_TARGET_VER=8}
8433 if test -z "$with_jdk_home"; then
8434 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8436 _javac_path="$with_jdk_home/bin/$javacompiler"
8437 dnl Check if there is a Java compiler at all.
8438 if test -x "$_javac_path"; then
8439 JAVACOMPILER=$_javac_path
8442 if test -z "$JAVACOMPILER"; then
8443 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8445 if test "$build_os" = "cygwin"; then
8446 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8447 JAVACOMPILER="${JAVACOMPILER}.exe"
8449 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8453 dnl ===================================================================
8454 dnl Checks for javadoc
8455 dnl ===================================================================
8456 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8457 if test -z "$with_jdk_home"; then
8458 AC_PATH_PROG(JAVADOC, javadoc)
8460 _javadoc_path="$with_jdk_home/bin/javadoc"
8461 dnl Check if there is a javadoc at all.
8462 if test -x "$_javadoc_path"; then
8463 JAVADOC=$_javadoc_path
8465 AC_PATH_PROG(JAVADOC, javadoc)
8468 if test -z "$JAVADOC"; then
8469 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8471 if test "$build_os" = "cygwin"; then
8472 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8473 JAVADOC="${JAVADOC}.exe"
8475 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8478 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8479 JAVADOCISGJDOC="yes"
8483 AC_SUBST(JAVADOCISGJDOC)
8485 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8486 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8487 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8488 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8489 # try to recover first by looking whether we have an alternative
8490 # system as in Debian or newer SuSEs where following /usr/bin/javac
8491 # over /etc/alternatives/javac leads to the right bindir where we
8492 # just need to strip a bit away to get a valid JAVA_HOME
8493 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8494 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8495 # maybe only one level of symlink (e.g. on Mac)
8496 JAVA_HOME=$(readlink $JAVACOMPILER)
8497 if test "$(dirname $JAVA_HOME)" = "."; then
8498 # we've got no path to trim back
8503 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8504 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8505 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8506 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8508 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8509 if test "$JAVA_HOME" != "/usr"; then
8510 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8511 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8512 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8513 dnl Tiger already returns a JDK path...
8514 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8516 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8517 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8518 dnl that checks which version to run
8519 if test -f "$JAVA_HOME"; then
8520 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8525 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8527 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8528 if test -z "$JAVA_HOME"; then
8529 if test "x$with_jdk_home" = "x"; then
8530 cat > findhome.java <<_ACEOF
8531 [import java.io.File;
8535 public static void main(String args[])
8537 String jrelocation = System.getProperty("java.home");
8538 File jre = new File(jrelocation);
8539 System.out.println(jre.getParent());
8543 AC_MSG_CHECKING([if javac works])
8544 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8545 AC_TRY_EVAL(javac_cmd)
8546 if test $? = 0 -a -f ./findhome.class; then
8547 AC_MSG_RESULT([javac works])
8549 echo "configure: javac test failed" >&5
8550 cat findhome.java >&5
8551 AC_MSG_ERROR([javac does not work - java projects will not build!])
8553 AC_MSG_CHECKING([if gij knows its java.home])
8554 JAVA_HOME=`$JAVAINTERPRETER findhome`
8555 if test $? = 0 -a "$JAVA_HOME" != ""; then
8556 AC_MSG_RESULT([$JAVA_HOME])
8558 echo "configure: java test failed" >&5
8559 cat findhome.java >&5
8560 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8562 # clean-up after ourselves
8563 rm -f ./findhome.java ./findhome.class
8565 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8569 # now check if $JAVA_HOME is really valid
8570 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8571 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8572 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8573 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8574 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8575 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8576 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8577 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8580 PathFormat "$JAVA_HOME"
8581 JAVA_HOME="$formatted_path"
8584 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8587 AC_MSG_CHECKING([for JAWT lib])
8588 if test "$_os" = WINNT; then
8589 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8594 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8595 JAVA_ARCH=$my_java_arch
8610 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8611 JAVA_ARCH=$my_java_arch
8614 my_java_arch=sparcv9
8620 my_java_arch=$host_cpu
8623 # This is where JDK9 puts the library
8624 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8625 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8627 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8629 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8631 AC_MSG_RESULT([$JAWTLIB])
8635 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8639 JAVAINC="-I$JAVA_HOME/include"
8640 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8641 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8645 JAVAINC="-I$JAVA_HOME/include/win32"
8646 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8650 if test -d "$JAVA_HOME/include/darwin"; then
8651 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8653 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8658 JAVAINC="-I$JAVA_HOME/include"
8659 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8663 JAVAINC="-I$JAVA_HOME/include"
8664 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8665 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8666 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8667 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8671 JAVAINC="-I$JAVA_HOME/include"
8672 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8673 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8677 JAVAINC="-I$JAVA_HOME/include"
8678 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8679 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8683 JAVAINC="-I$JAVA_HOME/include"
8684 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8685 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8689 JAVAINC="-I$JAVA_HOME/include"
8690 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8691 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8695 JAVAINC="-I$JAVA_HOME/include"
8696 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8697 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8701 SOLARINC="$SOLARINC $JAVAINC"
8703 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8704 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8705 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8709 AC_SUBST(JAVACFLAGS)
8710 AC_SUBST(JAVACOMPILER)
8711 AC_SUBST(JAVAINTERPRETER)
8712 AC_SUBST(JAVAIFLAGS)
8713 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8714 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8716 AC_SUBST(JAVA_HOME_FOR_BUILD)
8718 AC_SUBST(JDK_FOR_BUILD)
8719 AC_SUBST(JAVA_SOURCE_VER)
8720 AC_SUBST(JAVA_TARGET_VER)
8723 dnl ===================================================================
8724 dnl Export file validation
8725 dnl ===================================================================
8726 AC_MSG_CHECKING([whether to enable export file validation])
8727 if test "$with_export_validation" != "no"; then
8728 if test -z "$ENABLE_JAVA"; then
8729 if test "$with_export_validation" = "yes"; then
8730 AC_MSG_ERROR([requested, but Java is disabled])
8732 AC_MSG_RESULT([no, as Java is disabled])
8734 elif ! test -d "${SRC_ROOT}/schema"; then
8735 if test "$with_export_validation" = "yes"; then
8736 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8738 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8741 AC_MSG_RESULT([yes])
8742 AC_DEFINE(HAVE_EXPORT_VALIDATION)
8744 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8745 if test -z "$ODFVALIDATOR"; then
8746 # remember to download the ODF toolkit with validator later
8747 AC_MSG_NOTICE([no odfvalidator found, will download it])
8748 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8749 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8751 # and fetch name of odfvalidator jar name from download.lst
8752 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8753 AC_SUBST(ODFVALIDATOR_JAR)
8755 if test -z "$ODFVALIDATOR_JAR"; then
8756 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8759 if test "$build_os" = "cygwin"; then
8760 # In case of Cygwin it will be executed from Windows,
8761 # so we need to run bash and absolute path to validator
8762 # so instead of "odfvalidator" it will be
8763 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8764 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8766 ODFVALIDATOR="sh $ODFVALIDATOR"
8768 AC_SUBST(ODFVALIDATOR)
8771 AC_PATH_PROGS(OFFICEOTRON, officeotron)
8772 if test -z "$OFFICEOTRON"; then
8773 # remember to download the officeotron with validator later
8774 AC_MSG_NOTICE([no officeotron found, will download it])
8775 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8776 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8778 # and fetch name of officeotron jar name from download.lst
8779 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8780 AC_SUBST(OFFICEOTRON_JAR)
8782 if test -z "$OFFICEOTRON_JAR"; then
8783 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8786 # check version of existing officeotron
8787 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8788 if test 0"$OFFICEOTRON_VER" -lt 704; then
8789 AC_MSG_ERROR([officeotron too old])
8792 if test "$build_os" = "cygwin"; then
8793 # In case of Cygwin it will be executed from Windows,
8794 # so we need to run bash and absolute path to validator
8795 # so instead of "odfvalidator" it will be
8796 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8797 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8799 OFFICEOTRON="sh $OFFICEOTRON"
8802 AC_SUBST(OFFICEOTRON)
8807 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8808 if test "$with_bffvalidator" != "no"; then
8809 AC_DEFINE(HAVE_BFFVALIDATOR)
8811 if test "$with_export_validation" = "no"; then
8812 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8815 if test "$with_bffvalidator" = "yes"; then
8816 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8818 BFFVALIDATOR="$with_bffvalidator"
8821 if test "$build_os" = "cygwin"; then
8822 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8823 AC_MSG_RESULT($BFFVALIDATOR)
8825 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8827 elif test -n "$BFFVALIDATOR"; then
8828 # We are not in Cygwin but need to run Windows binary with wine
8829 AC_PATH_PROGS(WINE, wine)
8831 # so swap in a shell wrapper that converts paths transparently
8832 BFFVALIDATOR_EXE="$BFFVALIDATOR"
8833 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8834 AC_SUBST(BFFVALIDATOR_EXE)
8835 AC_MSG_RESULT($BFFVALIDATOR)
8837 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8839 AC_SUBST(BFFVALIDATOR)
8844 dnl ===================================================================
8845 dnl Check for C preprocessor to use
8846 dnl ===================================================================
8847 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8849 if test -n "$with_idlc_cpp"; then
8850 AC_MSG_RESULT([$with_idlc_cpp])
8851 AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8852 AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
8853 # ucpp will accept -v (to output version), warn about the others as unknown
8854 # and return 1 (due to -v)
8855 # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
8856 # and return 0 (due to --version ) if all options are supported
8857 $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
8858 if test $? -eq 0; then
8859 SYSTEM_UCPP_IS_GCC=TRUE
8860 AC_MSG_RESULT([yes])
8865 AC_MSG_RESULT([ucpp])
8866 AC_MSG_CHECKING([which ucpp to use])
8867 if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8868 AC_MSG_RESULT([external])
8869 AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8871 AC_MSG_RESULT([internal])
8872 BUILD_TYPE="$BUILD_TYPE UCPP"
8875 AC_SUBST(SYSTEM_UCPP)
8876 AC_SUBST(SYSTEM_UCPP_IS_GCC)
8878 dnl ===================================================================
8879 dnl Check for epm (not needed for Windows)
8880 dnl ===================================================================
8881 AC_MSG_CHECKING([whether to enable EPM for packing])
8882 if test "$enable_epm" = "yes"; then
8883 AC_MSG_RESULT([yes])
8884 if test "$_os" != "WINNT"; then
8885 if test $_os = Darwin; then
8887 elif test -n "$with_epm"; then
8890 AC_PATH_PROG(EPM, epm, no)
8892 if test "$EPM" = "no" -o "$EPM" = "internal"; then
8893 AC_MSG_NOTICE([EPM will be built.])
8894 BUILD_TYPE="$BUILD_TYPE EPM"
8895 EPM=${WORKDIR}/UnpackedTarball/epm/epm
8897 # Gentoo has some epm which is something different...
8898 AC_MSG_CHECKING([whether the found epm is the right epm])
8899 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8900 AC_MSG_RESULT([yes])
8902 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8904 AC_MSG_CHECKING([epm version])
8905 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8906 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8907 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8908 AC_MSG_RESULT([OK, >= 3.7])
8910 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8911 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8916 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8917 AC_MSG_CHECKING([for rpm])
8918 for a in "$RPM" rpmbuild rpm; do
8919 $a --usage >/dev/null 2> /dev/null
8920 if test $? -eq 0; then
8924 $a --version >/dev/null 2> /dev/null
8925 if test $? -eq 0; then
8931 if test -z "$RPM"; then
8932 AC_MSG_ERROR([not found])
8933 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8934 RPM_PATH=`which $RPM`
8935 AC_MSG_RESULT([$RPM_PATH])
8936 SCPDEFS="$SCPDEFS -DWITH_RPM"
8938 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8941 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8942 AC_PATH_PROG(DPKG, dpkg, no)
8943 if test "$DPKG" = "no"; then
8944 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8947 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8948 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8949 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8950 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8951 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8952 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8953 AC_MSG_RESULT([yes])
8956 if echo "$PKGFORMAT" | $GREP -q rpm; then
8958 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8959 add_warning "the rpms will need to be installed with --nodeps"
8963 AC_MSG_WARN([the ${_pt}s will not be relocatable])
8964 add_warning "the ${_pt}s will not be relocatable"
8965 AC_MSG_WARN([if you want to make sure installation without --nodeps and
8966 relocation will work, you need to patch your epm with the
8967 patch in epm/epm-3.7.patch or build with
8968 --with-epm=internal which will build a suitable epm])
8973 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8974 AC_PATH_PROG(PKGMK, pkgmk, no)
8975 if test "$PKGMK" = "no"; then
8976 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8983 for i in $PKGFORMAT; do
8985 aix | bsd | deb | pkg | rpm | native | portable)
8987 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8997 if test "$enable_lotuswordpro" = "yes"; then
9000 AC_SUBST(ENABLE_LWP)
9002 dnl ===================================================================
9003 dnl Check for building ODK
9004 dnl ===================================================================
9005 if test "$enable_odk" != yes; then
9008 if test "$with_doxygen" = no; then
9009 AC_MSG_CHECKING([for doxygen])
9013 if test "$with_doxygen" = yes; then
9014 AC_PATH_PROG([DOXYGEN], [doxygen])
9015 if test -z "$DOXYGEN"; then
9016 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9018 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9019 if ! dot -V 2>/dev/null; then
9020 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9024 AC_MSG_CHECKING([for doxygen])
9025 DOXYGEN=$with_doxygen
9026 AC_MSG_RESULT([$DOXYGEN])
9028 if test -n "$DOXYGEN"; then
9029 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9030 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9031 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9032 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9039 AC_MSG_CHECKING([whether to build the ODK])
9040 if test "$enable_odk" = yes; then
9041 AC_MSG_RESULT([yes])
9042 BUILD_TYPE="$BUILD_TYPE ODK"
9047 dnl ===================================================================
9048 dnl Check for system zlib
9049 dnl ===================================================================
9050 if test "$with_system_zlib" = "auto"; then
9053 with_system_zlib="$with_system_libs"
9056 if test "$enable_fuzzers" != "yes"; then
9057 with_system_zlib=yes
9065 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9066 dnl and has no pkg-config for it at least on some tinderboxes,
9067 dnl so leaving that out for now
9068 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9069 AC_MSG_CHECKING([which zlib to use])
9070 if test "$with_system_zlib" = "yes"; then
9071 AC_MSG_RESULT([external])
9073 AC_CHECK_HEADER(zlib.h, [],
9074 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9075 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9076 [AC_MSG_ERROR(zlib not found or functional)], [])
9078 AC_MSG_RESULT([internal])
9080 BUILD_TYPE="$BUILD_TYPE ZLIB"
9081 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9082 if test "$COM" = "MSC"; then
9083 ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9085 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9088 AC_SUBST(ZLIB_CFLAGS)
9090 AC_SUBST(SYSTEM_ZLIB)
9092 dnl ===================================================================
9093 dnl Check for system jpeg
9094 dnl ===================================================================
9095 AC_MSG_CHECKING([which libjpeg to use])
9096 if test "$with_system_jpeg" = "yes"; then
9097 AC_MSG_RESULT([external])
9099 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9100 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9101 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9102 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9105 AC_MSG_RESULT([internal, libjpeg-turbo])
9106 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9109 x86_64 | amd64 | i*86 | x86 | ia32)
9110 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9111 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9112 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9113 NASM="$LODE_HOME/opt/bin/nasm"
9114 elif test -x "/opt/lo/bin/nasm"; then
9115 NASM="/opt/lo/bin/nasm"
9119 if test -n "$NASM"; then
9120 AC_MSG_CHECKING([for object file format of host system])
9122 cygwin* | mingw* | pw32* | wsl*)
9132 msdosdjgpp* | go32*)
9135 os2-emx*) # not tested
9136 objfmt='MSOMF' # obj
9138 linux*coff* | linux*oldld*)
9154 kfreebsd* | freebsd* | netbsd* | openbsd*)
9155 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9168 solaris* | sunos* | sysv* | sco*)
9178 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9193 AC_MSG_RESULT([$objfmt])
9194 if test "$objfmt" = 'ELF ?'; then
9196 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9199 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9201 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9202 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9203 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9204 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9205 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9206 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9207 ELF) NAFLAGS='-felf -DELF -DPIC';;
9208 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9209 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9210 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9211 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9213 AC_MSG_RESULT([$NAFLAGS])
9215 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9216 cat > conftest.asm << EOF
9217 [%line __oline__ "configure"
9225 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9226 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9229 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9230 cat conftest.asm >&AS_MESSAGE_LOG_FD
9233 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9239 if test -z "$NASM"; then
9241 ****************************************************************************
9242 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9246 if test "$build_os" = "cygwin"; then
9248 install a pre-compiled binary for Win32
9250 mkdir -p /opt/lo/bin
9252 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9255 or get and install one from http://www.nasm.us/
9257 Then re-run autogen.sh
9259 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9260 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9265 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9269 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9270 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9278 AC_SUBST(LIBJPEG_CFLAGS)
9279 AC_SUBST(LIBJPEG_LIBS)
9280 AC_SUBST(SYSTEM_LIBJPEG)
9282 dnl ===================================================================
9283 dnl Check for system clucene
9284 dnl ===================================================================
9285 dnl we should rather be using
9286 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9287 dnl but the contribs-lib check seems tricky
9288 AC_MSG_CHECKING([which clucene to use])
9289 if test "$test_clucene" = yes; then
9290 if test "$with_system_clucene" = "yes"; then
9291 AC_MSG_RESULT([external])
9293 PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9294 CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9295 FilterLibs "${CLUCENE_LIBS}"
9296 CLUCENE_LIBS="${filteredlibs}"
9298 save_CXXFLAGS=$CXXFLAGS
9299 save_CPPFLAGS=$CPPFLAGS
9300 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9301 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9302 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9303 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9304 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9305 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9306 CXXFLAGS=$save_CXXFLAGS
9307 CPPFLAGS=$save_CPPFLAGS
9310 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9312 AC_MSG_RESULT([internal])
9314 BUILD_TYPE="$BUILD_TYPE CLUCENE"
9317 AC_MSG_RESULT([not needed])
9319 AC_SUBST(SYSTEM_CLUCENE)
9320 AC_SUBST(CLUCENE_CFLAGS)
9321 AC_SUBST(CLUCENE_LIBS)
9323 dnl ===================================================================
9324 dnl Check for system expat
9325 dnl ===================================================================
9326 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9328 dnl ===================================================================
9329 dnl Check for system xmlsec
9330 dnl ===================================================================
9331 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9333 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9334 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9336 AC_DEFINE([ENABLE_EOT])
9337 AC_MSG_RESULT([yes])
9339 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9344 AC_SUBST([ENABLE_EOT])
9346 dnl ===================================================================
9347 dnl Check for DLP libs
9348 dnl ===================================================================
9349 AS_IF([test "$COM" = "MSC"],
9350 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9351 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9353 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9355 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9357 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9359 AS_IF([test "$COM" = "MSC"],
9360 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9361 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9363 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9365 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9367 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9368 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9370 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9372 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9374 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9376 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9377 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9379 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9380 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9382 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9384 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9385 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9387 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9389 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9391 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9393 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9395 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9396 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9398 dnl ===================================================================
9399 dnl Check for system lcms2
9400 dnl ===================================================================
9401 if test "$with_system_lcms2" != "yes"; then
9404 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9405 if test "$GCC" = "yes"; then
9406 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9408 if test "$COM" = "MSC"; then # override the above
9409 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9412 dnl ===================================================================
9413 dnl Check for system cppunit
9414 dnl ===================================================================
9415 if test "$_os" != "Android" ; then
9416 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9419 dnl ===================================================================
9420 dnl Check whether freetype is available
9422 dnl FreeType has 3 different kinds of versions
9423 dnl * release, like 2.4.10
9424 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9426 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9429 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9430 dnl ===================================================================
9431 if test "$test_freetype" != no; then
9432 if test "x$ac_config_site_64bit_host" = xYES; then
9433 FREETYPE_LIBS_INTERNAL="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9435 FREETYPE_LIBS_INTERNAL="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9438 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],
9439 ["${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"],["$FREETYPE_LIBS_INTERNAL"],TRUE)
9441 # ===================================================================
9442 # Check for system libxslt
9443 # to prevent incompatibilities between internal libxml2 and external libxslt,
9444 # or vice versa, use with_system_libxml here
9445 # ===================================================================
9446 if test "$with_system_libxml" = "auto"; then
9449 with_system_libxml="$with_system_libs"
9452 with_system_libxml=no
9455 if test "$enable_fuzzers" != "yes"; then
9456 with_system_libxml=yes
9458 with_system_libxml=no
9464 AC_MSG_CHECKING([which libxslt to use])
9465 if test "$with_system_libxml" = "yes"; then
9466 AC_MSG_RESULT([external])
9468 if test "$_os" = "Darwin"; then
9469 dnl make sure to use SDK path
9470 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9471 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9473 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9474 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9476 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9477 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9478 FilterLibs "${LIBXSLT_LIBS}"
9479 LIBXSLT_LIBS="${filteredlibs}"
9480 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9481 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9482 FilterLibs "${LIBEXSLT_LIBS}"
9483 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9486 dnl Check for xsltproc
9487 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9488 if test "$XSLTPROC" = "no"; then
9489 AC_MSG_ERROR([xsltproc is required])
9492 AC_MSG_RESULT([internal])
9494 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9496 AC_SUBST(SYSTEM_LIBXSLT)
9497 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9498 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9500 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9502 AC_SUBST(LIBEXSLT_CFLAGS)
9503 AC_SUBST(LIBEXSLT_LIBS)
9504 AC_SUBST(LIBXSLT_CFLAGS)
9505 AC_SUBST(LIBXSLT_LIBS)
9508 # ===================================================================
9509 # Check for system libxml
9510 # ===================================================================
9511 AC_MSG_CHECKING([which libxml to use])
9512 if test "$with_system_libxml" = "yes"; then
9513 AC_MSG_RESULT([external])
9515 if test "$_os" = "Darwin"; then
9516 dnl make sure to use SDK path
9517 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9519 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9520 elif test $_os = iOS; then
9521 dnl make sure to use SDK path
9522 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9523 LIBXML_CFLAGS="-I$usr/include/libxml2"
9524 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9526 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9527 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9528 FilterLibs "${LIBXML_LIBS}"
9529 LIBXML_LIBS="${filteredlibs}"
9532 dnl Check for xmllint
9533 AC_PATH_PROG(XMLLINT, xmllint, no)
9534 if test "$XMLLINT" = "no"; then
9535 AC_MSG_ERROR([xmllint is required])
9538 AC_MSG_RESULT([internal])
9540 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9541 if test "$COM" = "MSC"; then
9542 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9544 if test "$COM" = "MSC"; then
9545 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9547 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9548 if test "$DISABLE_DYNLOADING" = TRUE; then
9549 LIBXML_LIBS="$LIBXML_LIBS -lm"
9552 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9554 AC_SUBST(SYSTEM_LIBXML)
9555 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9556 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9558 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9559 AC_SUBST(LIBXML_CFLAGS)
9560 AC_SUBST(LIBXML_LIBS)
9563 # =====================================================================
9564 # Checking for a Python interpreter with version >= 3.3.
9565 # Optionally user can pass an option to configure, i. e.
9566 # ./configure PYTHON=/usr/bin/python
9567 # =====================================================================
9568 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9569 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9570 # unless PYTHON is defined as above which allows 'system'
9571 enable_python=internal
9573 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9574 if test -n "$PYTHON"; then
9575 PYTHON_FOR_BUILD=$PYTHON
9577 # This allows a lack of system python with no error, we use internal one in that case.
9578 AM_PATH_PYTHON([3.3],, [:])
9579 # Clean PYTHON_VERSION checked below if cross-compiling
9581 if test "$PYTHON" != ":"; then
9582 PYTHON_FOR_BUILD=$PYTHON
9586 AC_SUBST(PYTHON_FOR_BUILD)
9588 # Checks for Python to use for Pyuno
9589 AC_MSG_CHECKING([which Python to use for Pyuno])
9590 case "$enable_python" in
9592 if test -z $PYTHON_FOR_BUILD; then
9593 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9594 # requirement from the choice whether to include Python stuff in the installer, but why
9596 if test "$cross_compiling" = yes; then
9597 enable_python=system
9599 AC_MSG_ERROR([Python is required at build time.])
9603 AC_MSG_RESULT([none])
9606 if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9607 AC_MSG_RESULT([no, overridden by --disable-scripting])
9609 elif test $build_os = cygwin; then
9610 dnl When building on Windows we don't attempt to use any installed
9611 dnl "system" Python.
9612 AC_MSG_RESULT([fully internal])
9613 enable_python=internal
9614 elif test "$cross_compiling" = yes; then
9615 AC_MSG_RESULT([system])
9616 enable_python=system
9618 # Unset variables set by the above AM_PATH_PYTHON so that
9619 # we actually do check anew.
9621 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
9622 AM_PATH_PYTHON([3.3],, [:])
9623 AC_MSG_CHECKING([which Python to use for Pyuno])
9624 if test "$PYTHON" = ":"; then
9625 if test -z "$PYTHON_FOR_BUILD"; then
9626 AC_MSG_RESULT([fully internal])
9628 AC_MSG_RESULT([internal])
9630 enable_python=internal
9632 AC_MSG_RESULT([system])
9633 enable_python=system
9638 AC_MSG_RESULT([internal])
9641 AC_MSG_RESULT([fully internal])
9642 enable_python=internal
9645 AC_MSG_RESULT([system])
9646 if test "$_os" = Darwin -a -z "$PYTHON"; then
9647 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9651 AC_MSG_ERROR([Incorrect --enable-python option])
9655 if test $enable_python != no; then
9656 BUILD_TYPE="$BUILD_TYPE PYUNO"
9659 if test $enable_python = system; then
9660 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9661 # Fallback: Accept these in the environment, or as set above
9664 elif test "$cross_compiling" != yes; then
9665 # Unset variables set by the above AM_PATH_PYTHON so that
9666 # we actually do check anew.
9667 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
9668 # This causes an error if no python command is found
9669 AM_PATH_PYTHON([3.3])
9670 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9671 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9672 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9673 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9674 if test -z "$PKG_CONFIG"; then
9675 PYTHON_CFLAGS="-I$python_include"
9676 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9677 elif $PKG_CONFIG --exists python-$python_version-embed; then
9678 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9679 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9680 elif $PKG_CONFIG --exists python-$python_version; then
9681 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9682 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9684 PYTHON_CFLAGS="-I$python_include"
9685 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9687 FilterLibs "${PYTHON_LIBS}"
9688 PYTHON_LIBS="${filteredlibs}"
9690 dnl How to find out the cross-compilation Python installation path?
9691 AC_MSG_CHECKING([for python version])
9692 AS_IF([test -n "$PYTHON_VERSION"],
9693 [AC_MSG_RESULT([$PYTHON_VERSION])],
9694 [AC_MSG_RESULT([not found])
9695 AC_MSG_ERROR([no usable python found])])
9696 test -n "$PYTHON_CFLAGS" && break
9699 dnl Check if the headers really work
9700 save_CPPFLAGS="$CPPFLAGS"
9701 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9702 AC_CHECK_HEADER(Python.h)
9703 CPPFLAGS="$save_CPPFLAGS"
9705 # let the PYTHON_FOR_BUILD match the same python installation that
9706 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9707 # better for PythonTests.
9708 PYTHON_FOR_BUILD=$PYTHON
9711 if test "$with_lxml" != no; then
9712 if test -z "$PYTHON_FOR_BUILD"; then
9715 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9718 if test "$cross_compiling" != yes ; then
9719 BUILD_TYPE="$BUILD_TYPE LXML"
9724 AC_MSG_CHECKING([for python lxml])
9725 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9726 AC_MSG_RESULT([yes])
9730 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9733 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9734 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9735 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9737 BUILD_TYPE="$BUILD_TYPE LXML"
9738 AC_MSG_RESULT([no, using internal lxml])
9741 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9749 dnl By now enable_python should be "system", "internal" or "no"
9750 case $enable_python in
9754 if test "x$ac_cv_header_Python_h" != "xyes"; then
9755 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9759 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9760 AC_MSG_CHECKING([for correct python library version])
9761 AC_RUN_IFELSE([AC_LANG_SOURCE([[
9764 int main(int argc, char **argv) {
9765 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9768 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9771 dnl FIXME Check if the Python library can be linked with, too?
9776 PYTHON_VERSION_MAJOR=3
9777 PYTHON_VERSION_MINOR=8
9778 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.16
9779 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9780 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9782 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9783 BUILD_TYPE="$BUILD_TYPE PYTHON"
9784 if test "$OS" = LINUX -o "$OS" = WNT ; then
9785 BUILD_TYPE="$BUILD_TYPE LIBFFI"
9787 # Embedded Python dies without Home set
9788 if test "$HOME" = ""; then
9797 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9801 AC_SUBST(DISABLE_PYTHON)
9802 AC_SUBST(SYSTEM_PYTHON)
9803 AC_SUBST(PYTHON_CFLAGS)
9804 AC_SUBST(PYTHON_LIBS)
9805 AC_SUBST(PYTHON_VERSION)
9806 AC_SUBST(PYTHON_VERSION_MAJOR)
9807 AC_SUBST(PYTHON_VERSION_MINOR)
9809 AC_MSG_CHECKING([whether to build LibreLogo])
9810 case "$enable_python" in
9812 AC_MSG_RESULT([no; Python disabled])
9815 if test "${enable_librelogo}" = "no"; then
9818 AC_MSG_RESULT([yes])
9819 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
9820 AC_DEFINE([ENABLE_LIBRELOGO],1)
9824 AC_SUBST(ENABLE_LIBRELOGO)
9830 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9831 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9832 ENABLE_MARIADBC=TRUE
9833 AC_MSG_RESULT([yes])
9834 BUILD_TYPE="$BUILD_TYPE MARIADBC"
9838 AC_SUBST(ENABLE_MARIADBC)
9839 AC_SUBST(MARIADBC_MAJOR)
9840 AC_SUBST(MARIADBC_MINOR)
9841 AC_SUBST(MARIADBC_MICRO)
9843 if test "$ENABLE_MARIADBC" = "TRUE"; then
9844 dnl ===================================================================
9845 dnl Check for system MariaDB
9846 dnl ===================================================================
9847 AC_MSG_CHECKING([which MariaDB to use])
9848 if test "$with_system_mariadb" = "yes"; then
9849 AC_MSG_RESULT([external])
9850 SYSTEM_MARIADB_CONNECTOR_C=TRUE
9851 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9852 if test -z "$MARIADBCONFIG"; then
9853 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9854 if test -z "$MARIADBCONFIG"; then
9855 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9856 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9859 AC_MSG_CHECKING([MariaDB version])
9860 MARIADB_VERSION=`$MARIADBCONFIG --version`
9861 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9862 if test "$MARIADB_MAJOR" -ge "5"; then
9865 AC_MSG_ERROR([too old, use 5.0.x or later])
9867 AC_MSG_CHECKING([for MariaDB Client library])
9868 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9869 if test "$COM_IS_CLANG" = TRUE; then
9870 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9872 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9873 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9874 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9876 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9877 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9878 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9879 | sed -e 's|/lib64/|/lib/|')
9881 FilterLibs "${MARIADB_LIBS}"
9882 MARIADB_LIBS="${filteredlibs}"
9883 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9884 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9885 if test "$enable_bundle_mariadb" = "yes"; then
9886 AC_MSG_RESULT([yes])
9887 BUNDLE_MARIADB_CONNECTOR_C=TRUE
9888 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9890 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9892 /g' | grep -E '(mysqlclient|mariadb)')
9893 if test "$_os" = "Darwin"; then
9894 LIBMARIADB=${LIBMARIADB}.dylib
9895 elif test "$_os" = "WINNT"; then
9896 LIBMARIADB=${LIBMARIADB}.dll
9898 LIBMARIADB=${LIBMARIADB}.so
9900 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9901 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9902 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9903 AC_MSG_RESULT([found.])
9904 PathFormat "$LIBMARIADB_PATH"
9905 LIBMARIADB_PATH="$formatted_path"
9907 AC_MSG_ERROR([not found.])
9911 BUNDLE_MARIADB_CONNECTOR_C=
9914 AC_MSG_RESULT([internal])
9915 SYSTEM_MARIADB_CONNECTOR_C=
9916 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9917 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9918 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9921 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9922 AC_SUBST(MARIADB_CFLAGS)
9923 AC_SUBST(MARIADB_LIBS)
9924 AC_SUBST(LIBMARIADB)
9925 AC_SUBST(LIBMARIADB_PATH)
9926 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9929 dnl ===================================================================
9930 dnl Check for system hsqldb
9931 dnl ===================================================================
9932 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9933 HSQLDB_USE_JDBC_4_1=
9934 AC_MSG_CHECKING([which hsqldb to use])
9935 if test "$with_system_hsqldb" = "yes"; then
9936 AC_MSG_RESULT([external])
9938 if test -z $HSQLDB_JAR; then
9939 HSQLDB_JAR=/usr/share/java/hsqldb.jar
9941 if ! test -f $HSQLDB_JAR; then
9942 AC_MSG_ERROR(hsqldb.jar not found.)
9944 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9948 my $file = "$ENV{'HSQLDB_JAR'}";
9949 my $zip = Archive::Zip->new( $file );
9950 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9951 if ( $mf =~ m/Specification-Version: 1.8.*/ )
9953 push @l, split(/\n/, $mf);
9954 foreach my $line (@l)
9956 if ($line =~ m/Specification-Version:/)
9958 ($t, $version) = split (/:/,$line);
9959 $version =~ s/^\s//;
9960 ($a, $b, $c, $d) = split (/\./,$version);
9961 if ($c == "0" && $d > "8")
9976 AC_MSG_RESULT([yes])
9978 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9981 AC_MSG_RESULT([internal])
9983 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9985 AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9986 javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9987 if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9988 AC_MSG_RESULT([yes])
9989 HSQLDB_USE_JDBC_4_1=TRUE
9995 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9996 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9999 AC_SUBST(SYSTEM_HSQLDB)
10000 AC_SUBST(HSQLDB_JAR)
10001 AC_SUBST([HSQLDB_USE_JDBC_4_1])
10003 dnl ===================================================================
10004 dnl Check for PostgreSQL stuff
10005 dnl ===================================================================
10006 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10007 if test "x$enable_postgresql_sdbc" != "xno"; then
10008 AC_MSG_RESULT([yes])
10009 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10011 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10012 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10014 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10015 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10018 postgres_interface=""
10019 if test "$with_system_postgresql" = "yes"; then
10020 postgres_interface="external PostgreSQL"
10021 SYSTEM_POSTGRESQL=TRUE
10022 if test "$_os" = Darwin; then
10024 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10025 pg_supp_path="$P_SEP$d$pg_supp_path"
10028 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10029 if test -n "$PGCONFIG"; then
10030 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10031 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10033 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10034 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10035 POSTGRESQL_LIB=$POSTGRESQL_LIBS
10037 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10040 FilterLibs "${POSTGRESQL_LIB}"
10041 POSTGRESQL_LIB="${filteredlibs}"
10043 # if/when anything else than PostgreSQL uses Kerberos,
10044 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10049 # macOS has system MIT Kerberos 5 since 10.4
10050 if test "$with_krb5" != "no"; then
10053 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10054 # that the libraries where these functions are located on macOS will change, is it?
10055 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10056 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10059 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10060 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10061 KRB5_LIBS="$KRB5_LIBS $LIBS"
10064 if test "$with_gssapi" != "no"; then
10067 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10068 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10074 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10075 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10078 Linux|GNU|*BSD|DragonFly)
10079 if test "$with_krb5" != "no"; then
10082 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10083 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10086 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10087 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10088 KRB5_LIBS="$KRB5_LIBS $LIBS"
10091 if test "$with_gssapi" != "no"; then
10094 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10095 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10101 if test "$with_krb5" = "yes"; then
10104 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10105 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10108 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10109 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10110 KRB5_LIBS="$KRB5_LIBS $LIBS"
10113 if test "$with_gssapi" = "yes"; then
10116 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10117 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10123 if test -n "$with_libpq_path"; then
10124 SYSTEM_POSTGRESQL=TRUE
10125 postgres_interface="external libpq"
10126 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10127 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10130 postgres_interface="internal"
10132 POSTGRESQL_INC="%OVERRIDE_ME%"
10133 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10137 AC_MSG_CHECKING([PostgreSQL C interface])
10138 AC_MSG_RESULT([$postgres_interface])
10140 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10141 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10142 save_CFLAGS=$CFLAGS
10143 save_CPPFLAGS=$CPPFLAGS
10145 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10146 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10147 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10148 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10149 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10150 CFLAGS=$save_CFLAGS
10151 CPPFLAGS=$save_CPPFLAGS
10154 BUILD_POSTGRESQL_SDBC=TRUE
10156 AC_MSG_RESULT([no])
10158 AC_SUBST(WITH_KRB5)
10159 AC_SUBST(WITH_GSSAPI)
10160 AC_SUBST(GSSAPI_LIBS)
10161 AC_SUBST(KRB5_LIBS)
10162 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10163 AC_SUBST(SYSTEM_POSTGRESQL)
10164 AC_SUBST(POSTGRESQL_INC)
10165 AC_SUBST(POSTGRESQL_LIB)
10167 dnl ===================================================================
10168 dnl Check for Firebird stuff
10169 dnl ===================================================================
10170 ENABLE_FIREBIRD_SDBC=
10171 if test "$enable_firebird_sdbc" = "yes" ; then
10172 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10174 dnl ===================================================================
10175 dnl Check for system Firebird
10176 dnl ===================================================================
10177 AC_MSG_CHECKING([which Firebird to use])
10178 if test "$with_system_firebird" = "yes"; then
10179 AC_MSG_RESULT([external])
10180 SYSTEM_FIREBIRD=TRUE
10181 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10182 if test -z "$FIREBIRDCONFIG"; then
10183 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10184 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10185 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10187 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10189 AC_MSG_NOTICE([fb_config found])
10190 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10191 AC_MSG_CHECKING([for Firebird Client library])
10192 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10193 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10194 FilterLibs "${FIREBIRD_LIBS}"
10195 FIREBIRD_LIBS="${filteredlibs}"
10197 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10198 AC_MSG_CHECKING([Firebird version])
10199 if test -n "${FIREBIRD_VERSION}"; then
10200 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10201 if test "$FIREBIRD_MAJOR" -ge "3"; then
10202 AC_MSG_RESULT([OK])
10204 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10207 save_CFLAGS="${CFLAGS}"
10208 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10209 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10210 #if defined(FB_API_VER) && FB_API_VER == 30
10211 int fb_api_is_30(void) { return 0; }
10213 #error "Wrong Firebird API version"
10214 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10215 CFLAGS="$save_CFLAGS"
10217 ENABLE_FIREBIRD_SDBC=TRUE
10218 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10219 elif test "$enable_database_connectivity" = no; then
10220 AC_MSG_RESULT([none])
10221 elif test "$cross_compiling" = "yes"; then
10222 AC_MSG_RESULT([none])
10224 dnl Embedded Firebird has version 3.0
10225 dnl We need libatomic_ops for any non X86/X64 system
10226 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10227 dnl ===================================================================
10228 dnl Check for system libatomic_ops
10229 dnl ===================================================================
10230 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10231 if test "$with_system_libatomic_ops" = "yes"; then
10232 SYSTEM_LIBATOMIC_OPS=TRUE
10233 AC_CHECK_HEADERS(atomic_ops.h, [],
10234 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10236 SYSTEM_LIBATOMIC_OPS=
10237 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10238 LIBATOMIC_OPS_LIBS="-latomic_ops"
10239 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10243 AC_MSG_RESULT([internal])
10245 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10246 FIREBIRD_LIBS="-lfbclient"
10248 if test "$with_system_libtommath" = "yes"; then
10249 SYSTEM_LIBTOMMATH=TRUE
10250 dnl check for tommath presence
10252 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10253 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10257 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10258 LIBTOMMATH_LIBS="-ltommath"
10259 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10262 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10263 ENABLE_FIREBIRD_SDBC=TRUE
10264 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10267 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10268 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10269 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10270 AC_SUBST(LIBATOMIC_OPS_LIBS)
10271 AC_SUBST(SYSTEM_FIREBIRD)
10272 AC_SUBST(FIREBIRD_CFLAGS)
10273 AC_SUBST(FIREBIRD_LIBS)
10274 AC_SUBST(SYSTEM_LIBTOMMATH)
10275 AC_SUBST(LIBTOMMATH_CFLAGS)
10276 AC_SUBST(LIBTOMMATH_LIBS)
10278 dnl ===================================================================
10279 dnl Check for system curl
10280 dnl ===================================================================
10281 AC_MSG_CHECKING([which libcurl to use])
10282 if test "$with_system_curl" = "auto"; then
10283 with_system_curl="$with_system_libs"
10286 if test "$enable_curl" = "yes" -a "$with_system_curl" = "yes"; then
10287 AC_MSG_RESULT([external])
10290 PKG_CHECK_MODULES(CURL, libcurl >= 7.68.0)
10293 elif test "$enable_curl" = "no"; then
10294 AC_MSG_RESULT([none])
10296 AC_MSG_RESULT([internal])
10298 BUILD_TYPE="$BUILD_TYPE CURL"
10301 AC_SUBST(SYSTEM_CURL)
10302 AC_SUBST(CURL_CFLAGS)
10303 AC_SUBST(CURL_LIBS)
10304 AC_SUBST(ENABLE_CURL)
10306 dnl ===================================================================
10307 dnl Check for system boost
10308 dnl ===================================================================
10309 AC_MSG_CHECKING([which boost to use])
10310 if test "$with_system_boost" = "yes"; then
10311 AC_MSG_RESULT([external])
10313 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10315 AX_BOOST_FILESYSTEM
10318 AC_LANG_PUSH([C++])
10319 save_CXXFLAGS=$CXXFLAGS
10320 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10321 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10322 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10323 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10324 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10325 CXXFLAGS=$save_CXXFLAGS
10327 # this is in m4/ax_boost_base.m4
10328 FilterLibs "${BOOST_LDFLAGS}"
10329 BOOST_LDFLAGS="${filteredlibs}"
10331 AC_MSG_RESULT([internal])
10332 BUILD_TYPE="$BUILD_TYPE BOOST"
10334 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10335 # use warning-suppressing wrapper headers
10336 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10338 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10341 AC_SUBST(SYSTEM_BOOST)
10343 dnl ===================================================================
10344 dnl Check for system mdds
10345 dnl ===================================================================
10346 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-2.0 >= 2.0.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10348 dnl ===================================================================
10349 dnl Check for system glm
10350 dnl ===================================================================
10351 AC_MSG_CHECKING([which glm to use])
10352 if test "$with_system_glm" = "yes"; then
10353 AC_MSG_RESULT([external])
10355 AC_LANG_PUSH([C++])
10356 AC_CHECK_HEADER([glm/glm.hpp], [],
10357 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10360 AC_MSG_RESULT([internal])
10361 BUILD_TYPE="$BUILD_TYPE GLM"
10363 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10365 AC_SUBST([GLM_CFLAGS])
10366 AC_SUBST([SYSTEM_GLM])
10368 dnl ===================================================================
10369 dnl Check for system odbc
10370 dnl ===================================================================
10371 AC_MSG_CHECKING([which odbc headers to use])
10372 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
10373 AC_MSG_RESULT([external])
10374 SYSTEM_ODBC_HEADERS=TRUE
10376 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10377 save_CPPFLAGS=$CPPFLAGS
10379 PathFormat "$winsdktest"
10380 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"
10381 AC_CHECK_HEADER(sqlext.h, [],
10382 [AC_MSG_ERROR(odbc not found. install odbc)],
10383 [#include <windows.h>])
10384 CPPFLAGS=$save_CPPFLAGS
10386 AC_CHECK_HEADER(sqlext.h, [],
10387 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10389 elif test "$enable_database_connectivity" = no; then
10390 AC_MSG_RESULT([none])
10392 AC_MSG_RESULT([internal])
10393 SYSTEM_ODBC_HEADERS=
10394 BUILD_TYPE="$BUILD_TYPE IODBC"
10396 AC_SUBST(SYSTEM_ODBC_HEADERS)
10398 dnl ===================================================================
10399 dnl Check for system NSS
10400 dnl ===================================================================
10401 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10404 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,,TRUE)
10407 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10410 AC_DEFINE(HAVE_FEATURE_NSS)
10412 elif test $_os != iOS ; then
10415 AC_SUBST(ENABLE_NSS)
10417 dnl ===================================================================
10418 dnl Enable LDAP support
10419 dnl ===================================================================
10421 if test "$test_openldap" = yes; then
10422 AC_MSG_CHECKING([whether to enable LDAP support])
10423 if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10424 AC_MSG_RESULT([yes])
10427 if test "$enable_ldap" != "yes"; then
10428 AC_MSG_RESULT([no])
10430 AC_MSG_RESULT([no (needs NSS or system openldap)])
10434 dnl ===================================================================
10435 dnl Check for system openldap
10436 dnl ===================================================================
10438 if test "$ENABLE_LDAP" = TRUE; then
10439 AC_MSG_CHECKING([which openldap library to use])
10440 if test "$with_system_openldap" = yes; then
10441 AC_MSG_RESULT([external])
10442 SYSTEM_OPENLDAP=TRUE
10443 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10444 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10445 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10447 AC_MSG_RESULT([internal])
10448 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10453 AC_SUBST(ENABLE_LDAP)
10454 AC_SUBST(SYSTEM_OPENLDAP)
10456 dnl ===================================================================
10457 dnl Check for TLS/SSL and cryptographic implementation to use
10458 dnl ===================================================================
10459 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10460 if test -n "$with_tls"; then
10463 AC_DEFINE(USE_TLS_OPENSSL)
10465 AC_MSG_RESULT([$TLS])
10467 if test "$enable_openssl" != "yes"; then
10468 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10471 # warn that OpenSSL has been selected but not all TLS code has this option
10472 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10473 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10476 AC_DEFINE(USE_TLS_NSS)
10478 AC_MSG_RESULT([$TLS])
10481 AC_MSG_RESULT([none])
10482 AC_MSG_WARN([Skipping TLS/SSL])
10486 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10488 nss - Mozilla's Network Security Services (NSS)
10493 # default to using NSS, it results in smaller oox lib
10494 AC_DEFINE(USE_TLS_NSS)
10496 AC_MSG_RESULT([$TLS])
10500 dnl ===================================================================
10501 dnl Check for system sane
10502 dnl ===================================================================
10503 AC_MSG_CHECKING([which sane header to use])
10504 if test "$with_system_sane" = "yes"; then
10505 AC_MSG_RESULT([external])
10506 AC_CHECK_HEADER(sane/sane.h, [],
10507 [AC_MSG_ERROR(sane not found. install sane)], [])
10509 AC_MSG_RESULT([internal])
10510 BUILD_TYPE="$BUILD_TYPE SANE"
10513 dnl ===================================================================
10514 dnl Check for system icu
10515 dnl ===================================================================
10522 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10523 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10524 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10525 AC_MSG_CHECKING([which icu to use])
10526 if test "$with_system_icu" = "yes"; then
10527 AC_MSG_RESULT([external])
10529 AC_LANG_PUSH([C++])
10530 AC_MSG_CHECKING([for unicode/rbbi.h])
10531 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10534 if test "$cross_compiling" != "yes"; then
10535 PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10536 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10537 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10538 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10541 if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10542 ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10543 ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10544 ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10545 AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10546 if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10547 AC_MSG_RESULT([yes])
10549 AC_MSG_RESULT([no])
10550 if test "$with_system_icu_for_build" != "force"; then
10551 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10552 You can use --with-system-icu-for-build=force to use it anyway.])
10557 if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10558 # using the system icu tools can lead to version confusion, use the
10559 # ones from the build environment when cross-compiling
10560 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10561 if test -z "$SYSTEM_GENBRK"; then
10562 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10564 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10565 if test -z "$SYSTEM_GENCCODE"; then
10566 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10568 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10569 if test -z "$SYSTEM_GENCMN"; then
10570 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10572 if test "$ICU_MAJOR" -ge "49"; then
10573 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10574 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10575 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10577 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10578 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10579 ICU_RECLASSIFIED_HEBREW_LETTER=
10583 if test "$cross_compiling" = "yes"; then
10584 if test "$ICU_MAJOR" -ge "50"; then
10585 AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10590 AC_MSG_RESULT([internal])
10592 BUILD_TYPE="$BUILD_TYPE ICU"
10593 # surprisingly set these only for "internal" (to be used by various other
10594 # external libs): the system icu-config is quite unhelpful and spits out
10595 # dozens of weird flags and also default path -I/usr/include
10596 ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10597 ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10599 if test "$ICU_MAJOR" -ge "59"; then
10600 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10601 # with -std=c++11 but not all external libraries can be built with that,
10602 # for those use a bit-compatible typedef uint16_t UChar; see
10603 # icu/source/common/unicode/umachine.h
10604 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10608 AC_SUBST(SYSTEM_ICU)
10609 AC_SUBST(SYSTEM_GENBRK)
10610 AC_SUBST(SYSTEM_GENCCODE)
10611 AC_SUBST(SYSTEM_GENCMN)
10612 AC_SUBST(ICU_MAJOR)
10613 AC_SUBST(ICU_MINOR)
10614 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10615 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10616 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10617 AC_SUBST(ICU_CFLAGS)
10619 AC_SUBST(ICU_UCHAR_TYPE)
10621 dnl ==================================================================
10623 dnl ==================================================================
10624 DEFAULT_CRASHDUMP_VALUE="true"
10625 AC_MSG_CHECKING([whether to enable breakpad])
10626 if test "$enable_breakpad" != yes; then
10627 AC_MSG_RESULT([no])
10629 AC_MSG_RESULT([yes])
10630 ENABLE_BREAKPAD="TRUE"
10631 AC_DEFINE(ENABLE_BREAKPAD)
10632 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10633 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10635 AC_MSG_CHECKING([for disable crash dump])
10636 if test "$enable_crashdump" = no; then
10637 DEFAULT_CRASHDUMP_VALUE="false"
10638 AC_MSG_RESULT([yes])
10640 AC_MSG_RESULT([no])
10643 AC_MSG_CHECKING([for crashreport config])
10644 if test "$with_symbol_config" = "no"; then
10645 BREAKPAD_SYMBOL_CONFIG="invalid"
10646 AC_MSG_RESULT([no])
10648 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10649 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10650 AC_MSG_RESULT([yes])
10652 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10654 AC_SUBST(ENABLE_BREAKPAD)
10655 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10657 dnl ==================================================================
10659 dnl ==================================================================
10660 AC_MSG_CHECKING([whether to enable fuzzers])
10661 if test "$enable_fuzzers" != yes; then
10662 AC_MSG_RESULT([no])
10664 if test -z $LIB_FUZZING_ENGINE; then
10665 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
10667 AC_MSG_RESULT([yes])
10668 ENABLE_FUZZERS="TRUE"
10669 AC_DEFINE([ENABLE_FUZZERS],1)
10670 BUILD_TYPE="$BUILD_TYPE FUZZERS"
10672 AC_SUBST(LIB_FUZZING_ENGINE)
10673 AC_SUBST(ENABLE_FUZZERS)
10675 dnl ===================================================================
10677 dnl ===================================================================
10678 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10679 if test "$with_system_orcus" != "yes"; then
10680 if test "$SYSTEM_BOOST" = "TRUE"; then
10681 dnl Link with Boost.System
10682 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10683 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10684 dnl in documentation has no effect.
10688 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10689 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10690 AC_SUBST([BOOST_SYSTEM_LIB])
10691 AC_SUBST(SYSTEM_LIBORCUS)
10693 dnl ===================================================================
10695 dnl ===================================================================
10698 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10699 ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10700 ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"],
10702 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10703 ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10704 ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"],
10708 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10709 ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10710 ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10711 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10712 ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10713 ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10718 if test "$COM" = "MSC"; then # override the above
10719 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10720 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10723 if test "$with_system_harfbuzz" = "yes"; then
10724 if test "$with_system_graphite" = "no"; then
10725 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10727 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10729 save_CFLAGS="$CFLAGS"
10730 LIBS="$LIBS $HARFBUZZ_LIBS"
10731 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10732 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10734 CFLAGS="$save_CFLAGS"
10736 if test "$with_system_graphite" = "yes"; then
10737 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10741 if test "$USING_X11" = TRUE; then
10744 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10746 if test -z "$x_includes"; then
10747 x_includes="default_x_includes"
10749 if test -z "$x_libraries"; then
10750 x_libraries="default_x_libraries"
10752 CFLAGS="$CFLAGS $X_CFLAGS"
10753 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10754 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10756 x_includes="no_x_includes"
10757 x_libraries="no_x_libraries"
10760 if test "$USING_X11" = TRUE; then
10761 dnl ===================================================================
10762 dnl Check for extension headers
10763 dnl ===================================================================
10764 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10765 [#include <X11/extensions/shape.h>])
10767 # vcl needs ICE and SM
10768 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10769 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10770 [AC_MSG_ERROR(ICE library not found)])
10771 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10772 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10773 [AC_MSG_ERROR(SM library not found)])
10776 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10777 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10778 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10781 dnl ===================================================================
10782 dnl Check for system Xrender
10783 dnl ===================================================================
10784 AC_MSG_CHECKING([whether to use Xrender])
10785 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10786 AC_MSG_RESULT([yes])
10787 PKG_CHECK_MODULES(XRENDER, xrender)
10788 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10789 FilterLibs "${XRENDER_LIBS}"
10790 XRENDER_LIBS="${filteredlibs}"
10791 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10792 [AC_MSG_ERROR(libXrender not found or functional)], [])
10793 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10794 [AC_MSG_ERROR(Xrender not found. install X)], [])
10796 AC_MSG_RESULT([no])
10798 AC_SUBST(XRENDER_CFLAGS)
10799 AC_SUBST(XRENDER_LIBS)
10801 dnl ===================================================================
10802 dnl Check for XRandr
10803 dnl ===================================================================
10804 AC_MSG_CHECKING([whether to enable RandR support])
10805 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10806 AC_MSG_RESULT([yes])
10807 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10808 if test "$ENABLE_RANDR" != "TRUE"; then
10809 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10810 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10812 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10813 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10814 XRANDR_LIBS="-lXrandr "
10815 ENABLE_RANDR="TRUE"
10817 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10818 FilterLibs "${XRANDR_LIBS}"
10819 XRANDR_LIBS="${filteredlibs}"
10822 AC_MSG_RESULT([no])
10824 AC_SUBST(XRANDR_CFLAGS)
10825 AC_SUBST(XRANDR_LIBS)
10826 AC_SUBST(ENABLE_RANDR)
10828 if test "$test_webdav" = yes; then
10829 if test -z "$with_webdav"; then
10832 WITH_WEBDAV="$with_webdav"
10836 AC_MSG_CHECKING([for webdav library])
10837 case "$WITH_WEBDAV" in
10839 AC_MSG_RESULT([curl])
10840 # curl is already mandatory (almost) and checked elsewhere
10841 if test "$enable_curl" = "no"; then
10842 AC_MSG_ERROR(["--with-webdav=curl conflicts with --disable-curl"])
10846 AC_MSG_RESULT([serf])
10847 # Check for system apr-util
10848 libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10849 ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10850 ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10851 if test "$COM" = "MSC"; then
10853 test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10854 APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10857 # Check for system serf
10858 libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.3.9])
10861 AC_MSG_RESULT([neon])
10862 # Check for system neon
10863 libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.2])
10864 if test "$with_system_neon" = "yes"; then
10865 NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10869 AC_SUBST(NEON_VERSION)
10872 AC_MSG_RESULT([none, disabled])
10876 AC_SUBST(WITH_WEBDAV)
10878 dnl ===================================================================
10879 dnl Check for disabling cve_tests
10880 dnl ===================================================================
10881 AC_MSG_CHECKING([whether to execute CVE tests])
10882 # If not explicitly enabled or disabled, default
10883 if test -z "$enable_cve_tests"; then
10886 # Default cves off for Windows with its wild and wonderful
10887 # variety of AV software kicking in and panicking
10888 enable_cve_tests=no
10892 enable_cve_tests=yes
10896 if test "$enable_cve_tests" = "no"; then
10897 AC_MSG_RESULT([no])
10898 DISABLE_CVE_TESTS=TRUE
10899 AC_SUBST(DISABLE_CVE_TESTS)
10901 AC_MSG_RESULT([yes])
10904 dnl ===================================================================
10905 dnl Check for enabling chart XShape tests
10906 dnl ===================================================================
10907 AC_MSG_CHECKING([whether to execute chart XShape tests])
10908 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10909 AC_MSG_RESULT([yes])
10910 ENABLE_CHART_TESTS=TRUE
10911 AC_SUBST(ENABLE_CHART_TESTS)
10913 AC_MSG_RESULT([no])
10916 dnl ===================================================================
10917 dnl Check for system openssl
10918 dnl ===================================================================
10920 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10921 if test "$enable_openssl" = "yes"; then
10922 AC_MSG_RESULT([no])
10923 ENABLE_OPENSSL=TRUE
10924 if test "$_os" = Darwin ; then
10925 # OpenSSL is deprecated when building for 10.7 or later.
10927 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10928 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10930 with_system_openssl=no
10931 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10932 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10933 && test "$with_system_openssl" != "no"; then
10934 with_system_openssl=yes
10935 SYSTEM_OPENSSL=TRUE
10937 OPENSSL_LIBS="-lssl -lcrypto"
10939 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10941 if test "$with_system_openssl" = "yes"; then
10942 AC_MSG_CHECKING([whether openssl supports SHA512])
10944 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10945 SHA512_CTX context;
10946 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10950 AC_MSG_RESULT([yes])
10952 # warn that although OpenSSL is disabled, system libraries may depend on it
10953 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10954 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10957 AC_SUBST([ENABLE_OPENSSL])
10959 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
10960 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10961 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10962 enable_cipher_openssl_backend=no
10964 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10967 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10968 ENABLE_CIPHER_OPENSSL_BACKEND=
10969 if test "$enable_cipher_openssl_backend" = yes; then
10970 AC_MSG_RESULT([yes])
10971 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10973 AC_MSG_RESULT([no])
10975 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10977 dnl ===================================================================
10978 dnl Select the crypto backends used by LO
10979 dnl ===================================================================
10981 if test "$build_crypto" = yes; then
10982 if test "$OS" = WNT; then
10983 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
10984 AC_DEFINE([USE_CRYPTO_MSCAPI])
10985 elif test "$ENABLE_NSS" = TRUE; then
10986 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
10987 AC_DEFINE([USE_CRYPTO_NSS])
10991 dnl ===================================================================
10992 dnl Check for building gnutls
10993 dnl ===================================================================
10994 AC_MSG_CHECKING([whether to use gnutls])
10995 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10996 AC_MSG_RESULT([yes])
10997 AM_PATH_LIBGCRYPT()
10998 PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10999 AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
11000 available in the system to use as replacement.]]))
11001 FilterLibs "${LIBGCRYPT_LIBS}"
11002 LIBGCRYPT_LIBS="${filteredlibs}"
11004 AC_MSG_RESULT([no])
11007 AC_SUBST([LIBGCRYPT_CFLAGS])
11008 AC_SUBST([LIBGCRYPT_LIBS])
11010 dnl ===================================================================
11011 dnl Check for system redland
11012 dnl ===================================================================
11013 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11014 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11015 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11016 if test "$with_system_redland" = "yes"; then
11017 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11018 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11024 AC_SUBST(RAPTOR_MAJOR)
11025 AC_SUBST(RASQAL_MAJOR)
11026 AC_SUBST(REDLAND_MAJOR)
11028 dnl ===================================================================
11029 dnl Check for system hunspell
11030 dnl ===================================================================
11031 AC_MSG_CHECKING([which libhunspell to use])
11032 if test "$with_system_hunspell" = "yes"; then
11033 AC_MSG_RESULT([external])
11034 SYSTEM_HUNSPELL=TRUE
11035 AC_LANG_PUSH([C++])
11036 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11037 if test "$HUNSPELL_PC" != "TRUE"; then
11038 AC_CHECK_HEADER(hunspell.hxx, [],
11040 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11041 [AC_MSG_ERROR(hunspell headers not found.)], [])
11043 AC_CHECK_LIB([hunspell], [main], [:],
11044 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11045 HUNSPELL_LIBS=-lhunspell
11048 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11049 FilterLibs "${HUNSPELL_LIBS}"
11050 HUNSPELL_LIBS="${filteredlibs}"
11052 AC_MSG_RESULT([internal])
11054 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11055 if test "$COM" = "MSC"; then
11056 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11058 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11060 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11062 AC_SUBST(SYSTEM_HUNSPELL)
11063 AC_SUBST(HUNSPELL_CFLAGS)
11064 AC_SUBST(HUNSPELL_LIBS)
11066 dnl ===================================================================
11067 dnl Check for system zxing
11068 dnl ===================================================================
11069 AC_MSG_CHECKING([whether to use zxing])
11070 if test "$enable_zxing" = "no"; then
11071 AC_MSG_RESULT([no])
11075 AC_MSG_RESULT([yes])
11077 AC_MSG_CHECKING([which libzxing to use])
11078 if test "$with_system_zxing" = "yes"; then
11079 AC_MSG_RESULT([external])
11082 AC_LANG_PUSH([C++])
11083 save_CXXFLAGS=$CXXFLAGS
11086 for i in $CPLUS_INCLUDE_PATH /usr/include; do
11087 dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11088 dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11089 dnl unsetting follows the advice at <http://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11090 dnl a=commit;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11091 dnl unsetting IFS."):
11093 dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11094 dnl ignore them here:
11095 if test -z "$i"; then
11098 dnl TODO: White space in $i would cause problems:
11099 CXXFLAGS="$save_CXXFLAGS -I$i/ZXing"
11100 AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11101 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11103 CXXFLAGS=$save_CXXFLAGS
11104 if test -z "$ZXING_CFLAGS"; then
11105 AC_MSG_ERROR(zxing headers not found.)
11107 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11108 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11109 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11111 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11112 FilterLibs "${ZXING_LIBS}"
11113 ZXING_LIBS="${filteredlibs}"
11115 AC_MSG_RESULT([internal])
11117 BUILD_TYPE="$BUILD_TYPE ZXING"
11119 if test "$ENABLE_ZXING" = TRUE; then
11120 AC_DEFINE(ENABLE_ZXING)
11123 AC_SUBST(SYSTEM_ZXING)
11124 AC_SUBST(ENABLE_ZXING)
11125 AC_SUBST(ZXING_CFLAGS)
11126 AC_SUBST(ZXING_LIBS)
11128 dnl ===================================================================
11129 dnl Check for system box2d
11130 dnl ===================================================================
11131 AC_MSG_CHECKING([which box2d to use])
11132 if test "$with_system_box2d" = "yes"; then
11133 AC_MSG_RESULT([external])
11135 AC_LANG_PUSH([C++])
11136 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11137 [BOX2D_H_FOUND='FALSE'])
11138 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11140 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11142 # fail this. there's no other alternative to check when we are here.
11143 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11144 [AC_MSG_ERROR(box2d headers not found.)])
11146 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11148 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11149 [ AC_MSG_ERROR(box2d library not found.) ], [])
11150 BOX2D_LIBS=-l$_BOX2D_LIB
11152 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11153 FilterLibs "${BOX2D_LIBS}"
11154 BOX2D_LIBS="${filteredlibs}"
11156 AC_MSG_RESULT([internal])
11158 BUILD_TYPE="$BUILD_TYPE BOX2D"
11160 AC_SUBST(SYSTEM_BOX2D)
11161 AC_SUBST(BOX2D_CFLAGS)
11162 AC_SUBST(BOX2D_LIBS)
11164 dnl ===================================================================
11165 dnl Checking for altlinuxhyph
11166 dnl ===================================================================
11167 AC_MSG_CHECKING([which altlinuxhyph to use])
11168 if test "$with_system_altlinuxhyph" = "yes"; then
11169 AC_MSG_RESULT([external])
11171 AC_CHECK_HEADER(hyphen.h, [],
11172 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11173 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11174 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11175 [#include <hyphen.h>])
11176 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11177 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11178 if test -z "$HYPHEN_LIB"; then
11179 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11180 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11182 if test -z "$HYPHEN_LIB"; then
11183 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11184 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11187 AC_MSG_RESULT([internal])
11189 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11190 if test "$COM" = "MSC"; then
11191 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11193 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11196 AC_SUBST(SYSTEM_HYPH)
11197 AC_SUBST(HYPHEN_LIB)
11199 dnl ===================================================================
11200 dnl Checking for mythes
11201 dnl ===================================================================
11202 AC_MSG_CHECKING([which mythes to use])
11203 if test "$with_system_mythes" = "yes"; then
11204 AC_MSG_RESULT([external])
11206 AC_LANG_PUSH([C++])
11207 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11208 if test "$MYTHES_PKGCONFIG" = "no"; then
11209 AC_CHECK_HEADER(mythes.hxx, [],
11210 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11211 AC_CHECK_LIB([mythes-1.2], [main], [:],
11212 [ MYTHES_FOUND=no], [])
11213 if test "$MYTHES_FOUND" = "no"; then
11214 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11215 [ MYTHES_FOUND=no], [])
11217 if test "$MYTHES_FOUND" = "no"; then
11218 AC_MSG_ERROR([mythes library not found!.])
11222 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11223 FilterLibs "${MYTHES_LIBS}"
11224 MYTHES_LIBS="${filteredlibs}"
11226 AC_MSG_RESULT([internal])
11228 BUILD_TYPE="$BUILD_TYPE MYTHES"
11229 if test "$COM" = "MSC"; then
11230 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11232 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11235 AC_SUBST(SYSTEM_MYTHES)
11236 AC_SUBST(MYTHES_CFLAGS)
11237 AC_SUBST(MYTHES_LIBS)
11239 dnl ===================================================================
11240 dnl How should we build the linear programming solver ?
11241 dnl ===================================================================
11244 AC_MSG_CHECKING([whether to build with CoinMP])
11245 if test "$enable_coinmp" != "no"; then
11247 AC_MSG_RESULT([yes])
11248 if test "$with_system_coinmp" = "yes"; then
11250 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11251 FilterLibs "${COINMP_LIBS}"
11252 COINMP_LIBS="${filteredlibs}"
11254 BUILD_TYPE="$BUILD_TYPE COINMP"
11257 AC_MSG_RESULT([no])
11259 AC_SUBST(ENABLE_COINMP)
11260 AC_SUBST(SYSTEM_COINMP)
11261 AC_SUBST(COINMP_CFLAGS)
11262 AC_SUBST(COINMP_LIBS)
11265 AC_MSG_CHECKING([whether to build with lpsolve])
11266 if test "$enable_lpsolve" != "no"; then
11267 ENABLE_LPSOLVE=TRUE
11268 AC_MSG_RESULT([yes])
11270 AC_MSG_RESULT([no])
11272 AC_SUBST(ENABLE_LPSOLVE)
11274 if test "$ENABLE_LPSOLVE" = TRUE; then
11275 AC_MSG_CHECKING([which lpsolve to use])
11276 if test "$with_system_lpsolve" = "yes"; then
11277 AC_MSG_RESULT([external])
11278 SYSTEM_LPSOLVE=TRUE
11279 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11280 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11282 # some systems need this. Like Ubuntu...
11283 AC_CHECK_LIB(m, floor)
11284 AC_CHECK_LIB(dl, dlopen)
11285 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11286 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11289 AC_MSG_RESULT([internal])
11291 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11294 AC_SUBST(SYSTEM_LPSOLVE)
11296 dnl ===================================================================
11297 dnl Checking for libexttextcat
11298 dnl ===================================================================
11299 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11300 if test "$with_system_libexttextcat" = "yes"; then
11301 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11303 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11305 dnl ===================================================================
11306 dnl Checking for libnumbertext
11307 dnl ===================================================================
11308 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11309 if test "$with_system_libnumbertext" = "yes"; then
11310 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11311 SYSTEM_LIBNUMBERTEXT=YES
11313 SYSTEM_LIBNUMBERTEXT=
11314 AC_LANG_PUSH([C++])
11315 save_CPPFLAGS=$CPPFLAGS
11316 CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11317 AC_CHECK_HEADERS([codecvt regex])
11318 AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11319 [ LIBNUMBERTEXT_CFLAGS=''
11320 AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11321 Enable libnumbertext fallback (missing number to number name conversion).])
11323 CPPFLAGS=$save_CPPFLAGS
11326 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11327 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11328 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11330 dnl ***************************************
11331 dnl testing libc version for Linux...
11332 dnl ***************************************
11333 if test "$_os" = "Linux"; then
11334 AC_MSG_CHECKING([whether the libc is recent enough])
11335 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11336 #include <features.h>
11337 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11338 #error glibc >= 2.1 is required
11340 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11343 dnl =========================================
11344 dnl Check for uuidgen
11345 dnl =========================================
11346 if test "$_os" = "WINNT"; then
11347 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11348 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11349 UUIDGEN=uuidgen.exe
11352 AC_PATH_PROG([UUIDGEN], [uuidgen])
11353 if test -z "$UUIDGEN"; then
11354 AC_MSG_WARN([uuid is needed for building installation sets])
11358 dnl ***************************************
11359 dnl Checking for bison and flex
11360 dnl ***************************************
11361 AC_PATH_PROG(BISON, bison)
11362 if test -z "$BISON"; then
11363 AC_MSG_ERROR([no bison found in \$PATH, install it])
11365 AC_MSG_CHECKING([the bison version])
11366 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11367 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11368 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11371 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]
11372 dnl typedef union YYSTYPE
11375 dnl while at least 3.4.1 is know to be good:
11376 if test "$COMPILER_PLUGINS" = TRUE; then
11377 if test "$_bison_longver" -lt 2004; then
11378 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11381 if test "$_bison_longver" -lt 2000; then
11382 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11388 AC_PATH_PROG(FLEX, flex)
11389 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11390 FLEX=`cygpath -m $FLEX`
11392 if test -z "$FLEX"; then
11393 AC_MSG_ERROR([no flex found in \$PATH, install it])
11395 AC_MSG_CHECKING([the flex version])
11396 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11397 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11398 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11402 dnl ***************************************
11403 dnl Checking for patch
11404 dnl ***************************************
11405 AC_PATH_PROG(PATCH, patch)
11406 if test -z "$PATCH"; then
11407 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11410 dnl On Solaris or macOS, check if --with-gnu-patch was used
11411 if test "$_os" = "SunOS" -o "$_os" = "Darwin" -o "$_os" = "FreeBSD"; then
11412 if test -z "$with_gnu_patch"; then
11415 if test -x "$with_gnu_patch"; then
11416 GNUPATCH=$with_gnu_patch
11418 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11422 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11423 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11424 AC_MSG_RESULT([yes])
11426 if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11427 AC_MSG_RESULT([no, but accepted (Apple patch)])
11428 add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11430 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11437 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11438 GNUPATCH=`cygpath -m $GNUPATCH`
11441 dnl We also need to check for --with-gnu-cp
11443 if test -z "$with_gnu_cp"; then
11444 # check the place where the good stuff is hidden on Solaris...
11445 if test -x /usr/gnu/bin/cp; then
11446 GNUCP=/usr/gnu/bin/cp
11448 AC_PATH_PROGS(GNUCP, gnucp cp)
11450 if test -z $GNUCP; then
11451 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11454 if test -x "$with_gnu_cp"; then
11457 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11461 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11462 GNUCP=`cygpath -m $GNUCP`
11465 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11466 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11467 AC_MSG_RESULT([yes])
11468 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11469 AC_MSG_RESULT([yes])
11471 case "$build_os" in
11472 darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11475 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11478 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11487 dnl ***************************************
11488 dnl testing assembler path
11489 dnl ***************************************
11491 if test "$_os" = "WINNT"; then
11492 case "$WIN_HOST_ARCH" in
11493 x86) assembler=ml.exe ;;
11494 x64) assembler=ml64.exe ;;
11495 arm64) assembler=armasm64.exe ;;
11498 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11499 if test -f "$MSVC_HOST_PATH/$assembler"; then
11500 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11501 AC_MSG_RESULT([$ML_EXE])
11503 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11509 dnl ===================================================================
11510 dnl We need zip and unzip
11511 dnl ===================================================================
11512 AC_PATH_PROG(ZIP, zip)
11513 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11514 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11515 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],,)
11518 AC_PATH_PROG(UNZIP, unzip)
11519 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11521 dnl ===================================================================
11522 dnl Zip must be a specific type for different build types.
11523 dnl ===================================================================
11524 if test $build_os = cygwin; then
11525 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11526 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11530 dnl ===================================================================
11531 dnl We need touch with -h option support.
11532 dnl ===================================================================
11533 AC_PATH_PROG(TOUCH, touch)
11534 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11535 touch "$WARNINGS_FILE"
11536 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11537 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],,)
11540 dnl ===================================================================
11541 dnl Check for system epoxy
11542 dnl ===================================================================
11543 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11545 dnl ===================================================================
11546 dnl Set vcl option: coordinate device in double or sal_Int32
11547 dnl ===================================================================
11549 dnl disabled for now, we don't want subtle differences between OSs
11550 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11551 dnl if test "$_os" = "Darwin" -o $_os = iOS ; then
11552 dnl AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11553 dnl AC_MSG_RESULT([double])
11555 dnl AC_MSG_RESULT([sal_Int32])
11558 dnl ===================================================================
11559 dnl Show which vclplugs will be built.
11560 dnl ===================================================================
11562 if test "$USING_X11" != TRUE; then
11567 if test "x$enable_gtk3" = "xyes"; then
11569 AC_DEFINE(ENABLE_GTK3)
11572 AC_SUBST(ENABLE_GTK3)
11574 ENABLE_GTK3_KDE5=""
11575 if test "x$enable_gtk3_kde5" = "xyes"; then
11576 ENABLE_GTK3_KDE5="TRUE"
11577 AC_DEFINE(ENABLE_GTK3_KDE5)
11580 AC_SUBST(ENABLE_GTK3_KDE5)
11583 if test "x$enable_gtk4" = "xyes"; then
11585 AC_DEFINE(ENABLE_GTK4)
11588 AC_SUBST(ENABLE_GTK4)
11591 if test "x$enable_qt5" = "xyes"; then
11593 AC_DEFINE(ENABLE_QT5)
11596 AC_SUBST(ENABLE_QT5)
11599 if test "x$enable_qt6" = "xyes"; then
11601 AC_DEFINE(ENABLE_QT6)
11604 AC_SUBST(ENABLE_QT6)
11608 if test "x$enable_kf5" = "xyes"; then
11610 AC_DEFINE(ENABLE_KF5)
11613 AC_SUBST(ENABLE_KF5)
11615 if test "x$USING_X11" = "xyes"; then
11619 if test "$_os" = "WINNT"; then
11621 elif test "$_os" = "Darwin"; then
11623 elif test "$_os" = "iOS"; then
11625 elif test "$_os" = Android; then
11629 build_vcl_plugins="$R"
11630 if test -z "$build_vcl_plugins"; then
11631 build_vcl_plugins=" none"
11633 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11635 AC_SUBST([VCL_PLUGIN_INFO])
11637 dnl ===================================================================
11638 dnl Check for GTK libraries
11639 dnl ===================================================================
11643 ENABLE_GTKTILEDVIEWER=""
11644 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11645 if test "$with_system_cairo" = no; then
11646 add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11648 : ${with_system_cairo:=yes}
11649 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)
11650 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11651 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11652 FilterLibs "${GTK3_LIBS}"
11653 GTK3_LIBS="${filteredlibs}"
11655 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11656 if test "$with_system_epoxy" != "yes"; then
11657 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11658 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11659 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11661 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11662 PathFormat "${with_gtk3_build}/lib/pkgconfig"
11663 if test "$build_os" = "cygwin"; then
11664 dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11665 formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11668 PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11669 PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11670 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11671 FilterLibs "${GTK3_LIBS}"
11672 GTK3_LIBS="${filteredlibs}"
11673 ENABLE_GTKTILEDVIEWER="yes"
11675 AC_SUBST(GTK3_LIBS)
11676 AC_SUBST(GTK3_CFLAGS)
11677 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11681 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11682 if test "$with_system_cairo" = no; then
11683 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11685 : ${with_system_cairo:=yes}
11686 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11687 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11688 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11689 FilterLibs "${GTK4_LIBS}"
11690 GTK4_LIBS="${filteredlibs}"
11692 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11693 if test "$with_system_epoxy" != "yes"; then
11694 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11695 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11696 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11699 AC_SUBST(GTK4_LIBS)
11700 AC_SUBST(GTK4_CFLAGS)
11702 if test "$enable_introspection" = yes; then
11703 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11704 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11706 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11710 dnl ===================================================================
11711 dnl check for dbus support
11712 dnl ===================================================================
11716 DBUS_GLIB_CFLAGS=""
11720 if test "$enable_dbus" = "no"; then
11724 AC_MSG_CHECKING([whether to enable DBUS support])
11725 if test "$test_dbus" = "yes"; then
11727 AC_MSG_RESULT([yes])
11728 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11729 AC_DEFINE(ENABLE_DBUS)
11730 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11731 FilterLibs "${DBUS_LIBS}"
11732 DBUS_LIBS="${filteredlibs}"
11734 # Glib is needed for BluetoothServer
11735 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11736 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11738 DBUS_HAVE_GLIB="TRUE"
11739 AC_DEFINE(DBUS_HAVE_GLIB,1)
11741 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11744 AC_MSG_RESULT([no])
11747 AC_SUBST(ENABLE_DBUS)
11748 AC_SUBST(DBUS_CFLAGS)
11749 AC_SUBST(DBUS_LIBS)
11750 AC_SUBST(DBUS_GLIB_CFLAGS)
11751 AC_SUBST(DBUS_GLIB_LIBS)
11752 AC_SUBST(DBUS_HAVE_GLIB)
11754 AC_MSG_CHECKING([whether to enable Impress remote control])
11755 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11756 AC_MSG_RESULT([yes])
11757 ENABLE_SDREMOTE=TRUE
11758 SDREMOTE_ENTITLEMENT=" <key>com.apple.security.network.server</key>
11760 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11762 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11763 # The Bluetooth code doesn't compile with macOS SDK 10.15
11764 if test "$enable_sdremote_bluetooth" = yes; then
11765 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11767 add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11768 enable_sdremote_bluetooth=no
11770 # If not explicitly enabled or disabled, default
11771 if test -z "$enable_sdremote_bluetooth"; then
11774 # Default to yes for these
11775 enable_sdremote_bluetooth=yes
11779 enable_sdremote_bluetooth=no
11783 # $enable_sdremote_bluetooth is guaranteed non-empty now
11785 if test "$enable_sdremote_bluetooth" != "no"; then
11786 if test "$OS" = "LINUX"; then
11787 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11788 AC_MSG_RESULT([yes])
11789 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11790 dnl ===================================================================
11791 dnl Check for system bluez
11792 dnl ===================================================================
11793 AC_MSG_CHECKING([which Bluetooth header to use])
11794 if test "$with_system_bluez" = "yes"; then
11795 AC_MSG_RESULT([external])
11796 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11797 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11800 AC_MSG_RESULT([internal])
11804 AC_MSG_RESULT([no, dbus disabled])
11805 ENABLE_SDREMOTE_BLUETOOTH=
11809 AC_MSG_RESULT([yes])
11810 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11812 SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11813 <key>com.apple.security.device.bluetooth</key>
11817 AC_MSG_RESULT([no])
11818 ENABLE_SDREMOTE_BLUETOOTH=
11824 AC_MSG_RESULT([no])
11826 AC_SUBST(ENABLE_SDREMOTE)
11827 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11828 AC_SUBST(SDREMOTE_ENTITLEMENT)
11829 AC_SUBST(SYSTEM_BLUEZ)
11831 dnl ===================================================================
11832 dnl Check whether to enable GIO support
11833 dnl ===================================================================
11834 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11835 AC_MSG_CHECKING([whether to enable GIO support])
11836 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11837 dnl Need at least 2.26 for the dbus support.
11838 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11839 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11840 if test "$ENABLE_GIO" = "TRUE"; then
11841 AC_DEFINE(ENABLE_GIO)
11842 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11843 FilterLibs "${GIO_LIBS}"
11844 GIO_LIBS="${filteredlibs}"
11847 AC_MSG_RESULT([no])
11850 AC_SUBST(ENABLE_GIO)
11851 AC_SUBST(GIO_CFLAGS)
11855 dnl ===================================================================
11857 SPLIT_APP_MODULES=""
11858 if test "$enable_split_app_modules" = "yes"; then
11859 SPLIT_APP_MODULES="TRUE"
11861 AC_SUBST(SPLIT_APP_MODULES)
11863 SPLIT_OPT_FEATURES=""
11864 if test "$enable_split_opt_features" = "yes"; then
11865 SPLIT_OPT_FEATURES="TRUE"
11867 AC_SUBST(SPLIT_OPT_FEATURES)
11869 dnl ===================================================================
11870 dnl Check whether the GStreamer libraries are available.
11871 dnl ===================================================================
11873 ENABLE_GSTREAMER_1_0=""
11875 if test "$test_gstreamer_1_0" = yes; then
11877 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11878 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11879 ENABLE_GSTREAMER_1_0="TRUE"
11880 AC_MSG_RESULT([yes])
11881 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11882 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11883 FilterLibs "${GSTREAMER_1_0_LIBS}"
11884 GSTREAMER_1_0_LIBS="${filteredlibs}"
11885 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11887 AC_MSG_RESULT([no])
11890 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11891 AC_SUBST(GSTREAMER_1_0_LIBS)
11892 AC_SUBST(ENABLE_GSTREAMER_1_0)
11894 ENABLE_OPENGL_TRANSITIONS=
11895 ENABLE_OPENGL_CANVAS=
11896 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11898 elif test "$_os" = "Darwin"; then
11899 # We use frameworks on macOS, no need for detail checks
11900 ENABLE_OPENGL_TRANSITIONS=TRUE
11901 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11902 ENABLE_OPENGL_CANVAS=TRUE
11903 elif test $_os = WINNT; then
11904 ENABLE_OPENGL_TRANSITIONS=TRUE
11905 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11906 ENABLE_OPENGL_CANVAS=TRUE
11908 if test "$USING_X11" = TRUE; then
11909 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11910 ENABLE_OPENGL_TRANSITIONS=TRUE
11911 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11912 ENABLE_OPENGL_CANVAS=TRUE
11916 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11917 AC_SUBST(ENABLE_OPENGL_CANVAS)
11919 dnl =================================================
11920 dnl Check whether to build with OpenCL support.
11921 dnl =================================================
11923 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11924 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11925 # platform (optional at run-time, used through clew).
11926 BUILD_TYPE="$BUILD_TYPE OPENCL"
11927 AC_DEFINE(HAVE_FEATURE_OPENCL)
11930 dnl =================================================
11931 dnl Check whether to build with dconf support.
11932 dnl =================================================
11934 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11935 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11936 if test "$enable_dconf" = yes; then
11937 AC_MSG_ERROR([dconf not found])
11942 AC_MSG_CHECKING([whether to enable dconf])
11943 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11947 AC_MSG_RESULT([no])
11950 AC_DEFINE(ENABLE_DCONF)
11951 AC_MSG_RESULT([yes])
11953 AC_SUBST([DCONF_CFLAGS])
11954 AC_SUBST([DCONF_LIBS])
11955 AC_SUBST([ENABLE_DCONF])
11958 AC_MSG_CHECKING([whether to build the PDF import feature])
11960 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
11961 AC_MSG_RESULT([yes])
11962 ENABLE_PDFIMPORT=TRUE
11963 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11965 AC_MSG_RESULT([no])
11969 AC_MSG_CHECKING([whether to build PDFium])
11971 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11972 AC_MSG_RESULT([yes])
11974 BUILD_TYPE="$BUILD_TYPE PDFIUM"
11976 AC_MSG_RESULT([no])
11978 AC_SUBST(ENABLE_PDFIUM)
11980 if test "$ENABLE_PDFIUM" = "TRUE"; then
11981 AC_MSG_CHECKING([which OpenJPEG library to use])
11982 if test "$with_system_openjpeg" = "yes"; then
11983 SYSTEM_OPENJPEG2=TRUE
11984 AC_MSG_RESULT([external])
11985 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
11986 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11987 FilterLibs "${OPENJPEG2_LIBS}"
11988 OPENJPEG2_LIBS="${filteredlibs}"
11990 SYSTEM_OPENJPEG2=FALSE
11991 AC_MSG_RESULT([internal])
11993 AC_MSG_CHECKING([which Abseil library to use])
11994 if test "$with_system_abseil" = "yes"; then
11995 AC_MSG_RESULT([external])
11997 AC_LANG_PUSH([C++])
11998 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
11999 [AC_MSG_ERROR(abseil headers not found.)], [])
12000 #ABSEIL_CFLAGS=-I/usr/include
12001 AC_CHECK_LIB([absl_bad_optional_access], [main], [ABSEIL_LIBS=-labsl_bad_optional_access],
12002 [ AC_MSG_ERROR([libabsl_bad_optional_access library not found.]) ])
12004 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12005 FilterLibs "${ABSEIL_LIBS}"
12006 ABSEIL_LIBS="${filteredlibs}"
12008 AC_MSG_RESULT([internal])
12011 AC_SUBST(SYSTEM_OPENJPEG2)
12012 AC_SUBST(SYSTEM_ABSEIL)
12013 AC_SUBST(ABSEIL_CFLAGS)
12014 AC_SUBST(ABSEIL_LIBS)
12016 dnl ===================================================================
12017 dnl Check for poppler
12018 dnl ===================================================================
12020 AC_MSG_CHECKING([whether to build Poppler])
12021 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12022 AC_MSG_RESULT([yes])
12023 ENABLE_POPPLER=TRUE
12024 AC_DEFINE(HAVE_FEATURE_POPPLER)
12026 AC_MSG_RESULT([no])
12028 AC_SUBST(ENABLE_POPPLER)
12030 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12031 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12034 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12035 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12038 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12039 dnl ===================================================================
12040 dnl Check for system poppler
12041 dnl ===================================================================
12042 AC_MSG_CHECKING([which PDF import poppler to use])
12043 if test "$with_system_poppler" = "yes"; then
12044 AC_MSG_RESULT([external])
12045 SYSTEM_POPPLER=TRUE
12046 PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12047 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12048 FilterLibs "${POPPLER_LIBS}"
12049 POPPLER_LIBS="${filteredlibs}"
12051 AC_MSG_RESULT([internal])
12053 BUILD_TYPE="$BUILD_TYPE POPPLER"
12055 AC_DEFINE([ENABLE_PDFIMPORT],1)
12057 AC_SUBST(ENABLE_PDFIMPORT)
12058 AC_SUBST(SYSTEM_POPPLER)
12059 AC_SUBST(POPPLER_CFLAGS)
12060 AC_SUBST(POPPLER_LIBS)
12064 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12065 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12066 if test "$SYSTEM_FREETYPE" = TRUE; then
12067 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12068 [skia_freetype_ok=yes],
12069 [skia_freetype_ok=no])
12070 else # internal is ok
12071 skia_freetype_ok=yes
12073 AC_MSG_CHECKING([whether to build Skia])
12074 if test "$skia_freetype_ok" = "yes"; then
12075 if test "$enable_skia" = "debug"; then
12076 AC_MSG_RESULT([yes (debug)])
12077 ENABLE_SKIA_DEBUG=TRUE
12079 AC_MSG_RESULT([yes])
12083 AC_DEFINE(HAVE_FEATURE_SKIA)
12084 BUILD_TYPE="$BUILD_TYPE SKIA"
12086 if test "$OS" = "MACOSX"; then
12087 AC_DEFINE(SK_SUPPORT_GPU,1)
12088 AC_DEFINE(SK_METAL,1)
12092 AC_DEFINE(SK_SUPPORT_GPU,1)
12093 AC_DEFINE(SK_VULKAN,1)
12098 if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
12099 SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
12100 AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
12103 AC_MSG_RESULT([no (freetype too old)])
12104 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12108 AC_MSG_CHECKING([whether to build Skia])
12109 AC_MSG_RESULT([no])
12111 AC_SUBST(ENABLE_SKIA)
12112 AC_SUBST(ENABLE_SKIA_DEBUG)
12114 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12115 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12116 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12117 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12118 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12119 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12120 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12121 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12122 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12123 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12124 HAVE_LO_CLANG_DLLEXPORTINLINES=
12126 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12127 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12128 AC_MSG_CHECKING([for Clang])
12129 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12131 if test "$_os" = "WINNT"; then
12132 AC_MSG_CHECKING([for clang-cl])
12133 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12134 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12135 dnl explicitly set -m32/-m64
12136 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12137 LO_CLANG_CXX="$LO_CLANG_CC"
12138 AC_MSG_RESULT([$LO_CLANG_CC])
12140 AC_MSG_RESULT([no])
12143 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12144 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12147 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12148 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12149 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12150 if test "$clang2_ver" -lt 50002; then
12151 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12156 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12158 CXX="$LO_CLANG_CXX"
12159 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12160 AC_LANG_PUSH([C++])
12161 save_CXXFLAGS=$CXXFLAGS
12162 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12163 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12164 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12165 AC_MSG_RESULT([yes])
12166 ], [AC_MSG_RESULT([no])])
12167 CXXFLAGS=$save_CXXFLAGS
12170 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12171 AC_MSG_ERROR([Clang compiler does not support -Zc:dllexportInlines-. The Skia library needs to be built using a newer Clang version, or use --disable-skia.])
12174 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12175 # Skia is the default on Windows and Mac, so hard-require Clang.
12176 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12177 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12178 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12180 AC_MSG_WARN([Clang compiler not found.])
12185 CXX="$LO_CLANG_CXX"
12186 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12189 flag_sse41=-msse4.1
12190 flag_sse42=-msse4.2
12193 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12194 flag_avx512f=-mavx512f
12198 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12199 AC_LANG_PUSH([C++])
12200 save_CXXFLAGS=$CXXFLAGS
12201 CXXFLAGS="$CXXFLAGS $flag_sse2"
12202 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12203 #include <emmintrin.h>
12205 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12206 c = _mm_xor_si128 (a, b);
12210 [can_compile_sse2=yes],
12211 [can_compile_sse2=no])
12213 CXXFLAGS=$save_CXXFLAGS
12214 AC_MSG_RESULT([${can_compile_sse2}])
12215 if test "${can_compile_sse2}" = "yes" ; then
12216 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12219 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12220 AC_LANG_PUSH([C++])
12221 save_CXXFLAGS=$CXXFLAGS
12222 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12223 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12224 #include <tmmintrin.h>
12226 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12227 c = _mm_maddubs_epi16 (a, b);
12231 [can_compile_ssse3=yes],
12232 [can_compile_ssse3=no])
12234 CXXFLAGS=$save_CXXFLAGS
12235 AC_MSG_RESULT([${can_compile_ssse3}])
12236 if test "${can_compile_ssse3}" = "yes" ; then
12237 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12240 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12241 AC_LANG_PUSH([C++])
12242 save_CXXFLAGS=$CXXFLAGS
12243 CXXFLAGS="$CXXFLAGS $flag_sse41"
12244 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12245 #include <smmintrin.h>
12247 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12248 c = _mm_cmpeq_epi64 (a, b);
12252 [can_compile_sse41=yes],
12253 [can_compile_sse41=no])
12255 CXXFLAGS=$save_CXXFLAGS
12256 AC_MSG_RESULT([${can_compile_sse41}])
12257 if test "${can_compile_sse41}" = "yes" ; then
12258 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12261 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12262 AC_LANG_PUSH([C++])
12263 save_CXXFLAGS=$CXXFLAGS
12264 CXXFLAGS="$CXXFLAGS $flag_sse42"
12265 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12266 #include <nmmintrin.h>
12268 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12269 c = _mm_cmpgt_epi64 (a, b);
12273 [can_compile_sse42=yes],
12274 [can_compile_sse42=no])
12276 CXXFLAGS=$save_CXXFLAGS
12277 AC_MSG_RESULT([${can_compile_sse42}])
12278 if test "${can_compile_sse42}" = "yes" ; then
12279 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12282 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12283 AC_LANG_PUSH([C++])
12284 save_CXXFLAGS=$CXXFLAGS
12285 CXXFLAGS="$CXXFLAGS $flag_avx"
12286 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12287 #include <immintrin.h>
12289 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12290 c = _mm256_xor_ps(a, b);
12294 [can_compile_avx=yes],
12295 [can_compile_avx=no])
12297 CXXFLAGS=$save_CXXFLAGS
12298 AC_MSG_RESULT([${can_compile_avx}])
12299 if test "${can_compile_avx}" = "yes" ; then
12300 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12303 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12304 AC_LANG_PUSH([C++])
12305 save_CXXFLAGS=$CXXFLAGS
12306 CXXFLAGS="$CXXFLAGS $flag_avx2"
12307 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12308 #include <immintrin.h>
12310 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12311 c = _mm256_maddubs_epi16(a, b);
12315 [can_compile_avx2=yes],
12316 [can_compile_avx2=no])
12318 CXXFLAGS=$save_CXXFLAGS
12319 AC_MSG_RESULT([${can_compile_avx2}])
12320 if test "${can_compile_avx2}" = "yes" ; then
12321 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12324 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12325 AC_LANG_PUSH([C++])
12326 save_CXXFLAGS=$CXXFLAGS
12327 CXXFLAGS="$CXXFLAGS $flag_avx512"
12328 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12329 #include <immintrin.h>
12331 __m512i a = _mm512_loadu_si512(0);
12332 __m512d v1 = _mm512_load_pd(0);
12333 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12334 __m512d v2 = _mm512_abs_pd(v1);
12338 [can_compile_avx512=yes],
12339 [can_compile_avx512=no])
12341 CXXFLAGS=$save_CXXFLAGS
12342 AC_MSG_RESULT([${can_compile_avx512}])
12343 if test "${can_compile_avx512}" = "yes" ; then
12344 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12345 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12348 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12349 AC_LANG_PUSH([C++])
12350 save_CXXFLAGS=$CXXFLAGS
12351 CXXFLAGS="$CXXFLAGS $flag_f16c"
12352 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12353 #include <immintrin.h>
12355 __m128i a = _mm_set1_epi32 (0);
12357 c = _mm_cvtph_ps(a);
12361 [can_compile_f16c=yes],
12362 [can_compile_f16c=no])
12364 CXXFLAGS=$save_CXXFLAGS
12365 AC_MSG_RESULT([${can_compile_f16c}])
12366 if test "${can_compile_f16c}" = "yes" ; then
12367 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12370 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12371 AC_LANG_PUSH([C++])
12372 save_CXXFLAGS=$CXXFLAGS
12373 CXXFLAGS="$CXXFLAGS $flag_fma"
12374 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12375 #include <immintrin.h>
12377 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12378 d = _mm256_fmadd_ps(a, b, c);
12382 [can_compile_fma=yes],
12383 [can_compile_fma=no])
12385 CXXFLAGS=$save_CXXFLAGS
12386 AC_MSG_RESULT([${can_compile_fma}])
12387 if test "${can_compile_fma}" = "yes" ; then
12388 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12395 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12397 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12398 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12402 save_CFLAGS=$CFLAGS
12403 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12404 dnl an empty program will do, we're checking the compiler flags
12405 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12406 [use_ccache=yes], [use_ccache=no])
12407 CFLAGS=$save_CFLAGS
12409 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12410 AC_MSG_RESULT([yes])
12412 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12413 AC_MSG_RESULT([no])
12417 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12418 AC_LANG_PUSH([C++])
12420 CXX="$LO_CLANG_CXX"
12421 save_CXXFLAGS=$CXXFLAGS
12422 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12423 dnl an empty program will do, we're checking the compiler flags
12424 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12425 [use_ccache=yes], [use_ccache=no])
12426 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12427 AC_MSG_RESULT([yes])
12429 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12430 AC_MSG_RESULT([no])
12432 CXXFLAGS=$save_CXXFLAGS
12437 AC_SUBST(LO_CLANG_CC)
12438 AC_SUBST(LO_CLANG_CXX)
12439 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12440 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12441 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12442 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12443 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12444 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12445 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12446 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12447 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12448 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12449 AC_SUBST(CLANG_USE_LD)
12450 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12454 if test "$enable_gpgmepp" = no; then
12455 AC_MSG_CHECKING([whether to enable gpgmepp])
12456 AC_MSG_RESULT([no])
12457 elif test "$enable_mpl_subset" = "yes"; then
12458 AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12459 AC_MSG_RESULT([yes])
12460 elif test "$enable_fuzzers" = "yes"; then
12461 AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12462 AC_MSG_RESULT([yes])
12463 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12464 dnl ===================================================================
12465 dnl Check for system gpgme
12466 dnl ===================================================================
12467 AC_MSG_CHECKING([which gpgmepp to use])
12468 if test "$with_system_gpgmepp" = "yes"; then
12469 AC_MSG_RESULT([external])
12470 SYSTEM_GPGMEPP=TRUE
12472 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12473 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12474 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12475 # progress_callback is the only func with plain C linkage
12476 # checking for it also filters out older, KDE-dependent libgpgmepp versions
12477 AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12478 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12479 AC_CHECK_HEADER(gpgme.h, [],
12480 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12482 AC_MSG_RESULT([internal])
12483 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12485 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12486 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12487 if test "$_os" != "WINNT"; then
12488 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12489 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12492 ENABLE_GPGMEPP=TRUE
12493 AC_DEFINE([HAVE_FEATURE_GPGME])
12494 AC_PATH_PROG(GPG, gpg)
12495 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12496 # so let's exclude that manually for the moment
12497 if test -n "$GPG" -a "$_os" != "WINNT"; then
12498 # make sure we not only have a working gpgme, but a full working
12499 # gpg installation to run OpenPGP signature verification
12500 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12502 if test "$_os" = "Linux"; then
12504 AC_MSG_CHECKING([for /run/user/$uid])
12505 if test -d /run/user/$uid; then
12506 AC_MSG_RESULT([yes])
12507 AC_PATH_PROG(GPGCONF, gpgconf)
12509 # Older versions of gpgconf are not working as expected, since
12510 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12511 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12512 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12513 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12514 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12515 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12516 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12517 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12518 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12519 if $GPGCONF --dump-options > /dev/null ; then
12520 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12521 AC_MSG_RESULT([yes])
12522 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12523 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12525 AC_MSG_RESULT([no])
12528 AC_MSG_RESULT([no. missing or broken gpgconf?])
12531 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12534 AC_MSG_RESULT([no])
12538 AC_SUBST(ENABLE_GPGMEPP)
12539 AC_SUBST(SYSTEM_GPGMEPP)
12540 AC_SUBST(GPG_ERROR_CFLAGS)
12541 AC_SUBST(GPG_ERROR_LIBS)
12542 AC_SUBST(LIBASSUAN_CFLAGS)
12543 AC_SUBST(LIBASSUAN_LIBS)
12544 AC_SUBST(GPGMEPP_CFLAGS)
12545 AC_SUBST(GPGMEPP_LIBS)
12547 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12548 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12549 AC_MSG_RESULT([yes])
12550 ENABLE_MEDIAWIKI=TRUE
12551 BUILD_TYPE="$BUILD_TYPE XSLTML"
12552 if test "x$with_java" = "xno"; then
12553 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12556 AC_MSG_RESULT([no])
12558 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12560 AC_SUBST(ENABLE_MEDIAWIKI)
12562 AC_MSG_CHECKING([whether to build the Report Builder])
12563 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12564 AC_MSG_RESULT([yes])
12565 ENABLE_REPORTBUILDER=TRUE
12566 AC_MSG_CHECKING([which jfreereport libs to use])
12567 if test "$with_system_jfreereport" = "yes"; then
12568 SYSTEM_JFREEREPORT=TRUE
12569 AC_MSG_RESULT([external])
12570 if test -z $SAC_JAR; then
12571 SAC_JAR=/usr/share/java/sac.jar
12573 if ! test -f $SAC_JAR; then
12574 AC_MSG_ERROR(sac.jar not found.)
12577 if test -z $LIBXML_JAR; then
12578 if test -f /usr/share/java/libxml-1.0.0.jar; then
12579 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12580 elif test -f /usr/share/java/libxml.jar; then
12581 LIBXML_JAR=/usr/share/java/libxml.jar
12583 AC_MSG_ERROR(libxml.jar replacement not found.)
12585 elif ! test -f $LIBXML_JAR; then
12586 AC_MSG_ERROR(libxml.jar not found.)
12589 if test -z $FLUTE_JAR; then
12590 if test -f /usr/share/java/flute-1.3.0.jar; then
12591 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12592 elif test -f /usr/share/java/flute.jar; then
12593 FLUTE_JAR=/usr/share/java/flute.jar
12595 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12597 elif ! test -f $FLUTE_JAR; then
12598 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12601 if test -z $JFREEREPORT_JAR; then
12602 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12603 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12604 elif test -f /usr/share/java/flow-engine.jar; then
12605 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12607 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12609 elif ! test -f $JFREEREPORT_JAR; then
12610 AC_MSG_ERROR(jfreereport.jar not found.)
12613 if test -z $LIBLAYOUT_JAR; then
12614 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12615 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12616 elif test -f /usr/share/java/liblayout.jar; then
12617 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12619 AC_MSG_ERROR(liblayout.jar replacement not found.)
12621 elif ! test -f $LIBLAYOUT_JAR; then
12622 AC_MSG_ERROR(liblayout.jar not found.)
12625 if test -z $LIBLOADER_JAR; then
12626 if test -f /usr/share/java/libloader-1.0.0.jar; then
12627 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12628 elif test -f /usr/share/java/libloader.jar; then
12629 LIBLOADER_JAR=/usr/share/java/libloader.jar
12631 AC_MSG_ERROR(libloader.jar replacement not found.)
12633 elif ! test -f $LIBLOADER_JAR; then
12634 AC_MSG_ERROR(libloader.jar not found.)
12637 if test -z $LIBFORMULA_JAR; then
12638 if test -f /usr/share/java/libformula-0.2.0.jar; then
12639 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12640 elif test -f /usr/share/java/libformula.jar; then
12641 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12643 AC_MSG_ERROR(libformula.jar replacement not found.)
12645 elif ! test -f $LIBFORMULA_JAR; then
12646 AC_MSG_ERROR(libformula.jar not found.)
12649 if test -z $LIBREPOSITORY_JAR; then
12650 if test -f /usr/share/java/librepository-1.0.0.jar; then
12651 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12652 elif test -f /usr/share/java/librepository.jar; then
12653 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12655 AC_MSG_ERROR(librepository.jar replacement not found.)
12657 elif ! test -f $LIBREPOSITORY_JAR; then
12658 AC_MSG_ERROR(librepository.jar not found.)
12661 if test -z $LIBFONTS_JAR; then
12662 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12663 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12664 elif test -f /usr/share/java/libfonts.jar; then
12665 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12667 AC_MSG_ERROR(libfonts.jar replacement not found.)
12669 elif ! test -f $LIBFONTS_JAR; then
12670 AC_MSG_ERROR(libfonts.jar not found.)
12673 if test -z $LIBSERIALIZER_JAR; then
12674 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12675 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12676 elif test -f /usr/share/java/libserializer.jar; then
12677 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12679 AC_MSG_ERROR(libserializer.jar replacement not found.)
12681 elif ! test -f $LIBSERIALIZER_JAR; then
12682 AC_MSG_ERROR(libserializer.jar not found.)
12685 if test -z $LIBBASE_JAR; then
12686 if test -f /usr/share/java/libbase-1.0.0.jar; then
12687 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12688 elif test -f /usr/share/java/libbase.jar; then
12689 LIBBASE_JAR=/usr/share/java/libbase.jar
12691 AC_MSG_ERROR(libbase.jar replacement not found.)
12693 elif ! test -f $LIBBASE_JAR; then
12694 AC_MSG_ERROR(libbase.jar not found.)
12698 AC_MSG_RESULT([internal])
12699 SYSTEM_JFREEREPORT=
12700 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12704 AC_MSG_RESULT([no])
12705 ENABLE_REPORTBUILDER=
12706 SYSTEM_JFREEREPORT=
12708 AC_SUBST(ENABLE_REPORTBUILDER)
12709 AC_SUBST(SYSTEM_JFREEREPORT)
12711 AC_SUBST(LIBXML_JAR)
12712 AC_SUBST(FLUTE_JAR)
12713 AC_SUBST(JFREEREPORT_JAR)
12714 AC_SUBST(LIBBASE_JAR)
12715 AC_SUBST(LIBLAYOUT_JAR)
12716 AC_SUBST(LIBLOADER_JAR)
12717 AC_SUBST(LIBFORMULA_JAR)
12718 AC_SUBST(LIBREPOSITORY_JAR)
12719 AC_SUBST(LIBFONTS_JAR)
12720 AC_SUBST(LIBSERIALIZER_JAR)
12722 # scripting provider for BeanShell?
12723 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12724 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12725 AC_MSG_RESULT([yes])
12726 ENABLE_SCRIPTING_BEANSHELL=TRUE
12728 dnl ===================================================================
12729 dnl Check for system beanshell
12730 dnl ===================================================================
12731 AC_MSG_CHECKING([which beanshell to use])
12732 if test "$with_system_beanshell" = "yes"; then
12733 AC_MSG_RESULT([external])
12735 if test -z $BSH_JAR; then
12736 BSH_JAR=/usr/share/java/bsh.jar
12738 if ! test -f $BSH_JAR; then
12739 AC_MSG_ERROR(bsh.jar not found.)
12742 AC_MSG_RESULT([internal])
12744 BUILD_TYPE="$BUILD_TYPE BSH"
12747 AC_MSG_RESULT([no])
12748 ENABLE_SCRIPTING_BEANSHELL=
12749 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12751 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12752 AC_SUBST(SYSTEM_BSH)
12755 # scripting provider for JavaScript?
12756 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12757 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12758 AC_MSG_RESULT([yes])
12759 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12761 dnl ===================================================================
12762 dnl Check for system rhino
12763 dnl ===================================================================
12764 AC_MSG_CHECKING([which rhino to use])
12765 if test "$with_system_rhino" = "yes"; then
12766 AC_MSG_RESULT([external])
12768 if test -z $RHINO_JAR; then
12769 RHINO_JAR=/usr/share/java/js.jar
12771 if ! test -f $RHINO_JAR; then
12772 AC_MSG_ERROR(js.jar not found.)
12775 AC_MSG_RESULT([internal])
12777 BUILD_TYPE="$BUILD_TYPE RHINO"
12781 AC_MSG_RESULT([no])
12782 ENABLE_SCRIPTING_JAVASCRIPT=
12783 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12785 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12786 AC_SUBST(SYSTEM_RHINO)
12787 AC_SUBST(RHINO_JAR)
12789 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12790 # paths should be added to library search path. So lets put all 64-bit
12793 case "$host_cpu" in
12794 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12795 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12796 supports_multilib="yes"
12803 dnl ===================================================================
12804 dnl QT5 Integration
12805 dnl ===================================================================
12811 QT5_GOBJECT_CFLAGS=""
12812 QT5_GOBJECT_LIBS=""
12813 QT5_HAVE_GOBJECT=""
12814 QT5_PLATFORMS_SRCDIR=""
12815 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12816 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12817 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12819 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12820 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12822 if test -n "$supports_multilib"; then
12823 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12826 qt5_test_include="QtWidgets/qapplication.h"
12827 if test "$_os" = "Emscripten"; then
12828 qt5_test_library="libQt5Widgets.a"
12830 qt5_test_library="libQt5Widgets.so"
12833 dnl Check for qmake5
12834 if test -n "$QT5DIR"; then
12835 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12837 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12839 if test "$QMAKE5" = "no"; then
12840 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12842 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12843 if test -z "$qmake5_test_ver"; then
12844 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12846 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12847 qt5_minimal_minor="6"
12848 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12849 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12851 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12855 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12856 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12857 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12858 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12860 AC_MSG_CHECKING([for Qt5 headers])
12862 for inc_dir in $qt5_incdirs; do
12863 if test -r "$inc_dir/$qt5_test_include"; then
12864 qt5_incdir="$inc_dir"
12868 AC_MSG_RESULT([$qt5_incdir])
12869 if test "x$qt5_incdir" = "xno"; then
12870 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12872 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12873 AC_LANG_PUSH([C++])
12874 save_CPPFLAGS=$CPPFLAGS
12875 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12876 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12877 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12878 CPPFLAGS=$save_CPPFLAGS
12881 AC_MSG_CHECKING([for Qt5 libraries])
12883 for lib_dir in $qt5_libdirs; do
12884 if test -r "$lib_dir/$qt5_test_library"; then
12885 qt5_libdir="$lib_dir"
12889 AC_MSG_RESULT([$qt5_libdir])
12890 if test "x$qt5_libdir" = "xno"; then
12891 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12894 if test "$_os" = "Emscripten"; then
12895 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12896 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12898 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12899 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12903 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12904 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12905 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12906 if test "$_os" = "Emscripten"; then
12907 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12910 if test "$USING_X11" = TRUE; then
12911 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12912 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12913 QT5_HAVE_XCB_ICCCM=1
12914 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12916 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)])
12917 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12919 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12920 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12922 AC_DEFINE(QT5_USING_X11)
12925 dnl Check for Meta Object Compiler
12927 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12928 if test "$MOC5" = "no"; then
12929 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
12930 the root of your Qt installation by exporting QT5DIR before running "configure".])
12933 if test "$test_gstreamer_1_0" = yes; then
12934 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12936 AC_DEFINE(QT5_HAVE_GOBJECT)
12938 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12942 AC_SUBST(QT5_CFLAGS)
12945 AC_SUBST(QT5_GOBJECT_CFLAGS)
12946 AC_SUBST(QT5_GOBJECT_LIBS)
12947 AC_SUBST(QT5_HAVE_GOBJECT)
12948 AC_SUBST(QT5_PLATFORMS_SRCDIR)
12950 dnl ===================================================================
12951 dnl QT6 Integration
12952 dnl ===================================================================
12958 QT6_PLATFORMS_SRCDIR=""
12959 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
12961 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
12962 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
12964 if test -n "$supports_multilib"; then
12965 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
12968 qt6_test_include="QtWidgets/qapplication.h"
12969 if test "$_os" = "Emscripten"; then
12970 qt6_test_library="libQt6Widgets.a"
12972 qt6_test_library="libQt6Widgets.so"
12975 dnl Check for qmake6
12976 if test -n "$QT6DIR"; then
12977 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
12979 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no)
12981 if test "$QMAKE6" = "no"; then
12982 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12984 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
12985 if test -z "$qmake6_test_ver"; then
12986 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
12988 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
12991 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
12992 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
12993 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
12994 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
12996 AC_MSG_CHECKING([for Qt6 headers])
12998 for inc_dir in $qt6_incdirs; do
12999 if test -r "$inc_dir/$qt6_test_include"; then
13000 qt6_incdir="$inc_dir"
13004 AC_MSG_RESULT([$qt6_incdir])
13005 if test "x$qt6_incdir" = "xno"; then
13006 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13008 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13009 AC_LANG_PUSH([C++])
13010 save_CPPFLAGS=$CPPFLAGS
13011 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13012 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13013 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13014 CPPFLAGS=$save_CPPFLAGS
13017 AC_MSG_CHECKING([for Qt6 libraries])
13019 for lib_dir in $qt6_libdirs; do
13020 if test -r "$lib_dir/$qt6_test_library"; then
13021 qt6_libdir="$lib_dir"
13025 AC_MSG_RESULT([$qt6_libdir])
13026 if test "x$qt6_libdir" = "xno"; then
13027 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13030 if test "$_os" = "Emscripten"; then
13031 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13032 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13034 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13035 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13039 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13040 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13041 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13042 if test "$_os" = "Emscripten"; then
13043 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13046 if test "$USING_X11" = TRUE; then
13047 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13048 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13049 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13051 AC_DEFINE(QT6_USING_X11)
13054 dnl Check for Meta Object Compiler
13056 AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH])
13057 if test "$MOC6" = "no"; then
13058 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13059 the root of your Qt installation by exporting QT6DIR before running "configure".])
13062 AC_SUBST(QT6_CFLAGS)
13065 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13067 dnl ===================================================================
13068 dnl KF5 Integration
13069 dnl ===================================================================
13073 KF5_CONFIG="kf5-config"
13074 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13075 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13077 if test "$OS" = "HAIKU"; then
13078 haiku_arch="`echo $RTL_ARCH | tr X x`"
13079 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13080 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13083 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13084 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13085 if test -n "$supports_multilib"; then
13086 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13089 kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13090 kf5_test_library="libKF5KIOFileWidgets.so"
13091 kf5_libdirs="$qt5_libdir $kf5_libdirs"
13093 dnl kf5 KDE4 support compatibility installed
13094 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13095 if test "$KF5_CONFIG" != "no"; then
13096 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13097 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13100 dnl Check for KF5 headers
13101 AC_MSG_CHECKING([for KF5 headers])
13103 for kf5_check in $kf5_incdirs; do
13104 if test -r "$kf5_check/$kf5_test_include"; then
13105 kf5_incdir="$kf5_check/KF5"
13109 AC_MSG_RESULT([$kf5_incdir])
13110 if test "x$kf5_incdir" = "xno"; then
13111 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13114 dnl Check for KF5 libraries
13115 AC_MSG_CHECKING([for KF5 libraries])
13117 for kf5_check in $kf5_libdirs; do
13118 if test -r "$kf5_check/$kf5_test_library"; then
13119 kf5_libdir="$kf5_check"
13124 AC_MSG_RESULT([$kf5_libdir])
13125 if test "x$kf5_libdir" = "xno"; then
13126 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13129 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"
13130 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13131 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13133 if test "$USING_X11" = TRUE; then
13134 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13137 AC_LANG_PUSH([C++])
13138 save_CXXFLAGS=$CXXFLAGS
13139 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13140 AC_MSG_CHECKING([whether KDE is >= 5.0])
13141 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13142 #include <kcoreaddons_version.h>
13144 int main(int argc, char **argv) {
13145 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13148 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13149 CXXFLAGS=$save_CXXFLAGS
13152 AC_SUBST(KF5_CFLAGS)
13155 dnl ===================================================================
13156 dnl Test whether to include Evolution 2 support
13157 dnl ===================================================================
13158 AC_MSG_CHECKING([whether to enable evolution 2 support])
13159 if test "$enable_evolution2" = yes; then
13160 AC_MSG_RESULT([yes])
13161 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13162 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13163 FilterLibs "${GOBJECT_LIBS}"
13164 GOBJECT_LIBS="${filteredlibs}"
13165 ENABLE_EVOAB2="TRUE"
13167 AC_MSG_RESULT([no])
13169 AC_SUBST(ENABLE_EVOAB2)
13170 AC_SUBST(GOBJECT_CFLAGS)
13171 AC_SUBST(GOBJECT_LIBS)
13173 dnl ===================================================================
13174 dnl Test which themes to include
13175 dnl ===================================================================
13176 AC_MSG_CHECKING([which themes to include])
13177 # if none given use default subset of available themes
13178 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13179 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"
13183 if test "x$with_theme" != "xno"; then
13184 for theme in $with_theme; do
13186 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" ;;
13187 default) real_theme=colibre ;;
13188 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13190 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13193 AC_MSG_RESULT([$WITH_THEMES])
13194 AC_SUBST([WITH_THEMES])
13195 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13196 for theme in $with_theme; do
13198 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13203 ###############################################################################
13204 # Extensions checking
13205 ###############################################################################
13206 AC_MSG_CHECKING([for extensions integration])
13207 if test "x$enable_extension_integration" != "xno"; then
13208 WITH_EXTENSION_INTEGRATION=TRUE
13209 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13210 AC_MSG_RESULT([yes, use integration])
13212 WITH_EXTENSION_INTEGRATION=
13213 AC_MSG_RESULT([no, do not integrate])
13215 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13217 dnl Should any extra extensions be included?
13218 dnl There are standalone tests for each of these below.
13219 WITH_EXTRA_EXTENSIONS=
13220 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13222 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
13223 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13224 if test "x$with_java" != "xno"; then
13225 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13226 libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
13229 AC_MSG_CHECKING([whether to build opens___.ttf])
13230 if test "$enable_build_opensymbol" = "yes"; then
13231 AC_MSG_RESULT([yes])
13232 AC_PATH_PROG(FONTFORGE, fontforge)
13233 if test -z "$FONTFORGE"; then
13234 AC_MSG_ERROR([fontforge not installed])
13237 AC_MSG_RESULT([no])
13238 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13240 AC_SUBST(FONTFORGE)
13242 dnl ===================================================================
13243 dnl Test whether to include fonts
13244 dnl ===================================================================
13245 AC_MSG_CHECKING([whether to include third-party fonts])
13246 if test "$with_fonts" != "no"; then
13247 AC_MSG_RESULT([yes])
13249 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13250 AC_DEFINE(HAVE_MORE_FONTS)
13252 AC_MSG_RESULT([no])
13254 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13256 AC_SUBST(WITH_FONTS)
13258 dnl Test whether to include more Google Noto fonts
13259 dnl ===================================================================
13260 AC_MSG_CHECKING([whether to include more Google Noto fonts])
13261 if test "$enable_noto_font" = "" -o "$enable_noto_font" = "no" -o "$with_fonts" = "no"; then
13262 AC_MSG_RESULT([no])
13265 AC_MSG_RESULT([yes])
13266 WITH_NOTO_FONT=TRUE
13267 BUILD_TYPE="$BUILD_TYPE NOTO_FONT"
13268 SCPDEFS="$SCPDEFS -DWITH_NOTO_FONT"
13270 AC_SUBST(WITH_NOTO_FONT)
13272 dnl ===================================================================
13273 dnl Test whether to enable online update service
13274 dnl ===================================================================
13275 AC_MSG_CHECKING([whether to enable online update])
13276 ENABLE_ONLINE_UPDATE=
13277 ENABLE_ONLINE_UPDATE_MAR=
13279 if test "$enable_online_update" = ""; then
13280 AC_MSG_RESULT([no])
13282 if test "$enable_online_update" = "mar"; then
13283 AC_MSG_RESULT([yes - MAR-based online update])
13284 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13285 if test "$with_update_config" = ""; then
13286 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13288 UPDATE_CONFIG="$with_update_config"
13289 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13290 elif test "$enable_online_update" = "yes"; then
13291 AC_MSG_RESULT([yes])
13292 ENABLE_ONLINE_UPDATE="TRUE"
13294 AC_MSG_RESULT([no])
13297 AC_SUBST(ENABLE_ONLINE_UPDATE)
13298 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13299 AC_SUBST(UPDATE_CONFIG)
13302 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13303 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13304 if test "x$with_privacy_policy_url" = "xundefined"; then
13305 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13308 AC_SUBST(PRIVACY_POLICY_URL)
13309 dnl ===================================================================
13310 dnl Test whether we need bzip2
13311 dnl ===================================================================
13313 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13314 AC_MSG_CHECKING([whether to use system bzip2])
13315 if test "$with_system_bzip2" = yes; then
13317 AC_MSG_RESULT([yes])
13318 PKG_CHECK_MODULES(BZIP2, bzip2)
13319 FilterLibs "${BZIP2_LIBS}"
13320 BZIP2_LIBS="${filteredlibs}"
13322 AC_MSG_RESULT([no])
13323 BUILD_TYPE="$BUILD_TYPE BZIP2"
13326 AC_SUBST(SYSTEM_BZIP2)
13327 AC_SUBST(BZIP2_CFLAGS)
13328 AC_SUBST(BZIP2_LIBS)
13330 dnl ===================================================================
13331 dnl Test whether to enable extension update
13332 dnl ===================================================================
13333 AC_MSG_CHECKING([whether to enable extension update])
13334 ENABLE_EXTENSION_UPDATE=
13335 if test "x$enable_extension_update" = "xno"; then
13336 AC_MSG_RESULT([no])
13338 AC_MSG_RESULT([yes])
13339 ENABLE_EXTENSION_UPDATE="TRUE"
13340 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13341 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13343 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13346 dnl ===================================================================
13347 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13348 dnl ===================================================================
13349 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13350 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13351 AC_MSG_RESULT([no])
13354 AC_MSG_RESULT([yes])
13355 ENABLE_SILENT_MSI=TRUE
13356 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13358 AC_SUBST(ENABLE_SILENT_MSI)
13360 AC_MSG_CHECKING([whether and how to use Xinerama])
13361 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13362 if test "$x_libraries" = "default_x_libraries"; then
13363 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13364 if test "x$XINERAMALIB" = x; then
13365 XINERAMALIB="/usr/lib"
13368 XINERAMALIB="$x_libraries"
13370 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13371 # we have both versions, let the user decide but use the dynamic one
13374 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13375 XINERAMA_LINK=dynamic
13377 XINERAMA_LINK=static
13379 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13380 # we have only the dynamic version
13382 XINERAMA_LINK=dynamic
13383 elif test -e "$XINERAMALIB/libXinerama.a"; then
13385 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13387 XINERAMA_LINK=static
13397 if test "$USE_XINERAMA" = "TRUE"; then
13398 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13399 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13400 [AC_MSG_ERROR(Xinerama header not found.)], [])
13401 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13402 if test "x$XEXTLIB" = x; then
13403 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13405 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13406 if test "$_os" = "FreeBSD"; then
13407 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13409 if test "$_os" = "Linux"; then
13410 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13412 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13413 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13415 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13420 AC_MSG_RESULT([no])
13422 AC_SUBST(USE_XINERAMA)
13423 AC_SUBST(XINERAMA_LINK)
13425 dnl ===================================================================
13426 dnl Test whether to build cairo or rely on the system version
13427 dnl ===================================================================
13429 if test "$test_cairo" = "yes"; then
13430 AC_MSG_CHECKING([whether to use the system cairo])
13432 : ${with_system_cairo:=$with_system_libs}
13433 if test "$with_system_cairo" = "yes"; then
13435 AC_MSG_RESULT([yes])
13437 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13438 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13439 FilterLibs "${CAIRO_LIBS}"
13440 CAIRO_LIBS="${filteredlibs}"
13442 if test "$test_xrender" = "yes"; then
13443 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13445 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13446 #ifdef PictStandardA8
13450 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13455 AC_MSG_RESULT([no])
13456 BUILD_TYPE="$BUILD_TYPE CAIRO"
13459 if test "$enable_cairo_canvas" != no; then
13460 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13461 ENABLE_CAIRO_CANVAS=TRUE
13465 AC_SUBST(CAIRO_CFLAGS)
13466 AC_SUBST(CAIRO_LIBS)
13467 AC_SUBST(ENABLE_CAIRO_CANVAS)
13468 AC_SUBST(SYSTEM_CAIRO)
13470 dnl ===================================================================
13471 dnl Test whether to use avahi
13472 dnl ===================================================================
13473 if test "$_os" = "WINNT"; then
13474 # Windows uses bundled mDNSResponder
13475 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13476 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13477 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13478 [ENABLE_AVAHI="TRUE"])
13479 AC_DEFINE(HAVE_FEATURE_AVAHI)
13480 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13481 FilterLibs "${AVAHI_LIBS}"
13482 AVAHI_LIBS="${filteredlibs}"
13485 AC_SUBST(ENABLE_AVAHI)
13486 AC_SUBST(AVAHI_CFLAGS)
13487 AC_SUBST(AVAHI_LIBS)
13489 dnl ===================================================================
13490 dnl Test whether to use liblangtag
13491 dnl ===================================================================
13493 AC_MSG_CHECKING([whether to use system liblangtag])
13494 if test "$with_system_liblangtag" = yes; then
13495 SYSTEM_LIBLANGTAG=TRUE
13496 AC_MSG_RESULT([yes])
13497 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13498 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13499 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13500 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13501 FilterLibs "${LIBLANGTAG_LIBS}"
13502 LIBLANGTAG_LIBS="${filteredlibs}"
13505 AC_MSG_RESULT([no])
13506 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13507 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13508 if test "$COM" = "MSC"; then
13509 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13511 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13514 AC_SUBST(SYSTEM_LIBLANGTAG)
13515 AC_SUBST(LIBLANGTAG_CFLAGS)
13516 AC_SUBST(LIBLANGTAG_LIBS)
13518 dnl ===================================================================
13519 dnl Test whether to build libpng or rely on the system version
13520 dnl ===================================================================
13522 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
13524 dnl ===================================================================
13525 dnl Test whether to build libtiff or rely on the system version
13526 dnl ===================================================================
13528 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13530 dnl ===================================================================
13531 dnl Test whether to build libwebp or rely on the system version
13532 dnl ===================================================================
13534 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13536 dnl ===================================================================
13537 dnl Check for runtime JVM search path
13538 dnl ===================================================================
13539 if test "$ENABLE_JAVA" != ""; then
13540 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13541 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13542 AC_MSG_RESULT([yes])
13543 if ! test -d "$with_jvm_path"; then
13544 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13546 if ! test -d "$with_jvm_path"jvm; then
13547 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13549 JVM_ONE_PATH_CHECK="$with_jvm_path"
13550 AC_SUBST(JVM_ONE_PATH_CHECK)
13552 AC_MSG_RESULT([no])
13556 dnl ===================================================================
13557 dnl Test for the presence of Ant and that it works
13558 dnl ===================================================================
13560 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13561 ANT_HOME=; export ANT_HOME
13562 WITH_ANT_HOME=; export WITH_ANT_HOME
13563 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13564 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13565 if test "$_os" = "WINNT"; then
13566 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13568 with_ant_home="$LODE_HOME/opt/ant"
13570 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13571 with_ant_home="$LODE_HOME/opt/ant"
13574 if test -z "$with_ant_home"; then
13575 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13577 if test "$_os" = "WINNT"; then
13578 # AC_PATH_PROGS needs unix path
13579 with_ant_home=`cygpath -u "$with_ant_home"`
13581 AbsolutePath "$with_ant_home"
13582 with_ant_home=$absolute_path
13583 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13584 WITH_ANT_HOME=$with_ant_home
13585 ANT_HOME=$with_ant_home
13588 if test -z "$ANT"; then
13589 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13591 # resolve relative or absolute symlink
13592 while test -h "$ANT"; do
13594 a_basename=`basename "$ANT"`
13595 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13596 cd "`dirname "$ANT"`"
13597 cd "`dirname "$a_script"`"
13598 ANT="`pwd`"/"`basename "$a_script"`"
13602 AC_MSG_CHECKING([if $ANT works])
13603 mkdir -p conftest.dir
13606 cat > conftest.java << EOF
13607 public class conftest {
13608 int testmethod(int a, int b) {
13614 cat > conftest.xml << EOF
13615 <project name="conftest" default="conftest">
13616 <target name="conftest">
13617 <javac srcdir="." includes="conftest.java">
13623 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13624 if test $? = 0 -a -f ./conftest.class; then
13625 AC_MSG_RESULT([Ant works])
13626 if test -z "$WITH_ANT_HOME"; then
13627 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13628 if test -z "$ANT_HOME"; then
13629 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13632 ANT_HOME="$WITH_ANT_HOME"
13635 echo "configure: Ant test failed" >&5
13636 cat conftest.java >&5
13637 cat conftest.xml >&5
13638 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13641 rm -fr conftest.dir
13643 if test -z "$ANT_HOME"; then
13644 ANT_HOME="NO_ANT_HOME"
13646 PathFormat "$ANT_HOME"
13647 ANT_HOME="$formatted_path"
13649 ANT="$formatted_path"
13652 dnl Checking for ant.jar
13653 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13654 AC_MSG_CHECKING([Ant lib directory])
13655 if test -f $ANT_HOME/lib/ant.jar; then
13656 ANT_LIB="$ANT_HOME/lib"
13658 if test -f $ANT_HOME/ant.jar; then
13659 ANT_LIB="$ANT_HOME"
13661 if test -f /usr/share/java/ant.jar; then
13662 ANT_LIB=/usr/share/java
13664 if test -f /usr/share/ant-core/lib/ant.jar; then
13665 ANT_LIB=/usr/share/ant-core/lib
13667 if test -f $ANT_HOME/lib/ant/ant.jar; then
13668 ANT_LIB="$ANT_HOME/lib/ant"
13670 if test -f /usr/share/lib/ant/ant.jar; then
13671 ANT_LIB=/usr/share/lib/ant
13673 AC_MSG_ERROR([Ant libraries not found!])
13680 PathFormat "$ANT_LIB"
13681 ANT_LIB="$formatted_path"
13682 AC_MSG_RESULT([Ant lib directory found.])
13686 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13688 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13689 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13690 ant_version_major=`echo $ant_version | cut -d. -f1`
13691 ant_version_minor=`echo $ant_version | cut -d. -f2`
13692 echo "configure: ant_version $ant_version " >&5
13693 echo "configure: ant_version_major $ant_version_major " >&5
13694 echo "configure: ant_version_minor $ant_version_minor " >&5
13695 if test "$ant_version_major" -ge "2"; then
13696 AC_MSG_RESULT([yes, $ant_version])
13697 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13698 AC_MSG_RESULT([yes, $ant_version])
13700 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13703 rm -f conftest* core core.* *.core
13711 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13712 AC_MSG_CHECKING([for JUnit 4])
13713 if test "$with_junit" = "yes"; then
13714 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13715 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13716 elif test -e /usr/share/java/junit4.jar; then
13717 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13719 if test -e /usr/share/lib/java/junit.jar; then
13720 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13722 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13726 OOO_JUNIT_JAR=$with_junit
13728 if test "$_os" = "WINNT"; then
13729 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13731 printf 'import org.junit.Before;' > conftest.java
13732 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13733 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13736 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13737 specify its pathname via --with-junit=..., or disable it via --without-junit])
13739 rm -f conftest.class conftest.java
13740 if test $OOO_JUNIT_JAR != ""; then
13741 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13744 AC_MSG_CHECKING([for included Hamcrest])
13745 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13746 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13747 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13749 AC_MSG_RESULT([Not included])
13750 AC_MSG_CHECKING([for standalone hamcrest jar.])
13751 if test "$with_hamcrest" = "yes"; then
13752 if test -e /usr/share/lib/java/hamcrest.jar; then
13753 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13754 elif test -e /usr/share/java/hamcrest/core.jar; then
13755 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13756 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13757 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13759 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13762 HAMCREST_JAR=$with_hamcrest
13764 if test "$_os" = "WINNT"; then
13765 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13767 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13768 AC_MSG_RESULT([$HAMCREST_JAR])
13770 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),
13771 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13774 rm -f conftest.class conftest.java
13776 AC_SUBST(OOO_JUNIT_JAR)
13777 AC_SUBST(HAMCREST_JAR)
13783 # check for wget and curl
13788 if test "$enable_fetch_external" != "no"; then
13790 CURL=`which curl 2>/dev/null`
13792 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13794 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13795 if test $? -eq 0; then
13801 if test -z "$WGET" -a -z "$CURL"; then
13802 AC_MSG_ERROR([neither wget nor curl found!])
13811 # check for sha256sum
13815 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13816 eval "$i -a 256 --version" > /dev/null 2>&1
13818 if test $ret -eq 0; then
13819 SHA256SUM="$i -a 256"
13824 if test -z "$SHA256SUM"; then
13825 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13826 eval "$i --version" > /dev/null 2>&1
13828 if test $ret -eq 0; then
13835 if test -z "$SHA256SUM"; then
13836 AC_MSG_ERROR([no sha256sum found!])
13839 AC_SUBST(SHA256SUM)
13841 dnl ===================================================================
13842 dnl Dealing with l10n options
13843 dnl ===================================================================
13844 AC_MSG_CHECKING([which languages to be built])
13845 # get list of all languages
13846 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13847 # the sed command does the following:
13848 # + if a line ends with a backslash, append the next line to it
13849 # + adds " on the beginning of the value (after =)
13850 # + adds " at the end of the value
13851 # + removes en-US; we want to put it on the beginning
13852 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13853 [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)]
13854 ALL_LANGS="en-US $completelangiso"
13855 # check the configured localizations
13856 WITH_LANG="$with_lang"
13858 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13859 # (Norwegian is "nb" and "nn".)
13860 if test "$WITH_LANG" = "no"; then
13864 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13865 AC_MSG_RESULT([en-US])
13867 AC_MSG_RESULT([$WITH_LANG])
13868 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13869 if test -z "$MSGFMT"; then
13870 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13871 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13872 elif test -x "/opt/lo/bin/msgfmt"; then
13873 MSGFMT="/opt/lo/bin/msgfmt"
13875 AC_CHECK_PROGS(MSGFMT, [msgfmt])
13876 if test -z "$MSGFMT"; then
13877 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13881 if test -z "$MSGUNIQ"; then
13882 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13883 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13884 elif test -x "/opt/lo/bin/msguniq"; then
13885 MSGUNIQ="/opt/lo/bin/msguniq"
13887 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13888 if test -z "$MSGUNIQ"; then
13889 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13896 # check that the list is valid
13897 for lang in $WITH_LANG; do
13898 test "$lang" = "ALL" && continue
13899 # need to check for the exact string, so add space before and after the list of all languages
13900 for vl in $ALL_LANGS; do
13901 if test "$vl" = "$lang"; then
13905 if test "$vl" != "$lang"; then
13906 # if you're reading this - you prolly quoted your languages remove the quotes ...
13907 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13910 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13911 echo $WITH_LANG | grep -q en-US
13912 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13914 # list with substituted ALL
13915 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13916 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13917 test "$WITH_LANG" = "en-US" && WITH_LANG=
13918 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13919 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13920 ALL_LANGS=`echo $ALL_LANGS qtz`
13922 AC_SUBST(ALL_LANGS)
13923 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13924 AC_SUBST(WITH_LANG)
13925 AC_SUBST(WITH_LANG_LIST)
13926 AC_SUBST(GIT_NEEDED_SUBMODULES)
13928 WITH_POOR_HELP_LOCALIZATIONS=
13929 if test -d "$SRC_ROOT/translations/source"; then
13930 for l in `ls -1 $SRC_ROOT/translations/source`; do
13931 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13932 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13936 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13938 if test -n "$with_locales"; then
13939 WITH_LOCALES="$with_locales"
13941 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13942 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13943 # config_host/config_locales.h.in
13944 for locale in $WITH_LOCALES; do
13947 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13951 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13954 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13959 AC_DEFINE(WITH_LOCALE_ALL)
13961 AC_SUBST(WITH_LOCALES)
13963 dnl git submodule update --reference
13964 dnl ===================================================================
13965 if test -n "${GIT_REFERENCE_SRC}"; then
13966 for repo in ${GIT_NEEDED_SUBMODULES}; do
13967 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13968 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13972 AC_SUBST(GIT_REFERENCE_SRC)
13974 dnl git submodules linked dirs
13975 dnl ===================================================================
13976 if test -n "${GIT_LINK_SRC}"; then
13977 for repo in ${GIT_NEEDED_SUBMODULES}; do
13978 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13979 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13983 AC_SUBST(GIT_LINK_SRC)
13986 dnl ===================================================================
13987 AC_MSG_CHECKING([for alternative branding images directory])
13988 # initialize mapped arrays
13989 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13990 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13992 if test -z "$with_branding" -o "$with_branding" = "no"; then
13993 AC_MSG_RESULT([none])
13994 DEFAULT_BRAND_IMAGES="$brand_files"
13996 if ! test -d $with_branding ; then
13997 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13999 AC_MSG_RESULT([$with_branding])
14000 CUSTOM_BRAND_DIR="$with_branding"
14001 for lfile in $brand_files
14003 if ! test -f $with_branding/$lfile ; then
14004 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14005 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14007 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14010 check_for_progress="yes"
14013 AC_SUBST([BRAND_INTRO_IMAGES])
14014 AC_SUBST([CUSTOM_BRAND_DIR])
14015 AC_SUBST([CUSTOM_BRAND_IMAGES])
14016 AC_SUBST([DEFAULT_BRAND_IMAGES])
14019 AC_MSG_CHECKING([for 'intro' progress settings])
14023 PROGRESSFRAMECOLOR=
14025 PROGRESSTEXTBASELINE=
14027 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14028 source "$with_branding/progress.conf"
14029 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14031 AC_MSG_RESULT([none])
14034 AC_SUBST(PROGRESSBARCOLOR)
14035 AC_SUBST(PROGRESSSIZE)
14036 AC_SUBST(PROGRESSPOSITION)
14037 AC_SUBST(PROGRESSFRAMECOLOR)
14038 AC_SUBST(PROGRESSTEXTCOLOR)
14039 AC_SUBST(PROGRESSTEXTBASELINE)
14042 dnl ===================================================================
14043 dnl Custom build version
14044 dnl ===================================================================
14045 AC_MSG_CHECKING([for extra build ID])
14046 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14047 EXTRA_BUILDID="$with_extra_buildid"
14049 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14050 if test -n "$EXTRA_BUILDID" ; then
14051 AC_MSG_RESULT([$EXTRA_BUILDID])
14053 AC_MSG_RESULT([not set])
14055 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14058 AC_MSG_CHECKING([for vendor])
14059 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14060 OOO_VENDOR="$USERNAME"
14062 if test -z "$OOO_VENDOR"; then
14066 if test -z "$OOO_VENDOR"; then
14067 OOO_VENDOR="`id -u -n`"
14070 AC_MSG_RESULT([not set, using $OOO_VENDOR])
14072 OOO_VENDOR="$with_vendor"
14073 AC_MSG_RESULT([$OOO_VENDOR])
14075 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14076 AC_SUBST(OOO_VENDOR)
14078 if test "$_os" = "Android" ; then
14079 ANDROID_PACKAGE_NAME=
14080 AC_MSG_CHECKING([for Android package name])
14081 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14082 if test -n "$ENABLE_DEBUG"; then
14083 # Default to the package name that makes ndk-gdb happy.
14084 ANDROID_PACKAGE_NAME="org.libreoffice"
14086 ANDROID_PACKAGE_NAME="org.example.libreoffice"
14089 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14091 ANDROID_PACKAGE_NAME="$with_android_package_name"
14092 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14094 AC_SUBST(ANDROID_PACKAGE_NAME)
14097 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14098 if test "$with_compat_oowrappers" = "yes"; then
14099 WITH_COMPAT_OOWRAPPERS=TRUE
14102 WITH_COMPAT_OOWRAPPERS=
14105 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14107 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{gsub(" ", "", $0);print tolower($0)}'`
14108 AC_MSG_CHECKING([for install dirname])
14109 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14110 INSTALLDIRNAME="$with_install_dirname"
14112 AC_MSG_RESULT([$INSTALLDIRNAME])
14113 AC_SUBST(INSTALLDIRNAME)
14115 AC_MSG_CHECKING([for prefix])
14116 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14117 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14118 PREFIXDIR="$prefix"
14119 AC_MSG_RESULT([$PREFIXDIR])
14120 AC_SUBST(PREFIXDIR)
14122 LIBDIR=[$(eval echo $(eval echo $libdir))]
14125 DATADIR=[$(eval echo $(eval echo $datadir))]
14128 MANDIR=[$(eval echo $(eval echo $mandir))]
14131 DOCDIR=[$(eval echo $(eval echo $docdir))]
14134 BINDIR=[$(eval echo $(eval echo $bindir))]
14137 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14138 AC_SUBST(INSTALLDIR)
14140 TESTINSTALLDIR="${BUILDDIR}/test-install"
14141 AC_SUBST(TESTINSTALLDIR)
14144 # ===================================================================
14145 # OAuth2 id and secrets
14146 # ===================================================================
14148 AC_MSG_CHECKING([for Google Drive client id and secret])
14149 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14150 AC_MSG_RESULT([not set])
14151 GDRIVE_CLIENT_ID="\"\""
14152 GDRIVE_CLIENT_SECRET="\"\""
14154 AC_MSG_RESULT([set])
14155 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14156 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14158 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14159 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14161 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14162 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14163 AC_MSG_RESULT([not set])
14164 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14165 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14167 AC_MSG_RESULT([set])
14168 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14169 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14171 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14172 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14174 AC_MSG_CHECKING([for OneDrive client id and secret])
14175 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14176 AC_MSG_RESULT([not set])
14177 ONEDRIVE_CLIENT_ID="\"\""
14178 ONEDRIVE_CLIENT_SECRET="\"\""
14180 AC_MSG_RESULT([set])
14181 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14182 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14184 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14185 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14188 dnl ===================================================================
14189 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14190 dnl --enable-dependency-tracking configure option
14191 dnl ===================================================================
14192 AC_MSG_CHECKING([whether to enable dependency tracking])
14193 if test "$enable_dependency_tracking" = "no"; then
14195 AC_MSG_RESULT([no])
14197 AC_MSG_RESULT([yes])
14201 dnl ===================================================================
14202 dnl Number of CPUs to use during the build
14203 dnl ===================================================================
14204 AC_MSG_CHECKING([for number of processors to use])
14205 # plain --with-parallelism is just the default
14206 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14207 if test "$with_parallelism" = "no"; then
14210 PARALLELISM=$with_parallelism
14213 if test "$enable_icecream" = "yes"; then
14218 Darwin|FreeBSD|NetBSD|OpenBSD)
14219 PARALLELISM=`sysctl -n hw.ncpu`
14223 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14225 # what else than above does profit here *and* has /proc?
14227 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14231 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14232 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14236 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
14237 if test -z "$with_parallelism"; then
14238 AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
14239 add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
14242 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."
14246 if test $PARALLELISM -eq 0; then
14247 AC_MSG_RESULT([explicit make -j option needed])
14249 AC_MSG_RESULT([$PARALLELISM])
14251 AC_SUBST(PARALLELISM)
14253 IWYU_PATH="$with_iwyu"
14254 AC_SUBST(IWYU_PATH)
14255 if test ! -z "$IWYU_PATH"; then
14256 if test ! -f "$IWYU_PATH"; then
14257 AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
14262 # Set up ILIB for MSVC build
14265 if test "$build_os" = "cygwin"; then
14267 if test -n "$JAVA_HOME"; then
14268 ILIB="$ILIB;$JAVA_HOME/lib"
14271 ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
14272 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
14273 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14274 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14275 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14276 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14277 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14279 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14280 ucrtlibpath_formatted=$formatted_path
14281 ILIB="$ILIB;$ucrtlibpath_formatted"
14282 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14283 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14284 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
14286 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14289 if test "$cross_compiling" != "yes"; then
14290 ILIB_FOR_BUILD="$ILIB"
14294 AC_SUBST(ILIB_FOR_BUILD)
14296 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14297 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14298 dnl from consteval constructor initializing const variable",
14299 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14300 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14301 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14302 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'", or
14303 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14304 dnl constructor in ternary expression (/std:c++latest)":
14305 AC_LANG_PUSH([C++])
14307 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14308 CXX="env LIB=$ILIB $CXX"
14310 save_CXXFLAGS=$CXXFLAGS
14311 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14312 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14314 consteval S() { i = 1; }
14319 struct S1 { consteval S1(int) {} };
14334 struct S4 { consteval S4() = default; };
14335 void f4(bool b) { b ? S4() : S4(); }
14337 return (s.i == 1) ? 0 : 1;
14339 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14340 AC_MSG_RESULT([yes])
14341 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14343 CXXFLAGS=$save_CXXFLAGS
14346 # ===================================================================
14347 # Creating bigger shared library to link against
14348 # ===================================================================
14349 AC_MSG_CHECKING([whether to create huge library])
14352 if test $_os = iOS -o $_os = Android; then
14353 # Never any point in mergelibs for these as we build just static
14354 # libraries anyway...
14355 enable_mergelibs=no
14358 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14359 if test $_os != Linux -a $_os != WINNT; then
14360 add_warning "--enable-mergelibs is not tested for this platform"
14363 AC_MSG_RESULT([yes])
14364 AC_DEFINE(ENABLE_MERGELIBS)
14366 AC_MSG_RESULT([no])
14368 AC_SUBST([MERGELIBS])
14370 dnl ===================================================================
14371 dnl icerun is a wrapper that stops us spawning tens of processes
14372 dnl locally - for tools that can't be executed on the compile cluster
14373 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14374 dnl ===================================================================
14375 AC_MSG_CHECKING([whether to use icerun wrapper])
14377 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14378 ICECREAM_RUN=icerun
14379 AC_MSG_RESULT([yes])
14381 AC_MSG_RESULT([no])
14383 AC_SUBST(ICECREAM_RUN)
14385 dnl ===================================================================
14386 dnl Setup the ICECC_VERSION for the build the same way it was set for
14387 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14388 dnl ===================================================================
14389 x_ICECC_VERSION=[\#]
14390 if test -n "$ICECC_VERSION" ; then
14393 AC_SUBST(x_ICECC_VERSION)
14394 AC_SUBST(ICECC_VERSION)
14396 dnl ===================================================================
14398 AC_MSG_CHECKING([MPL subset])
14401 if test "$enable_mpl_subset" = "yes"; then
14403 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14405 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14408 if test "$warn_report" = "true"; then
14409 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14411 if test "x$enable_postgresql_sdbc" != "xno"; then
14412 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14414 if test "$enable_lotuswordpro" = "yes"; then
14415 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14417 if test "$WITH_WEBDAV" = "neon"; then
14418 AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
14420 if test -n "$ENABLE_POPPLER"; then
14421 if test "x$SYSTEM_POPPLER" = "x"; then
14422 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14425 # cf. m4/libo_check_extension.m4
14426 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14427 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14429 for theme in $WITH_THEMES; do
14431 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14432 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14437 ENABLE_OPENGL_TRANSITIONS=
14439 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14440 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14444 AC_DEFINE(MPL_HAVE_SUBSET)
14445 AC_MSG_RESULT([only])
14447 AC_MSG_RESULT([no restrictions])
14449 AC_SUBST(MPL_SUBSET)
14451 dnl ===================================================================
14453 AC_MSG_CHECKING([formula logger])
14454 ENABLE_FORMULA_LOGGER=
14456 if test "x$enable_formula_logger" = "xyes"; then
14457 AC_MSG_RESULT([yes])
14458 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14459 ENABLE_FORMULA_LOGGER=TRUE
14460 elif test -n "$ENABLE_DBGUTIL" ; then
14461 AC_MSG_RESULT([yes])
14462 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14463 ENABLE_FORMULA_LOGGER=TRUE
14465 AC_MSG_RESULT([no])
14468 AC_SUBST(ENABLE_FORMULA_LOGGER)
14470 dnl ===================================================================
14471 dnl Checking for active Antivirus software.
14472 dnl ===================================================================
14474 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14475 AC_MSG_CHECKING([for active Antivirus software])
14476 ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
14477 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14478 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14479 AC_MSG_RESULT([found])
14480 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14481 echo $EICAR_STRING > $SRC_ROOT/eicar
14482 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14484 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14485 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14487 echo $EICAR_STRING > $BUILDDIR/eicar
14488 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14490 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14491 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14493 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"
14495 AC_MSG_RESULT([not found])
14498 AC_MSG_RESULT([n/a])
14502 dnl ===================================================================
14503 dnl Setting up the environment.
14504 dnl ===================================================================
14505 AC_MSG_NOTICE([setting up the build environment variables...])
14509 if test "$build_os" = "cygwin"; then
14510 if test -d "$COMPATH/atlmfc/lib/spectre"; then
14511 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14512 ATL_INCLUDE="$COMPATH/atlmfc/include"
14513 elif test -d "$COMPATH/atlmfc/lib"; then
14514 ATL_LIB="$COMPATH/atlmfc/lib"
14515 ATL_INCLUDE="$COMPATH/atlmfc/include"
14517 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14518 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14520 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14521 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14522 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14524 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14525 PathFormat "/usr/bin/find.exe"
14526 FIND="$formatted_path"
14527 PathFormat "/usr/bin/sort.exe"
14528 SORT="$formatted_path"
14529 PathFormat "/usr/bin/grep.exe"
14530 WIN_GREP="$formatted_path"
14531 PathFormat "/usr/bin/ls.exe"
14532 WIN_LS="$formatted_path"
14533 PathFormat "/usr/bin/touch.exe"
14534 WIN_TOUCH="$formatted_path"
14540 AC_SUBST(ATL_INCLUDE)
14546 AC_SUBST(WIN_TOUCH)
14548 AC_SUBST(BUILD_TYPE)
14553 PERL="$formatted_path"
14556 if test -n "$TMPDIR"; then
14557 TEMP_DIRECTORY="$TMPDIR"
14559 TEMP_DIRECTORY="/tmp"
14561 if test "$build_os" = "cygwin"; then
14562 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14564 AC_SUBST(TEMP_DIRECTORY)
14566 # setup the PATH for the environment
14567 if test -n "$LO_PATH_FOR_BUILD"; then
14568 LO_PATH="$LO_PATH_FOR_BUILD"
14571 pathmunge "$MSVC_HOST_PATH" "before"
14579 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14580 if test "$ENABLE_JAVA" != ""; then
14581 pathmunge "$JAVA_HOME/bin" "after"
14586 # Win32 make needs native paths
14587 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14588 LO_PATH=`cygpath -p -m "$PATH"`
14590 if test "$WIN_BUILD_ARCH" = "x64"; then
14591 # needed for msi packaging
14592 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14594 # .NET 4.6 and higher don't have bin directory
14595 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14596 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14598 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14599 pathmunge "$CSC_PATH" "before"
14600 pathmunge "$MIDL_PATH" "before"
14601 pathmunge "$AL_PATH" "before"
14602 pathmunge "$MSVC_MULTI_PATH" "before"
14603 pathmunge "$MSVC_BUILD_PATH" "before"
14604 if test -n "$MSBUILD_PATH" ; then
14605 pathmunge "$MSBUILD_PATH" "before"
14607 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14608 if test "$ENABLE_JAVA" != ""; then
14609 if test -d "$JAVA_HOME/jre/bin/client"; then
14610 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14612 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14613 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14615 pathmunge "$JAVA_HOME/bin" "before"
14617 pathmunge "$MSVC_HOST_PATH" "before"
14621 pathmunge "/usr/css/bin" "before"
14622 if test "$ENABLE_JAVA" != ""; then
14623 pathmunge "$JAVA_HOME/bin" "after"
14631 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14632 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14633 x_LO_ELFCHECK_ALLOWLIST=
14635 x_LO_ELFCHECK_ALLOWLIST=[\#]
14637 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14638 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14642 # Generate a configuration sha256 we can use for deps
14643 if test -f config_host.mk; then
14644 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14646 if test -f config_host_lang.mk; then
14647 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14650 CFLAGS=$my_original_CFLAGS
14651 CXXFLAGS=$my_original_CXXFLAGS
14652 CPPFLAGS=$my_original_CPPFLAGS
14654 AC_CONFIG_LINKS([include:include])
14656 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14657 # BUILD platform configuration] - otherwise breaks cross building
14658 AC_CONFIG_FILES([config_host.mk
14659 config_host_lang.mk
14662 bin/bffvalidator.sh
14663 bin/odfvalidator.sh
14665 hardened_runtime.xcent
14666 instsetoo_native/util/openoffice.lst
14667 sysui/desktop/macosx/Info.plist
14668 vs-code-template.code-workspace:.vscode/vs-code-template.code-workspace.in])
14669 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
14670 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14671 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14672 AC_CONFIG_HEADERS([config_host/config_clang.h])
14673 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14674 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14675 AC_CONFIG_HEADERS([config_host/config_eot.h])
14676 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14677 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14678 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14679 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14680 AC_CONFIG_HEADERS([config_host/config_features.h])
14681 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14682 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14683 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14684 AC_CONFIG_HEADERS([config_host/config_folders.h])
14685 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14686 AC_CONFIG_HEADERS([config_host/config_gio.h])
14687 AC_CONFIG_HEADERS([config_host/config_global.h])
14688 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14689 AC_CONFIG_HEADERS([config_host/config_java.h])
14690 AC_CONFIG_HEADERS([config_host/config_langs.h])
14691 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14692 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14693 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14694 AC_CONFIG_HEADERS([config_host/config_locales.h])
14695 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14696 AC_CONFIG_HEADERS([config_host/config_oox.h])
14697 AC_CONFIG_HEADERS([config_host/config_options.h])
14698 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14699 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14700 AC_CONFIG_HEADERS([config_host/config_skia.h])
14701 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14702 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14703 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14704 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14705 AC_CONFIG_HEADERS([config_host/config_version.h])
14706 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14707 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14708 AC_CONFIG_HEADERS([config_host/config_python.h])
14709 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14712 if test "$CROSS_COMPILING" = TRUE; then
14713 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14716 # touch the config timestamp file
14717 if test ! -f config_host.mk.stamp; then
14718 echo > config_host.mk.stamp
14719 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14720 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14722 echo > config_host.mk.stamp
14725 # touch the config lang timestamp file
14726 if test ! -f config_host_lang.mk.stamp; then
14727 echo > config_host_lang.mk.stamp
14728 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14729 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14731 echo > config_host_lang.mk.stamp
14735 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14736 -a "$build_os" = "cygwin"; then
14739 ****************************************************************************
14741 Your make version is known to be horribly slow, and hard to debug
14742 problems with. To get a reasonably functional make please do:
14744 to install a pre-compiled binary make for Win32
14746 mkdir -p /opt/lo/bin
14748 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14749 cp make-4.2.1-msvc.exe make
14752 to install from source:
14753 place yourself in a working directory of you choice.
14755 git clone git://git.savannah.gnu.org/make.git
14757 [go to Start menu, open "Visual Studio 2019" or "Visual Studio 2022", and then click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14758 set PATH=%PATH%;C:\Cygwin\bin
14759 [or Cygwin64, if that is what you have]
14760 cd path-to-make-repo-you-cloned-above
14761 build_w32.bat --without-guile
14763 should result in a WinRel/gnumake.exe.
14764 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14766 Then re-run autogen.sh
14768 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14769 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14772 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14773 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14779 ****************************************************************************
14784 To view some help, run:
14789 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14791 After the build has finished successfully, you can immediately run what you built using the command:
14794 if test $_os = Darwin; then
14795 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14797 echo instdir/program/soffice
14801 If you want to run the smoketest, run:
14807 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14808 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14809 cat "$WARNINGS_FILE_FOR_BUILD"
14813 if test -s "$WARNINGS_FILE"; then
14814 echo "HOST config ($WARNINGS_FILE)"
14815 cat "$WARNINGS_FILE"
14818 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: