1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 100 -*-
2 dnl configure.ac serves as input for the GNU autoconf package
3 dnl in order to create a configure script.
5 # The version number in the second argument to AC_INIT should be four numbers separated by
6 # periods. Some parts of the code requires the first one to be less than 128 and the others to be less
7 # than 256. The four numbers can optionally be followed by a period and a free-form string containing
8 # no spaces or periods, like "frobozz-mumble-42" or "alpha0". If the free-form string ends with one or
9 # several non-alphanumeric characters, those are split off and used only for the
10 # ABOUTBOXPRODUCTVERSIONSUFFIX in openoffice.lst. Why that is necessary, no idea.
12 AC_INIT([LibreOffice],[7.2.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
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
51 # let's start with Fedora's paths for now
52 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
53 # ignore it: on UNIXoids it is searched by default anyway
54 # but if it's given explicitly then it may override other paths
55 # (on macOS it would be an error to use it instead of SDK)
58 filteredlibs="$filteredlibs $f"
66 # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
67 # function is called also on Unix.
69 # Return value: $formatted_path and $formatted_path_unix.
71 # $formatted_path is the argument in Windows format, but using forward slashes instead of
72 # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
73 # or shell metacharacters).
75 # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
76 # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
79 # Errors out if 8.3 names are needed but aren't present for some of the path components.
83 # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
85 # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
87 # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
89 # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
91 # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
93 # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
95 # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98 printf "PathFormat $1 ==> "
102 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
103 if test "$build_os" = "wsl"; then
104 formatted_path=$(echo "$formatted_path" | tr -d '\r')
108 # spaces,parentheses,brackets,braces are problematic in pathname
110 case "$formatted_path" in
111 *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
115 if test "$pf_conv_to_dos" = "yes"; then
116 if test "$build_os" = "wsl"; then
117 case "$formatted_path" in
119 formatted_path=$(wslpath -w "$formatted_path")
122 formatted_path=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$formatted_path")
123 elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
124 formatted_path=`cygpath -sm "$formatted_path"`
126 formatted_path=`cygpath -d "$formatted_path"`
128 if test $? -ne 0; then
129 AC_MSG_ERROR([path conversion failed for "$1".])
132 fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
133 fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
134 if test "$fp_count_slash$fp_count_colon" != "00"; then
135 if test "$fp_count_colon" = "0"; then
136 new_formatted_path=`realpath "$formatted_path"`
137 if test $? -ne 0; then
138 AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
140 formatted_path="$new_formatted_path"
143 if test "$build_os" = "wsl"; then
144 if test "$fp_count_colon" != "0"; then
145 formatted_path=$(wslpath "$formatted_path")
147 case "$formatted_path" in
152 formatted_path=$(wslpath -m $formatted_path)
153 case "$formatted_path" in
157 formatted_path="$formatted_path"$final_slash
161 formatted_path=$(wslpath -m "$formatted_path")
164 formatted_path=`cygpath -m "$formatted_path"`
166 if test $? -ne 0; then
167 AC_MSG_ERROR([path conversion failed for "$1".])
170 fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
171 if test "$fp_count_space" != "0"; then
172 AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
175 if test "$build_os" = "wsl"; then
176 # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
177 formatted_path_unix=$(wslpath "$formatted_path")
180 formatted_path_unix="$formatted_path"
186 # There appears to be no simple and portable method to get an absolute and
187 # canonical path, so we try creating the directory if does not exist and
188 # utilizing the shell and pwd.
190 # Args: $1: A possibly relative pathname
191 # Return value: $absolute_path
195 test ! -e "$rel" && mkdir -p "$rel"
196 if test -d "$rel" ; then
197 cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
198 absolute_path="$(pwd)"
201 AC_MSG_ERROR([Failed to resolve absolute path. "$rel" does not exist or is not a directory.])
209 if test "$have_WARNINGS" = "no"; then
210 echo "*************************************" > warn
212 if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
213 dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
214 COLORWARN='*
\e@<:@1;33;40m WARNING
\e@<:@0m:'
216 COLORWARN="* WARNING :"
219 echo "$COLORWARN $@" >> warn
222 dnl Some Mac User have the bad habit of letting a lot of crap
223 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
224 dnl that confuse the build.
225 dnl For the ones that use LODE, let's be nice and protect them
230 mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
231 dnl a common but nevertheless necessary thing that may be in a fancy
232 dnl path location is git, so make sure we have it
233 mac_git_path=`which git 2>/dev/null`
234 if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
235 mac_path="$mac_path:`dirname $mac_git_path`"
237 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
238 dnl path location is gpg, so make sure we find it
239 mac_gpg_path=`which gpg 2>/dev/null`
240 if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
241 mac_path="$mac_path:`dirname $mac_gpg_path`"
249 echo "********************************************************************"
251 echo "* Running ${PACKAGE_NAME} build configuration."
253 echo "********************************************************************"
256 dnl ===================================================================
257 dnl checks build and host OSes
258 dnl do this before argument processing to allow for platform dependent defaults
259 dnl ===================================================================
261 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
262 # Linux on WSL) trust that.
263 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
264 ac_cv_host="x86_64-pc-wsl"
265 ac_cv_host_cpu="x86_64"
267 ac_cv_build="$ac_cv_host"
268 ac_cv_build_cpu="$ac_cv_host_cpu"
269 ac_cv_build_os="$ac_cv_host_os"
271 # Emulation of Cygwin's cygpath command for WSL.
274 if test -n "$UNITTEST_WSL_CYGPATH"; then
275 echo -n cygpath "$@" "==> "
278 # Cygwin's real cygpath has a plethora of options but we use only a few here.
281 local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
284 while getopts dmuwlsp opt; do
287 AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
297 if test $# -ne 1; then
298 AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
305 if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
306 # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
308 if test -n "$opt_u"; then
309 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
314 # A Windows file in WSL format
315 input=$(wslpath -w "$input")
317 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
318 # Already in Windows format
321 input=$(wslpath -w "$input")
324 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
327 if test -n "$opt_d" -o -n "$opt_s"; then
328 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input")
330 if test -n "$opt_m"; then
331 input="${input//\\//}"
338 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
345 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
351 if test -n "$UNITTEST_WSL_CYGPATH"; then
354 # Nothing special with these file names, just arbitrary ones picked to test with
355 cygpath -d /usr/lib64/ld-linux-x86-64.so.2
356 cygpath -w /usr/lib64/ld-linux-x86-64.so.2
357 cygpath -m /usr/lib64/ld-linux-x86-64.so.2
358 cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
359 # At least on my machine for instance this file does have an 8.3 name
360 cygpath -d /mnt/c/windows/WindowsUpdate.log
361 # But for instance this one doesn't
362 cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
363 cygpath -ws /mnt/c/windows/WindowsUpdate.log
364 cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
365 cygpath -ms /mnt/c/windows/WindowsUpdate.log
367 cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
368 cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
377 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
381 # Use of PathFormat must be after AC_CANONICAL_BUILD above
383 printf "$formatted_path , $formatted_path_unix\n"
386 printf "$formatted_path , $formatted_path_unix\n"
388 PathFormat "$PROGRAMFILESX86"
389 printf "$formatted_path , $formatted_path_unix\n"
394 AC_MSG_CHECKING([for product name])
395 PRODUCTNAME="AC_PACKAGE_NAME"
396 if test -n "$with_product_name" -a "$with_product_name" != no; then
397 PRODUCTNAME="$with_product_name"
399 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
400 PRODUCTNAME="${PRODUCTNAME}Dev"
402 AC_MSG_RESULT([$PRODUCTNAME])
403 AC_SUBST(PRODUCTNAME)
404 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
405 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
407 dnl ===================================================================
408 dnl Our version is defined by the AC_INIT() at the top of this script.
409 dnl ===================================================================
411 AC_MSG_CHECKING([for package version])
412 if test -n "$with_package_version" -a "$with_package_version" != no; then
413 PACKAGE_VERSION="$with_package_version"
415 AC_MSG_RESULT([$PACKAGE_VERSION])
417 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
419 LIBO_VERSION_MAJOR=$1
420 LIBO_VERSION_MINOR=$2
421 LIBO_VERSION_MICRO=$3
422 LIBO_VERSION_PATCH=$4
424 LIBO_VERSION_SUFFIX=$5
426 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
427 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
428 # they get undoubled before actually passed to sed.
429 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
430 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
431 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
432 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
434 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
435 # three non-negative integers. Please find more information about CFBundleVersion at
436 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
438 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
439 # of at most three non-negative integers. Please find more information about
440 # CFBundleShortVersionString at
441 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
443 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
445 if test "$enable_macosx_sandbox" = yes; then
446 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
447 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
449 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
450 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
453 AC_SUBST(LIBO_VERSION_MAJOR)
454 AC_SUBST(LIBO_VERSION_MINOR)
455 AC_SUBST(LIBO_VERSION_MICRO)
456 AC_SUBST(LIBO_VERSION_PATCH)
457 AC_SUBST(LIBO_VERSION_SUFFIX)
458 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
459 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
460 AC_SUBST(MACOSX_BUNDLE_VERSION)
462 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
463 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
464 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
465 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
467 LIBO_THIS_YEAR=`date +%Y`
468 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
470 dnl ===================================================================
472 dnl ===================================================================
473 AC_MSG_CHECKING([for product version])
474 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
475 AC_MSG_RESULT([$PRODUCTVERSION])
476 AC_SUBST(PRODUCTVERSION)
479 # AC_PROG_EGREP doesn't set GREP on all systems as well
480 AC_PATH_PROG(GREP, grep)
488 dnl ======================================
489 dnl Required GObject introspection version
490 dnl ======================================
491 INTROSPECTION_REQUIRED_VERSION=1.32.0
493 dnl ===================================================================
494 dnl Search all the common names for GNU Make
495 dnl ===================================================================
496 AC_MSG_CHECKING([for GNU Make])
498 # try to use our own make if it is available and GNUMAKE was not already defined
499 if test -z "$GNUMAKE"; then
500 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
501 GNUMAKE="$LODE_HOME/opt/bin/make"
502 elif test -x "/opt/lo/bin/make"; then
503 GNUMAKE="/opt/lo/bin/make"
508 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
509 if test -n "$a"; then
510 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null
511 if test $? -eq 0; then
512 if test "$build_os" = "cygwin"; then
513 if test -n "$($a -v | grep 'Built for Windows')" ; then
514 GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
515 GNUMAKE_WIN_NATIVE="TRUE"
526 AC_MSG_RESULT($GNUMAKE)
527 if test -z "$GNUMAKE"; then
528 AC_MSG_ERROR([not found. install GNU Make.])
530 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
531 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
535 win_short_path_for_make()
537 local short_path="$1"
538 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
539 cygpath -sm "$short_path"
541 cygpath -u "$(cygpath -d "$short_path")"
546 if test "$build_os" = "cygwin"; then
547 PathFormat "$SRC_ROOT"
548 SRC_ROOT="$formatted_path"
549 PathFormat "$BUILDDIR"
550 BUILDDIR="$formatted_path"
552 AC_MSG_CHECKING(for explicit COMSPEC)
553 if test -z "$COMSPEC"; then
554 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
556 AC_MSG_RESULT([found: $COMSPEC])
563 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
564 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
565 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
567 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
568 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
571 # need sed in os checks...
572 AC_PATH_PROGS(SED, sed)
573 if test -z "$SED"; then
574 AC_MSG_ERROR([install sed to run this script])
577 # Set the ENABLE_LTO variable
578 # ===================================================================
579 AC_MSG_CHECKING([whether to use link-time optimization])
580 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
589 AC_ARG_ENABLE(fuzz-options,
590 AS_HELP_STRING([--enable-fuzz-options],
591 [Randomly enable or disable each of those configurable options
592 that are supposed to be freely selectable without interdependencies,
593 or where bad interaction from interdependencies is automatically avoided.])
596 dnl ===================================================================
597 dnl When building for Android, --with-android-ndk,
598 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
600 dnl ===================================================================
602 AC_ARG_WITH(android-ndk,
603 AS_HELP_STRING([--with-android-ndk],
604 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
607 AC_ARG_WITH(android-ndk-toolchain-version,
608 AS_HELP_STRING([--with-android-ndk-toolchain-version],
609 [Specify which toolchain version to use, of those present in the
610 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
611 with_android_ndk_toolchain_version=clang5.0)
613 AC_ARG_WITH(android-sdk,
614 AS_HELP_STRING([--with-android-sdk],
615 [Specify location of the Android SDK. Mandatory when building for Android.]),
618 AC_ARG_WITH(android-api-level,
619 AS_HELP_STRING([--with-android-api-level],
620 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
624 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
625 with_android_ndk="$SRC_ROOT/external/android-ndk"
627 if test -n "$with_android_ndk"; then
628 eval ANDROID_NDK_HOME=$with_android_ndk
630 # Set up a lot of pre-canned defaults
632 if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then
633 if test ! -f $ANDROID_NDK_HOME/source.properties; then
634 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.])
636 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
638 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
640 if test -z "$ANDROID_NDK_VERSION"; then
641 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
643 case $ANDROID_NDK_VERSION in
645 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
647 11.1.*|12.1.*|13.1.*|14.1.*)
648 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
650 16.*|17.*|18.*|19.*|20.*)
653 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
654 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
659 if test -n "$with_android_api_level" ; then
660 ANDROID_API_LEVEL="$with_android_api_level"
663 android_cpu=$host_cpu
664 if test $host_cpu = arm; then
665 android_platform_prefix=arm-linux-androideabi
666 android_gnu_prefix=$android_platform_prefix
667 LLVM_TRIPLE=armv7a-linux-androideabi
668 ANDROID_APP_ABI=armeabi-v7a
669 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
670 elif test $host_cpu = aarch64; then
671 android_platform_prefix=aarch64-linux-android
672 android_gnu_prefix=$android_platform_prefix
673 LLVM_TRIPLE=$android_platform_prefix
674 # minimum android version that supports aarch64
675 if test "$ANDROID_API_LEVEL" -lt "21" ; then
678 ANDROID_APP_ABI=arm64-v8a
679 elif test $host_cpu = x86_64; then
680 android_platform_prefix=x86_64-linux-android
681 android_gnu_prefix=$android_platform_prefix
682 LLVM_TRIPLE=$android_platform_prefix
683 # minimum android version that supports x86_64
685 ANDROID_APP_ABI=x86_64
687 # host_cpu is something like "i386" or "i686" I guess, NDK uses
688 # "x86" in some contexts
690 android_platform_prefix=$android_cpu
691 android_gnu_prefix=i686-linux-android
692 LLVM_TRIPLE=$android_gnu_prefix
696 case "$with_android_ndk_toolchain_version" in
698 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
701 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
704 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
706 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
707 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
708 # manage to link the (app-specific) single huge .so that is built for the app in
709 # android/source/ if there is debug information in a significant part of the object files.
710 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
711 # all objects have been built with debug information.)
714 android_HOST_TAG=linux-x86_64
717 android_HOST_TAG=darwin-x86_64
720 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
721 # ndk would also support windows and windows-x86_64
724 android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG
725 ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
726 dnl TODO: NSS build uses it...
727 ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
728 AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
730 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
731 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
732 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
733 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
734 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
736 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
737 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
738 if test "$ENABLE_LTO" = TRUE; then
739 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
740 # $CC and $CXX when building external libraries
741 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
744 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
746 if test -z "$CC"; then
747 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
750 if test -z "$CXX"; then
751 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
755 # remember to download the ownCloud Android library later
756 BUILD_TYPE="$BUILD_TYPE OWNCLOUD_ANDROID_LIB"
758 AC_SUBST(ANDROID_NDK_HOME)
759 AC_SUBST(ANDROID_APP_ABI)
760 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
762 dnl ===================================================================
763 dnl --with-android-sdk
764 dnl ===================================================================
766 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
767 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
769 if test -n "$with_android_sdk"; then
770 eval ANDROID_SDK_HOME=$with_android_sdk
771 PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
773 AC_SUBST(ANDROID_SDK_HOME)
775 AC_ARG_ENABLE([android-lok],
776 AS_HELP_STRING([--enable-android-lok],
777 [The Android app from the android/ subdir needs several tweaks all
778 over the place that break the LOK when used in the Online-based
779 Android app. This switch indicates that the intent of this build is
780 actually the Online-based, non-modified LOK.])
783 if test -n "$ANDROID_NDK_HOME" ; then
784 if test "$enable_android_lok" = yes; then
785 ENABLE_ANDROID_LOK=TRUE
786 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
787 AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
789 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
792 AC_SUBST([ENABLE_ANDROID_LOK])
794 libo_FUZZ_ARG_ENABLE([android-editing],
795 AS_HELP_STRING([--enable-android-editing],
796 [Enable the experimental editing feature on Android.])
798 ENABLE_ANDROID_EDITING=
799 if test "$enable_android_editing" = yes; then
800 ENABLE_ANDROID_EDITING=TRUE
802 AC_SUBST([ENABLE_ANDROID_EDITING])
804 dnl ===================================================================
805 dnl The following is a list of supported systems.
806 dnl Sequential to keep the logic very simple
807 dnl These values may be checked and reset later.
808 dnl ===================================================================
809 #defaults unless the os test overrides this:
819 # Default values, as such probably valid just for Linux, set
820 # differently below just for Mac OSX, but at least better than
821 # hardcoding these as we used to do. Much of this is duplicated also
822 # in solenv for old build system and for gbuild, ideally we should
823 # perhaps define stuff like this only here in configure.ac?
825 LINKFLAGSSHL="-shared"
829 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
832 INSTROOTCONTENTSUFFIX=
835 HOST_PLATFORM="$host"
837 host_cpu_for_clang="$host_cpu"
842 build_gstreamer_1_0=yes
847 dnl ===========================================================
848 dnl Check whether we're using Solaris 10 - SPARC or Intel.
849 dnl ===========================================================
850 AC_MSG_CHECKING([the Solaris operating system release])
851 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
852 if test "$_os_release" -lt "10"; then
853 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
855 AC_MSG_RESULT([ok ($_os_release)])
858 dnl Check whether we're using a SPARC or i386 processor
859 AC_MSG_CHECKING([the processor type])
860 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
861 AC_MSG_RESULT([ok ($host_cpu)])
863 AC_MSG_ERROR([only SPARC and i386 processors are supported])
867 linux-gnu*|k*bsd*-gnu*)
868 build_gstreamer_1_0=yes
874 if test "$enable_fuzzers" != yes; then
880 BUILD_TYPE="$BUILD_TYPE FONTCONFIG FREETYPE"
893 # When building on Windows normally with MSVC under Cygwin,
894 # configure thinks that the host platform (the platform the
895 # built code will run on) is Cygwin, even if it obviously is
896 # Windows, which in Autoconf terminology is called
897 # "mingw32". (Which is misleading as MinGW is the name of the
898 # tool-chain, not an operating system.)
900 # Somewhat confusing, yes. But this configure script doesn't
901 # look at $host etc that much, it mostly uses its own $_os
902 # variable, set here in this case statement.
916 if test "$host_cpu" = "aarch64"; then
919 enable_firebird_sdbc=no
923 darwin*|macos*) # macOS
929 if test -n "$LODE_HOME" ; then
931 AC_MSG_NOTICE([sanitized the PATH to $PATH])
934 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
935 INSTROOTCONTENTSUFFIX=/Contents
936 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
937 # See comment above the case "$host_os"
938 LINKFLAGSSHL="-dynamiclib -single_module"
945 # -undefined error is the default
951 # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
952 # the "macos" part so be sure to use aarch64-apple-darwin for now.
953 HOST_PLATFORM=aarch64-apple-darwin
957 # Apple's Clang uses "arm64"
958 host_cpu_for_clang=arm64
968 if test -n "$LODE_HOME" ; then
970 AC_MSG_NOTICE([sanitized the PATH to $PATH])
975 enable_mpl_subset=yes
976 enable_lotuswordpro=no
979 enable_mariadb_sdbc=no
980 enable_postgresql_sdbc=no
981 enable_extension_integration=no
982 enable_report_builder=no
984 if test "$enable_ios_simulator" = "yes"; then
985 host=x86_64-apple-darwin
987 # See comment above the case "$host_os"
988 LINKFLAGSSHL="-dynamiclib -single_module"
995 # -undefined error is the default
998 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
999 # part, so use aarch64-apple-darwin for now.
1000 HOST_PLATFORM=aarch64-apple-darwin
1002 # Apple's Clang uses "arm64"
1003 host_cpu_for_clang=arm64
1007 build_gstreamer_1_0=yes
1012 AC_MSG_CHECKING([the FreeBSD operating system release])
1013 if test -n "$with_os_version"; then
1014 OSVERSION="$with_os_version"
1016 OSVERSION=`/sbin/sysctl -n kern.osreldate`
1018 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1019 AC_MSG_CHECKING([which thread library to use])
1020 if test "$OSVERSION" -lt "500016"; then
1021 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1022 PTHREAD_LIBS="-pthread"
1023 elif test "$OSVERSION" -lt "502102"; then
1024 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1025 PTHREAD_LIBS="-lc_r"
1028 PTHREAD_LIBS="-pthread"
1030 AC_MSG_RESULT([$PTHREAD_LIBS])
1035 build_gstreamer_1_0=yes
1040 PTHREAD_LIBS="-pthread -lpthread"
1047 PTHREAD_LIBS=-pthread
1053 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1054 PTHREAD_LIBS="-pthread"
1059 build_gstreamer_1_0=yes
1064 PTHREAD_LIBS="-pthread"
1069 build_gstreamer_1_0=no
1070 enable_lotuswordpro=no
1071 enable_mpl_subset=yes
1074 enable_mariadb_sdbc=no
1075 enable_report_builder=no
1077 enable_postgresql_sdbc=no
1090 AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
1091 BUILD_TYPE="$BUILD_TYPE CAIRO FONTCONFIG FREETYPE"
1101 enable_gstreamer_1_0=no
1106 enable_postgresql_sdbc=no
1107 enable_firebird_sdbc=no
1112 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1116 AC_SUBST(HOST_PLATFORM)
1118 if test "$_os" = "Android" ; then
1119 # Verify that the NDK and SDK options are proper
1120 if test -z "$with_android_ndk"; then
1121 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1122 elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
1123 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1126 if test -z "$ANDROID_SDK_HOME"; then
1127 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1128 elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
1129 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1132 BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
1133 if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
1134 AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
1135 $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
1136 or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
1137 add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
1138 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
1139 add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
1141 if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
1142 AC_MSG_WARN([android support repository not found - install with
1143 $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
1144 to allow the build to download the specified version of the android support libraries])
1145 add_warning "android support repository not found - install with"
1146 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
1147 add_warning "to allow the build to download the specified version of the android support libraries"
1151 if test "$_os" = "AIX"; then
1152 AC_PATH_PROG(GAWK, gawk)
1153 if test -z "$GAWK"; then
1154 AC_MSG_ERROR([gawk not found in \$PATH])
1158 AC_SUBST(SDKDIRNAME)
1160 AC_SUBST(PTHREAD_CFLAGS)
1161 AC_SUBST(PTHREAD_LIBS)
1163 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1164 # By default use the ones specified by our build system,
1165 # but explicit override is possible.
1166 AC_MSG_CHECKING(for explicit AFLAGS)
1167 if test -n "$AFLAGS"; then
1168 AC_MSG_RESULT([$AFLAGS])
1174 AC_MSG_CHECKING(for explicit CFLAGS)
1175 if test -n "$CFLAGS"; then
1176 AC_MSG_RESULT([$CFLAGS])
1182 AC_MSG_CHECKING(for explicit CXXFLAGS)
1183 if test -n "$CXXFLAGS"; then
1184 AC_MSG_RESULT([$CXXFLAGS])
1190 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1191 if test -n "$OBJCFLAGS"; then
1192 AC_MSG_RESULT([$OBJCFLAGS])
1198 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1199 if test -n "$OBJCXXFLAGS"; then
1200 AC_MSG_RESULT([$OBJCXXFLAGS])
1206 AC_MSG_CHECKING(for explicit LDFLAGS)
1207 if test -n "$LDFLAGS"; then
1208 AC_MSG_RESULT([$LDFLAGS])
1218 AC_SUBST(OBJCXXFLAGS)
1222 AC_SUBST(x_CXXFLAGS)
1223 AC_SUBST(x_OBJCFLAGS)
1224 AC_SUBST(x_OBJCXXFLAGS)
1227 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1228 my_original_CFLAGS=$CFLAGS
1229 my_original_CXXFLAGS=$CXXFLAGS
1230 my_original_CPPFLAGS=$CPPFLAGS
1232 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1233 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1234 dnl AC_PROG_CC internally.
1235 if test "$_os" != "WINNT"; then
1236 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1240 if test -z "$CC_BASE"; then
1241 CC_BASE=`first_arg_basename "$CC"`
1245 if test "$_os" != "WINNT"; then
1246 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1250 AC_SUBST(ENDIANNESS)
1252 if test $_os != "WINNT"; then
1254 AC_SEARCH_LIBS([dlsym], [dl],
1255 [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1256 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1259 AC_SUBST(DLOPEN_LIBS)
1261 AC_ARG_ENABLE(ios-simulator,
1262 AS_HELP_STRING([--enable-ios-simulator],
1263 [build for iOS simulator])
1266 AC_ARG_ENABLE(ios-libreofficelight-app,
1267 AS_HELP_STRING([--enable-ios-libreofficelight-app],
1268 [When building for iOS, build stuff relevant only for the 'LibreOfficeLight' app
1269 (in ios/LibreOfficeLight). Note that this app is not known to work in any useful manner,
1270 and also that its actual build (in Xcode) requires some obvious modifications to the project.])
1273 ENABLE_IOS_LIBREOFFICELIGHT_APP=
1274 if test "$enable_ios_libreofficelight_app" = yes; then
1275 ENABLE_IOS_LIBREOFFICELIGHT_APP=TRUE
1277 AC_SUBST(ENABLE_IOS_LIBREOFFICELIGHT_APP)
1279 ###############################################################################
1280 # Extensions switches --enable/--disable
1281 ###############################################################################
1282 # By default these should be enabled unless having extra dependencies.
1283 # If there is extra dependency over configure options then the enable should
1284 # be automagic based on whether the requiring feature is enabled or not.
1285 # All this options change anything only with --enable-extension-integration.
1287 # The name of this option and its help string makes it sound as if
1288 # extensions are built anyway, just not integrated in the installer,
1289 # if you use --disable-extension-integration. Is that really the
1292 libo_FUZZ_ARG_ENABLE(extension-integration,
1293 AS_HELP_STRING([--disable-extension-integration],
1294 [Disable integration of the built extensions in the installer of the
1295 product. Use this switch to disable the integration.])
1298 AC_ARG_ENABLE(avmedia,
1299 AS_HELP_STRING([--disable-avmedia],
1300 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1303 AC_ARG_ENABLE(database-connectivity,
1304 AS_HELP_STRING([--disable-database-connectivity],
1305 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1308 # This doesn't mean not building (or "integrating") extensions
1309 # (although it probably should; i.e. it should imply
1310 # --disable-extension-integration I guess), it means not supporting
1311 # any extension mechanism at all
1312 libo_FUZZ_ARG_ENABLE(extensions,
1313 AS_HELP_STRING([--disable-extensions],
1314 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1317 AC_ARG_ENABLE(scripting,
1318 AS_HELP_STRING([--disable-scripting],
1319 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1322 # This is mainly for Android and iOS, but could potentially be used in some
1323 # special case otherwise, too, so factored out as a separate setting
1325 AC_ARG_ENABLE(dynamic-loading,
1326 AS_HELP_STRING([--disable-dynamic-loading],
1327 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1330 libo_FUZZ_ARG_ENABLE(report-builder,
1331 AS_HELP_STRING([--disable-report-builder],
1332 [Disable the Report Builder.])
1335 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1336 AS_HELP_STRING([--enable-ext-wiki-publisher],
1337 [Enable the Wiki Publisher extension.])
1340 libo_FUZZ_ARG_ENABLE(lpsolve,
1341 AS_HELP_STRING([--disable-lpsolve],
1342 [Disable compilation of the lp solve solver ])
1344 libo_FUZZ_ARG_ENABLE(coinmp,
1345 AS_HELP_STRING([--disable-coinmp],
1346 [Disable compilation of the CoinMP solver ])
1349 libo_FUZZ_ARG_ENABLE(pdfimport,
1350 AS_HELP_STRING([--disable-pdfimport],
1351 [Disable building the PDF import feature.])
1354 libo_FUZZ_ARG_ENABLE(pdfium,
1355 AS_HELP_STRING([--disable-pdfium],
1356 [Disable building PDFium. Results in unsecure PDF signature verification.])
1359 libo_FUZZ_ARG_ENABLE(skia,
1360 AS_HELP_STRING([--disable-skia],
1361 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1364 ###############################################################################
1366 dnl ---------- *** ----------
1368 libo_FUZZ_ARG_ENABLE(mergelibs,
1369 AS_HELP_STRING([--enable-mergelibs],
1370 [Merge several of the smaller libraries into one big, "merged", one.])
1373 libo_FUZZ_ARG_ENABLE(breakpad,
1374 AS_HELP_STRING([--enable-breakpad],
1375 [Enables breakpad for crash reporting.])
1378 libo_FUZZ_ARG_ENABLE(crashdump,
1379 AS_HELP_STRING([--disable-crashdump],
1380 [Disable dump.ini and dump-file, when --enable-breakpad])
1383 AC_ARG_ENABLE(fetch-external,
1384 AS_HELP_STRING([--disable-fetch-external],
1385 [Disables fetching external tarballs from web sources.])
1388 AC_ARG_ENABLE(fuzzers,
1389 AS_HELP_STRING([--enable-fuzzers],
1390 [Enables building libfuzzer targets for fuzz testing.])
1393 libo_FUZZ_ARG_ENABLE(pch,
1394 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1395 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1396 Using 'system' will include only external headers, 'base' will add also headers
1397 from base modules, 'normal' will also add all headers except from the module built,
1398 'full' will use all suitable headers even from a module itself.])
1401 libo_FUZZ_ARG_ENABLE(epm,
1402 AS_HELP_STRING([--enable-epm],
1403 [LibreOffice includes self-packaging code, that requires epm, however epm is
1404 useless for large scale package building.])
1407 libo_FUZZ_ARG_ENABLE(odk,
1408 AS_HELP_STRING([--disable-odk],
1409 [LibreOffice includes an ODK, office development kit which some packagers may
1410 wish to build without.])
1413 AC_ARG_ENABLE(mpl-subset,
1414 AS_HELP_STRING([--enable-mpl-subset],
1415 [Don't compile any pieces which are not MPL or more liberally licensed])
1418 libo_FUZZ_ARG_ENABLE(evolution2,
1419 AS_HELP_STRING([--enable-evolution2],
1420 [Allows the built-in evolution 2 addressbook connectivity build to be
1424 AC_ARG_ENABLE(avahi,
1425 AS_HELP_STRING([--enable-avahi],
1426 [Determines whether to use Avahi to advertise Impress to remote controls.])
1429 libo_FUZZ_ARG_ENABLE(werror,
1430 AS_HELP_STRING([--enable-werror],
1431 [Turn warnings to errors. (Has no effect in modules where the treating
1432 of warnings as errors is disabled explicitly.)]),
1435 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1436 AS_HELP_STRING([--enable-assert-always-abort],
1437 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1440 libo_FUZZ_ARG_ENABLE(dbgutil,
1441 AS_HELP_STRING([--enable-dbgutil],
1442 [Provide debugging support from --enable-debug and include additional debugging
1443 utilities such as object counting or more expensive checks.
1444 This is the recommended option for developers.
1445 Note that this makes the build ABI incompatible, it is not possible to mix object
1446 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1448 libo_FUZZ_ARG_ENABLE(debug,
1449 AS_HELP_STRING([--enable-debug],
1450 [Include debugging information, disable compiler optimization and inlining plus
1451 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1453 libo_FUZZ_ARG_ENABLE(split-debug,
1454 AS_HELP_STRING([--disable-split-debug],
1455 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1456 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1458 libo_FUZZ_ARG_ENABLE(gdb-index,
1459 AS_HELP_STRING([--disable-gdb-index],
1460 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1461 The feature requires the gold or lld linker.]))
1463 libo_FUZZ_ARG_ENABLE(sal-log,
1464 AS_HELP_STRING([--enable-sal-log],
1465 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1467 libo_FUZZ_ARG_ENABLE(symbols,
1468 AS_HELP_STRING([--enable-symbols],
1469 [Generate debug information.
1470 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1471 otherwise. It is possible to explicitly specify gbuild build targets
1472 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1473 everything in the directory; there is no ordering, more specific overrides
1474 more general, and disabling takes precedence).
1475 Example: --enable-symbols="all -sw/ -Library_sc".]))
1477 libo_FUZZ_ARG_ENABLE(optimized,
1478 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1479 [Whether to compile with optimization flags.
1480 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1481 otherwise. Using 'debug' will try to use only optimizations that should
1482 not interfere with debugging.]))
1484 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1485 AS_HELP_STRING([--disable-runtime-optimizations],
1486 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1487 JVM JIT) that are known to interact badly with certain dynamic analysis
1488 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1489 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1490 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1492 AC_ARG_WITH(valgrind,
1493 AS_HELP_STRING([--with-valgrind],
1494 [Make availability of Valgrind headers a hard requirement.]))
1496 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1497 AS_HELP_STRING([--enable-compiler-plugins],
1498 [Enable compiler plugins that will perform additional checks during
1499 building. Enabled automatically by --enable-dbgutil.
1500 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1501 COMPILER_PLUGINS_DEBUG=
1502 if test "$enable_compiler_plugins" = debug; then
1503 enable_compiler_plugins=yes
1504 COMPILER_PLUGINS_DEBUG=TRUE
1507 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1508 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1509 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1510 relevant in the --disable-compiler-plugins case.]))
1512 libo_FUZZ_ARG_ENABLE(ooenv,
1513 AS_HELP_STRING([--disable-ooenv],
1514 [Disable ooenv for the instdir installation.]))
1517 AS_HELP_STRING([--enable-lto],
1518 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1519 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1520 linker. For MSVC, this option is broken at the moment. This is experimental work
1521 in progress that shouldn't be used unless you are working on it.)]))
1523 AC_ARG_ENABLE(python,
1524 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1525 [Enables or disables Python support at run-time.
1526 Also specifies what Python to use at build-time.
1527 'fully-internal' even forces the internal version for uses of Python
1529 On macOS the only choices are
1530 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1533 libo_FUZZ_ARG_ENABLE(gtk3,
1534 AS_HELP_STRING([--disable-gtk3],
1535 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1536 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1538 AC_ARG_ENABLE(introspection,
1539 AS_HELP_STRING([--enable-introspection],
1540 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1541 Linux distributions.)]))
1543 AC_ARG_ENABLE(split-app-modules,
1544 AS_HELP_STRING([--enable-split-app-modules],
1545 [Split file lists for app modules, e.g. base, calc.
1546 Has effect only with make distro-pack-install]),
1549 AC_ARG_ENABLE(split-opt-features,
1550 AS_HELP_STRING([--enable-split-opt-features],
1551 [Split file lists for some optional features, e.g. pyuno, testtool.
1552 Has effect only with make distro-pack-install]),
1555 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1556 AS_HELP_STRING([--disable-cairo-canvas],
1557 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1560 libo_FUZZ_ARG_ENABLE(dbus,
1561 AS_HELP_STRING([--disable-dbus],
1562 [Determines whether to enable features that depend on dbus.
1563 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1564 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1566 libo_FUZZ_ARG_ENABLE(sdremote,
1567 AS_HELP_STRING([--disable-sdremote],
1568 [Determines whether to enable Impress remote control (i.e. the server component).]),
1569 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1571 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1572 AS_HELP_STRING([--disable-sdremote-bluetooth],
1573 [Determines whether to build sdremote with bluetooth support.
1574 Requires dbus on Linux.]))
1576 libo_FUZZ_ARG_ENABLE(gio,
1577 AS_HELP_STRING([--disable-gio],
1578 [Determines whether to use the GIO support.]),
1579 ,test "${enable_gio+set}" = set || enable_gio=yes)
1582 AS_HELP_STRING([--enable-qt5],
1583 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1588 AS_HELP_STRING([--enable-kf5],
1589 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1590 KF5 are available.]),
1594 AS_HELP_STRING([--enable-kde5],
1595 [Compatibility switch for the kde5 => kf5 rename. Use --enable-kf5!])
1598 AC_ARG_ENABLE(gtk3_kde5,
1599 AS_HELP_STRING([--enable-gtk3-kde5],
1600 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1601 platforms where Gtk3, Qt5 and Plasma is available.]),
1605 AS_HELP_STRING([--disable-gui],
1606 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1609 libo_FUZZ_ARG_ENABLE(randr,
1610 AS_HELP_STRING([--disable-randr],
1611 [Disable RandR support in the vcl project.]),
1612 ,test "${enable_randr+set}" = set || enable_randr=yes)
1614 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1615 AS_HELP_STRING([--disable-gstreamer-1-0],
1616 [Disable building with the gstreamer 1.0 avmedia backend.]),
1617 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1619 libo_FUZZ_ARG_ENABLE(vlc,
1620 AS_HELP_STRING([--enable-vlc],
1621 [Enable building with the (experimental) VLC avmedia backend.]),
1622 ,test "${enable_vlc+set}" = set || enable_vlc=no)
1624 libo_FUZZ_ARG_ENABLE(neon,
1625 AS_HELP_STRING([--disable-neon],
1626 [Disable neon and the compilation of webdav binding.]),
1629 libo_FUZZ_ARG_ENABLE([eot],
1630 [AS_HELP_STRING([--enable-eot],
1631 [Enable support for Embedded OpenType fonts.])],
1632 ,test "${enable_eot+set}" = set || enable_eot=no)
1634 libo_FUZZ_ARG_ENABLE(cve-tests,
1635 AS_HELP_STRING([--disable-cve-tests],
1636 [Prevent CVE tests to be executed]),
1639 libo_FUZZ_ARG_ENABLE(chart-tests,
1640 AS_HELP_STRING([--enable-chart-tests],
1641 [Executes chart XShape tests. In a perfect world these tests would be
1642 stable and everyone could run them, in reality it is best to run them
1643 only on a few machines that are known to work and maintained by people
1644 who can judge if a test failure is a regression or not.]),
1647 AC_ARG_ENABLE(build-opensymbol,
1648 AS_HELP_STRING([--enable-build-opensymbol],
1649 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1650 fontforge installed.]),
1653 AC_ARG_ENABLE(dependency-tracking,
1654 AS_HELP_STRING([--enable-dependency-tracking],
1655 [Do not reject slow dependency extractors.])[
1656 --disable-dependency-tracking
1657 Disables generation of dependency information.
1658 Speed up one-time builds.],
1661 AC_ARG_ENABLE(icecream,
1662 AS_HELP_STRING([--enable-icecream],
1663 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1664 It defaults to /opt/icecream for the location of the icecream gcc/g++
1665 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1669 AS_HELP_STRING([--enable-ld=<linker>],
1670 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1671 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1672 If <linker> contains any ':', the part before the first ':' is used as the value of
1673 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1674 needed for Clang 12).]),
1677 libo_FUZZ_ARG_ENABLE(cups,
1678 AS_HELP_STRING([--disable-cups],
1679 [Do not build cups support.])
1682 AC_ARG_ENABLE(ccache,
1683 AS_HELP_STRING([--disable-ccache],
1684 [Do not try to use ccache automatically.
1685 By default, unless on Windows, we will try to detect if ccache is available; in that case if
1686 CC/CXX are not yet set, and --enable-icecream is not given, we
1687 attempt to use ccache. --disable-ccache disables ccache completely.
1688 Additionally ccache's depend mode is enabled if possible,
1689 use --enable-ccache=nodepend to enable ccache without depend mode.
1693 libo_FUZZ_ARG_ENABLE(online-update,
1694 AS_HELP_STRING([--enable-online-update],
1695 [Enable the online update service that will check for new versions of
1696 LibreOffice. By default, it is enabled on Windows and Mac, disabled on Linux.
1697 If the value is "mar", the experimental Mozilla-like update will be
1698 enabled instead of the traditional update mechanism.]),
1701 AC_ARG_WITH(update-config,
1702 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1703 [Path to the update config ini file]))
1705 libo_FUZZ_ARG_ENABLE(extension-update,
1706 AS_HELP_STRING([--disable-extension-update],
1707 [Disable possibility to update installed extensions.]),
1710 libo_FUZZ_ARG_ENABLE(release-build,
1711 AS_HELP_STRING([--enable-release-build],
1712 [Enable release build. Note that the "release build" choice is orthogonal to
1713 whether symbols are present, debug info is generated, or optimization
1715 See http://wiki.documentfoundation.org/Development/DevBuild]),
1718 AC_ARG_ENABLE(windows-build-signing,
1719 AS_HELP_STRING([--enable-windows-build-signing],
1720 [Enable signing of windows binaries (*.exe, *.dll)]),
1723 AC_ARG_ENABLE(silent-msi,
1724 AS_HELP_STRING([--enable-silent-msi],
1725 [Enable MSI with LIMITUI=1 (silent install).]),
1728 AC_ARG_ENABLE(macosx-code-signing,
1729 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1730 [Sign executables, dylibs, frameworks and the app bundle. If you
1731 don't provide an identity the first suitable certificate
1732 in your keychain is used.]),
1735 AC_ARG_ENABLE(macosx-package-signing,
1736 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1737 [Create a .pkg suitable for uploading to the Mac App Store and sign
1738 it. If you don't provide an identity the first suitable certificate
1739 in your keychain is used.]),
1742 AC_ARG_ENABLE(macosx-sandbox,
1743 AS_HELP_STRING([--enable-macosx-sandbox],
1744 [Make the app bundle run in a sandbox. Requires code signing.
1745 Is required by apps distributed in the Mac App Store, and implies
1746 adherence to App Store rules.]),
1749 AC_ARG_WITH(macosx-bundle-identifier,
1750 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1751 [Define the macOS bundle identifier. Default is the somewhat weird
1752 org.libreoffice.script ("script", huh?).]),
1753 ,with_macosx_bundle_identifier=org.libreoffice.script)
1755 AC_ARG_WITH(product-name,
1756 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1757 [Define the product name. Default is AC_PACKAGE_NAME.]),
1758 ,with_product_name=$PRODUCTNAME)
1760 AC_ARG_WITH(package-version,
1761 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1762 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1765 libo_FUZZ_ARG_ENABLE(readonly-installset,
1766 AS_HELP_STRING([--enable-readonly-installset],
1767 [Prevents any attempts by LibreOffice to write into its installation. That means
1768 at least that no "system-wide" extensions can be added. Partly experimental work in
1769 progress, probably not fully implemented. Always enabled for macOS.]),
1772 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1773 AS_HELP_STRING([--disable-mariadb-sdbc],
1774 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1777 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1778 AS_HELP_STRING([--disable-postgresql-sdbc],
1779 [Disable the build of the PostgreSQL-SDBC driver.])
1782 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1783 AS_HELP_STRING([--disable-lotuswordpro],
1784 [Disable the build of the Lotus Word Pro filter.]),
1785 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1787 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1788 AS_HELP_STRING([--disable-firebird-sdbc],
1789 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1790 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1792 AC_ARG_ENABLE(bogus-pkg-config,
1793 AS_HELP_STRING([--enable-bogus-pkg-config],
1794 [MACOSX only: on MacOSX pkg-config can cause trouble. by default if one is found in the PATH, an error is issued. This flag turn that error into a warning.]),
1797 AC_ARG_ENABLE(openssl,
1798 AS_HELP_STRING([--disable-openssl],
1799 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1800 components will either use GNUTLS or NSS. Work in progress,
1801 use only if you are hacking on it.]),
1802 ,enable_openssl=yes)
1804 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1805 AS_HELP_STRING([--enable-cipher-openssl-backend],
1806 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1807 Requires --enable-openssl.]))
1809 AC_ARG_ENABLE(library-bin-tar,
1810 AS_HELP_STRING([--enable-library-bin-tar],
1811 [Enable the building and reused of tarball of binary build for some 'external' libraries.
1812 Some libraries can save their build result in a tarball
1813 stored in TARFILE_LOCATION. That binary tarball is
1814 uniquely identified by the source tarball,
1815 the content of the config_host.mk file and the content
1816 of the top-level directory in core for that library
1817 If this option is enabled, then if such a tarfile exist, it will be untarred
1818 instead of the source tarfile, and the build step will be skipped for that
1820 If a proper tarfile does not exist, then the normal source-based
1821 build is done for that library and a proper binary tarfile is created
1822 for the next time.]),
1825 AC_ARG_ENABLE(dconf,
1826 AS_HELP_STRING([--disable-dconf],
1827 [Disable the dconf configuration backend (enabled by default where
1830 libo_FUZZ_ARG_ENABLE(formula-logger,
1832 [--enable-formula-logger],
1833 [Enable formula logger for logging formula calculation flow in Calc.]
1838 AS_HELP_STRING([--disable-ldap],
1839 [Disable LDAP support.]),
1842 AC_ARG_ENABLE(opencl,
1843 AS_HELP_STRING([--disable-opencl],
1844 [Disable OpenCL support.]),
1847 dnl ===================================================================
1848 dnl Optional Packages (--with/without-)
1849 dnl ===================================================================
1851 AC_ARG_WITH(gcc-home,
1852 AS_HELP_STRING([--with-gcc-home],
1853 [Specify the location of gcc/g++ manually. This can be used in conjunction
1854 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1855 non-default path.]),
1858 AC_ARG_WITH(gnu-patch,
1859 AS_HELP_STRING([--with-gnu-patch],
1860 [Specify location of GNU patch on Solaris or FreeBSD.]),
1863 AC_ARG_WITH(build-platform-configure-options,
1864 AS_HELP_STRING([--with-build-platform-configure-options],
1865 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1869 AS_HELP_STRING([--with-gnu-cp],
1870 [Specify location of GNU cp on Solaris or FreeBSD.]),
1873 AC_ARG_WITH(external-tar,
1874 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1875 [Specify an absolute path of where to find (and store) tarfiles.]),
1876 TARFILE_LOCATION=$withval ,
1879 AC_ARG_WITH(referenced-git,
1880 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1881 [Specify another checkout directory to reference. This makes use of
1882 git submodule update --reference, and saves a lot of diskspace
1883 when having multiple trees side-by-side.]),
1884 GIT_REFERENCE_SRC=$withval ,
1887 AC_ARG_WITH(linked-git,
1888 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
1889 [Specify a directory where the repositories of submodules are located.
1890 This uses a method similar to git-new-workdir to get submodules.]),
1891 GIT_LINK_SRC=$withval ,
1894 AC_ARG_WITH(galleries,
1895 AS_HELP_STRING([--with-galleries],
1896 [Specify how galleries should be built. It is possible either to
1897 build these internally from source ("build"),
1898 or to disable them ("no")]),
1902 AS_HELP_STRING([--with-theme="theme1 theme2..."],
1903 [Choose which themes to include. By default those themes with an '*' are included.
1904 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
1905 *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
1908 libo_FUZZ_ARG_WITH(helppack-integration,
1909 AS_HELP_STRING([--without-helppack-integration],
1910 [It will not integrate the helppacks to the installer
1911 of the product. Please use this switch to use the online help
1912 or separate help packages.]),
1915 libo_FUZZ_ARG_WITH(fonts,
1916 AS_HELP_STRING([--without-fonts],
1917 [LibreOffice includes some third-party fonts to provide a reliable basis for
1918 help content, templates, samples, etc. When these fonts are already
1919 known to be available on the system then you should use this option.]),
1923 AS_HELP_STRING([--with-epm],
1924 [Decides which epm to use. Default is to use the one from the system if
1925 one is built. When either this is not there or you say =internal epm
1929 AC_ARG_WITH(package-format,
1930 AS_HELP_STRING([--with-package-format],
1931 [Specify package format(s) for LibreOffice installation sets. The
1932 implicit --without-package-format leads to no installation sets being
1933 generated. Possible values: aix, archive, bsd, deb, dmg,
1934 installed, msi, pkg, and rpm.
1935 Example: --with-package-format='deb rpm']),
1939 AS_HELP_STRING([--with-tls],
1940 [Decides which TLS/SSL and cryptographic implementations to use for
1941 LibreOffice's code. Notice that this doesn't apply for depending
1942 libraries like "neon", for example. Default is to use NSS
1943 although OpenSSL is also possible. Notice that selecting NSS restricts
1944 the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
1945 restrict by now the usage of NSS in LO's code. Possible values:
1946 openssl, nss. Example: --with-tls="nss"]),
1949 AC_ARG_WITH(system-libs,
1950 AS_HELP_STRING([--with-system-libs],
1951 [Use libraries already on system -- enables all --with-system-* flags.]),
1954 AC_ARG_WITH(system-bzip2,
1955 AS_HELP_STRING([--with-system-bzip2],
1956 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
1957 [with_system_bzip2="$with_system_libs"])
1959 AC_ARG_WITH(system-headers,
1960 AS_HELP_STRING([--with-system-headers],
1961 [Use headers already on system -- enables all --with-system-* flags for
1962 external packages whose headers are the only entities used i.e.
1963 boost/odbc/sane-header(s).]),,
1964 [with_system_headers="$with_system_libs"])
1966 AC_ARG_WITH(system-jars,
1967 AS_HELP_STRING([--without-system-jars],
1968 [When building with --with-system-libs, also the needed jars are expected
1969 on the system. Use this to disable that]),,
1970 [with_system_jars="$with_system_libs"])
1972 AC_ARG_WITH(system-cairo,
1973 AS_HELP_STRING([--with-system-cairo],
1974 [Use cairo libraries already on system. Happens automatically for
1975 (implicit) --enable-gtk3.]))
1977 AC_ARG_WITH(system-epoxy,
1978 AS_HELP_STRING([--with-system-epoxy],
1979 [Use epoxy libraries already on system. Happens automatically for
1980 (implicit) --enable-gtk3.]),,
1981 [with_system_epoxy="$with_system_libs"])
1983 AC_ARG_WITH(myspell-dicts,
1984 AS_HELP_STRING([--with-myspell-dicts],
1985 [Adds myspell dictionaries to the LibreOffice installation set]),
1988 AC_ARG_WITH(system-dicts,
1989 AS_HELP_STRING([--without-system-dicts],
1990 [Do not use dictionaries from system paths.]),
1993 AC_ARG_WITH(external-dict-dir,
1994 AS_HELP_STRING([--with-external-dict-dir],
1995 [Specify external dictionary dir.]),
1998 AC_ARG_WITH(external-hyph-dir,
1999 AS_HELP_STRING([--with-external-hyph-dir],
2000 [Specify external hyphenation pattern dir.]),
2003 AC_ARG_WITH(external-thes-dir,
2004 AS_HELP_STRING([--with-external-thes-dir],
2005 [Specify external thesaurus dir.]),
2008 AC_ARG_WITH(system-zlib,
2009 AS_HELP_STRING([--with-system-zlib],
2010 [Use zlib already on system.]),,
2011 [with_system_zlib=auto])
2013 AC_ARG_WITH(system-jpeg,
2014 AS_HELP_STRING([--with-system-jpeg],
2015 [Use jpeg already on system.]),,
2016 [with_system_jpeg="$with_system_libs"])
2018 AC_ARG_WITH(system-clucene,
2019 AS_HELP_STRING([--with-system-clucene],
2020 [Use clucene already on system.]),,
2021 [with_system_clucene="$with_system_libs"])
2023 AC_ARG_WITH(system-expat,
2024 AS_HELP_STRING([--with-system-expat],
2025 [Use expat already on system.]),,
2026 [with_system_expat="$with_system_libs"])
2028 AC_ARG_WITH(system-libxml,
2029 AS_HELP_STRING([--with-system-libxml],
2030 [Use libxml/libxslt already on system.]),,
2031 [with_system_libxml=auto])
2033 AC_ARG_WITH(system-icu,
2034 AS_HELP_STRING([--with-system-icu],
2035 [Use icu already on system.]),,
2036 [with_system_icu="$with_system_libs"])
2038 AC_ARG_WITH(system-ucpp,
2039 AS_HELP_STRING([--with-system-ucpp],
2040 [Use ucpp already on system.]),,
2043 AC_ARG_WITH(system-openldap,
2044 AS_HELP_STRING([--with-system-openldap],
2045 [Use the OpenLDAP LDAP SDK already on system.]),,
2046 [with_system_openldap="$with_system_libs"])
2048 libo_FUZZ_ARG_ENABLE(poppler,
2049 AS_HELP_STRING([--disable-poppler],
2050 [Disable building Poppler.])
2053 AC_ARG_WITH(system-poppler,
2054 AS_HELP_STRING([--with-system-poppler],
2055 [Use system poppler (only needed for PDF import).]),,
2056 [with_system_poppler="$with_system_libs"])
2058 libo_FUZZ_ARG_ENABLE(gpgmepp,
2059 AS_HELP_STRING([--disable-gpgmepp],
2060 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2063 AC_ARG_WITH(system-gpgmepp,
2064 AS_HELP_STRING([--with-system-gpgmepp],
2065 [Use gpgmepp already on system]),,
2066 [with_system_gpgmepp="$with_system_libs"])
2068 AC_ARG_WITH(system-apache-commons,
2069 AS_HELP_STRING([--with-system-apache-commons],
2070 [Use Apache commons libraries already on system.]),,
2071 [with_system_apache_commons="$with_system_jars"])
2073 AC_ARG_WITH(system-mariadb,
2074 AS_HELP_STRING([--with-system-mariadb],
2075 [Use MariaDB/MySQL libraries already on system.]),,
2076 [with_system_mariadb="$with_system_libs"])
2078 AC_ARG_ENABLE(bundle-mariadb,
2079 AS_HELP_STRING([--enable-bundle-mariadb],
2080 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2083 AC_ARG_WITH(system-postgresql,
2084 AS_HELP_STRING([--with-system-postgresql],
2085 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2086 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2087 [with_system_postgresql="$with_system_libs"])
2089 AC_ARG_WITH(libpq-path,
2090 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2091 [Use this PostgreSQL C interface (libpq) installation for building
2092 the PostgreSQL-SDBC extension.]),
2095 AC_ARG_WITH(system-firebird,
2096 AS_HELP_STRING([--with-system-firebird],
2097 [Use Firebird libraries already on system, for building the Firebird-SDBC
2098 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2099 [with_system_firebird="$with_system_libs"])
2101 AC_ARG_WITH(system-libtommath,
2102 AS_HELP_STRING([--with-system-libtommath],
2103 [Use libtommath already on system]),,
2104 [with_system_libtommath="$with_system_libs"])
2106 AC_ARG_WITH(system-hsqldb,
2107 AS_HELP_STRING([--with-system-hsqldb],
2108 [Use hsqldb already on system.]))
2110 AC_ARG_WITH(hsqldb-jar,
2111 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2112 [Specify path to jarfile manually.]),
2113 HSQLDB_JAR=$withval)
2115 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2116 AS_HELP_STRING([--disable-scripting-beanshell],
2117 [Disable support for scripts in BeanShell.]),
2121 AC_ARG_WITH(system-beanshell,
2122 AS_HELP_STRING([--with-system-beanshell],
2123 [Use beanshell already on system.]),,
2124 [with_system_beanshell="$with_system_jars"])
2126 AC_ARG_WITH(beanshell-jar,
2127 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2128 [Specify path to jarfile manually.]),
2131 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2132 AS_HELP_STRING([--disable-scripting-javascript],
2133 [Disable support for scripts in JavaScript.]),
2137 AC_ARG_WITH(system-rhino,
2138 AS_HELP_STRING([--with-system-rhino],
2139 [Use rhino already on system.]),,)
2140 # [with_system_rhino="$with_system_jars"])
2141 # Above is not used as we have different debug interface
2142 # patched into internal rhino. This code needs to be fixed
2143 # before we can enable it by default.
2145 AC_ARG_WITH(rhino-jar,
2146 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2147 [Specify path to jarfile manually.]),
2150 AC_ARG_WITH(commons-logging-jar,
2151 AS_HELP_STRING([--with-commons-logging-jar=JARFILE],
2152 [Specify path to jarfile manually.]),
2153 COMMONS_LOGGING_JAR=$withval)
2155 AC_ARG_WITH(system-jfreereport,
2156 AS_HELP_STRING([--with-system-jfreereport],
2157 [Use JFreeReport already on system.]),,
2158 [with_system_jfreereport="$with_system_jars"])
2160 AC_ARG_WITH(sac-jar,
2161 AS_HELP_STRING([--with-sac-jar=JARFILE],
2162 [Specify path to jarfile manually.]),
2165 AC_ARG_WITH(libxml-jar,
2166 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2167 [Specify path to jarfile manually.]),
2168 LIBXML_JAR=$withval)
2170 AC_ARG_WITH(flute-jar,
2171 AS_HELP_STRING([--with-flute-jar=JARFILE],
2172 [Specify path to jarfile manually.]),
2175 AC_ARG_WITH(jfreereport-jar,
2176 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2177 [Specify path to jarfile manually.]),
2178 JFREEREPORT_JAR=$withval)
2180 AC_ARG_WITH(liblayout-jar,
2181 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2182 [Specify path to jarfile manually.]),
2183 LIBLAYOUT_JAR=$withval)
2185 AC_ARG_WITH(libloader-jar,
2186 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2187 [Specify path to jarfile manually.]),
2188 LIBLOADER_JAR=$withval)
2190 AC_ARG_WITH(libformula-jar,
2191 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2192 [Specify path to jarfile manually.]),
2193 LIBFORMULA_JAR=$withval)
2195 AC_ARG_WITH(librepository-jar,
2196 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2197 [Specify path to jarfile manually.]),
2198 LIBREPOSITORY_JAR=$withval)
2200 AC_ARG_WITH(libfonts-jar,
2201 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2202 [Specify path to jarfile manually.]),
2203 LIBFONTS_JAR=$withval)
2205 AC_ARG_WITH(libserializer-jar,
2206 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2207 [Specify path to jarfile manually.]),
2208 LIBSERIALIZER_JAR=$withval)
2210 AC_ARG_WITH(libbase-jar,
2211 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2212 [Specify path to jarfile manually.]),
2213 LIBBASE_JAR=$withval)
2215 AC_ARG_WITH(system-odbc,
2216 AS_HELP_STRING([--with-system-odbc],
2217 [Use the odbc headers already on system.]),,
2218 [with_system_odbc="auto"])
2220 AC_ARG_WITH(system-sane,
2221 AS_HELP_STRING([--with-system-sane],
2222 [Use sane.h already on system.]),,
2223 [with_system_sane="$with_system_headers"])
2225 AC_ARG_WITH(system-bluez,
2226 AS_HELP_STRING([--with-system-bluez],
2227 [Use bluetooth.h already on system.]),,
2228 [with_system_bluez="$with_system_headers"])
2230 AC_ARG_WITH(system-curl,
2231 AS_HELP_STRING([--with-system-curl],
2232 [Use curl already on system.]),,
2233 [with_system_curl=auto])
2235 AC_ARG_WITH(system-boost,
2236 AS_HELP_STRING([--with-system-boost],
2237 [Use boost already on system.]),,
2238 [with_system_boost="$with_system_headers"])
2240 AC_ARG_WITH(system-glm,
2241 AS_HELP_STRING([--with-system-glm],
2242 [Use glm already on system.]),,
2243 [with_system_glm="$with_system_headers"])
2245 AC_ARG_WITH(system-hunspell,
2246 AS_HELP_STRING([--with-system-hunspell],
2247 [Use libhunspell already on system.]),,
2248 [with_system_hunspell="$with_system_libs"])
2250 libo_FUZZ_ARG_ENABLE(qrcodegen,
2251 AS_HELP_STRING([--disable-qrcodegen],
2252 [Disable use of qrcodegen external library.]))
2254 AC_ARG_WITH(system-qrcodegen,
2255 AS_HELP_STRING([--with-system-qrcodegen],
2256 [Use libqrcodegen already on system.]),,
2257 [with_system_qrcodegen="$with_system_libs"])
2259 AC_ARG_WITH(system-box2d,
2260 AS_HELP_STRING([--with-system-box2d],
2261 [Use box2d already on system.]),,
2262 [with_system_box2d="$with_system_libs"])
2264 AC_ARG_WITH(system-mythes,
2265 AS_HELP_STRING([--with-system-mythes],
2266 [Use mythes already on system.]),,
2267 [with_system_mythes="$with_system_libs"])
2269 AC_ARG_WITH(system-altlinuxhyph,
2270 AS_HELP_STRING([--with-system-altlinuxhyph],
2271 [Use ALTLinuxhyph already on system.]),,
2272 [with_system_altlinuxhyph="$with_system_libs"])
2274 AC_ARG_WITH(system-lpsolve,
2275 AS_HELP_STRING([--with-system-lpsolve],
2276 [Use lpsolve already on system.]),,
2277 [with_system_lpsolve="$with_system_libs"])
2279 AC_ARG_WITH(system-coinmp,
2280 AS_HELP_STRING([--with-system-coinmp],
2281 [Use CoinMP already on system.]),,
2282 [with_system_coinmp="$with_system_libs"])
2284 AC_ARG_WITH(system-liblangtag,
2285 AS_HELP_STRING([--with-system-liblangtag],
2286 [Use liblangtag library already on system.]),,
2287 [with_system_liblangtag="$with_system_libs"])
2290 AS_HELP_STRING([--with-webdav],
2291 [Specify which library to use for webdav implementation.
2292 Possible values: "neon", "serf", "no". The default value is "neon".
2293 Example: --with-webdav="serf"]),
2294 WITH_WEBDAV=$withval,
2297 AC_ARG_WITH(linker-hash-style,
2298 AS_HELP_STRING([--with-linker-hash-style],
2299 [Use linker with --hash-style=<style> when linking shared objects.
2300 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2301 if supported on the build system, and "sysv" otherwise.]))
2303 AC_ARG_WITH(jdk-home,
2304 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2305 [If you have installed JDK 9 or later on your system please supply the
2306 path here. Note that this is not the location of the java command but the
2307 location of the entire distribution. In case of cross-compiling, this
2308 is the JDK of the host os. Use --with-build-platform-configure-options
2309 to point to a different build platform JDK.]),
2313 AS_HELP_STRING([--with-help],
2314 [Enable the build of help. There is a special parameter "common" that
2315 can be used to bundle only the common part, .e.g help-specific icons.
2316 This is useful when you build the helpcontent separately.])
2318 Usage: --with-help build the old local help
2319 --without-help no local help (default)
2320 --with-help=html build the new HTML local help
2321 --with-help=online build the new HTML online help
2325 AC_ARG_WITH(omindex,
2326 AS_HELP_STRING([--with-omindex],
2327 [Enable the support of xapian-omega index for online help.])
2329 Usage: --with-omindex=server prepare the pages for omindex
2330 but let xapian-omega be built in server.
2331 --with-omindex=noxap do not prepare online pages
2336 libo_FUZZ_ARG_WITH(java,
2337 AS_HELP_STRING([--with-java=<java command>],
2338 [Specify the name of the Java interpreter command. Typically "java"
2339 which is the default.
2341 To build without support for Java components, applets, accessibility
2342 or the XML filters written in Java, use --without-java or --with-java=no.]),
2343 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2344 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2347 AC_ARG_WITH(jvm-path,
2348 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2349 [Use a specific JVM search path at runtime.
2350 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2353 AC_ARG_WITH(ant-home,
2354 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2355 [If you have installed Apache Ant on your system, please supply the path here.
2356 Note that this is not the location of the Ant binary but the location
2357 of the entire distribution.]),
2360 AC_ARG_WITH(symbol-config,
2361 AS_HELP_STRING([--with-symbol-config],
2362 [Configuration for the crashreport symbol upload]),
2364 [with_symbol_config=no])
2366 AC_ARG_WITH(export-validation,
2367 AS_HELP_STRING([--without-export-validation],
2368 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2369 ,with_export_validation=auto)
2371 AC_ARG_WITH(bffvalidator,
2372 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2373 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2374 Requires installed Microsoft Office Binary File Format Validator.
2375 Note: export-validation (--with-export-validation) is required to be turned on.
2376 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2377 ,with_bffvalidator=no)
2379 libo_FUZZ_ARG_WITH(junit,
2380 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2381 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2382 --without-junit disables those tests. Not relevant in the --without-java case.]),
2385 AC_ARG_WITH(hamcrest,
2386 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2387 [Specifies the hamcrest jar file to use for JUnit-based tests.
2388 --without-junit disables those tests. Not relevant in the --without-java case.]),
2391 AC_ARG_WITH(perl-home,
2392 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2393 [If you have installed Perl 5 Distribution, on your system, please
2394 supply the path here. Note that this is not the location of the Perl
2395 binary but the location of the entire distribution.]),
2398 libo_FUZZ_ARG_WITH(doxygen,
2400 [--with-doxygen=<absolute path to doxygen executable>],
2401 [Specifies the doxygen executable to use when generating ODK C/C++
2402 documentation. --without-doxygen disables generation of ODK C/C++
2403 documentation. Not relevant in the --disable-odk case.]),
2406 AC_ARG_WITH(visual-studio,
2407 AS_HELP_STRING([--with-visual-studio=<2019>],
2408 [Specify which Visual Studio version to use in case several are
2409 installed. Currently only 2019 (default) is supported.]),
2412 AC_ARG_WITH(windows-sdk,
2413 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2414 [Specify which Windows SDK, or "Windows Kit", version to use
2415 in case the one that came with the selected Visual Studio
2416 is not what you want for some reason. Note that not all compiler/SDK
2417 combinations are supported. The intent is that this option should not
2422 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2423 [Use this option to build LibreOffice with additional UI language support.
2424 English (US) is always included by default.
2425 Separate multiple languages with space.
2426 For all languages, use --with-lang=ALL.]),
2429 AC_ARG_WITH(locales,
2430 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2431 [Use this option to limit the locale information built in.
2432 Separate multiple locales with space.
2433 Very experimental and might well break stuff.
2434 Just a desperate measure to shrink code and data size.
2435 By default all the locales available is included.
2436 This option is completely unrelated to --with-lang.])
2438 Affects also our character encoding conversion
2439 tables for encodings mainly targeted for a
2440 particular locale, like EUC-CN and EUC-TW for
2441 zh, ISO-2022-JP for ja.
2443 Affects also our add-on break iterator data for
2446 For the default, all locales, don't use this switch at all.
2447 Specifying just the language part of a locale means all matching
2448 locales will be included.
2452 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2453 libo_FUZZ_ARG_WITH(krb5,
2454 AS_HELP_STRING([--with-krb5],
2455 [Enable MIT Kerberos 5 support in modules that support it.
2456 By default automatically enabled on platforms
2457 where a good system Kerberos 5 is available.]),
2460 libo_FUZZ_ARG_WITH(gssapi,
2461 AS_HELP_STRING([--with-gssapi],
2462 [Enable GSSAPI support in modules that support it.
2463 By default automatically enabled on platforms
2464 where a good system GSSAPI is available.]),
2468 AS_HELP_STRING([--with-iwyu],
2469 [Use given IWYU binary path to check unneeded includes instead of building.
2470 Use only if you are hacking on it.]),
2473 libo_FUZZ_ARG_WITH(lxml,
2474 AS_HELP_STRING([--without-lxml],
2475 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2476 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2477 report widget classes and ids.]),
2480 libo_FUZZ_ARG_WITH(latest-c++,
2481 AS_HELP_STRING([--with-latest-c++],
2482 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2483 published standard.]),,
2484 [with_latest_c__=no])
2486 dnl ===================================================================
2488 dnl ===================================================================
2490 AC_ARG_WITH(branding,
2491 AS_HELP_STRING([--with-branding=/path/to/images],
2492 [Use given path to retrieve branding images set.])
2494 Search for intro.png about.svg and logo.svg.
2495 If any is missing, default ones will be used instead.
2497 Search also progress.conf for progress
2498 settings on intro screen :
2500 PROGRESSBARCOLOR="255,255,255" Set color of
2501 progress bar. Comma separated RGB decimal values.
2502 PROGRESSSIZE="407,6" Set size of progress bar.
2503 Comma separated decimal values (width, height).
2504 PROGRESSPOSITION="61,317" Set position of progress
2505 bar from left,top. Comma separated decimal values.
2506 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2507 bar frame. Comma separated RGB decimal values.
2508 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2509 bar text. Comma separated RGB decimal values.
2510 PROGRESSTEXTBASELINE="287" Set vertical position of
2511 progress bar text from top. Decimal value.
2513 Default values will be used if not found.
2518 AC_ARG_WITH(extra-buildid,
2519 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2520 [Show addition build identification in about dialog.]),
2525 AS_HELP_STRING([--with-vendor="John the Builder"],
2526 [Set vendor of the build.]),
2529 AC_ARG_WITH(android-package-name,
2530 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2531 [Set Android package name of the build.]),
2534 AC_ARG_WITH(compat-oowrappers,
2535 AS_HELP_STRING([--with-compat-oowrappers],
2536 [Install oo* wrappers in parallel with
2537 lo* ones to keep backward compatibility.
2538 Has effect only with make distro-pack-install]),
2541 AC_ARG_WITH(os-version,
2542 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2543 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2546 AC_ARG_WITH(idlc-cpp,
2547 AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2548 [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2551 AC_ARG_WITH(parallelism,
2552 AS_HELP_STRING([--with-parallelism],
2553 [Number of jobs to run simultaneously during build. Parallel builds can
2554 save a lot of time on multi-cpu machines. Defaults to the number of
2555 CPUs on the machine, unless you configure --enable-icecream - then to
2559 AC_ARG_WITH(all-tarballs,
2560 AS_HELP_STRING([--with-all-tarballs],
2561 [Download all external tarballs unconditionally]))
2563 AC_ARG_WITH(gdrive-client-id,
2564 AS_HELP_STRING([--with-gdrive-client-id],
2565 [Provides the client id of the application for OAuth2 authentication
2566 on Google Drive. If either this or --with-gdrive-client-secret is
2567 empty, the feature will be disabled]),
2570 AC_ARG_WITH(gdrive-client-secret,
2571 AS_HELP_STRING([--with-gdrive-client-secret],
2572 [Provides the client secret of the application for OAuth2
2573 authentication on Google Drive. If either this or
2574 --with-gdrive-client-id is empty, the feature will be disabled]),
2577 AC_ARG_WITH(alfresco-cloud-client-id,
2578 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2579 [Provides the client id of the application for OAuth2 authentication
2580 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2581 empty, the feature will be disabled]),
2584 AC_ARG_WITH(alfresco-cloud-client-secret,
2585 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2586 [Provides the client secret of the application for OAuth2
2587 authentication on Alfresco Cloud. If either this or
2588 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2591 AC_ARG_WITH(onedrive-client-id,
2592 AS_HELP_STRING([--with-onedrive-client-id],
2593 [Provides the client id of the application for OAuth2 authentication
2594 on OneDrive. If either this or --with-onedrive-client-secret is
2595 empty, the feature will be disabled]),
2598 AC_ARG_WITH(onedrive-client-secret,
2599 AS_HELP_STRING([--with-onedrive-client-secret],
2600 [Provides the client secret of the application for OAuth2
2601 authentication on OneDrive. If either this or
2602 --with-onedrive-client-id is empty, the feature will be disabled]),
2604 dnl ===================================================================
2605 dnl Do we want to use pre-build binary tarball for recompile
2606 dnl ===================================================================
2608 if test "$enable_library_bin_tar" = "yes" ; then
2609 USE_LIBRARY_BIN_TAR=TRUE
2611 USE_LIBRARY_BIN_TAR=
2613 AC_SUBST(USE_LIBRARY_BIN_TAR)
2615 dnl ===================================================================
2616 dnl Test whether build target is Release Build
2617 dnl ===================================================================
2618 AC_MSG_CHECKING([whether build target is Release Build])
2619 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2621 ENABLE_RELEASE_BUILD=
2622 GET_TASK_ALLOW_ENTITLEMENT='
2623 <!-- We want to be able to debug a hardened process when not building for release -->
2624 <key>com.apple.security.get-task-allow</key>
2627 AC_MSG_RESULT([yes])
2628 ENABLE_RELEASE_BUILD=TRUE
2629 GET_TASK_ALLOW_ENTITLEMENT=''
2631 AC_SUBST(ENABLE_RELEASE_BUILD)
2632 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2634 dnl ===================================================================
2635 dnl Test whether to sign Windows Build
2636 dnl ===================================================================
2637 AC_MSG_CHECKING([whether to sign windows build])
2638 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2639 AC_MSG_RESULT([yes])
2640 WINDOWS_BUILD_SIGNING="TRUE"
2643 WINDOWS_BUILD_SIGNING="FALSE"
2645 AC_SUBST(WINDOWS_BUILD_SIGNING)
2647 dnl ===================================================================
2648 dnl MacOSX build and runtime environment options
2649 dnl ===================================================================
2651 AC_ARG_WITH(macosx-sdk,
2652 AS_HELP_STRING([--with-macosx-sdk=<version>],
2653 [Prefer a specific SDK for building.])
2655 If the requested SDK is not available, a search for the oldest one will be done.
2656 With current Xcode versions, only the latest SDK is included, so this option is
2657 not terribly useful. It works fine to build with a new SDK and run the result
2660 e. g.: --with-macosx-sdk=10.10
2662 there are 3 options to control the MacOSX build:
2663 --with-macosx-sdk (referred as 'sdk' below)
2664 --with-macosx-version-min-required (referred as 'min' below)
2665 --with-macosx-version-max-allowed (referred as 'max' below)
2667 the connection between these value and the default they take is as follow:
2668 ( ? means not specified on the command line, s means the SDK version found,
2669 constraint: 8 <= x <= y <= z)
2671 ==========================================
2672 command line || config result
2673 ==========================================
2674 min | max | sdk || min | max | sdk |
2675 ? | ? | ? || 10.10 | 10.s | 10.s |
2676 ? | ? | 10.x || 10.10 | 10.x | 10.x |
2677 ? | 10.x | ? || 10.10 | 10.s | 10.s |
2678 ? | 10.x | 10.y || 10.10 | 10.x | 10.y |
2679 10.x | ? | ? || 10.x | 10.s | 10.s |
2680 10.x | ? | 10.y || 10.x | 10.y | 10.y |
2681 10.x | 10.y | ? || 10.x | 10.y | 10.y |
2682 10.x | 10.y | 10.z || 10.x | 10.y | 10.z |
2685 see: http://developer.apple.com/library/mac/#technotes/tn2064/_index.html
2686 for a detailed technical explanation of these variables
2688 Note: MACOSX_DEPLOYMENT_TARGET will be set to the value of 'min'.
2692 AC_ARG_WITH(macosx-version-min-required,
2693 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2694 [set the minimum OS version needed to run the built LibreOffice])
2696 e. g.: --with-macosx-version-min-required=10.10
2697 see --with-macosx-sdk for more info
2701 AC_ARG_WITH(macosx-version-max-allowed,
2702 AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2703 [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2705 e. g.: --with-macosx-version-max-allowed=10.10
2706 see --with-macosx-sdk for more info
2711 dnl ===================================================================
2712 dnl options for stuff used during cross-compilation build
2713 dnl Not quite superseded by --with-build-platform-configure-options.
2714 dnl TODO: check, if the "force" option is still needed anywhere.
2715 dnl ===================================================================
2717 AC_ARG_WITH(system-icu-for-build,
2718 AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2719 [Use icu already on system for build tools (cross-compilation only).]))
2722 dnl ===================================================================
2723 dnl Check for incompatible options set by fuzzing, and reset those
2724 dnl automatically to working combinations
2725 dnl ===================================================================
2727 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2728 "$enable_dbus" != "$enable_avahi"; then
2729 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2730 enable_avahi=$enable_dbus
2735 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2736 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2740 add_lopath_before ()
2745 for dir in $LO_PATH ; do
2746 if test "$dir" != "$1" ; then
2747 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2750 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2753 dnl ===================================================================
2754 dnl check for required programs (grep, awk, sed, bash)
2755 dnl ===================================================================
2760 if test -n "$1"; then
2761 if test "$build_os" = "cygwin"; then
2762 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2764 new_path=`cygpath -sm "$formatted_path"`
2767 new_path=`cygpath -u "$formatted_path"`
2772 if test "$2" = "after"; then
2773 add_lopath_after "$new_path"
2775 add_lopath_before "$new_path"
2781 AC_PATH_PROG( AWK, $AWK)
2782 if test -z "$AWK"; then
2783 AC_MSG_ERROR([install awk to run this script])
2786 AC_PATH_PROG(BASH, bash)
2787 if test -z "$BASH"; then
2788 AC_MSG_ERROR([bash not found in \$PATH])
2792 AC_MSG_CHECKING([for GNU or BSD tar])
2793 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2794 $a --version 2> /dev/null | egrep "GNU|bsdtar" 2>&1 > /dev/null
2795 if test $? -eq 0; then
2800 AC_MSG_RESULT($GNUTAR)
2801 if test -z "$GNUTAR"; then
2802 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2806 AC_MSG_CHECKING([for tar's option to strip components])
2807 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2808 if test $? -eq 0; then
2809 STRIP_COMPONENTS="--strip-components"
2811 $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2812 if test $? -eq 0; then
2813 STRIP_COMPONENTS="--strip-path"
2815 STRIP_COMPONENTS="unsupported"
2818 AC_MSG_RESULT($STRIP_COMPONENTS)
2819 if test x$STRIP_COMPONENTS = xunsupported; then
2820 AC_MSG_ERROR([you need a tar that is able to strip components.])
2822 AC_SUBST(STRIP_COMPONENTS)
2824 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2825 dnl desktop OSes from "mobile" ones.
2827 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2828 dnl In other words, that when building for an OS that is not a
2829 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2831 dnl Note the direction of the implication; there is no assumption that
2832 dnl cross-compiling would imply a non-desktop OS.
2834 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
2835 BUILD_TYPE="$BUILD_TYPE DESKTOP"
2836 AC_DEFINE(HAVE_FEATURE_DESKTOP)
2837 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2840 # Whether to build "avmedia" functionality or not.
2842 if test -z "$enable_avmedia"; then
2846 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2847 if test "$enable_avmedia" = yes; then
2848 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2850 USE_AVMEDIA_DUMMY='TRUE'
2852 AC_SUBST(USE_AVMEDIA_DUMMY)
2854 # Decide whether to build database connectivity stuff (including
2855 # Base) or not. We probably don't want to on non-desktop OSes.
2856 if test -z "$enable_database_connectivity"; then
2857 # --disable-database-connectivity is unfinished work in progress
2858 # and the iOS test app doesn't link if we actually try to use it.
2859 # if test $_os != iOS -a $_os != Android; then
2860 if test $_os != iOS; then
2861 enable_database_connectivity=yes
2865 if test "$enable_database_connectivity" = yes; then
2866 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2867 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2870 if test -z "$enable_extensions"; then
2871 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2872 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2873 enable_extensions=yes
2877 if test "$enable_extensions" = yes; then
2878 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2879 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2882 if test -z "$enable_scripting"; then
2883 # Disable scripting for iOS unless specifically overridden
2884 # with --enable-scripting.
2885 if test $_os != iOS; then
2886 enable_scripting=yes
2890 DISABLE_SCRIPTING=''
2891 if test "$enable_scripting" = yes; then
2892 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2893 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2895 DISABLE_SCRIPTING='TRUE'
2896 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2899 if test $_os = iOS -o $_os = Android; then
2900 # Disable dynamic_loading always for iOS and Android
2901 enable_dynamic_loading=no
2902 elif test -z "$enable_dynamic_loading"; then
2903 # Otherwise enable it unless specifically disabled
2904 enable_dynamic_loading=yes
2907 DISABLE_DYNLOADING=''
2908 if test "$enable_dynamic_loading" = yes; then
2909 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
2911 DISABLE_DYNLOADING='TRUE'
2913 AC_SUBST(DISABLE_DYNLOADING)
2915 # remember SYSBASE value
2918 dnl ===================================================================
2919 dnl Sort out various gallery compilation options
2920 dnl ===================================================================
2921 AC_MSG_CHECKING([how to build and package galleries])
2922 if test -n "${with_galleries}"; then
2923 if test "$with_galleries" = "build"; then
2924 WITH_GALLERY_BUILD=TRUE
2925 AC_MSG_RESULT([build from source images internally])
2926 elif test "$with_galleries" = "no"; then
2928 AC_MSG_RESULT([disable non-internal gallery build])
2930 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
2933 if test $_os != iOS -a $_os != Android; then
2934 WITH_GALLERY_BUILD=TRUE
2935 AC_MSG_RESULT([internal src images for desktop])
2938 AC_MSG_RESULT([disable src image build])
2941 AC_SUBST(WITH_GALLERY_BUILD)
2943 dnl ===================================================================
2944 dnl Checks if ccache is available
2945 dnl ===================================================================
2947 if test "$_os" = "WINNT"; then
2948 # on windows/VC build do not use ccache
2950 elif test "$enable_ccache" = "no"; then
2952 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
2953 case "%$CC%$CXX%" in
2954 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
2955 # assume that's good then
2956 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
2957 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
2958 CCACHE_DEPEND_MODE=1
2961 AC_PATH_PROG([CCACHE],[ccache],[not found])
2962 if test "$CCACHE" = "not found"; then
2965 CCACHE_DEPEND_MODE=1
2966 # Need to check for ccache version: otherwise prevents
2967 # caching of the results (like "-x objective-c++" for Mac)
2968 if test $_os = Darwin -o $_os = iOS; then
2969 # Check ccache version
2970 AC_MSG_CHECKING([whether version of ccache is suitable])
2971 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
2972 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
2973 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
2974 AC_MSG_RESULT([yes, $CCACHE_VERSION])
2976 AC_MSG_RESULT([no, $CCACHE_VERSION])
2987 if test "$enable_ccache" = "nodepend"; then
2988 CCACHE_DEPEND_MODE=""
2990 AC_SUBST(CCACHE_DEPEND_MODE)
2992 if test "$CCACHE" != ""; then
2993 ccache_size_msg=$([ccache -s | tail -n 1 | sed 's/^[^0-9]*//' | sed -e 's/\.[0-9]*//'])
2994 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
2995 if test "$ccache_size" = ""; then
2996 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
2997 if test "$ccache_size" = ""; then
3000 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3001 if test $ccache_size -lt 1024; then
3003 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3004 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3006 # warn that ccache may be too small for debug build
3007 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3008 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3011 if test $ccache_size -lt 5; then
3012 #warn that ccache may be too small for debug build
3013 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3014 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3019 dnl ===================================================================
3020 dnl Checks for C compiler,
3021 dnl The check for the C++ compiler is later on.
3022 dnl ===================================================================
3023 if test "$_os" != "WINNT"; then
3025 AC_MSG_CHECKING([gcc home])
3026 if test -z "$with_gcc_home"; then
3027 if test "$enable_icecream" = "yes"; then
3028 if test -d "/usr/lib/icecc/bin"; then
3029 GCC_HOME="/usr/lib/icecc/"
3030 elif test -d "/usr/libexec/icecc/bin"; then
3031 GCC_HOME="/usr/libexec/icecc/"
3032 elif test -d "/opt/icecream/bin"; then
3033 GCC_HOME="/opt/icecream/"
3035 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3039 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3040 GCC_HOME_SET="false"
3043 GCC_HOME="$with_gcc_home"
3045 AC_MSG_RESULT($GCC_HOME)
3048 if test "$GCC_HOME_SET" = "true"; then
3049 if test -z "$CC"; then
3050 CC="$GCC_HOME/bin/gcc"
3053 if test -z "$CXX"; then
3054 CXX="$GCC_HOME/bin/g++"
3060 COMPATH=`dirname "$CC"`
3061 if test "$COMPATH" = "."; then
3062 AC_PATH_PROGS(COMPATH, $CC)
3063 dnl double square bracket to get single because of M4 quote...
3064 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3066 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3068 dnl ===================================================================
3070 dnl ===================================================================
3071 AC_MSG_CHECKING([whether to build with Java support])
3072 if test "$with_java" != "no"; then
3073 if test "$DISABLE_SCRIPTING" = TRUE; then
3074 AC_MSG_RESULT([no, overridden by --disable-scripting])
3078 AC_MSG_RESULT([yes])
3080 AC_DEFINE(HAVE_FEATURE_JAVA)
3087 AC_SUBST(ENABLE_JAVA)
3089 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3091 dnl ENABLE_JAVA="" indicate no Java support at all
3093 dnl ===================================================================
3094 dnl Check macOS SDK and compiler
3095 dnl ===================================================================
3097 if test $_os = Darwin; then
3099 # If no --with-macosx-sdk option is given, look for one
3101 # The intent is that for "most" Mac-based developers, a suitable
3102 # SDK will be found automatically without any configure options.
3104 # For developers with a current Xcode, the lowest-numbered SDK
3105 # higher than or equal to the minimum required should be found.
3107 AC_MSG_CHECKING([what macOS SDK to use])
3108 for _macosx_sdk in ${with_macosx_sdk-11.0 10.15 10.14 10.13}; do
3109 MACOSX_SDK_PATH=`xcrun --sdk macosx${_macosx_sdk} --show-sdk-path 2> /dev/null`
3110 if test -d "$MACOSX_SDK_PATH"; then
3111 with_macosx_sdk="${_macosx_sdk}"
3114 MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${_macosx_sdk}.sdk"
3115 if test -d "$MACOSX_SDK_PATH"; then
3116 with_macosx_sdk="${_macosx_sdk}"
3121 if test ! -d "$MACOSX_SDK_PATH"; then
3122 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3125 AC_MSG_RESULT([SDK $with_macosx_sdk at $MACOSX_SDK_PATH])
3127 case $with_macosx_sdk in
3129 MACOSX_SDK_VERSION=101300
3132 MACOSX_SDK_VERSION=101400
3135 MACOSX_SDK_VERSION=101500
3138 MACOSX_SDK_VERSION=110000
3141 AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value, supported values are 10.13--11.0])
3145 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3146 AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value for Apple Silicon])
3149 if test "$with_macosx_version_min_required" = "" ; then
3150 if test "$host_cpu" = x86_64; then
3151 with_macosx_version_min_required="10.10";
3153 with_macosx_version_min_required="11.0";
3157 if test "$with_macosx_version_max_allowed" = "" ; then
3158 with_macosx_version_max_allowed="$with_macosx_sdk"
3161 # export this so that "xcrun" invocations later return matching values
3162 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3163 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3164 export DEVELOPER_DIR
3165 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3166 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3168 AC_MSG_CHECKING([whether Xcode is new enough])
3169 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3170 my_xcode_ver2=${my_xcode_ver1#Xcode }
3171 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3172 if test "$my_xcode_ver3" -ge 1103; then
3173 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3175 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3178 case "$with_macosx_version_min_required" in
3180 MAC_OS_X_VERSION_MIN_REQUIRED="101000"
3183 MAC_OS_X_VERSION_MIN_REQUIRED="101100"
3186 MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3189 MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3192 MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3195 MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3198 MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3201 MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3204 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.10--11.0])
3208 LIBTOOL=/usr/bin/libtool
3209 INSTALL_NAME_TOOL=install_name_tool
3210 if test -z "$save_CC"; then
3211 stdlib=-stdlib=libc++
3213 AC_MSG_CHECKING([what C compiler to use])
3214 CC="`xcrun -find clang`"
3215 CC_BASE=`first_arg_basename "$CC"`
3216 if test "$host_cpu" = x86_64; then
3217 CC+=" -target x86_64-apple-macos"
3219 CC+=" -target arm64-apple-macos"
3221 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3222 AC_MSG_RESULT([$CC])
3224 AC_MSG_CHECKING([what C++ compiler to use])
3225 CXX="`xcrun -find clang++`"
3226 CXX_BASE=`first_arg_basename "$CXX"`
3227 if test "$host_cpu" = x86_64; then
3228 CXX+=" -target x86_64-apple-macos"
3230 CXX+=" -target arm64-apple-macos"
3232 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3233 AC_MSG_RESULT([$CXX])
3235 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3238 STRIP=`xcrun -find strip`
3239 LIBTOOL=`xcrun -find libtool`
3240 RANLIB=`xcrun -find ranlib`
3243 case "$with_macosx_version_max_allowed" in
3245 MAC_OS_X_VERSION_MAX_ALLOWED="101000"
3248 MAC_OS_X_VERSION_MAX_ALLOWED="101100"
3251 MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3254 MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3257 MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3260 MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3263 MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3266 AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.10--11.0])
3270 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3271 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3272 AC_MSG_ERROR([the version minimum required, $MAC_OS_X_VERSION_MIN_REQUIRED, must be <= the version maximum allowed, $MAC_OS_X_VERSION_MAX_ALLOWED])
3277 AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3278 if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3279 AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3283 AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3284 AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3286 AC_MSG_CHECKING([whether to do code signing])
3288 if test "$enable_macosx_code_signing" = yes; then
3289 # By default use the first suitable certificate (?).
3291 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3292 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3293 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3294 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3295 # "Developer ID Application" one.
3297 identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3298 if test -n "$identity"; then
3299 MACOSX_CODESIGNING_IDENTITY=$identity
3300 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3301 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3303 AC_MSG_ERROR([cannot determine identity to use])
3305 elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3306 MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3307 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3308 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3313 AC_MSG_CHECKING([whether to create a Mac App Store package])
3315 if test -n "$enable_macosx_package_signing" -a -z "$MACOSX_CODESIGNING_IDENTITY"; then
3316 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3317 elif test "$enable_macosx_package_signing" = yes; then
3318 # By default use the first suitable certificate.
3319 # It should be a "3rd Party Mac Developer Installer" one
3321 identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3322 if test -n "$identity"; then
3323 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3324 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3325 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3327 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3329 elif test -n "$enable_macosx_package_signing"; then
3330 MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3331 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3332 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3337 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3338 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3341 AC_MSG_CHECKING([whether to sandbox the application])
3343 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3344 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3345 elif test "$enable_macosx_sandbox" = yes; then
3346 ENABLE_MACOSX_SANDBOX=TRUE
3347 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3348 AC_MSG_RESULT([yes])
3353 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3354 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3355 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3357 AC_SUBST(MACOSX_SDK_PATH)
3358 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3359 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3360 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3361 AC_SUBST(INSTALL_NAME_TOOL)
3362 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3363 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3364 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3365 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3366 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3368 dnl ===================================================================
3369 dnl Check iOS SDK and compiler
3370 dnl ===================================================================
3372 if test $_os = iOS; then
3373 AC_MSG_CHECKING([what iOS SDK to use])
3374 current_sdk_ver=14.2
3375 older_sdk_vers="14.1 14.0 13.7 13.6 13.5 13.4 13.2 13.1 13.0 12.4 12.2"
3376 if test "$enable_ios_simulator" = "yes"; then
3377 platform=iPhoneSimulator
3378 versionmin=-mios-simulator-version-min=12.2
3381 versionmin=-miphoneos-version-min=12.2
3383 xcode_developer=`xcode-select -print-path`
3385 for sdkver in $current_sdk_ver $older_sdk_vers; do
3386 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3393 if test -z "$sysroot"; then
3394 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3397 AC_MSG_RESULT($sysroot)
3399 stdlib="-stdlib=libc++"
3401 AC_MSG_CHECKING([what C compiler to use])
3402 CC="`xcrun -find clang`"
3403 CC_BASE=`first_arg_basename "$CC"`
3404 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3405 AC_MSG_RESULT([$CC])
3407 AC_MSG_CHECKING([what C++ compiler to use])
3408 CXX="`xcrun -find clang++`"
3409 CXX_BASE=`first_arg_basename "$CXX"`
3410 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3411 AC_MSG_RESULT([$CXX])
3413 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3416 STRIP=`xcrun -find strip`
3417 LIBTOOL=`xcrun -find libtool`
3418 RANLIB=`xcrun -find ranlib`
3421 AC_MSG_CHECKING([whether to treat the installation as read-only])
3423 if test $_os = Darwin; then
3424 enable_readonly_installset=yes
3425 elif test "$enable_extensions" != yes; then
3426 enable_readonly_installset=yes
3428 if test "$enable_readonly_installset" = yes; then
3429 AC_MSG_RESULT([yes])
3430 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3435 dnl ===================================================================
3436 dnl Structure of install set
3437 dnl ===================================================================
3439 if test $_os = Darwin; then
3440 LIBO_BIN_FOLDER=MacOS
3441 LIBO_ETC_FOLDER=Resources
3442 LIBO_LIBEXEC_FOLDER=MacOS
3443 LIBO_LIB_FOLDER=Frameworks
3444 LIBO_LIB_PYUNO_FOLDER=Resources
3445 LIBO_SHARE_FOLDER=Resources
3446 LIBO_SHARE_HELP_FOLDER=Resources/help
3447 LIBO_SHARE_JAVA_FOLDER=Resources/java
3448 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3449 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3450 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3451 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3452 LIBO_URE_BIN_FOLDER=MacOS
3453 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3454 LIBO_URE_LIB_FOLDER=Frameworks
3455 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3456 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3457 elif test $_os = WINNT; then
3458 LIBO_BIN_FOLDER=program
3459 LIBO_ETC_FOLDER=program
3460 LIBO_LIBEXEC_FOLDER=program
3461 LIBO_LIB_FOLDER=program
3462 LIBO_LIB_PYUNO_FOLDER=program
3463 LIBO_SHARE_FOLDER=share
3464 LIBO_SHARE_HELP_FOLDER=help
3465 LIBO_SHARE_JAVA_FOLDER=program/classes
3466 LIBO_SHARE_PRESETS_FOLDER=presets
3467 LIBO_SHARE_READMES_FOLDER=readmes
3468 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3469 LIBO_SHARE_SHELL_FOLDER=program/shell
3470 LIBO_URE_BIN_FOLDER=program
3471 LIBO_URE_ETC_FOLDER=program
3472 LIBO_URE_LIB_FOLDER=program
3473 LIBO_URE_MISC_FOLDER=program
3474 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3476 LIBO_BIN_FOLDER=program
3477 LIBO_ETC_FOLDER=program
3478 LIBO_LIBEXEC_FOLDER=program
3479 LIBO_LIB_FOLDER=program
3480 LIBO_LIB_PYUNO_FOLDER=program
3481 LIBO_SHARE_FOLDER=share
3482 LIBO_SHARE_HELP_FOLDER=help
3483 LIBO_SHARE_JAVA_FOLDER=program/classes
3484 LIBO_SHARE_PRESETS_FOLDER=presets
3485 LIBO_SHARE_READMES_FOLDER=readmes
3486 if test "$enable_fuzzers" != yes; then
3487 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3489 LIBO_SHARE_RESOURCE_FOLDER=resource
3491 LIBO_SHARE_SHELL_FOLDER=program/shell
3492 LIBO_URE_BIN_FOLDER=program
3493 LIBO_URE_ETC_FOLDER=program
3494 LIBO_URE_LIB_FOLDER=program
3495 LIBO_URE_MISC_FOLDER=program
3496 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3498 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3499 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3500 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3501 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3502 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3503 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3504 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3505 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3506 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3507 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3508 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3509 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3510 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3511 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3512 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3513 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3515 # Not all of them needed in config_host.mk, add more if need arises
3516 AC_SUBST(LIBO_BIN_FOLDER)
3517 AC_SUBST(LIBO_ETC_FOLDER)
3518 AC_SUBST(LIBO_LIB_FOLDER)
3519 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3520 AC_SUBST(LIBO_SHARE_FOLDER)
3521 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3522 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3523 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3524 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3525 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3526 AC_SUBST(LIBO_URE_BIN_FOLDER)
3527 AC_SUBST(LIBO_URE_ETC_FOLDER)
3528 AC_SUBST(LIBO_URE_LIB_FOLDER)
3529 AC_SUBST(LIBO_URE_MISC_FOLDER)
3530 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3532 dnl ===================================================================
3533 dnl Windows specific tests and stuff
3534 dnl ===================================================================
3538 # Return value: $regvalue
3541 if test "$build_os" = "wsl"; then
3542 regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3546 local _regentry="/proc/registry${1}/${2}"
3547 if test -f "$_regentry"; then
3548 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3549 # Registry keys read via /proc/registry* are always \0 terminated!
3550 local _regvalue=$(tr -d '\0' < "$_regentry")
3551 if test $? -eq 0; then
3557 # Get a value from the 32-bit side of the Registry
3560 reg_get_value "32" "$1"
3563 # Get a value from the 64-bit side of the Registry
3566 reg_get_value "64" "$1"
3575 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3584 PLATFORMID=windows_x86_64
3586 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3588 WIN_MULTI_ARCH="x86"
3594 PLATFORMID=windows_x86
3597 WIN_OTHER_ARCH="x64"
3602 PLATFORMID=windows_arm64
3604 SCPDEFS="$SCPDEFS -DWINDOWS_ARM64"
3605 WIN_HOST_ARCH="arm64"
3610 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3614 case "$build_cpu" in
3615 x86_64) WIN_BUILD_ARCH="x64" ;;
3616 i*86) WIN_BUILD_ARCH="x86" ;;
3617 aarch64) WIN_BUILD_ARCH="arm64" ;;
3619 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3623 SCPDEFS="$SCPDEFS -D_MSC_VER"
3627 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3628 # other-arch won't, but wouldn't break the build (x64 on x86).
3629 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3630 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3634 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3635 # To allow building Windows multi-arch releases without cross-tooling
3636 if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3637 cross_compiling="yes"
3640 if test "$cross_compiling" = "yes"; then
3641 export CROSS_COMPILING=TRUE
3644 BUILD_TYPE="$BUILD_TYPE NATIVE"
3646 AC_SUBST(CROSS_COMPILING)
3648 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3649 # NOTE: must _not_ be used for bundled external libraries!
3651 if test "$GCC" = "yes"; then
3652 AC_MSG_CHECKING( for -isystem )
3654 CFLAGS="$CFLAGS -Werror"
3655 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3657 if test -n "$ISYSTEM"; then
3663 if test -z "$ISYSTEM"; then
3664 # fall back to using -I
3669 dnl ===================================================================
3670 dnl Check which Visual Studio compiler is used
3671 dnl ===================================================================
3673 map_vs_year_to_version()
3675 # Return value: $vsversion
3683 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3687 vs_versions_to_check()
3689 # Args: $1 (optional) : versions to check, in the order of preference
3690 # Return value: $vsversions
3694 if test -n "$1"; then
3695 map_vs_year_to_version "$1"
3696 vsversions=$vsversion
3698 # We accept only 2019
3703 win_get_env_from_vsvars32bat()
3705 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3706 # Also seems to be located in another directory under the same name: vsvars32.bat
3707 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3708 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3709 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3710 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3712 if test "$build_os" = "wsl"; then
3713 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3715 chmod +x $WRAPPERBATCHFILEPATH
3716 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3718 rm -f $WRAPPERBATCHFILEPATH
3719 printf '%s' "$result"
3724 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3725 if test -n "$regvalue"; then
3726 PathFormat "$regvalue"
3727 UCRTSDKDIR=$formatted_path_unix
3728 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3729 UCRTVERSION=$regvalue
3731 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3735 if test -z "$UCRTSDKDIR"; then
3736 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3737 ide_env_file="${ide_env_dir}VsDevCmd.bat"
3738 if test -f "$ide_env_file"; then
3739 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3740 UCRTSDKDIR=$formatted_path
3741 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3742 dnl Hack needed at least by tml:
3743 if test "$UCRTVERSION" = 10.0.15063.0 \
3744 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3745 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3747 UCRTVERSION=10.0.14393.0
3750 AC_MSG_ERROR([No UCRT found])
3757 # Find Visual C++ 2019
3758 # Args: $1 (optional) : The VS version year
3759 # Return values: $vctest, $vcyear, $vcnum, $vcnumwithdot, $vcbuildnumber
3761 unset vctest vcnum vcnumwithdot vcbuildnumber
3763 vs_versions_to_check "$1"
3764 if test "$build_os" = wsl; then
3765 vswhere="$PROGRAMFILESX86"
3767 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3769 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3770 PathFormat "$vswhere"
3771 vswhere=$formatted_path_unix
3772 for ver in $vsversions; do
3773 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3774 # Fall back to all MS products (this includes VC++ Build Tools)
3775 if ! test -n "$vswhereoutput"; then
3776 AC_MSG_CHECKING([VC++ Build Tools and similar])
3777 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3779 if test -n "$vswhereoutput"; then
3780 PathFormat "$vswhereoutput"
3781 vctest=$formatted_path_unix
3786 if test -n "$vctest"; then
3787 vcnumwithdot="$ver.0"
3788 case "$vcnumwithdot" in
3794 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3801 AC_MSG_CHECKING([$1 compiler])
3803 CL_EXE_PATH="$2/cl.exe"
3805 if test ! -f "$CL_EXE_PATH"; then
3806 if test "$1" = "multi-arch"; then
3807 AC_MSG_WARN([no compiler (cl.exe) in $2])
3810 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3814 dnl ===========================================================
3815 dnl Check for the corresponding mspdb*.dll
3816 dnl ===========================================================
3818 # MSVC 15.0 has libraries from 14.0?
3821 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3822 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3825 # The compiles has to find its shared libraries
3827 TEMP_PATH=`cygpath -d "$2"`
3828 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3830 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3831 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3836 AC_MSG_RESULT([$CL_EXE_PATH])
3842 if test "$_os" = "WINNT"; then
3843 AC_MSG_CHECKING([Visual C++])
3844 find_msvc "$with_visual_studio"
3845 if test -z "$vctest"; then
3846 if test -n "$with_visual_studio"; then
3847 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3849 AC_MSG_ERROR([no Visual Studio 2019 installation found])
3854 VC_PRODUCT_DIR="$vctest/VC"
3855 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3857 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3858 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3859 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3860 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3861 if test $? -ne 0; then
3867 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3868 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3869 test_cl_exe "build" "$MSVC_BUILD_PATH"
3872 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3873 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3874 test_cl_exe "host" "$MSVC_HOST_PATH"
3876 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
3879 AC_MSG_CHECKING([for short pathname of VC product directory])
3880 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
3881 AC_MSG_RESULT([$VC_PRODUCT_DIR])
3886 AC_MSG_CHECKING([for UCRT location])
3888 # find_ucrt errors out if it doesn't find it
3889 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
3890 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
3891 ucrtincpath_formatted=$formatted_path
3892 # SOLARINC is used for external modules and must be set too.
3893 # And no, it's not sufficient to set SOLARINC only, as configure
3894 # itself doesn't honour it.
3895 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
3896 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
3897 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
3898 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
3900 AC_SUBST(UCRTSDKDIR)
3901 AC_SUBST(UCRTVERSION)
3903 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
3904 # Find the proper version of MSBuild.exe to use based on the VS version
3905 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
3906 if test -n "$regvalue" ; then
3907 AC_MSG_RESULT([found: $regvalue])
3908 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3910 if test "$vcnumwithdot" = "16.0"; then
3911 if test "$WIN_BUILD_ARCH" != "x64"; then
3912 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
3914 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
3917 if test "$WIN_BUILD_ARCH" != "x64"; then
3918 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin"
3920 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64"
3923 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3924 AC_MSG_RESULT([$regvalue])
3927 # Find the version of devenv.exe
3928 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
3929 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
3930 DEVENV_unix=$(cygpath -u "$DEVENV")
3931 if test ! -e "$DEVENV_unix"; then
3932 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
3935 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
3936 dnl needed when building CLR code:
3937 if test -z "$MSVC_CXX"; then
3938 # This gives us a posix path with 8.3 filename restrictions
3939 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
3942 if test -z "$CC"; then
3944 CC_BASE=`first_arg_basename "$CC"`
3946 if test -z "$CXX"; then
3948 CXX_BASE=`first_arg_basename "$CXX"`
3951 if test -n "$CC"; then
3952 # Remove /cl.exe from CC case insensitive
3953 AC_MSG_NOTICE([found Visual C++ $vcyear])
3955 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
3956 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
3958 PathFormat "$COMPATH"
3959 COMPATH=`win_short_path_for_make "$formatted_path"`
3963 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
3964 # are always "better", we list them in reverse chronological order.
3968 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
3972 # The expectation is that --with-windows-sdk should not need to be used
3973 if test -n "$with_windows_sdk"; then
3974 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
3975 *" "$with_windows_sdk" "*)
3976 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
3979 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
3984 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
3989 AC_MSG_ERROR([Visual C++ not found after all, huh])
3992 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.4])
3993 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
3994 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
3995 // between Visual Studio versions and _MSC_VER:
3999 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4001 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4002 # version of the Explorer extension (and maybe other small
4003 # bits, too) needed when installing a 32-bit LibreOffice on a
4004 # 64-bit OS. The 64-bit Explorer extension is a feature that
4005 # has been present since long in OOo. Don't confuse it with
4006 # building LibreOffice itself as 64-bit code.
4011 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4012 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4013 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4014 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4017 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4018 AC_MSG_RESULT([found])
4020 AC_MSG_RESULT([not found])
4021 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4023 elif test "$WIN_HOST_ARCH" = "x64"; then
4028 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4029 AC_SUBST(CXX_X64_BINARY)
4031 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4032 # needed to support TWAIN scan on both 32- and 64-bit systems
4034 case "$WIN_HOST_ARCH" in
4036 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4037 if test -n "$CXX_X86_BINARY"; then
4039 AC_MSG_RESULT([preset])
4040 elif test -n "$WIN_MULTI_ARCH"; then
4042 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4043 CXX_X86_BINARY+=" /arch:SSE"
4044 AC_MSG_RESULT([found])
4046 AC_MSG_RESULT([not found])
4047 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4052 CXX_X86_BINARY=$MSVC_CXX
4056 AC_SUBST(CXX_X86_BINARY)
4063 AC_MSG_CHECKING([whether the compiler is actually Clang])
4064 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4070 [AC_MSG_RESULT([yes])
4072 [AC_MSG_RESULT([no])])
4073 AC_SUBST(COM_IS_CLANG)
4077 if test "$COM_IS_CLANG" = TRUE; then
4078 AC_MSG_CHECKING([whether Clang is new enough])
4079 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4080 #if !defined __apple_build_version__
4084 [my_apple_clang=yes],[my_apple_clang=])
4085 if test "$my_apple_clang" = yes; then
4086 AC_MSG_RESULT([assumed yes (Apple Clang)])
4088 if test "$_os" = WINNT; then
4089 dnl In which case, assume clang-cl:
4091 dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4099 CC_PLAIN="$CC_PLAIN $i"
4106 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4107 CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4108 CLANGVER=`echo $clang_version \
4109 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4110 if test "$CLANGVER" -ge 50002; then
4111 AC_MSG_RESULT([yes ($clang_version)])
4113 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4115 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4116 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4120 SHOWINCLUDES_PREFIX=
4121 if test "$_os" = WINNT; then
4122 dnl We need to guess the prefix of the -showIncludes output, it can be
4124 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4125 echo "#include <stdlib.h>" > conftest.c
4126 SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4127 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4128 rm -f conftest.c conftest.obj
4129 if test -z "$SHOWINCLUDES_PREFIX"; then
4130 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4132 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4135 AC_SUBST(SHOWINCLUDES_PREFIX)
4138 # prefix C with ccache if needed
4140 if test "$CCACHE" != ""; then
4141 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4145 CFLAGS="$CFLAGS --ccache-skip -O2"
4146 dnl an empty program will do, we're checking the compiler flags
4147 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4148 [use_ccache=yes], [use_ccache=no])
4150 if test $use_ccache = yes; then
4151 AC_MSG_RESULT([yes])
4154 CC_BASE="ccache $CC_BASE"
4160 # ===================================================================
4161 # check various GCC options that Clang does not support now but maybe
4162 # will somewhen in the future, check them even for GCC, so that the
4164 # ===================================================================
4167 if test "$GCC" = "yes"; then
4168 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4170 CFLAGS="$CFLAGS -Werror -ggdb2"
4171 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4173 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4174 AC_MSG_RESULT([yes])
4179 if test "$host_cpu" = "m68k"; then
4180 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4182 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4183 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4185 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4186 AC_MSG_RESULT([yes])
4192 AC_SUBST(HAVE_GCC_GGDB2)
4194 dnl ===================================================================
4195 dnl Test the gcc version
4196 dnl ===================================================================
4197 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4198 AC_MSG_CHECKING([the GCC version])
4199 _gcc_version=`$CC -dumpversion`
4200 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4201 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4202 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4204 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4206 if test "$gcc_full_version" -lt 70000; then
4207 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4210 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4211 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4212 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4213 # (which reports itself as GCC 4.2.1).
4216 AC_SUBST(GCC_VERSION)
4218 dnl Set the ENABLE_DBGUTIL variable
4219 dnl ===================================================================
4220 AC_MSG_CHECKING([whether to build with additional debug utilities])
4221 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4222 ENABLE_DBGUTIL="TRUE"
4223 # this is an extra var so it can have different default on different MSVC
4224 # versions (in case there are version specific problems with it)
4225 MSVC_USE_DEBUG_RUNTIME="TRUE"
4227 AC_MSG_RESULT([yes])
4228 # cppunit and graphite expose STL in public headers
4229 if test "$with_system_cppunit" = "yes"; then
4230 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4232 with_system_cppunit=no
4234 if test "$with_system_graphite" = "yes"; then
4235 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4237 with_system_graphite=no
4239 if test "$with_system_orcus" = "yes"; then
4240 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4242 with_system_orcus=no
4244 if test "$with_system_libcmis" = "yes"; then
4245 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4247 with_system_libcmis=no
4249 if test "$with_system_hunspell" = "yes"; then
4250 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4252 with_system_hunspell=no
4254 if test "$with_system_gpgmepp" = "yes"; then
4255 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4257 with_system_gpgmepp=no
4259 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4260 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4261 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4262 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4263 # of those two is using the system variant:
4264 if test "$with_system_libnumbertext" = "yes"; then
4265 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4267 with_system_libnumbertext=no
4269 if test "$with_system_libwps" = "yes"; then
4270 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4272 with_system_libwps=no
4276 MSVC_USE_DEBUG_RUNTIME=""
4279 AC_SUBST(ENABLE_DBGUTIL)
4280 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4282 dnl Set the ENABLE_DEBUG variable.
4283 dnl ===================================================================
4284 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4285 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4287 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4288 if test -z "$libo_fuzzed_enable_debug"; then
4289 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4291 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4296 AC_MSG_CHECKING([whether to do a debug build])
4297 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4299 if test -n "$ENABLE_DBGUTIL" ; then
4300 AC_MSG_RESULT([yes (dbgutil)])
4302 AC_MSG_RESULT([yes])
4308 AC_SUBST(ENABLE_DEBUG)
4310 dnl ===================================================================
4311 dnl Select the linker to use (gold/lld/ld.bfd).
4312 dnl This is done only after compiler checks (need to know if Clang is
4313 dnl used, for different defaults) and after checking if a debug build
4314 dnl is wanted (non-debug builds get the default linker if not explicitly
4315 dnl specified otherwise).
4316 dnl All checks for linker features/options should come after this.
4317 dnl ===================================================================
4320 use_ld=-fuse-ld=${1%%:*}
4322 if test "$use_ld_path" != "$1"; then
4323 use_ld="$use_ld --ld-path=$use_ld_path"
4325 use_ld_fail_if_error=$2
4327 AC_MSG_CHECKING([for $use_ld linker support])
4328 use_ld_ldflags_save="$LDFLAGS"
4329 LDFLAGS="$LDFLAGS $use_ld"
4330 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4333 printf ("hello world\n");
4334 ])], USE_LD=$use_ld, [])
4335 if test -n "$USE_LD"; then
4336 AC_MSG_RESULT( yes )
4339 if test -n "$use_ld_fail_if_error"; then
4345 if test -n "$use_ld_ok"; then
4346 dnl keep the value of LDFLAGS
4349 LDFLAGS="$use_ld_ldflags_save"
4353 if test "$enable_ld" != "no"; then
4354 if test "$GCC" = "yes"; then
4355 if test -n "$enable_ld"; then
4356 check_use_ld "$enable_ld" fail_if_error
4357 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4358 dnl non-debug builds default to the default linker
4360 elif test -n "$COM_IS_CLANG"; then
4362 if test $? -ne 0; then
4366 # For gcc first try gold, new versions also support lld.
4368 if test $? -ne 0; then
4372 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4374 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4375 if test -z "$ld_used"; then
4378 AC_MSG_CHECKING([for linker that is used])
4379 AC_MSG_RESULT([$ld_used])
4380 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4381 if echo "$ld_used" | grep -q "^GNU ld"; then
4382 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4383 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4387 if test "$enable_ld" = "yes"; then
4388 AC_MSG_ERROR([--enable-ld not supported])
4394 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4395 if test "$GCC" = "yes"; then
4396 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4397 bsymbolic_functions_ldflags_save=$LDFLAGS
4398 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4399 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4402 printf ("hello world\n");
4403 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4404 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4405 AC_MSG_RESULT( found )
4407 AC_MSG_RESULT( not found )
4409 LDFLAGS=$bsymbolic_functions_ldflags_save
4411 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4414 if test "$GCC" = "yes"; then
4415 for flag in "--gc-sections" "-dead_strip"; do
4416 AC_MSG_CHECKING([for $flag linker support])
4417 ldflags_save=$LDFLAGS
4418 LDFLAGS="$LDFLAGS -Wl,$flag"
4419 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4422 printf ("hello world\n");
4424 LD_GC_SECTIONS="-Wl,$flag"
4425 AC_MSG_RESULT( found )
4427 AC_MSG_RESULT( not found )
4429 LDFLAGS=$ldflags_save
4430 if test -n "$LD_GC_SECTIONS"; then
4435 AC_SUBST(LD_GC_SECTIONS)
4438 if test "$enable_split_debug" != no; then
4439 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4440 if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4441 AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4443 CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4444 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4446 if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4447 AC_MSG_RESULT([yes])
4449 if test "$enable_split_debug" = yes; then
4456 if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4457 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4458 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4461 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4463 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4464 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4466 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4467 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4469 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4470 AC_MSG_RESULT([yes])
4474 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4477 if test "$enable_gdb_index" != "no"; then
4478 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4479 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -o -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4480 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4482 CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4484 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4485 if test "$have_ggnu_pubnames" != "TRUE"; then
4486 if test "$enable_gdb_index" = "yes"; then
4487 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4492 AC_MSG_RESULT( yes )
4493 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4494 ldflags_save=$LDFLAGS
4495 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4496 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4499 printf ("hello world\n");
4500 ])], ENABLE_GDB_INDEX=TRUE, [])
4501 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4502 AC_MSG_RESULT( yes )
4504 if test "$enable_gdb_index" = "yes"; then
4510 LDFLAGS=$ldflags_save
4514 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4515 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4516 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4519 AC_SUBST(ENABLE_GDB_INDEX)
4521 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4524 if test "$enable_sal_log" = yes; then
4527 AC_SUBST(ENABLE_SAL_LOG)
4529 dnl Check for enable symbols option
4530 dnl ===================================================================
4531 AC_MSG_CHECKING([whether to generate debug information])
4532 if test -z "$enable_symbols"; then
4533 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4539 if test "$enable_symbols" = yes; then
4540 ENABLE_SYMBOLS_FOR=all
4541 AC_MSG_RESULT([yes])
4542 elif test "$enable_symbols" = no; then
4546 # Selective debuginfo.
4547 ENABLE_SYMBOLS_FOR="$enable_symbols"
4548 AC_MSG_RESULT([for "$enable_symbols"])
4550 AC_SUBST(ENABLE_SYMBOLS_FOR)
4552 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4553 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4554 AC_MSG_CHECKING([whether enough memory is available for linking])
4555 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4556 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4557 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4558 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4560 AC_MSG_RESULT([yes])
4565 ENABLE_OPTIMIZED_DEBUG=
4566 AC_MSG_CHECKING([whether to compile with optimization flags])
4567 if test -z "$enable_optimized"; then
4568 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4571 enable_optimized=yes
4574 if test "$enable_optimized" = yes; then
4575 ENABLE_OPTIMIZED=TRUE
4576 AC_MSG_RESULT([yes])
4577 elif test "$enable_optimized" = debug; then
4578 ENABLE_OPTIMIZED_DEBUG=TRUE
4579 AC_MSG_RESULT([yes (debug)])
4581 if test "$GCC" = "yes"; then
4582 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4584 CFLAGS="$CFLAGS -Werror -Og"
4585 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4587 if test "$HAVE_GCC_OG" = "TRUE"; then
4588 AC_MSG_RESULT([yes])
4593 if test -z "$HAVE_GCC_OG"; then
4594 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4599 AC_SUBST(ENABLE_OPTIMIZED)
4600 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4603 # determine CPUNAME, OS, ...
4604 # The USING_X11 flag tells whether the host os uses X by default. Can be overridden with the --without-x option.
4615 PLATFORMID=aix_powerpc
4632 if test "$enable_ios_simulator" = "yes"; then
4637 PLATFORMID=macosx_arm64
4641 if test "$enable_ios_simulator" = "yes"; then
4646 PLATFORMID=macosx_x86_64
4649 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4663 if test "$enable_ios_simulator" = "yes"; then
4664 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4668 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4673 PLATFORMID=ios_arm64
4687 PLATFORMID=dragonfly_x86
4692 PLATFORMID=dragonfly_x86_64
4695 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4710 PLATFORMID=freebsd_aarch64
4716 PLATFORMID=freebsd_x86
4721 PLATFORMID=freebsd_x86_64
4726 PLATFORMID=freebsd_powerpc64
4731 PLATFORMID=freebsd_powerpc
4734 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4751 PLATFORMID=haiku_x86
4756 PLATFORMID=haiku_x86_64
4759 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4776 PLATFORMID=kfreebsd_x86
4781 PLATFORMID=kfreebsd_x86_64
4784 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4800 PLATFORMID=linux_aarch64
4806 PLATFORMID=linux_alpha
4812 PLATFORMID=linux_arm_eabi
4816 PLATFORMID=linux_arm_oabi
4824 PLATFORMID=linux_hppa
4829 PLATFORMID=linux_x86
4834 PLATFORMID=linux_ia64
4840 PLATFORMID=linux_mips_eb
4845 EPM_FLAGS="-a mips64"
4846 PLATFORMID=linux_mips64_eb
4851 EPM_FLAGS="-a mips64el"
4852 PLATFORMID=linux_mips64_el
4857 EPM_FLAGS="-a mipsel"
4858 PLATFORMID=linux_mips_el
4863 PLATFORMID=linux_m68k
4868 PLATFORMID=linux_powerpc
4873 PLATFORMID=linux_powerpc64
4877 RTL_ARCH=PowerPC_64_LE
4878 PLATFORMID=linux_powerpc64_le
4883 PLATFORMID=linux_sparc
4888 PLATFORMID=linux_sparc64
4893 PLATFORMID=linux_s390
4898 PLATFORMID=linux_s390x
4903 PLATFORMID=linux_x86_64
4906 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4923 PLATFORMID=android_arm_eabi
4928 PLATFORMID=android_aarch64
4933 PLATFORMID=android_x86
4938 PLATFORMID=android_x86_64
4941 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4957 PLATFORMID=netbsd_x86
4962 PLATFORMID=netbsd_powerpc
4967 PLATFORMID=netbsd_sparc
4972 PLATFORMID=netbsd_x86_64
4975 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4991 PLATFORMID=openbsd_x86
4996 PLATFORMID=openbsd_x86_64
4999 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5002 SOLARINC="$SOLARINC -I/usr/local/include"
5016 PLATFORMID=solaris_x86
5021 PLATFORMID=solaris_sparc
5026 PLATFORMID=solaris_sparc64
5029 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5032 SOLARINC="$SOLARINC -I/usr/local/include"
5036 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5040 if test "$with_x" = "no"; then
5041 AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5045 if test "$enable_gui" = "no"; then
5046 if test "$USING_X11" != TRUE; then
5047 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5051 AC_DEFINE(HAVE_FEATURE_UI,0)
5054 AC_SUBST(DISABLE_GUI)
5056 WORKDIR="${BUILDDIR}/workdir"
5057 INSTDIR="${BUILDDIR}/instdir"
5058 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5059 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5060 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5068 AC_SUBST([INSTROOT])
5069 AC_SUBST([INSTROOTBASE])
5073 AC_SUBST(PLATFORMID)
5074 AC_SUBST(WINDOWS_X64)
5075 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5077 dnl ===================================================================
5078 dnl Test which package format to use
5079 dnl ===================================================================
5080 AC_MSG_CHECKING([which package format to use])
5081 if test -n "$with_package_format" -a "$with_package_format" != no; then
5082 for i in $with_package_format; do
5084 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5087 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5088 aix - AIX software distribution
5089 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5090 deb - Debian software distribution
5091 pkg - Solaris software distribution
5092 rpm - RedHat software distribution
5094 LibreOffice additionally supports:
5095 archive - .tar.gz or .zip
5097 installed - installation tree
5103 # fakeroot is needed to ensure correct file ownerships/permissions
5104 # inside deb packages and tar archives created on Linux and Solaris.
5105 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5106 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5107 if test "$FAKEROOT" = "no"; then
5109 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5112 PKGFORMAT="$with_package_format"
5113 AC_MSG_RESULT([$PKGFORMAT])
5116 AC_MSG_RESULT([none])
5120 dnl ===================================================================
5121 dnl Set up a different compiler to produce tools to run on the build
5122 dnl machine when doing cross-compilation
5123 dnl ===================================================================
5125 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5126 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5127 if test "$cross_compiling" = "yes"; then
5128 AC_MSG_CHECKING([for BUILD platform configuration])
5130 rm -rf CONF-FOR-BUILD config_build.mk
5131 mkdir CONF-FOR-BUILD
5132 # Here must be listed all files needed when running the configure script. In particular, also
5133 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5134 # keep them in the same order as there.
5135 (cd $SRC_ROOT && tar cf - \
5137 bin/get_config_variables \
5138 solenv/bin/getcompver.awk \
5139 solenv/inc/langlist.mk \
5142 config_host_lang.mk.in \
5144 bin/bffvalidator.sh.in \
5145 bin/odfvalidator.sh.in \
5146 bin/officeotron.sh.in \
5147 hardened_runtime.xcent.in \
5148 instsetoo_native/util/openoffice.lst.in \
5150 sysui/desktop/macosx/Info.plist.in) \
5151 | (cd CONF-FOR-BUILD && tar xf -)
5152 cp configure CONF-FOR-BUILD
5153 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5155 unset COM USING_X11 OS CPUNAME
5156 unset CC CXX SYSBASE CFLAGS
5157 unset AR NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5158 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5159 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC PKG_CONFIG_LIBDIR
5160 if test -n "$CC_FOR_BUILD"; then
5161 export CC="$CC_FOR_BUILD"
5162 CC_BASE=`first_arg_basename "$CC"`
5164 if test -n "$CXX_FOR_BUILD"; then
5165 export CXX="$CXX_FOR_BUILD"
5166 CXX_BASE=`first_arg_basename "$CXX"`
5168 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5172 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5173 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5174 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5175 if test -n "$ENABLE_JAVA"; then
5177 iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5179 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5180 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5183 if test -z "$with_jdk_home"; then
5184 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.])
5189 sub_conf_opts="$sub_conf_opts --without-java"
5191 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5192 test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5193 sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options"
5195 # Don't bother having configure look for stuff not needed for the build platform anyway
5197 --build="$build_alias" \
5199 --disable-firebird-sdbc \
5201 --disable-gstreamer-1-0 \
5203 --disable-mariadb-sdbc \
5204 --disable-online-update \
5206 --disable-pdfimport \
5207 --disable-postgresql-sdbc \
5209 --enable-icecream="$enable_icecream" \
5212 --with-parallelism="$with_parallelism" \
5213 --with-theme="$with_theme" \
5214 --with-tls=openssl \
5217 2>&1 | sed -e 's/^/ /'
5218 test -f ./config_host.mk 2>/dev/null || exit
5220 # filter permitted build targets
5221 PERMITTED_BUILD_TARGETS="
5250 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5251 # newlined lists, to use grep as a filter
5252 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5253 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5254 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5255 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5257 cp config_host.mk ../config_build.mk
5258 cp config_host_lang.mk ../config_build_lang.mk
5259 mv config.log ../config.Build.log
5260 mkdir -p ../config_build
5261 mv config_host/*.h ../config_build
5263 # all these will get a _FOR_BUILD postfix
5264 DIRECT_FOR_BUILD_SETTINGS="
5274 LIBO_URE_MISC_FOLDER
5280 # these overwrite host config with build config
5281 OVERWRITING_SETTINGS="
5286 JAVA_CLASSPATH_NOT_SET
5294 # these need some special handling
5295 EXTRA_HANDLED_SETTINGS="
5302 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5306 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5307 echo "$line" >>build-config
5309 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5311 VV=`eval "echo $VV"`
5312 if test -n "$VV"; then
5313 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5314 echo "$line" >>build-config
5318 for V in $OVERWRITING_SETTINGS; do
5320 VV=`eval "echo $VV"`
5321 if test -n "$VV"; then
5322 line=${V}='${'${V}:-$VV'}'
5323 echo "$line" >>build-config
5327 for V in INSTDIR INSTROOT WORKDIR; do
5329 VV=`eval "echo $VV"`
5330 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5331 if test -n "$VV"; then
5332 line="${V}_FOR_BUILD='$VV'"
5333 echo "$line" >>build-config
5338 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([Running configure script for BUILD system failed, see CONF-FOR-BUILD/config.log])
5339 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])
5340 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5341 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5343 eval `cat CONF-FOR-BUILD/build-config`
5345 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5347 rm -rf CONF-FOR-BUILD
5351 CXX_FOR_BUILD="$CXX"
5352 INSTDIR_FOR_BUILD="$INSTDIR"
5353 INSTROOT_FOR_BUILD="$INSTROOT"
5354 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5355 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5356 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5357 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5358 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5359 WORKDIR_FOR_BUILD="$WORKDIR"
5361 AC_SUBST(OS_FOR_BUILD)
5362 AC_SUBST(INSTDIR_FOR_BUILD)
5363 AC_SUBST(INSTROOT_FOR_BUILD)
5364 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5365 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5366 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5367 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5368 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5369 AC_SUBST(WORKDIR_FOR_BUILD)
5370 AC_SUBST(CC_FOR_BUILD)
5371 AC_SUBST(CXX_FOR_BUILD)
5373 dnl ===================================================================
5374 dnl Check for syslog header
5375 dnl ===================================================================
5376 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5378 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5379 dnl ===================================================================
5380 AC_MSG_CHECKING([whether to turn warnings to errors])
5381 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5382 ENABLE_WERROR="TRUE"
5383 PYTHONWARNINGS="error"
5384 AC_MSG_RESULT([yes])
5386 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5387 ENABLE_WERROR="TRUE"
5388 PYTHONWARNINGS="error"
5389 AC_MSG_RESULT([yes])
5394 AC_SUBST(ENABLE_WERROR)
5395 AC_SUBST(PYTHONWARNINGS)
5397 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5398 dnl ===================================================================
5399 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5400 if test -z "$enable_assert_always_abort"; then
5401 if test "$ENABLE_DEBUG" = TRUE; then
5402 enable_assert_always_abort=yes
5404 enable_assert_always_abort=no
5407 if test "$enable_assert_always_abort" = "yes"; then
5408 ASSERT_ALWAYS_ABORT="TRUE"
5409 AC_MSG_RESULT([yes])
5411 ASSERT_ALWAYS_ABORT="FALSE"
5414 AC_SUBST(ASSERT_ALWAYS_ABORT)
5416 # Determine whether to use ooenv for the instdir installation
5417 # ===================================================================
5418 if test $_os != "WINNT" -a $_os != "Darwin"; then
5419 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5420 if test "$enable_ooenv" = "no"; then
5424 AC_MSG_RESULT([yes])
5427 AC_SUBST(ENABLE_OOENV)
5429 if test "$USING_X11" != TRUE; then
5430 # be sure to do not mess with unneeded stuff
5435 build_gstreamer_1_0=no
5439 enable_cairo_canvas=no
5442 if test "$OS" = "HAIKU"; then
5443 enable_cairo_canvas=yes
5447 if test "$test_kf5" = "yes" -a "$enable_kde5" = "yes"; then
5448 AC_MSG_WARN([The kde5 VCL plugin was renamed to kf5. Please update your configuration to use --enable-kf5, as --enable-kde5 will be removed after the next major release!])
5449 add_warning "The kde5 VCL plugin was renamed to kf5. Please update your configuration to use --enable-kf5, as --enable-kde5 will be removed after the next major release!"
5453 if test "$test_kf5" = "yes"; then
5457 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5458 if test "$enable_qt5" = "no"; then
5459 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5465 dnl ===================================================================
5466 dnl check for cups support
5467 dnl ===================================================================
5470 if test "$enable_cups" = "no"; then
5474 AC_MSG_CHECKING([whether to enable CUPS support])
5475 if test "$test_cups" = "yes"; then
5477 AC_MSG_RESULT([yes])
5479 AC_MSG_CHECKING([whether cups support is present])
5480 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5481 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5482 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5483 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5490 AC_SUBST(ENABLE_CUPS)
5493 if test "$test_fontconfig" = "yes"; then
5494 PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5495 SYSTEM_FONTCONFIG=TRUE
5496 FilterLibs "${FONTCONFIG_LIBS}"
5497 FONTCONFIG_LIBS="${filteredlibs}"
5499 AC_SUBST(FONTCONFIG_CFLAGS)
5500 AC_SUBST(FONTCONFIG_LIBS)
5501 AC_SUBST([SYSTEM_FONTCONFIG])
5503 dnl whether to find & fetch external tarballs?
5504 dnl ===================================================================
5505 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5506 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5507 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5509 TARFILE_LOCATION="$LODE_HOME/ext_tar"
5512 if test -z "$TARFILE_LOCATION"; then
5513 if test -d "$SRC_ROOT/src" ; then
5514 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5515 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5517 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5519 AbsolutePath "$TARFILE_LOCATION"
5520 PathFormat "${absolute_path}"
5521 TARFILE_LOCATION="${formatted_path}"
5523 AC_SUBST(TARFILE_LOCATION)
5525 AC_MSG_CHECKING([whether we want to fetch tarballs])
5526 if test "$enable_fetch_external" != "no"; then
5527 if test "$with_all_tarballs" = "yes"; then
5528 AC_MSG_RESULT([yes, all of them])
5529 DO_FETCH_TARBALLS="ALL"
5531 AC_MSG_RESULT([yes, if we use them])
5532 DO_FETCH_TARBALLS="TRUE"
5538 AC_SUBST(DO_FETCH_TARBALLS)
5540 AC_MSG_CHECKING([whether to build help])
5541 if test -n "$with_help" -a "$with_help" != "no" -a $_os != iOS -a $_os != Android; then
5542 BUILD_TYPE="$BUILD_TYPE HELP"
5543 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5544 case "$with_help" in
5546 ENABLE_HTMLHELP=TRUE
5547 SCPDEFS="$SCPDEFS -DWITH_HELP"
5548 AC_MSG_RESULT([HTML])
5551 ENABLE_HTMLHELP=TRUE
5553 AC_MSG_RESULT([HTML])
5556 SCPDEFS="$SCPDEFS -DWITH_HELP"
5557 AC_MSG_RESULT([yes])
5560 AC_MSG_ERROR([Unknown --with-help=$with_help])
5566 AC_SUBST([ENABLE_HTMLHELP])
5567 AC_SUBST([HELP_ONLINE])
5569 AC_MSG_CHECKING([whether to enable xapian-omega support for help])
5570 if test -n "$with_omindex" -a "$with_omindex" != "no" -a $_os != iOS -a $_os != Android; then
5571 BUILD_TYPE="$BUILD_TYPE HELP"
5572 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5573 case "$with_omindex" in
5575 ENABLE_HTMLHELP=TRUE
5577 HELP_OMINDEX_PAGE=TRUE
5578 AC_MSG_RESULT([SERVER])
5581 ENABLE_HTMLHELP=TRUE
5583 HELP_OMINDEX_PAGE=FALSE
5584 AC_MSG_RESULT([NOXAP])
5587 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5591 HELP_OMINDEX_PAGE=FALSE
5594 AC_SUBST([ENABLE_HTMLHELP])
5595 AC_SUBST([HELP_OMINDEX_PAGE])
5596 AC_SUBST([HELP_ONLINE])
5599 dnl Test whether to include MySpell dictionaries
5600 dnl ===================================================================
5601 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5602 if test "$with_myspell_dicts" = "yes"; then
5603 AC_MSG_RESULT([yes])
5604 WITH_MYSPELL_DICTS=TRUE
5605 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5606 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5611 AC_SUBST(WITH_MYSPELL_DICTS)
5613 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5614 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5615 if test "$with_system_dicts" = yes; then
5616 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5618 with_system_dicts=no
5621 AC_MSG_CHECKING([whether to use dicts from external paths])
5622 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5623 AC_MSG_RESULT([yes])
5625 AC_MSG_CHECKING([for spelling dictionary directory])
5626 if test -n "$with_external_dict_dir"; then
5627 DICT_SYSTEM_DIR=file://$with_external_dict_dir
5629 DICT_SYSTEM_DIR=file:///usr/share/hunspell
5630 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5631 DICT_SYSTEM_DIR=file:///usr/share/myspell
5634 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5635 AC_MSG_CHECKING([for hyphenation patterns directory])
5636 if test -n "$with_external_hyph_dir"; then
5637 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5639 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5641 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5642 AC_MSG_CHECKING([for thesaurus directory])
5643 if test -n "$with_external_thes_dir"; then
5644 THES_SYSTEM_DIR=file://$with_external_thes_dir
5646 THES_SYSTEM_DIR=file:///usr/share/mythes
5648 AC_MSG_RESULT([$THES_SYSTEM_DIR])
5653 AC_SUBST(SYSTEM_DICTS)
5654 AC_SUBST(DICT_SYSTEM_DIR)
5655 AC_SUBST(HYPH_SYSTEM_DIR)
5656 AC_SUBST(THES_SYSTEM_DIR)
5658 dnl ===================================================================
5659 dnl Precompiled headers.
5661 AC_MSG_CHECKING([whether to enable pch feature])
5662 if test -z "$enable_pch"; then
5663 if test "$_os" = "WINNT"; then
5664 # Enabled by default on Windows.
5670 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5671 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5673 if test "$enable_pch" = "system"; then
5675 AC_MSG_RESULT([yes (system headers)])
5676 elif test "$enable_pch" = "base"; then
5678 AC_MSG_RESULT([yes (system and base headers)])
5679 elif test "$enable_pch" = "normal"; then
5681 AC_MSG_RESULT([yes (normal)])
5682 elif test "$enable_pch" = "full"; then
5684 AC_MSG_RESULT([yes (full)])
5685 elif test "$enable_pch" = "yes"; then
5686 # Pick a suitable default.
5687 if test "$GCC" = "yes"; then
5688 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5689 # while making the PCHs larger and rebuilds more likely.
5691 AC_MSG_RESULT([yes (system and base headers)])
5693 # With MSVC the highest level makes a significant difference,
5694 # and it was the default when there used to be no PCH levels.
5696 AC_MSG_RESULT([yes (full)])
5698 elif test "$enable_pch" = "no"; then
5701 AC_MSG_ERROR([Unknown value for --enable-pch])
5703 AC_SUBST(ENABLE_PCH)
5704 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5705 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5706 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5707 if test "$CCACHE_BIN" != "not found"; then
5708 AC_MSG_CHECKING([ccache version])
5709 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5710 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5711 AC_MSG_RESULT([$CCACHE_VERSION])
5712 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5713 if test "$CCACHE_NUMVER" -gt "030701"; then
5714 AC_MSG_RESULT([yes])
5716 AC_MSG_RESULT([no (not newer than 3.7.1)])
5722 PCH_INSTANTIATE_TEMPLATES=
5723 if test -n "$ENABLE_PCH"; then
5724 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5726 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5727 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5729 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5735 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5737 BUILDING_PCH_WITH_OBJ=
5738 if test -n "$ENABLE_PCH"; then
5739 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5741 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5742 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5744 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5750 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5754 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5755 AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
5757 CFLAGS="$CFLAGS -Werror -fpch-codegen"
5758 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5760 PCH_CODEGEN="-fpch-codegen"
5761 PCH_NO_CODEGEN="-fno-pch-codegen"
5764 if test -n "$PCH_CODEGEN"; then
5770 AC_SUBST(PCH_CODEGEN)
5771 AC_SUBST(PCH_NO_CODEGEN)
5773 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5774 AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
5776 CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
5777 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
5779 if test -n "$PCH_DEBUGINFO"; then
5785 AC_SUBST(PCH_DEBUGINFO)
5789 AC_MSG_CHECKING([the GNU Make version])
5790 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5791 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5792 if test "$_make_longver" -ge "038200"; then
5793 AC_MSG_RESULT([$GNUMAKE $_make_version])
5795 elif test "$_make_longver" -ge "038100"; then
5796 if test "$build_os" = "cygwin"; then
5797 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5799 AC_MSG_RESULT([$GNUMAKE $_make_version])
5801 dnl ===================================================================
5802 dnl Search all the common names for sha1sum
5803 dnl ===================================================================
5804 AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5805 if test -z "$SHA1SUM"; then
5806 AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5807 elif test "$SHA1SUM" = "openssl"; then
5808 SHA1SUM="openssl sha1"
5810 AC_MSG_CHECKING([for GNU Make bug 20033])
5811 TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
5812 $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
5813 A := \$(wildcard *.a)
5817 <TAB>@echo survived bug20033.
5821 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
5834 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
5835 <TAB>\$(call d1,\$(CHECKSUM)),\
5836 <TAB>\$(call d2,\$(CHECKSUM)))
5838 if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
5839 no_parallelism_make="YES"
5840 AC_MSG_RESULT([yes, disable parallelism])
5842 AC_MSG_RESULT([no, keep parallelism enabled])
5844 rm -rf $TESTGMAKEBUG20033
5846 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
5849 # find if gnumake support file function
5850 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
5851 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
5852 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5853 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
5855 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
5856 \$(file >test.txt,Success )
5863 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
5864 if test -f $TESTGMAKEFILEFUNC/test.txt; then
5865 HAVE_GNUMAKE_FILE_FUNC=TRUE
5866 AC_MSG_RESULT([yes])
5870 rm -rf $TESTGMAKEFILEFUNC
5871 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
5872 AC_SUBST(GNUMAKE_WIN_NATIVE)
5874 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
5876 if test "$_make_ver_check" = ""; then
5880 HAVE_LD_HASH_STYLE=FALSE
5881 WITH_LINKER_HASH_STYLE=
5882 AC_MSG_CHECKING([for --hash-style gcc linker support])
5883 if test "$GCC" = "yes"; then
5884 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
5885 hash_styles="gnu sysv"
5886 elif test "$with_linker_hash_style" = "no"; then
5889 hash_styles="$with_linker_hash_style"
5892 for hash_style in $hash_styles; do
5893 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
5894 hash_style_ldflags_save=$LDFLAGS
5895 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
5897 AC_RUN_IFELSE([AC_LANG_PROGRAM(
5904 HAVE_LD_HASH_STYLE=TRUE
5905 WITH_LINKER_HASH_STYLE=$hash_style
5907 [HAVE_LD_HASH_STYLE=FALSE],
5908 [HAVE_LD_HASH_STYLE=FALSE])
5909 LDFLAGS=$hash_style_ldflags_save
5912 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
5913 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
5917 LDFLAGS=$hash_style_ldflags_save
5921 AC_SUBST(HAVE_LD_HASH_STYLE)
5922 AC_SUBST(WITH_LINKER_HASH_STYLE)
5924 dnl ===================================================================
5925 dnl Check whether there's a Perl version available.
5926 dnl ===================================================================
5927 if test -z "$with_perl_home"; then
5928 AC_PATH_PROG(PERL, perl)
5930 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
5931 _perl_path="$with_perl_home/bin/perl"
5932 if test -x "$_perl_path"; then
5935 AC_MSG_ERROR([$_perl_path not found])
5939 dnl ===================================================================
5940 dnl Testing for Perl version 5 or greater.
5941 dnl $] is the Perl version variable, it is returned as an integer
5942 dnl ===================================================================
5943 if test "$PERL"; then
5944 AC_MSG_CHECKING([the Perl version])
5945 ${PERL} -e "exit($]);"
5947 if test "$_perl_version" -lt 5; then
5948 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
5950 AC_MSG_RESULT([Perl $_perl_version])
5952 AC_MSG_ERROR([Perl not found, install Perl 5])
5955 dnl ===================================================================
5956 dnl Testing for required Perl modules
5957 dnl ===================================================================
5959 AC_MSG_CHECKING([for required Perl modules])
5960 perl_use_string="use Cwd ; use Digest::MD5"
5961 if test "$_os" = "WINNT"; then
5962 if test -n "$PKGFORMAT"; then
5963 for i in $PKGFORMAT; do
5966 # for getting fonts versions to use in MSI
5967 perl_use_string="$perl_use_string ; use Font::TTF::Font"
5973 if test "$with_system_hsqldb" = "yes"; then
5974 perl_use_string="$perl_use_string ; use Archive::Zip"
5976 if test "$with_system_openssl" != "yes"; then
5977 # OpenSSL needs that to build
5978 perl_use_string="$perl_use_string ; use FindBin"
5980 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
5981 AC_MSG_RESULT([all modules found])
5983 AC_MSG_RESULT([failed to find some modules])
5984 # Find out which modules are missing.
5985 for i in $perl_use_string; do
5986 if test "$i" != "use" -a "$i" != ";"; then
5987 if ! $PERL -e "use $i;">/dev/null 2>&1; then
5988 missing_perl_modules="$missing_perl_modules $i"
5993 The missing Perl modules are: $missing_perl_modules
5994 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
5997 dnl ===================================================================
5998 dnl Check for pkg-config
5999 dnl ===================================================================
6000 if test "$_os" != "WINNT"; then
6004 if test "$_os" != "WINNT"; then
6006 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6007 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6008 # explicitly. Or put /path/to/compiler in PATH yourself.
6010 # Use wrappers for LTO
6011 if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6012 AC_CHECK_TOOL(AR,gcc-ar)
6013 AC_CHECK_TOOL(NM,gcc-nm)
6014 AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6016 AC_CHECK_TOOL(AR,ar)
6017 AC_CHECK_TOOL(NM,nm)
6018 AC_CHECK_TOOL(RANLIB,ranlib)
6020 AC_CHECK_TOOL(OBJDUMP,objdump)
6021 AC_CHECK_TOOL(READELF,readelf)
6022 AC_CHECK_TOOL(STRIP,strip)
6023 if test "$_os" = "WINNT"; then
6024 AC_CHECK_TOOL(DLLTOOL,dlltool)
6025 AC_CHECK_TOOL(WINDRES,windres)
6032 AC_SUBST(PKG_CONFIG)
6038 dnl ===================================================================
6039 dnl pkg-config checks on macOS
6040 dnl ===================================================================
6042 if test $_os = Darwin; then
6043 AC_MSG_CHECKING([for bogus pkg-config])
6044 if test -n "$PKG_CONFIG"; then
6045 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6046 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6048 if test "$enable_bogus_pkg_config" = "yes"; then
6049 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6051 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.])
6055 AC_MSG_RESULT([no, good])
6061 # Return value: $csctest
6065 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6066 if test -n "$regvalue"; then
6074 # Return value: $altest
6078 # We need this check to detect 4.6.1 or above.
6079 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6080 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6081 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6087 for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6088 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6089 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6100 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6101 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6102 if test -n "$regvalue"; then
6109 find_winsdk_version()
6111 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6112 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6114 unset winsdktest winsdkbinsubdir winsdklibsubdir
6118 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6119 if test -n "$regvalue"; then
6120 winsdktest=$regvalue
6121 winsdklibsubdir=win8
6126 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6127 if test -n "$regvalue"; then
6128 winsdktest=$regvalue
6129 winsdklibsubdir=winv6.3
6134 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6135 if test -n "$regvalue"; then
6136 winsdktest=$regvalue
6137 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6138 if test -n "$regvalue"; then
6139 winsdkbinsubdir="$regvalue".0
6140 winsdklibsubdir=$winsdkbinsubdir
6141 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6142 local tmppath_unix=$(cygpath -u "$tmppath")
6143 # test exist the SDK path
6144 if test -d "$tmppath_unix"; then
6145 # when path is convertible to a short path then path is okay
6146 cygpath -d "$tmppath" >/dev/null 2>&1
6147 if test $? -ne 0; then
6148 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6151 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6162 # Return value: From find_winsdk_version
6166 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6167 find_winsdk_version $ver
6168 if test -n "$winsdktest"; then
6176 # Return value: $msmdir
6178 AC_MSG_CHECKING([for MSVC merge modules directory])
6179 local my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm
6184 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6187 for f in $my_msm_files; do
6188 echo "$as_me:$LINENO: searching for $f" >&5
6192 for ver in 14.0 15.0; do
6193 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir
6194 if test -n "$regvalue"; then
6195 for f in ${my_msm_files}; do
6196 if test -e "$regvalue/${f}"; then
6203 dnl Is the following fallback really necessary, or was it added in response
6204 dnl to never having started Visual Studio on a given machine, so the
6205 dnl registry keys checked above had presumably not yet been created?
6206 dnl Anyway, if it really is necessary, it might be worthwhile to extend it
6207 dnl to also check %CommonProgramFiles(X86)% (typically expanding to
6208 dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles%
6209 dnl expanding to "C:\Program Files\Common Files"), which would need
6210 dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to
6211 dnl obtain its value from cygwin:
6212 if test -z "$msmdir"; then
6213 my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/"
6214 for f in ${my_msm_files}; do
6215 if test -e "$my_msm_dir/${f}"; then
6221 dnl Starting from MSVC 15.0, merge modules are located in different directory
6224 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6225 echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5
6226 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6227 for f in ${my_msm_files}; do
6228 if test -e "$my_msm_dir/${f}"; then
6237 if test -n "$msmdir"; then
6238 msmdir=`cygpath -m "$msmdir"`
6239 AC_MSG_RESULT([$msmdir])
6241 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6242 AC_MSG_FAILURE([not found])
6244 AC_MSG_WARN([not found (check config.log)])
6245 add_warning "MSM none of ${my_msm_files} found"
6250 find_msvc_x64_dlls()
6252 # Return value: $msvcdllpath, $msvcdlls
6254 AC_MSG_CHECKING([for MSVC x64 DLL path])
6255 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6258 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6259 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5
6260 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then
6261 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"
6264 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5
6265 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then
6266 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"
6272 AC_MSG_RESULT([$msvcdllpath])
6273 AC_MSG_CHECKING([for MSVC x64 DLLs])
6274 msvcdlls="msvcp140.dll vcruntime140.dll"
6275 for dll in $msvcdlls; do
6276 if ! test -f "$msvcdllpath/$dll"; then
6277 AC_MSG_FAILURE([missing $dll])
6280 AC_MSG_RESULT([found all ($msvcdlls)])
6283 dnl =========================================
6284 dnl Check for the Windows SDK.
6285 dnl =========================================
6286 if test "$_os" = "WINNT"; then
6287 AC_MSG_CHECKING([for Windows SDK])
6288 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6290 WINDOWS_SDK_HOME=$winsdktest
6292 # normalize if found
6293 if test -n "$WINDOWS_SDK_HOME"; then
6294 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6295 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6298 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6301 if test -n "$WINDOWS_SDK_HOME"; then
6302 # Remove a possible trailing backslash
6303 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6305 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6306 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6307 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6308 have_windows_sdk_headers=yes
6309 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6310 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6311 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6312 have_windows_sdk_headers=yes
6313 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6314 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6315 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6316 have_windows_sdk_headers=yes
6318 have_windows_sdk_headers=no
6321 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6322 have_windows_sdk_libs=yes
6323 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6324 have_windows_sdk_libs=yes
6326 have_windows_sdk_libs=no
6329 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6330 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6331 the Windows SDK are installed.])
6335 if test -z "$WINDOWS_SDK_HOME"; then
6336 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6337 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6338 WINDOWS_SDK_VERSION=80
6339 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6340 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6341 WINDOWS_SDK_VERSION=81
6342 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6343 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6344 WINDOWS_SDK_VERSION=10
6345 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6347 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6349 PathFormat "$WINDOWS_SDK_HOME"
6350 WINDOWS_SDK_HOME="$formatted_path"
6351 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6352 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6353 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6354 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6355 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6356 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6357 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6361 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6362 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6363 dnl but not in v8.0), so allow this to be overridden with a
6364 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6365 dnl and configuration error if no WiLangId.vbs is found would arguably be
6366 dnl better, but I do not know under which conditions exactly it is needed by
6368 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6369 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6370 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6371 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6372 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6373 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6375 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6376 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6377 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6379 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6380 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6381 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6384 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6385 if test -n "$with_package_format" -a "$with_package_format" != no; then
6386 for i in "$with_package_format"; do
6387 if test "$i" = "msi"; then
6388 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6389 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6396 AC_SUBST(WINDOWS_SDK_HOME)
6397 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6398 AC_SUBST(WINDOWS_SDK_VERSION)
6399 AC_SUBST(WINDOWS_SDK_WILANGID)
6401 if test "$build_os" = "cygwin"; then
6402 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6403 dnl dir, it also determines that dir's path w/o an arch segment if any,
6404 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6405 AC_MSG_CHECKING([for midl.exe])
6408 if test -n "$winsdkbinsubdir" \
6409 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6411 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6412 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6413 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6414 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6415 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6416 elif test -f "$winsdktest/Bin/midl.exe"; then
6417 MIDL_PATH=$winsdktest/Bin
6418 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6420 if test ! -f "$MIDL_PATH/midl.exe"; then
6421 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6423 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6426 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6427 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6429 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6430 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6431 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6432 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6433 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6434 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6435 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6436 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6437 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6438 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6439 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6440 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6442 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6446 AC_MSG_CHECKING([for csc.exe])
6448 if test -f "$csctest/csc.exe"; then
6451 if test ! -f "$CSC_PATH/csc.exe"; then
6452 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6454 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6457 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6460 AC_MSG_CHECKING([for al.exe])
6462 if test -n "$winsdkbinsubdir" \
6463 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6465 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6466 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6467 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6468 elif test -f "$winsdktest/Bin/al.exe"; then
6469 AL_PATH="$winsdktest/Bin"
6472 if test -z "$AL_PATH"; then
6474 if test -f "$altest/bin/al.exe"; then
6475 AL_PATH="$altest/bin"
6476 elif test -f "$altest/al.exe"; then
6480 if test ! -f "$AL_PATH/al.exe"; then
6481 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6483 AC_MSG_RESULT([$AL_PATH/al.exe])
6486 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6488 dnl Check mscoree.lib / .NET Framework dir
6489 AC_MSG_CHECKING(.NET Framework)
6491 PathFormat "$frametest"
6492 frametest="$formatted_path"
6493 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6494 DOTNET_FRAMEWORK_HOME="$frametest"
6497 if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6498 DOTNET_FRAMEWORK_HOME="$winsdktest"
6501 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
6502 AC_MSG_ERROR([mscoree.lib not found])
6504 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6506 PathFormat "$MIDL_PATH"
6507 MIDL_PATH="$formatted_path"
6509 PathFormat "$AL_PATH"
6510 AL_PATH="$formatted_path"
6512 PathFormat "$DOTNET_FRAMEWORK_HOME"
6513 DOTNET_FRAMEWORK_HOME="$formatted_path"
6515 PathFormat "$CSC_PATH"
6516 CSC_PATH="$formatted_path"
6519 dnl ===================================================================
6520 dnl Testing for C++ compiler and version...
6521 dnl ===================================================================
6523 if test "$_os" != "WINNT"; then
6524 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6525 save_CXXFLAGS=$CXXFLAGS
6527 CXXFLAGS=$save_CXXFLAGS
6528 if test -z "$CXX_BASE"; then
6529 CXX_BASE=`first_arg_basename "$CXX"`
6533 dnl check for GNU C++ compiler version
6534 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6535 AC_MSG_CHECKING([the GNU C++ compiler version])
6537 _gpp_version=`$CXX -dumpversion`
6538 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6540 if test "$_gpp_majmin" -lt "700"; then
6541 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6543 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6546 dnl see https://code.google.com/p/android/issues/detail?id=41770
6550 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6551 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6552 #include <bits/c++config.h>]],[[
6553 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6554 && !defined(_GLIBCXX__PTHREADS) \
6555 && !defined(_GLIBCXX_HAS_GTHREADS)
6558 ]])],[AC_MSG_RESULT([yes])
6559 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6561 if test $glibcxx_threads = yes; then
6562 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6565 AC_SUBST(BOOST_CXXFLAGS)
6568 # prefx CXX with ccache if needed
6570 if test "$CCACHE" != ""; then
6571 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6573 save_CXXFLAGS=$CXXFLAGS
6574 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6575 dnl an empty program will do, we're checking the compiler flags
6576 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6577 [use_ccache=yes], [use_ccache=no])
6578 if test $use_ccache = yes; then
6579 AC_MSG_RESULT([yes])
6582 CXX_BASE="ccache $CXX_BASE"
6585 CXXFLAGS=$save_CXXFLAGS
6589 dnl ===================================================================
6590 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6591 dnl ===================================================================
6593 if test "$_os" != "WINNT"; then
6596 dnl Check whether there's a C pre-processor.
6601 dnl ===================================================================
6602 dnl Find integral type sizes and alignments
6603 dnl ===================================================================
6605 if test "$_os" != "WINNT"; then
6607 AC_CHECK_SIZEOF(long)
6608 AC_CHECK_SIZEOF(short)
6609 AC_CHECK_SIZEOF(int)
6610 AC_CHECK_SIZEOF(long long)
6611 AC_CHECK_SIZEOF(double)
6612 AC_CHECK_SIZEOF(void*)
6614 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6615 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6616 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6617 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6618 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6620 dnl Allow build without AC_CHECK_ALIGNOF, grrr
6621 m4_pattern_allow([AC_CHECK_ALIGNOF])
6622 m4_ifdef([AC_CHECK_ALIGNOF],
6624 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6625 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6626 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6627 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6630 case "$_os-$host_cpu" in
6632 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6633 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6634 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6635 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6638 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6639 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6640 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6641 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6644 if test -z "$ac_cv_alignof_short" -o \
6645 -z "$ac_cv_alignof_int" -o \
6646 -z "$ac_cv_alignof_long" -o \
6647 -z "$ac_cv_alignof_double"; then
6648 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.])
6654 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6655 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6656 if test $ac_cv_sizeof_long -eq 8; then
6657 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6658 elif test $ac_cv_sizeof_double -eq 8; then
6659 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6661 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6664 dnl Check for large file support
6666 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6667 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6669 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6670 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6674 SAL_TYPES_SIZEOFSHORT=2
6675 SAL_TYPES_SIZEOFINT=4
6676 SAL_TYPES_SIZEOFLONG=4
6677 SAL_TYPES_SIZEOFLONGLONG=8
6678 if test $WIN_HOST_BITS -eq 32; then
6679 SAL_TYPES_SIZEOFPOINTER=4
6681 SAL_TYPES_SIZEOFPOINTER=8
6683 SAL_TYPES_ALIGNMENT2=2
6684 SAL_TYPES_ALIGNMENT4=4
6685 SAL_TYPES_ALIGNMENT8=8
6688 AC_SUBST(LFS_CFLAGS)
6690 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6691 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6692 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6693 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6694 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6695 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6696 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6697 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6699 dnl ===================================================================
6700 dnl Check whether to enable runtime optimizations
6701 dnl ===================================================================
6702 ENABLE_RUNTIME_OPTIMIZATIONS=
6703 AC_MSG_CHECKING([whether to enable runtime optimizations])
6704 if test -z "$enable_runtime_optimizations"; then
6708 enable_runtime_optimizations=no
6714 if test "$enable_runtime_optimizations" != no; then
6715 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6716 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6717 AC_MSG_RESULT([yes])
6721 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6723 dnl ===================================================================
6724 dnl Check if valgrind headers are available
6725 dnl ===================================================================
6727 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6728 prev_cppflags=$CPPFLAGS
6729 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6730 # or where does it come from?
6731 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6732 AC_CHECK_HEADER([valgrind/valgrind.h],
6733 [ENABLE_VALGRIND=TRUE])
6734 CPPFLAGS=$prev_cppflags
6736 AC_SUBST([ENABLE_VALGRIND])
6737 if test -z "$ENABLE_VALGRIND"; then
6738 if test "$with_valgrind" = yes; then
6739 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6743 AC_SUBST([VALGRIND_CFLAGS])
6746 dnl ===================================================================
6747 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6748 dnl ===================================================================
6750 # We need at least the sys/sdt.h include header.
6751 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6752 if test "$SDT_H_FOUND" = "TRUE"; then
6753 # Found sys/sdt.h header, now make sure the c++ compiler works.
6754 # Old g++ versions had problems with probes in constructors/destructors.
6755 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6757 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6758 #include <sys/sdt.h>
6766 ProbeClass(int& v, const char *n) : ref(v), name(n)
6768 DTRACE_PROBE2(_test_, cons, name, ref);
6771 void method(int min)
6773 DTRACE_PROBE3(_test_, meth, name, ref, min);
6779 DTRACE_PROBE2(_test_, dest, name, ref);
6784 DTRACE_PROBE1(_test_, call, i);
6785 ProbeClass inst = ProbeClass(i, "call");
6787 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6788 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6791 AC_CONFIG_HEADERS([config_host/config_probes.h])
6793 dnl ===================================================================
6795 dnl ===================================================================
6796 HAVE_GCC_STACK_CLASH_PROTECTION=
6797 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6798 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6800 CFLAGS="$CFLAGS -fstack-clash-protection"
6802 [AC_LANG_PROGRAM(, [[return 0;]])],
6803 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6804 [AC_MSG_RESULT([no])])
6807 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6809 CFLAGS="$CFLAGS -Werror -mno-avx"
6810 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6812 if test "$HAVE_GCC_AVX" = "TRUE"; then
6813 AC_MSG_RESULT([yes])
6818 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6819 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6821 if (__sync_add_and_fetch(&v, 1) != 1 ||
6822 __sync_sub_and_fetch(&v, 1) != 0)
6824 __sync_synchronize();
6825 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6829 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6830 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6831 AC_MSG_RESULT([yes])
6832 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
6837 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
6839 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6842 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
6844 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
6845 AC_MSG_RESULT([yes])
6846 ], [AC_MSG_RESULT([no])])
6849 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
6851 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6854 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
6856 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
6857 AC_MSG_RESULT([yes])
6858 ], [AC_MSG_RESULT([no])])
6861 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
6863 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6865 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
6867 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
6868 AC_MSG_RESULT([yes])
6869 ], [AC_MSG_RESULT([no])])
6872 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
6874 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6877 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
6879 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
6880 AC_MSG_RESULT([yes])
6881 ], [AC_MSG_RESULT([no])])
6884 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
6886 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6889 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
6891 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
6892 AC_MSG_RESULT([yes])
6893 ], [AC_MSG_RESULT([no])])
6896 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
6898 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6900 void * f() { return __cxxabiv1::__cxa_get_globals(); }
6902 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
6903 AC_MSG_RESULT([yes])
6904 ], [AC_MSG_RESULT([no])])
6907 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
6909 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6911 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
6913 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
6914 AC_MSG_RESULT([yes])
6915 ], [AC_MSG_RESULT([no])])
6918 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
6920 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6922 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
6924 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
6925 AC_MSG_RESULT([yes])
6926 ], [AC_MSG_RESULT([no])])
6929 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
6931 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6934 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
6936 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
6937 AC_MSG_RESULT([yes])
6938 ], [AC_MSG_RESULT([no])])
6941 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
6943 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6946 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
6948 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
6949 AC_MSG_RESULT([yes])
6950 ], [AC_MSG_RESULT([no])])
6954 AC_SUBST(HAVE_GCC_AVX)
6955 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
6956 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
6958 dnl ===================================================================
6959 dnl Identify the C++ library
6960 dnl ===================================================================
6962 AC_MSG_CHECKING([what the C++ library is])
6964 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6970 [CPP_LIBRARY=GLIBCXX
6971 cpp_library_name="GNU libstdc++"
6973 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6975 #ifndef _LIBCPP_VERSION
6980 cpp_library_name="LLVM libc++"
6981 AC_DEFINE([HAVE_LIBCXX])
6983 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6990 cpp_library_name="Microsoft"
6992 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
6993 AC_MSG_RESULT([$cpp_library_name])
6996 dnl ===================================================================
6998 dnl ===================================================================
6999 AC_PATH_PROG(GPERF, gperf)
7000 if test -z "$GPERF"; then
7001 AC_MSG_ERROR([gperf not found but needed. Install it.])
7003 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7004 GPERF=`cygpath -m $GPERF`
7006 AC_MSG_CHECKING([whether gperf is new enough])
7007 my_gperf_ver1=$($GPERF --version | head -n 1)
7008 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7009 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7010 if test "$my_gperf_ver3" -ge 301; then
7011 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7013 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7017 dnl ===================================================================
7018 dnl Check for system libcmis
7019 dnl ===================================================================
7020 # libcmis requires curl and we can't build curl for iOS
7021 if test $_os != iOS; then
7022 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7027 AC_SUBST(ENABLE_LIBCMIS)
7029 dnl ===================================================================
7031 dnl ===================================================================
7033 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7035 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7036 if test "$with_latest_c__" = yes; then
7037 CXXFLAGS_CXX11=-std:c++latest
7039 CXXFLAGS_CXX11=-std:c++17
7041 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -Zc:__cplusplus"
7042 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7043 my_flags='-std=c++17 -std=c++1z'
7044 if test "$with_latest_c__" = yes; then
7045 my_flags="-std=c++2b -std=c++20 -std=c++2a $my_flags"
7047 for flag in $my_flags; do
7048 if test "$COM" = MSC; then
7049 flag="-Xclang $flag"
7051 save_CXXFLAGS=$CXXFLAGS
7052 CXXFLAGS="$CXXFLAGS $flag -Werror"
7053 if test "$SYSTEM_LIBCMIS" = TRUE; then
7054 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7057 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7058 #include <algorithm>
7059 #include <functional>
7062 #if defined SYSTEM_LIBCMIS
7063 // See ucb/source/ucp/cmis/auth_provider.hxx:
7064 #if !defined __clang__
7065 #pragma GCC diagnostic push
7066 #pragma GCC diagnostic ignored "-Wdeprecated"
7067 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7069 #include <libcmis/libcmis.hxx>
7070 #if !defined __clang__
7071 #pragma GCC diagnostic pop
7075 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7076 std::sort(v.begin(), v.end(), fn);
7078 ]])],[CXXFLAGS_CXX11=$flag])
7080 CXXFLAGS=$save_CXXFLAGS
7081 if test -n "$CXXFLAGS_CXX11"; then
7086 if test -n "$CXXFLAGS_CXX11"; then
7087 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7091 AC_SUBST(CXXFLAGS_CXX11)
7093 if test "$GCC" = "yes"; then
7094 save_CXXFLAGS=$CXXFLAGS
7095 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7097 CXXFLAGS=$save_CXXFLAGS
7098 AC_SUBST(ATOMIC_LIB)
7101 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7102 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7103 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7104 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7105 dnl again towards 4.7.2:
7106 if test $CPP_LIBRARY = GLIBCXX; then
7107 AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7109 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7111 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7112 // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7113 // GCC 4.7.0: 20120322
7114 // GCC 4.7.1: 20120614
7115 // and using a range check is not possible as the mapping between
7116 // __GLIBCXX__ values and GCC versions is not monotonic
7121 ]])], [AC_MSG_RESULT(no, ok)],
7122 [AC_MSG_ERROR(yes)])
7126 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7127 save_CXXFLAGS=$CXXFLAGS
7128 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7131 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7134 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7150 a thinga[]={{0,0}, {1,1}};
7151 b thingb[]={{0,0}, {1,1}};
7152 size_t i = sizeof(sal_n_array_size(thinga));
7153 size_t j = sizeof(sal_n_array_size(thingb));
7154 return !(i != 0 && j != 0);
7156 ], [ AC_MSG_RESULT(yes) ],
7157 [ AC_MSG_ERROR(no)])
7159 CXXFLAGS=$save_CXXFLAGS
7161 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7162 if test "$GCC" = yes; then
7163 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7165 save_CXXFLAGS=$CXXFLAGS
7166 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7167 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7168 CXXFLAGS=$save_CXXFLAGS
7170 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7171 AC_MSG_RESULT([yes])
7176 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7178 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
7179 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
7180 dnl from consteval constructor initializing const variable":
7182 save_CXXFLAGS=$CXXFLAGS
7183 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7184 AC_RUN_IFELSE([AC_LANG_PROGRAM([
7186 consteval S() { i = 1; }
7191 return (s.i == 1) ? 0 : 1;
7193 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
7194 AC_MSG_RESULT([yes])
7195 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
7196 CXXFLAGS=$save_CXXFLAGS
7199 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7201 save_CXXFLAGS=$CXXFLAGS
7202 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7203 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7204 #include <algorithm>
7205 #include <initializer_list>
7207 template<typename T> class S {
7211 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7213 constinit S<int> s{3, 2, 1};
7215 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7216 AC_MSG_RESULT([yes])
7217 ], [AC_MSG_RESULT([no])])
7218 CXXFLAGS=$save_CXXFLAGS
7221 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7223 save_CXXFLAGS=$CXXFLAGS
7224 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7225 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7227 #include <type_traits>
7228 // Don't check size_type directly, as it was called index_type before P1872R0:
7229 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7231 AC_DEFINE([HAVE_CPP_SPAN],[1])
7232 AC_MSG_RESULT([yes])
7233 ], [AC_MSG_RESULT([no])])
7234 CXXFLAGS=$save_CXXFLAGS
7237 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7239 save_CXXFLAGS=$CXXFLAGS
7240 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7241 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7242 struct S1 { S1(S1 &&); };
7244 S1 f(S2 s) { return s; }
7246 AC_DEFINE([HAVE_P1155R3],[1])
7247 AC_MSG_RESULT([yes])
7248 ], [AC_MSG_RESULT([no])])
7249 CXXFLAGS=$save_CXXFLAGS
7252 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7253 dnl which is included in -Wextra anyway):
7254 HAVE_WDEPRECATED_COPY_DTOR=
7255 if test "$GCC" = yes; then
7256 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7258 save_CXXFLAGS=$CXXFLAGS
7259 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7260 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7261 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7262 AC_MSG_RESULT([yes])
7263 ], [AC_MSG_RESULT([no])])
7264 CXXFLAGS=$save_CXXFLAGS
7267 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7269 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7270 dnl uninitialized warning for code like
7273 dnl boost::optional<OString> * g(bool b) {
7274 dnl boost::optional<OString> o;
7276 dnl return new boost::optional<OString>(o);
7279 dnl (as is e.g. present, in a slightly more elaborate form, in
7280 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7281 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7282 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7283 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7284 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7286 save_CXXFLAGS=$CXXFLAGS
7287 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7288 if test "$ENABLE_OPTIMIZED" = TRUE; then
7289 CXXFLAGS="$CXXFLAGS -O2"
7291 CXXFLAGS="$CXXFLAGS -O0"
7293 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7302 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7303 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7309 char stg[sizeof (S1)];
7317 ]])], [AC_MSG_RESULT([no])], [
7318 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7319 AC_MSG_RESULT([yes])
7321 CXXFLAGS=$save_CXXFLAGS
7324 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7326 dnl ===================================================================
7327 dnl CPU Intrinsics support - SSE, AVX
7328 dnl ===================================================================
7330 CXXFLAGS_INTRINSICS_SSE2=
7331 CXXFLAGS_INTRINSICS_SSSE3=
7332 CXXFLAGS_INTRINSICS_SSE41=
7333 CXXFLAGS_INTRINSICS_SSE42=
7334 CXXFLAGS_INTRINSICS_AVX=
7335 CXXFLAGS_INTRINSICS_AVX2=
7336 CXXFLAGS_INTRINSICS_AVX512=
7337 CXXFLAGS_INTRINSICS_F16C=
7338 CXXFLAGS_INTRINSICS_FMA=
7340 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7341 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7348 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7352 # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7353 # MSVC seems to differentiate only between SSE and SSE2, where in fact
7354 # SSE2 seems to be SSE2+.
7355 # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7356 # is not empty (and can be tested in gbuild).
7357 flag_sse2=-arch:SSE2
7358 flag_ssse3=-arch:SSE2
7359 flag_sse41=-arch:SSE2
7360 flag_sse42=-arch:SSE2
7362 flag_avx2=-arch:AVX2
7363 flag_avx512=-arch:AVX512
7364 # These are part of -arch:AVX2
7365 flag_f16c=-arch:AVX2
7369 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7371 save_CXXFLAGS=$CXXFLAGS
7372 CXXFLAGS="$CXXFLAGS $flag_sse2"
7373 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7374 #include <emmintrin.h>
7376 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7377 c = _mm_xor_si128 (a, b);
7381 [can_compile_sse2=yes],
7382 [can_compile_sse2=no])
7384 CXXFLAGS=$save_CXXFLAGS
7385 AC_MSG_RESULT([${can_compile_sse2}])
7386 if test "${can_compile_sse2}" = "yes" ; then
7387 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7390 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7392 save_CXXFLAGS=$CXXFLAGS
7393 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7394 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7395 #include <tmmintrin.h>
7397 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7398 c = _mm_maddubs_epi16 (a, b);
7402 [can_compile_ssse3=yes],
7403 [can_compile_ssse3=no])
7405 CXXFLAGS=$save_CXXFLAGS
7406 AC_MSG_RESULT([${can_compile_ssse3}])
7407 if test "${can_compile_ssse3}" = "yes" ; then
7408 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7411 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7413 save_CXXFLAGS=$CXXFLAGS
7414 CXXFLAGS="$CXXFLAGS $flag_sse41"
7415 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7416 #include <smmintrin.h>
7418 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7419 c = _mm_cmpeq_epi64 (a, b);
7423 [can_compile_sse41=yes],
7424 [can_compile_sse41=no])
7426 CXXFLAGS=$save_CXXFLAGS
7427 AC_MSG_RESULT([${can_compile_sse41}])
7428 if test "${can_compile_sse41}" = "yes" ; then
7429 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7432 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7434 save_CXXFLAGS=$CXXFLAGS
7435 CXXFLAGS="$CXXFLAGS $flag_sse42"
7436 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7437 #include <nmmintrin.h>
7439 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7440 c = _mm_cmpgt_epi64 (a, b);
7444 [can_compile_sse42=yes],
7445 [can_compile_sse42=no])
7447 CXXFLAGS=$save_CXXFLAGS
7448 AC_MSG_RESULT([${can_compile_sse42}])
7449 if test "${can_compile_sse42}" = "yes" ; then
7450 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7453 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7455 save_CXXFLAGS=$CXXFLAGS
7456 CXXFLAGS="$CXXFLAGS $flag_avx"
7457 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7458 #include <immintrin.h>
7460 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7461 c = _mm256_xor_ps(a, b);
7465 [can_compile_avx=yes],
7466 [can_compile_avx=no])
7468 CXXFLAGS=$save_CXXFLAGS
7469 AC_MSG_RESULT([${can_compile_avx}])
7470 if test "${can_compile_avx}" = "yes" ; then
7471 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7474 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7476 save_CXXFLAGS=$CXXFLAGS
7477 CXXFLAGS="$CXXFLAGS $flag_avx2"
7478 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7479 #include <immintrin.h>
7481 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7482 c = _mm256_maddubs_epi16(a, b);
7486 [can_compile_avx2=yes],
7487 [can_compile_avx2=no])
7489 CXXFLAGS=$save_CXXFLAGS
7490 AC_MSG_RESULT([${can_compile_avx2}])
7491 if test "${can_compile_avx2}" = "yes" ; then
7492 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7495 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7497 save_CXXFLAGS=$CXXFLAGS
7498 CXXFLAGS="$CXXFLAGS $flag_avx512"
7499 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7500 #include <immintrin.h>
7502 __m512i a = _mm512_loadu_si512(0);
7506 [can_compile_avx512=yes],
7507 [can_compile_avx512=no])
7509 CXXFLAGS=$save_CXXFLAGS
7510 AC_MSG_RESULT([${can_compile_avx512}])
7511 if test "${can_compile_avx512}" = "yes" ; then
7512 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7515 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7517 save_CXXFLAGS=$CXXFLAGS
7518 CXXFLAGS="$CXXFLAGS $flag_f16c"
7519 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7520 #include <immintrin.h>
7522 __m128i a = _mm_set1_epi32 (0);
7524 c = _mm_cvtph_ps(a);
7528 [can_compile_f16c=yes],
7529 [can_compile_f16c=no])
7531 CXXFLAGS=$save_CXXFLAGS
7532 AC_MSG_RESULT([${can_compile_f16c}])
7533 if test "${can_compile_f16c}" = "yes" ; then
7534 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7537 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7539 save_CXXFLAGS=$CXXFLAGS
7540 CXXFLAGS="$CXXFLAGS $flag_fma"
7541 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7542 #include <immintrin.h>
7544 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7545 d = _mm256_fmadd_ps(a, b, c);
7549 [can_compile_fma=yes],
7550 [can_compile_fma=no])
7552 CXXFLAGS=$save_CXXFLAGS
7553 AC_MSG_RESULT([${can_compile_fma}])
7554 if test "${can_compile_fma}" = "yes" ; then
7555 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7558 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7559 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7560 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7561 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7562 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7563 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7564 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7565 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7566 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7568 dnl ===================================================================
7569 dnl system stl sanity tests
7570 dnl ===================================================================
7571 if test "$_os" != "WINNT"; then
7575 save_CPPFLAGS="$CPPFLAGS"
7576 if test -n "$MACOSX_SDK_PATH"; then
7577 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7580 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7582 if test "$CPP_LIBRARY" = GLIBCXX; then
7583 dnl gcc#19664, gcc#22482, rhbz#162935
7584 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7585 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7586 AC_MSG_RESULT([$stlvisok])
7587 if test "$stlvisok" = "no"; then
7588 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7592 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7593 # when we don't make any dynamic libraries?
7594 if test "$DISABLE_DYNLOADING" = ""; then
7595 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7596 cat > conftestlib1.cc <<_ACEOF
7597 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7598 struct S2: S1<int> { virtual ~S2(); };
7601 cat > conftestlib2.cc <<_ACEOF
7602 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7603 struct S2: S1<int> { virtual ~S2(); };
7604 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7606 gccvisinlineshiddenok=yes
7607 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7608 gccvisinlineshiddenok=no
7610 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7611 dnl known to not work with -z defs (unsetting which makes the test
7613 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7614 if test "$COM_IS_CLANG" = TRUE; then
7615 for i in $CXX $CXXFLAGS; do
7618 my_linkflagsnoundefs=
7624 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7625 gccvisinlineshiddenok=no
7630 AC_MSG_RESULT([$gccvisinlineshiddenok])
7631 if test "$gccvisinlineshiddenok" = "no"; then
7632 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7636 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7637 cat >visibility.cxx <<_ACEOF
7638 #pragma GCC visibility push(hidden)
7639 struct __attribute__ ((visibility ("default"))) TestStruct {
7642 __attribute__ ((visibility ("default"))) void TestFunc() {
7646 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7651 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7654 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7666 rm -f visibility.s visibility.cxx
7668 AC_MSG_RESULT([$gccvisbroken])
7669 if test "$gccvisbroken" = "yes"; then
7670 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7673 CPPFLAGS="$save_CPPFLAGS"
7678 dnl ===================================================================
7680 dnl ===================================================================
7682 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7683 if test "$GCC" = "yes"; then
7684 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7686 save_CXXFLAGS=$CXXFLAGS
7687 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7688 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7689 CXXFLAGS=$save_CXXFLAGS
7691 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7692 AC_MSG_RESULT([yes])
7697 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7699 dnl ===================================================================
7700 dnl Compiler plugins
7701 dnl ===================================================================
7704 # currently only Clang
7706 if test "$COM_IS_CLANG" != "TRUE"; then
7707 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7708 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7709 enable_compiler_plugins=no
7713 COMPILER_PLUGINS_COM_IS_CLANG=
7714 if test "$COM_IS_CLANG" = "TRUE"; then
7715 if test -n "$enable_compiler_plugins"; then
7716 compiler_plugins="$enable_compiler_plugins"
7717 elif test -n "$ENABLE_DBGUTIL"; then
7718 compiler_plugins=test
7722 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7723 if test "$CLANGVER" -lt 50002; then
7724 if test "$compiler_plugins" = yes; then
7725 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7731 if test "$compiler_plugins" != "no"; then
7732 dnl The prefix where Clang resides, override to where Clang resides if
7733 dnl using a source build:
7734 if test -z "$CLANGDIR"; then
7735 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | head -n 1)))))
7737 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7738 if test -z "$COMPILER_PLUGINS_CXX"; then
7739 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7741 clangbindir=$CLANGDIR/bin
7742 if test "$build_os" = "cygwin"; then
7743 clangbindir=$(cygpath -u "$clangbindir")
7745 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
7746 if test -n "$LLVM_CONFIG"; then
7747 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
7748 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
7749 if test -z "$CLANGLIBDIR"; then
7750 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
7752 # Try if clang is built from source (in which case its includes are not together with llvm includes).
7753 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
7754 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
7755 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
7756 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
7758 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
7759 clangobjdir=$($LLVM_CONFIG --obj-root)
7760 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
7761 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
7764 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
7768 save_CPPFLAGS=$CPPFLAGS
7769 save_CXXFLAGS=$CXXFLAGS
7770 save_LDFLAGS=$LDFLAGS
7772 CXX=$COMPILER_PLUGINS_CXX
7773 CXXCPP="$COMPILER_PLUGINS_CXX -E"
7774 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7775 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7776 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
7777 [COMPILER_PLUGINS=TRUE],
7779 if test "$compiler_plugins" = "yes"; then
7780 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
7782 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
7783 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
7786 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
7787 dnl comment in compilerplugins/Makefile-clang.mk:
7788 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
7790 AC_MSG_CHECKING([for clang libraries to use])
7791 if test -z "$CLANGTOOLLIBS"; then
7792 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
7793 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
7795 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7796 [[ clang::FullSourceLoc().dump(); ]])
7797 ],[CLANGTOOLLIBS="$LIBS"],[])
7799 if test -z "$CLANGTOOLLIBS"; then
7800 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
7802 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7803 [[ clang::FullSourceLoc().dump(); ]])
7804 ],[CLANGTOOLLIBS="$LIBS"],[])
7806 AC_MSG_RESULT([$CLANGTOOLLIBS])
7807 if test -z "$CLANGTOOLLIBS"; then
7808 if test "$compiler_plugins" = "yes"; then
7809 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
7811 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
7812 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
7816 if test -n "$COMPILER_PLUGINS"; then
7817 if test -z "$CLANGSYSINCLUDE"; then
7818 if test -n "$LLVM_CONFIG"; then
7819 # Path to the clang system headers (no idea if there's a better way to get it).
7820 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
7827 CPPFLAGS=$save_CPPFLAGS
7828 CXXFLAGS=$save_CXXFLAGS
7829 LDFLAGS=$save_LDFLAGS
7833 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
7834 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7840 [AC_MSG_RESULT([yes])
7841 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
7842 [AC_MSG_RESULT([no])])
7843 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7846 if test "$enable_compiler_plugins" = "yes"; then
7847 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
7850 COMPILER_PLUGINS_ANALYZER_PCH=
7851 if test "$enable_compiler_plugins_analyzer_pch" != no; then
7852 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
7854 AC_SUBST(COMPILER_PLUGINS)
7855 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
7856 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7857 AC_SUBST(COMPILER_PLUGINS_CXX)
7858 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
7859 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
7860 AC_SUBST(COMPILER_PLUGINS_DEBUG)
7861 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
7863 AC_SUBST(CLANGLIBDIR)
7864 AC_SUBST(CLANGTOOLLIBS)
7865 AC_SUBST(CLANGSYSINCLUDE)
7867 # Plugin to help linker.
7868 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
7869 # This makes --enable-lto build with clang work.
7872 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
7873 AC_SUBST(HAVE_POSIX_FALLOCATE)
7875 JITC_PROCESSOR_TYPE=""
7876 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
7877 # IBMs JDK needs this...
7878 JITC_PROCESSOR_TYPE=6
7879 export JITC_PROCESSOR_TYPE
7881 AC_SUBST([JITC_PROCESSOR_TYPE])
7883 # Misc Windows Stuff
7884 AC_ARG_WITH(ucrt-dir,
7885 AS_HELP_STRING([--with-ucrt-dir],
7886 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
7887 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
7888 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
7889 Windows6.1-KB2999226-x64.msu
7890 Windows6.1-KB2999226-x86.msu
7891 Windows8.1-KB2999226-x64.msu
7892 Windows8.1-KB2999226-x86.msu
7893 Windows8-RT-KB2999226-x64.msu
7894 Windows8-RT-KB2999226-x86.msu
7895 A zip archive including those files is available from Microsoft site:
7896 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
7899 UCRT_REDISTDIR="$with_ucrt_dir"
7900 if test $_os = "WINNT"; then
7902 for i in $PKGFORMAT; do
7903 if test "$i" = msi; then
7908 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
7909 MSVC_DLLS="$msvcdlls"
7910 test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
7911 # MSVC 15.3 changed it to VC141
7912 if echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
7913 SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
7914 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
7915 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
7917 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
7920 if test "$UCRT_REDISTDIR" = "no"; then
7921 dnl explicitly disabled
7924 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
7925 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
7926 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
7927 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
7928 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
7929 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
7931 if test -n "$PKGFORMAT"; then
7932 for i in $PKGFORMAT; do
7935 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
7936 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
7945 AC_SUBST(UCRT_REDISTDIR)
7946 AC_SUBST(MSVC_DLL_PATH)
7950 dnl ===================================================================
7952 dnl ===================================================================
7953 if test "$ENABLE_JAVA" != ""; then
7955 # Windows-specific tests
7956 if test "$build_os" = "cygwin"; then
7957 if test -z "$with_jdk_home"; then
7958 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
7959 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
7960 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
7961 if test -n "$regvalue"; then
7963 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
7964 reg_jdk_home=$regvalue
7967 if test -f "$reg_jdk_home/lib/jvm.lib" -a -f "$reg_jdk_home/bin/java.exe"; then
7968 with_jdk_home="$reg_jdk_home"
7969 howfound="found automatically"
7971 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option pointing to a $WIN_HOST_BITS-bit JDK >= 9])
7974 test "$build_os" = "cygwin" && with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
7975 howfound="you passed"
7979 # 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.
7980 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
7981 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
7982 with_jdk_home=`/usr/libexec/java_home`
7985 JAVA_HOME=; export JAVA_HOME
7986 if test -z "$with_jdk_home"; then
7987 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
7989 _java_path="$with_jdk_home/bin/$with_java"
7990 dnl Check if there is a Java interpreter at all.
7991 if test -x "$_java_path"; then
7992 JAVAINTERPRETER=$_java_path
7994 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
7998 dnl Check that the JDK found is correct architecture (at least 2 reasons to
7999 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8000 dnl loaded by java to run JunitTests:
8001 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8002 shortjdkhome=`cygpath -d "$with_jdk_home"`
8003 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
8004 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8005 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8006 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
8007 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8008 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8011 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8012 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8014 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8015 elif test "$cross_compiling" != "yes"; then
8017 AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8018 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8019 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8020 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8023 *) # assumption: everything else 32-bit
8024 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8025 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8026 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8033 dnl ===================================================================
8035 dnl ===================================================================
8037 # Whether all the complexity here actually is needed any more or not, no idea.
8039 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8041 AC_MSG_CHECKING([the installed JDK])
8042 if test -n "$JAVAINTERPRETER"; then
8043 dnl java -version sends output to stderr!
8044 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8045 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8046 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8047 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8048 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8049 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8050 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8051 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8055 dnl Sun JDK specific tests
8056 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8057 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8059 if test "$_jdk_ver" -lt 10900; then
8060 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8062 if test "$_jdk_ver" -gt 10900; then
8063 JAVA_CLASSPATH_NOT_SET=TRUE
8066 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8067 if test "$_os" = "WINNT"; then
8068 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8070 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8072 # set to limit VM usage for JunitTests
8074 # set to limit VM usage for javac
8075 JAVACFLAGS=-J-Xmx128M
8078 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8081 if test -z "$ENABLE_JAVA"; then
8085 elif test "$cross_compiling" = "yes"; then
8086 # Just assume compatibility of build and host JDK
8088 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8092 dnl ===================================================================
8093 dnl Checks for javac
8094 dnl ===================================================================
8095 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8096 javacompiler="javac"
8097 : ${JAVA_SOURCE_VER=8}
8098 : ${JAVA_TARGET_VER=8}
8099 if test -z "$with_jdk_home"; then
8100 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8102 _javac_path="$with_jdk_home/bin/$javacompiler"
8103 dnl Check if there is a Java compiler at all.
8104 if test -x "$_javac_path"; then
8105 JAVACOMPILER=$_javac_path
8108 if test -z "$JAVACOMPILER"; then
8109 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8111 if test "$build_os" = "cygwin"; then
8112 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8113 JAVACOMPILER="${JAVACOMPILER}.exe"
8115 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8119 dnl ===================================================================
8120 dnl Checks for javadoc
8121 dnl ===================================================================
8122 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8123 if test -z "$with_jdk_home"; then
8124 AC_PATH_PROG(JAVADOC, javadoc)
8126 _javadoc_path="$with_jdk_home/bin/javadoc"
8127 dnl Check if there is a javadoc at all.
8128 if test -x "$_javadoc_path"; then
8129 JAVADOC=$_javadoc_path
8131 AC_PATH_PROG(JAVADOC, javadoc)
8134 if test -z "$JAVADOC"; then
8135 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8137 if test "$build_os" = "cygwin"; then
8138 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8139 JAVADOC="${JAVADOC}.exe"
8141 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8144 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8145 JAVADOCISGJDOC="yes"
8149 AC_SUBST(JAVADOCISGJDOC)
8151 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8152 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8153 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8154 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8155 # try to recover first by looking whether we have an alternative
8156 # system as in Debian or newer SuSEs where following /usr/bin/javac
8157 # over /etc/alternatives/javac leads to the right bindir where we
8158 # just need to strip a bit away to get a valid JAVA_HOME
8159 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8160 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8161 # maybe only one level of symlink (e.g. on Mac)
8162 JAVA_HOME=$(readlink $JAVACOMPILER)
8163 if test "$(dirname $JAVA_HOME)" = "."; then
8164 # we've got no path to trim back
8169 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8170 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8171 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8172 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8174 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8175 if test "$JAVA_HOME" != "/usr"; then
8176 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8177 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8178 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8179 dnl Tiger already returns a JDK path...
8180 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8182 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8183 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8184 dnl that checks which version to run
8185 if test -f "$JAVA_HOME"; then
8186 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8191 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8193 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8194 if test -z "$JAVA_HOME"; then
8195 if test "x$with_jdk_home" = "x"; then
8196 cat > findhome.java <<_ACEOF
8197 [import java.io.File;
8201 public static void main(String args[])
8203 String jrelocation = System.getProperty("java.home");
8204 File jre = new File(jrelocation);
8205 System.out.println(jre.getParent());
8209 AC_MSG_CHECKING([if javac works])
8210 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8211 AC_TRY_EVAL(javac_cmd)
8212 if test $? = 0 -a -f ./findhome.class; then
8213 AC_MSG_RESULT([javac works])
8215 echo "configure: javac test failed" >&5
8216 cat findhome.java >&5
8217 AC_MSG_ERROR([javac does not work - java projects will not build!])
8219 AC_MSG_CHECKING([if gij knows its java.home])
8220 JAVA_HOME=`$JAVAINTERPRETER findhome`
8221 if test $? = 0 -a "$JAVA_HOME" != ""; then
8222 AC_MSG_RESULT([$JAVA_HOME])
8224 echo "configure: java test failed" >&5
8225 cat findhome.java >&5
8226 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8228 # clean-up after ourselves
8229 rm -f ./findhome.java ./findhome.class
8231 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8235 # now check if $JAVA_HOME is really valid
8236 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8237 case "${JAVA_HOME}" in
8238 /Library/Java/JavaVirtualMachines/*)
8241 AC_MSG_ERROR([JDK in $JAVA_HOME cannot be used in CppUnit tests - install Oracle JDK])
8244 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8245 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8246 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8247 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8248 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8249 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8250 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8253 PathFormat "$JAVA_HOME"
8254 JAVA_HOME="$formatted_path"
8257 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8260 AC_MSG_CHECKING([for JAWT lib])
8261 if test "$_os" = WINNT; then
8262 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8267 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8268 JAVA_ARCH=$my_java_arch
8283 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8284 JAVA_ARCH=$my_java_arch
8287 my_java_arch=sparcv9
8293 my_java_arch=$host_cpu
8296 # This is where JDK9 puts the library
8297 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8298 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8300 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8302 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8304 AC_MSG_RESULT([$JAWTLIB])
8308 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8312 JAVAINC="-I$JAVA_HOME/include"
8313 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8314 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8318 JAVAINC="-I$JAVA_HOME/include/win32"
8319 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8323 if test -d "$JAVA_HOME/include/darwin"; then
8324 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8326 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8331 JAVAINC="-I$JAVA_HOME/include"
8332 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8336 JAVAINC="-I$JAVA_HOME/include"
8337 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8338 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8339 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8340 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8344 JAVAINC="-I$JAVA_HOME/include"
8345 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8346 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8350 JAVAINC="-I$JAVA_HOME/include"
8351 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8352 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8356 JAVAINC="-I$JAVA_HOME/include"
8357 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8358 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8362 JAVAINC="-I$JAVA_HOME/include"
8363 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8364 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8368 JAVAINC="-I$JAVA_HOME/include"
8369 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8370 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8374 SOLARINC="$SOLARINC $JAVAINC"
8376 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8377 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8378 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8382 AC_SUBST(JAVACFLAGS)
8383 AC_SUBST(JAVACOMPILER)
8384 AC_SUBST(JAVAINTERPRETER)
8385 AC_SUBST(JAVAIFLAGS)
8386 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8387 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8389 AC_SUBST(JAVA_HOME_FOR_BUILD)
8391 AC_SUBST(JDK_FOR_BUILD)
8392 AC_SUBST(JAVA_SOURCE_VER)
8393 AC_SUBST(JAVA_TARGET_VER)
8396 dnl ===================================================================
8397 dnl Export file validation
8398 dnl ===================================================================
8399 AC_MSG_CHECKING([whether to enable export file validation])
8400 if test "$with_export_validation" != "no"; then
8401 if test -z "$ENABLE_JAVA"; then
8402 if test "$with_export_validation" = "yes"; then
8403 AC_MSG_ERROR([requested, but Java is disabled])
8405 AC_MSG_RESULT([no, as Java is disabled])
8407 elif ! test -d "${SRC_ROOT}/schema"; then
8408 if test "$with_export_validation" = "yes"; then
8409 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8411 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8414 AC_MSG_RESULT([yes])
8415 AC_DEFINE(HAVE_EXPORT_VALIDATION)
8417 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8418 if test -z "$ODFVALIDATOR"; then
8419 # remember to download the ODF toolkit with validator later
8420 AC_MSG_NOTICE([no odfvalidator found, will download it])
8421 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8422 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8424 # and fetch name of odfvalidator jar name from download.lst
8425 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8426 AC_SUBST(ODFVALIDATOR_JAR)
8428 if test -z "$ODFVALIDATOR_JAR"; then
8429 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8432 if test "$build_os" = "cygwin"; then
8433 # In case of Cygwin it will be executed from Windows,
8434 # so we need to run bash and absolute path to validator
8435 # so instead of "odfvalidator" it will be
8436 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8437 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8439 ODFVALIDATOR="sh $ODFVALIDATOR"
8441 AC_SUBST(ODFVALIDATOR)
8444 AC_PATH_PROGS(OFFICEOTRON, officeotron)
8445 if test -z "$OFFICEOTRON"; then
8446 # remember to download the officeotron with validator later
8447 AC_MSG_NOTICE([no officeotron found, will download it])
8448 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8449 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8451 # and fetch name of officeotron jar name from download.lst
8452 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8453 AC_SUBST(OFFICEOTRON_JAR)
8455 if test -z "$OFFICEOTRON_JAR"; then
8456 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8459 # check version of existing officeotron
8460 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8461 if test 0"$OFFICEOTRON_VER" -lt 704; then
8462 AC_MSG_ERROR([officeotron too old])
8465 if test "$build_os" = "cygwin"; then
8466 # In case of Cygwin it will be executed from Windows,
8467 # so we need to run bash and absolute path to validator
8468 # so instead of "odfvalidator" it will be
8469 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8470 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8472 OFFICEOTRON="sh $OFFICEOTRON"
8475 AC_SUBST(OFFICEOTRON)
8480 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8481 if test "$with_bffvalidator" != "no"; then
8482 AC_DEFINE(HAVE_BFFVALIDATOR)
8484 if test "$with_export_validation" = "no"; then
8485 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8488 if test "$with_bffvalidator" = "yes"; then
8489 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8491 BFFVALIDATOR="$with_bffvalidator"
8494 if test "$build_os" = "cygwin"; then
8495 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8496 AC_MSG_RESULT($BFFVALIDATOR)
8498 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8500 elif test -n "$BFFVALIDATOR"; then
8501 # We are not in Cygwin but need to run Windows binary with wine
8502 AC_PATH_PROGS(WINE, wine)
8504 # so swap in a shell wrapper that converts paths transparently
8505 BFFVALIDATOR_EXE="$BFFVALIDATOR"
8506 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8507 AC_SUBST(BFFVALIDATOR_EXE)
8508 AC_MSG_RESULT($BFFVALIDATOR)
8510 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8512 AC_SUBST(BFFVALIDATOR)
8517 dnl ===================================================================
8518 dnl Check for C preprocessor to use
8519 dnl ===================================================================
8520 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8521 if test -n "$with_idlc_cpp"; then
8522 AC_MSG_RESULT([$with_idlc_cpp])
8523 AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8525 AC_MSG_RESULT([ucpp])
8526 AC_MSG_CHECKING([which ucpp tp use])
8527 if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8528 AC_MSG_RESULT([external])
8529 AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8531 AC_MSG_RESULT([internal])
8532 BUILD_TYPE="$BUILD_TYPE UCPP"
8535 AC_SUBST(SYSTEM_UCPP)
8537 dnl ===================================================================
8538 dnl Check for epm (not needed for Windows)
8539 dnl ===================================================================
8540 AC_MSG_CHECKING([whether to enable EPM for packing])
8541 if test "$enable_epm" = "yes"; then
8542 AC_MSG_RESULT([yes])
8543 if test "$_os" != "WINNT"; then
8544 if test $_os = Darwin; then
8546 elif test -n "$with_epm"; then
8549 AC_PATH_PROG(EPM, epm, no)
8551 if test "$EPM" = "no" -o "$EPM" = "internal"; then
8552 AC_MSG_NOTICE([EPM will be built.])
8553 BUILD_TYPE="$BUILD_TYPE EPM"
8554 EPM=${WORKDIR}/UnpackedTarball/epm/epm
8556 # Gentoo has some epm which is something different...
8557 AC_MSG_CHECKING([whether the found epm is the right epm])
8558 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8559 AC_MSG_RESULT([yes])
8561 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8563 AC_MSG_CHECKING([epm version])
8564 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8565 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8566 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8567 AC_MSG_RESULT([OK, >= 3.7])
8569 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8570 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8575 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8576 AC_MSG_CHECKING([for rpm])
8577 for a in "$RPM" rpmbuild rpm; do
8578 $a --usage >/dev/null 2> /dev/null
8579 if test $? -eq 0; then
8583 $a --version >/dev/null 2> /dev/null
8584 if test $? -eq 0; then
8590 if test -z "$RPM"; then
8591 AC_MSG_ERROR([not found])
8592 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8593 RPM_PATH=`which $RPM`
8594 AC_MSG_RESULT([$RPM_PATH])
8595 SCPDEFS="$SCPDEFS -DWITH_RPM"
8597 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8600 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8601 AC_PATH_PROG(DPKG, dpkg, no)
8602 if test "$DPKG" = "no"; then
8603 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8606 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8607 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8608 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8609 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8610 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8611 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8612 AC_MSG_RESULT([yes])
8615 if echo "$PKGFORMAT" | $GREP -q rpm; then
8617 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8618 add_warning "the rpms will need to be installed with --nodeps"
8622 AC_MSG_WARN([the ${_pt}s will not be relocatable])
8623 add_warning "the ${_pt}s will not be relocatable"
8624 AC_MSG_WARN([if you want to make sure installation without --nodeps and
8625 relocation will work, you need to patch your epm with the
8626 patch in epm/epm-3.7.patch or build with
8627 --with-epm=internal which will build a suitable epm])
8632 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8633 AC_PATH_PROG(PKGMK, pkgmk, no)
8634 if test "$PKGMK" = "no"; then
8635 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8642 for i in $PKGFORMAT; do
8644 aix | bsd | deb | pkg | rpm | native | portable)
8646 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8656 if test "$enable_lotuswordpro" = "yes"; then
8659 AC_SUBST(ENABLE_LWP)
8661 dnl ===================================================================
8662 dnl Check for building ODK
8663 dnl ===================================================================
8664 if test "$enable_odk" = no; then
8667 if test "$with_doxygen" = no; then
8668 AC_MSG_CHECKING([for doxygen])
8672 if test "$with_doxygen" = yes; then
8673 AC_PATH_PROG([DOXYGEN], [doxygen])
8674 if test -z "$DOXYGEN"; then
8675 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8677 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8678 if ! dot -V 2>/dev/null; then
8679 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8683 AC_MSG_CHECKING([for doxygen])
8684 DOXYGEN=$with_doxygen
8685 AC_MSG_RESULT([$DOXYGEN])
8687 if test -n "$DOXYGEN"; then
8688 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8689 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8690 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8691 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8698 AC_MSG_CHECKING([whether to build the ODK])
8699 if test "$enable_odk" = "" -o "$enable_odk" != "no"; then
8700 AC_MSG_RESULT([yes])
8701 BUILD_TYPE="$BUILD_TYPE ODK"
8706 dnl ===================================================================
8707 dnl Check for system zlib
8708 dnl ===================================================================
8709 if test "$with_system_zlib" = "auto"; then
8712 with_system_zlib="$with_system_libs"
8715 if test "$enable_fuzzers" != "yes"; then
8716 with_system_zlib=yes
8724 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8725 dnl and has no pkg-config for it at least on some tinderboxes,
8726 dnl so leaving that out for now
8727 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8728 AC_MSG_CHECKING([which zlib to use])
8729 if test "$with_system_zlib" = "yes"; then
8730 AC_MSG_RESULT([external])
8732 AC_CHECK_HEADER(zlib.h, [],
8733 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8734 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8735 [AC_MSG_ERROR(zlib not found or functional)], [])
8737 AC_MSG_RESULT([internal])
8739 BUILD_TYPE="$BUILD_TYPE ZLIB"
8740 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
8741 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
8743 AC_SUBST(ZLIB_CFLAGS)
8745 AC_SUBST(SYSTEM_ZLIB)
8747 dnl ===================================================================
8748 dnl Check for system jpeg
8749 dnl ===================================================================
8750 AC_MSG_CHECKING([which libjpeg to use])
8751 if test "$with_system_jpeg" = "yes"; then
8752 AC_MSG_RESULT([external])
8754 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
8755 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
8756 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
8757 [AC_MSG_ERROR(jpeg library not found or functional)], [])
8760 AC_MSG_RESULT([internal, libjpeg-turbo])
8761 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
8762 LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo"
8763 if test "$COM" = "MSC"; then
8764 LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib"
8766 LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg"
8770 x86_64 | amd64 | i*86 | x86 | ia32)
8771 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
8772 if test -z "$NASM" -a "$build_os" = "cygwin"; then
8773 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
8774 NASM="$LODE_HOME/opt/bin/nasm"
8775 elif test -x "/opt/lo/bin/nasm"; then
8776 NASM="/opt/lo/bin/nasm"
8780 if test -n "$NASM"; then
8781 AC_MSG_CHECKING([for object file format of host system])
8783 cygwin* | mingw* | pw32* | wsl*)
8793 msdosdjgpp* | go32*)
8796 os2-emx*) # not tested
8797 objfmt='MSOMF' # obj
8799 linux*coff* | linux*oldld*)
8815 kfreebsd* | freebsd* | netbsd* | openbsd*)
8816 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
8829 solaris* | sunos* | sysv* | sco*)
8839 darwin* | rhapsody* | nextstep* | openstep* | macos*)
8854 AC_MSG_RESULT([$objfmt])
8855 if test "$objfmt" = 'ELF ?'; then
8857 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
8860 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
8862 MSOMF) NAFLAGS='-fobj -DOBJ32';;
8863 Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
8864 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
8865 COFF) NAFLAGS='-fcoff -DCOFF';;
8866 a.out) NAFLAGS='-faout -DAOUT';;
8867 BSD-a.out) NAFLAGS='-faoutb -DAOUT';;
8868 ELF) NAFLAGS='-felf -DELF';;
8869 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__';;
8870 RDF) NAFLAGS='-frdf -DRDF';;
8871 Mach-O) NAFLAGS='-fmacho -DMACHO';;
8872 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
8874 AC_MSG_RESULT([$NAFLAGS])
8876 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
8877 cat > conftest.asm << EOF
8878 [%line __oline__ "configure"
8886 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
8887 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
8890 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
8891 cat conftest.asm >&AS_MESSAGE_LOG_FD
8894 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
8900 if test -z "$NASM"; then
8902 ****************************************************************************
8903 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
8907 if test "$build_os" = "cygwin"; then
8909 install a pre-compiled binary for Win32
8911 mkdir -p /opt/lo/bin
8913 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
8916 or get and install one from http://www.nasm.us/
8918 Then re-run autogen.sh
8920 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
8921 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
8926 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
8930 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
8931 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
8938 AC_SUBST(LIBJPEG_CFLAGS)
8939 AC_SUBST(LIBJPEG_LIBS)
8940 AC_SUBST(SYSTEM_LIBJPEG)
8942 dnl ===================================================================
8943 dnl Check for system clucene
8944 dnl ===================================================================
8945 dnl we should rather be using
8946 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
8947 dnl but the contribs-lib check seems tricky
8948 AC_MSG_CHECKING([which clucene to use])
8949 if test "$with_system_clucene" = "yes"; then
8950 AC_MSG_RESULT([external])
8952 PKG_CHECK_MODULES(CLUCENE, libclucene-core)
8953 CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
8954 FilterLibs "${CLUCENE_LIBS}"
8955 CLUCENE_LIBS="${filteredlibs}"
8957 save_CXXFLAGS=$CXXFLAGS
8958 save_CPPFLAGS=$CPPFLAGS
8959 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
8960 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
8961 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
8962 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
8963 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
8964 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
8965 CXXFLAGS=$save_CXXFLAGS
8966 CPPFLAGS=$save_CPPFLAGS
8969 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
8971 AC_MSG_RESULT([internal])
8973 BUILD_TYPE="$BUILD_TYPE CLUCENE"
8975 AC_SUBST(SYSTEM_CLUCENE)
8976 AC_SUBST(CLUCENE_CFLAGS)
8977 AC_SUBST(CLUCENE_LIBS)
8979 dnl ===================================================================
8980 dnl Check for system expat
8981 dnl ===================================================================
8982 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
8984 dnl ===================================================================
8985 dnl Check for system xmlsec
8986 dnl ===================================================================
8987 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
8989 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
8990 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
8992 AC_DEFINE([ENABLE_EOT])
8993 AC_MSG_RESULT([yes])
8995 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9000 AC_SUBST([ENABLE_EOT])
9002 dnl ===================================================================
9003 dnl Check for DLP libs
9004 dnl ===================================================================
9005 AS_IF([test "$COM" = "MSC"],
9006 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9007 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9009 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9011 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9013 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9015 AS_IF([test "$COM" = "MSC"],
9016 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9017 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9019 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9021 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9023 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9024 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9026 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9028 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9030 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9032 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9033 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.17])
9035 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9036 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
9038 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9040 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9041 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9043 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9045 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9047 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9049 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9051 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9052 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9054 dnl ===================================================================
9055 dnl Check for system lcms2
9056 dnl ===================================================================
9057 if test "$with_system_lcms2" != "yes"; then
9060 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9061 if test "$GCC" = "yes"; then
9062 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9064 if test "$COM" = "MSC"; then # override the above
9065 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9068 dnl ===================================================================
9069 dnl Check for system cppunit
9070 dnl ===================================================================
9071 if test "$_os" != "Android" ; then
9072 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9075 dnl ===================================================================
9076 dnl Check whether freetype is available
9077 dnl ===================================================================
9078 if test "$test_freetype" = "yes"; then
9079 AC_MSG_CHECKING([whether freetype is available])
9080 # FreeType has 3 different kinds of versions
9081 # * release, like 2.4.10
9082 # * libtool, like 13.0.7 (this what pkg-config returns)
9084 # FreeType's docs/VERSION.DLL provides a table mapping between the three
9087 PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9088 FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9089 FilterLibs "${FREETYPE_LIBS}"
9090 FREETYPE_LIBS="${filteredlibs}"
9091 SYSTEM_FREETYPE=TRUE
9093 FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9094 if test "x$ac_config_site_64bit_host" = xYES; then
9095 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9097 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9100 AC_SUBST(FREETYPE_CFLAGS)
9101 AC_SUBST(FREETYPE_LIBS)
9102 AC_SUBST([SYSTEM_FREETYPE])
9104 # ===================================================================
9105 # Check for system libxslt
9106 # to prevent incompatibilities between internal libxml2 and external libxslt,
9107 # or vice versa, use with_system_libxml here
9108 # ===================================================================
9109 if test "$with_system_libxml" = "auto"; then
9112 with_system_libxml="$with_system_libs"
9115 if test "$enable_fuzzers" != "yes"; then
9116 with_system_libxml=yes
9118 with_system_libxml=no
9124 AC_MSG_CHECKING([which libxslt to use])
9125 if test "$with_system_libxml" = "yes"; then
9126 AC_MSG_RESULT([external])
9128 if test "$_os" = "Darwin"; then
9129 dnl make sure to use SDK path
9130 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9131 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9133 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9134 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9136 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9137 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9138 FilterLibs "${LIBXSLT_LIBS}"
9139 LIBXSLT_LIBS="${filteredlibs}"
9140 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9141 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9142 FilterLibs "${LIBEXSLT_LIBS}"
9143 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9146 dnl Check for xsltproc
9147 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9148 if test "$XSLTPROC" = "no"; then
9149 AC_MSG_ERROR([xsltproc is required])
9152 AC_MSG_RESULT([internal])
9154 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9156 AC_SUBST(SYSTEM_LIBXSLT)
9157 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9158 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9160 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9162 AC_SUBST(LIBEXSLT_CFLAGS)
9163 AC_SUBST(LIBEXSLT_LIBS)
9164 AC_SUBST(LIBXSLT_CFLAGS)
9165 AC_SUBST(LIBXSLT_LIBS)
9168 # ===================================================================
9169 # Check for system libxml
9170 # ===================================================================
9171 AC_MSG_CHECKING([which libxml to use])
9172 if test "$with_system_libxml" = "yes"; then
9173 AC_MSG_RESULT([external])
9175 if test "$_os" = "Darwin"; then
9176 dnl make sure to use SDK path
9177 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9179 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9180 elif test $_os = iOS; then
9181 dnl make sure to use SDK path
9182 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9183 LIBXML_CFLAGS="-I$usr/include/libxml2"
9184 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9186 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9187 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9188 FilterLibs "${LIBXML_LIBS}"
9189 LIBXML_LIBS="${filteredlibs}"
9192 dnl Check for xmllint
9193 AC_PATH_PROG(XMLLINT, xmllint, no)
9194 if test "$XMLLINT" = "no"; then
9195 AC_MSG_ERROR([xmllint is required])
9198 AC_MSG_RESULT([internal])
9200 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9201 if test "$COM" = "MSC"; then
9202 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9204 if test "$COM" = "MSC"; then
9205 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9207 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9208 if test "$_os" = Android; then
9209 LIBXML_LIBS="$LIBXML_LIBS -lm"
9212 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9214 AC_SUBST(SYSTEM_LIBXML)
9215 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9216 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9218 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9219 AC_SUBST(LIBXML_CFLAGS)
9220 AC_SUBST(LIBXML_LIBS)
9223 # =====================================================================
9224 # Checking for a Python interpreter with version >= 3.3.
9225 # Optionally user can pass an option to configure, i. e.
9226 # ./configure PYTHON=/usr/bin/python
9227 # =====================================================================
9228 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal; then
9229 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9230 enable_python=internal
9232 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9233 if test -n "$PYTHON"; then
9234 PYTHON_FOR_BUILD=$PYTHON
9236 # This allows a lack of system python with no error, we use internal one in that case.
9237 AM_PATH_PYTHON([3.3],, [:])
9238 # Clean PYTHON_VERSION checked below if cross-compiling
9240 if test "$PYTHON" != ":"; then
9241 PYTHON_FOR_BUILD=$PYTHON
9245 AC_SUBST(PYTHON_FOR_BUILD)
9247 # Checks for Python to use for Pyuno
9248 AC_MSG_CHECKING([which Python to use for Pyuno])
9249 case "$enable_python" in
9251 if test -z $PYTHON_FOR_BUILD; then
9252 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9253 # requirement from the choice whether to include Python stuff in the installer, but why
9255 AC_MSG_ERROR([Python is required at build time.])
9258 AC_MSG_RESULT([none])
9261 if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9262 AC_MSG_RESULT([no, overridden by --disable-scripting])
9264 elif test $build_os = cygwin; then
9265 dnl When building on Windows we don't attempt to use any installed
9266 dnl "system" Python.
9267 AC_MSG_RESULT([fully internal])
9268 enable_python=internal
9269 elif test "$cross_compiling" = yes; then
9270 AC_MSG_RESULT([system])
9271 enable_python=system
9273 # Unset variables set by the above AM_PATH_PYTHON so that
9274 # we actually do check anew.
9276 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
9277 AM_PATH_PYTHON([3.3],, [:])
9278 AC_MSG_CHECKING([which Python to use for Pyuno])
9279 if test "$PYTHON" = ":"; then
9280 if test -z "$PYTHON_FOR_BUILD"; then
9281 AC_MSG_RESULT([fully internal])
9283 AC_MSG_RESULT([internal])
9285 enable_python=internal
9287 AC_MSG_RESULT([system])
9288 enable_python=system
9293 AC_MSG_RESULT([internal])
9296 AC_MSG_RESULT([fully internal])
9297 enable_python=internal
9300 AC_MSG_RESULT([system])
9301 if test "$_os" = Darwin; then
9302 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9306 AC_MSG_ERROR([Incorrect --enable-python option])
9310 if test $enable_python != no; then
9311 BUILD_TYPE="$BUILD_TYPE PYUNO"
9314 if test $enable_python = system; then
9315 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9316 # Fallback: Accept these in the environment, or as set above
9319 elif test "$cross_compiling" != yes; then
9320 # Unset variables set by the above AM_PATH_PYTHON so that
9321 # we actually do check anew.
9322 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
9323 # This causes an error if no python command is found
9324 AM_PATH_PYTHON([3.3])
9325 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9326 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9327 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9328 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9329 if test -z "$PKG_CONFIG"; then
9330 PYTHON_CFLAGS="-I$python_include"
9331 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9332 elif $PKG_CONFIG --exists python-$python_version-embed; then
9333 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9334 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9335 elif $PKG_CONFIG --exists python-$python_version; then
9336 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9337 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9339 PYTHON_CFLAGS="-I$python_include"
9340 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9342 FilterLibs "${PYTHON_LIBS}"
9343 PYTHON_LIBS="${filteredlibs}"
9345 dnl How to find out the cross-compilation Python installation path?
9346 AC_MSG_CHECKING([for python version])
9347 AS_IF([test -n "$PYTHON_VERSION"],
9348 [AC_MSG_RESULT([$PYTHON_VERSION])],
9349 [AC_MSG_RESULT([not found])
9350 AC_MSG_ERROR([no usable python found])])
9351 test -n "$PYTHON_CFLAGS" && break
9354 dnl Check if the headers really work
9355 save_CPPFLAGS="$CPPFLAGS"
9356 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9357 AC_CHECK_HEADER(Python.h)
9358 CPPFLAGS="$save_CPPFLAGS"
9360 # let the PYTHON_FOR_BUILD match the same python installation that
9361 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9362 # better for PythonTests.
9363 PYTHON_FOR_BUILD=$PYTHON
9366 if test "$with_lxml" != no; then
9367 if test -z "$PYTHON_FOR_BUILD"; then
9370 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9373 if test "$cross_compiling" != yes ; then
9374 BUILD_TYPE="$BUILD_TYPE LXML"
9379 AC_MSG_CHECKING([for python lxml])
9380 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9381 AC_MSG_RESULT([yes])
9385 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9388 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9389 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9390 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9392 BUILD_TYPE="$BUILD_TYPE LXML"
9393 AC_MSG_RESULT([no, using internal lxml])
9396 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9404 dnl By now enable_python should be "system", "internal" or "no"
9405 case $enable_python in
9409 if test "x$ac_cv_header_Python_h" != "xyes"; then
9410 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9414 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9415 AC_MSG_CHECKING([for correct python library version])
9416 AC_RUN_IFELSE([AC_LANG_SOURCE([[
9419 int main(int argc, char **argv) {
9420 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9423 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9426 dnl FIXME Check if the Python library can be linked with, too?
9431 PYTHON_VERSION_MAJOR=3
9432 PYTHON_VERSION_MINOR=8
9433 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.4
9434 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9435 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9437 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9438 BUILD_TYPE="$BUILD_TYPE PYTHON"
9439 if test "$OS" = LINUX -o "$OS" = WNT ; then
9440 BUILD_TYPE="$BUILD_TYPE LIBFFI"
9442 # Embedded Python dies without Home set
9443 if test "$HOME" = ""; then
9452 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9456 AC_SUBST(DISABLE_PYTHON)
9457 AC_SUBST(SYSTEM_PYTHON)
9458 AC_SUBST(PYTHON_CFLAGS)
9459 AC_SUBST(PYTHON_LIBS)
9460 AC_SUBST(PYTHON_VERSION)
9461 AC_SUBST(PYTHON_VERSION_MAJOR)
9462 AC_SUBST(PYTHON_VERSION_MINOR)
9468 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9469 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9470 ENABLE_MARIADBC=TRUE
9471 AC_MSG_RESULT([yes])
9472 BUILD_TYPE="$BUILD_TYPE MARIADBC"
9476 AC_SUBST(ENABLE_MARIADBC)
9477 AC_SUBST(MARIADBC_MAJOR)
9478 AC_SUBST(MARIADBC_MINOR)
9479 AC_SUBST(MARIADBC_MICRO)
9481 if test "$ENABLE_MARIADBC" = "TRUE"; then
9482 dnl ===================================================================
9483 dnl Check for system MariaDB
9484 dnl ===================================================================
9485 AC_MSG_CHECKING([which MariaDB to use])
9486 if test "$with_system_mariadb" = "yes"; then
9487 AC_MSG_RESULT([external])
9488 SYSTEM_MARIADB_CONNECTOR_C=TRUE
9489 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9490 if test -z "$MARIADBCONFIG"; then
9491 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9492 if test -z "$MARIADBCONFIG"; then
9493 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9494 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9497 AC_MSG_CHECKING([MariaDB version])
9498 MARIADB_VERSION=`$MARIADBCONFIG --version`
9499 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9500 if test "$MARIADB_MAJOR" -ge "5"; then
9503 AC_MSG_ERROR([too old, use 5.0.x or later])
9505 AC_MSG_CHECKING([for MariaDB Client library])
9506 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9507 if test "$COM_IS_CLANG" = TRUE; then
9508 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9510 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9511 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9512 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9514 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9515 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9516 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9517 | sed -e 's|/lib64/|/lib/|')
9519 FilterLibs "${MARIADB_LIBS}"
9520 MARIADB_LIBS="${filteredlibs}"
9521 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9522 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9523 if test "$enable_bundle_mariadb" = "yes"; then
9524 AC_MSG_RESULT([yes])
9525 BUNDLE_MARIADB_CONNECTOR_C=TRUE
9526 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9528 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9530 /g' | grep -E '(mysqlclient|mariadb)')
9531 if test "$_os" = "Darwin"; then
9532 LIBMARIADB=${LIBMARIADB}.dylib
9533 elif test "$_os" = "WINNT"; then
9534 LIBMARIADB=${LIBMARIADB}.dll
9536 LIBMARIADB=${LIBMARIADB}.so
9538 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9539 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9540 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9541 AC_MSG_RESULT([found.])
9542 PathFormat "$LIBMARIADB_PATH"
9543 LIBMARIADB_PATH="$formatted_path"
9545 AC_MSG_ERROR([not found.])
9549 BUNDLE_MARIADB_CONNECTOR_C=
9552 AC_MSG_RESULT([internal])
9553 SYSTEM_MARIADB_CONNECTOR_C=
9554 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9555 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9556 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9559 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9560 AC_SUBST(MARIADB_CFLAGS)
9561 AC_SUBST(MARIADB_LIBS)
9562 AC_SUBST(LIBMARIADB)
9563 AC_SUBST(LIBMARIADB_PATH)
9564 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9567 dnl ===================================================================
9568 dnl Check for system hsqldb
9569 dnl ===================================================================
9570 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9571 HSQLDB_USE_JDBC_4_1=
9572 AC_MSG_CHECKING([which hsqldb to use])
9573 if test "$with_system_hsqldb" = "yes"; then
9574 AC_MSG_RESULT([external])
9576 if test -z $HSQLDB_JAR; then
9577 HSQLDB_JAR=/usr/share/java/hsqldb.jar
9579 if ! test -f $HSQLDB_JAR; then
9580 AC_MSG_ERROR(hsqldb.jar not found.)
9582 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9586 my $file = "$ENV{'HSQLDB_JAR'}";
9587 my $zip = Archive::Zip->new( $file );
9588 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9589 if ( $mf =~ m/Specification-Version: 1.8.*/ )
9591 push @l, split(/\n/, $mf);
9592 foreach my $line (@l)
9594 if ($line =~ m/Specification-Version:/)
9596 ($t, $version) = split (/:/,$line);
9597 $version =~ s/^\s//;
9598 ($a, $b, $c, $d) = split (/\./,$version);
9599 if ($c == "0" && $d > "8")
9614 AC_MSG_RESULT([yes])
9616 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9619 AC_MSG_RESULT([internal])
9621 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9623 AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9624 javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9625 if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9626 AC_MSG_RESULT([yes])
9627 HSQLDB_USE_JDBC_4_1=TRUE
9633 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9634 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9637 AC_SUBST(SYSTEM_HSQLDB)
9638 AC_SUBST(HSQLDB_JAR)
9639 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9641 dnl ===================================================================
9642 dnl Check for PostgreSQL stuff
9643 dnl ===================================================================
9644 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9645 if test "x$enable_postgresql_sdbc" != "xno"; then
9646 AC_MSG_RESULT([yes])
9647 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9649 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9650 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9652 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9653 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9656 postgres_interface=""
9657 if test "$with_system_postgresql" = "yes"; then
9658 postgres_interface="external PostgreSQL"
9659 SYSTEM_POSTGRESQL=TRUE
9660 if test "$_os" = Darwin; then
9662 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9663 pg_supp_path="$P_SEP$d$pg_supp_path"
9666 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9667 if test -n "$PGCONFIG"; then
9668 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9669 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9671 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9672 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9673 POSTGRESQL_LIB=$POSTGRESQL_LIBS
9675 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9678 FilterLibs "${POSTGRESQL_LIB}"
9679 POSTGRESQL_LIB="${filteredlibs}"
9681 # if/when anything else than PostgreSQL uses Kerberos,
9682 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9687 # macOS has system MIT Kerberos 5 since 10.4
9688 if test "$with_krb5" != "no"; then
9691 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9692 # that the libraries where these functions are located on macOS will change, is it?
9693 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9694 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9697 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9698 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9699 KRB5_LIBS="$KRB5_LIBS $LIBS"
9702 if test "$with_gssapi" != "no"; then
9705 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9706 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9712 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9713 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9716 Linux|GNU|*BSD|DragonFly)
9717 if test "$with_krb5" != "no"; then
9720 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9721 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9724 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9725 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9726 KRB5_LIBS="$KRB5_LIBS $LIBS"
9729 if test "$with_gssapi" != "no"; then
9732 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9733 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9739 if test "$with_krb5" = "yes"; then
9742 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9743 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9746 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9747 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9748 KRB5_LIBS="$KRB5_LIBS $LIBS"
9751 if test "$with_gssapi" = "yes"; then
9754 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9755 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9761 if test -n "$with_libpq_path"; then
9762 SYSTEM_POSTGRESQL=TRUE
9763 postgres_interface="external libpq"
9764 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
9765 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
9768 postgres_interface="internal"
9770 POSTGRESQL_INC="%OVERRIDE_ME%"
9771 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
9775 AC_MSG_CHECKING([PostgreSQL C interface])
9776 AC_MSG_RESULT([$postgres_interface])
9778 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
9779 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
9781 save_CPPFLAGS=$CPPFLAGS
9783 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
9784 LIBS="${LIBS} ${POSTGRESQL_LIB}"
9785 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
9786 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
9787 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
9789 CPPFLAGS=$save_CPPFLAGS
9792 BUILD_POSTGRESQL_SDBC=TRUE
9797 AC_SUBST(WITH_GSSAPI)
9798 AC_SUBST(GSSAPI_LIBS)
9800 AC_SUBST(BUILD_POSTGRESQL_SDBC)
9801 AC_SUBST(SYSTEM_POSTGRESQL)
9802 AC_SUBST(POSTGRESQL_INC)
9803 AC_SUBST(POSTGRESQL_LIB)
9805 dnl ===================================================================
9806 dnl Check for Firebird stuff
9807 dnl ===================================================================
9808 ENABLE_FIREBIRD_SDBC=
9809 if test "$enable_firebird_sdbc" = "yes" ; then
9810 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
9812 dnl ===================================================================
9813 dnl Check for system Firebird
9814 dnl ===================================================================
9815 AC_MSG_CHECKING([which Firebird to use])
9816 if test "$with_system_firebird" = "yes"; then
9817 AC_MSG_RESULT([external])
9818 SYSTEM_FIREBIRD=TRUE
9819 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
9820 if test -z "$FIREBIRDCONFIG"; then
9821 AC_MSG_NOTICE([No fb_config -- using pkg-config])
9822 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
9823 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
9825 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
9827 AC_MSG_NOTICE([fb_config found])
9828 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
9829 AC_MSG_CHECKING([for Firebird Client library])
9830 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
9831 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
9832 FilterLibs "${FIREBIRD_LIBS}"
9833 FIREBIRD_LIBS="${filteredlibs}"
9835 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
9836 AC_MSG_CHECKING([Firebird version])
9837 if test -n "${FIREBIRD_VERSION}"; then
9838 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
9839 FIREBIRD_MINOR=`echo $FIREBIRD_VERSION | cut -d"." -f2`
9840 if test "$FIREBIRD_MAJOR" -eq "3" -a "$FIREBIRD_MINOR" -eq "0"; then
9843 AC_MSG_ERROR([Ensure firebird 3.0.x is installed])
9846 save_CFLAGS="${CFLAGS}"
9847 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
9848 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
9849 #if defined(FB_API_VER) && FB_API_VER == 30
9850 int fb_api_is_30(void) { return 0; }
9852 #error "Wrong Firebird API version"
9853 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
9854 CFLAGS="$save_CFLAGS"
9856 ENABLE_FIREBIRD_SDBC=TRUE
9857 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9858 elif test "$enable_database_connectivity" != yes; then
9859 AC_MSG_RESULT([none])
9860 elif test "$cross_compiling" = "yes"; then
9861 AC_MSG_RESULT([none])
9863 dnl Embedded Firebird has version 3.0
9864 AC_DEFINE(HAVE_FIREBIRD_30, 1)
9865 dnl We need libatomic_ops for any non X86/X64 system
9866 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
9867 dnl ===================================================================
9868 dnl Check for system libatomic_ops
9869 dnl ===================================================================
9870 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
9871 if test "$with_system_libatomic_ops" = "yes"; then
9872 SYSTEM_LIBATOMIC_OPS=TRUE
9873 AC_CHECK_HEADERS(atomic_ops.h, [],
9874 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
9876 SYSTEM_LIBATOMIC_OPS=
9877 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
9878 LIBATOMIC_OPS_LIBS="-latomic_ops"
9879 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
9883 AC_MSG_RESULT([internal])
9885 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
9886 FIREBIRD_LIBS="-lfbclient"
9888 if test "$with_system_libtommath" = "yes"; then
9889 SYSTEM_LIBTOMMATH=TRUE
9890 dnl check for tommath presence
9892 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
9893 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
9897 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
9898 LIBTOMMATH_LIBS="-ltommath"
9899 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
9902 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
9903 ENABLE_FIREBIRD_SDBC=TRUE
9904 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9907 AC_SUBST(ENABLE_FIREBIRD_SDBC)
9908 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
9909 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
9910 AC_SUBST(LIBATOMIC_OPS_LIBS)
9911 AC_SUBST(SYSTEM_FIREBIRD)
9912 AC_SUBST(FIREBIRD_CFLAGS)
9913 AC_SUBST(FIREBIRD_LIBS)
9914 AC_SUBST(SYSTEM_LIBTOMMATH)
9915 AC_SUBST(LIBTOMMATH_CFLAGS)
9916 AC_SUBST(LIBTOMMATH_LIBS)
9918 dnl ===================================================================
9919 dnl Check for system curl
9920 dnl ===================================================================
9921 AC_MSG_CHECKING([which libcurl to use])
9922 if test "$with_system_curl" = "auto"; then
9923 with_system_curl="$with_system_libs"
9926 if test "$with_system_curl" = "yes"; then
9927 AC_MSG_RESULT([external])
9930 # First try PKGCONFIG and then fall back
9931 PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
9933 if test -n "$CURL_PKG_ERRORS"; then
9934 AC_PATH_PROG(CURLCONFIG, curl-config)
9935 if test -z "$CURLCONFIG"; then
9936 AC_MSG_ERROR([curl development files not found])
9938 CURL_LIBS=`$CURLCONFIG --libs`
9939 FilterLibs "${CURL_LIBS}"
9940 CURL_LIBS="${filteredlibs}"
9941 CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
9942 curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
9944 AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
9945 case $curl_version in
9946 dnl brackets doubled below because Autoconf uses them as m4 quote characters,
9947 dnl so they need to be doubled to end up in the configure script
9948 7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
9949 AC_MSG_RESULT([yes])
9952 AC_MSG_ERROR([no, you have $curl_version])
9959 AC_MSG_RESULT([internal])
9961 BUILD_TYPE="$BUILD_TYPE CURL"
9964 AC_SUBST(SYSTEM_CURL)
9965 AC_SUBST(CURL_CFLAGS)
9967 AC_SUBST(ENABLE_CURL)
9969 dnl ===================================================================
9970 dnl Check for system boost
9971 dnl ===================================================================
9972 AC_MSG_CHECKING([which boost to use])
9973 if test "$with_system_boost" = "yes"; then
9974 AC_MSG_RESULT([external])
9976 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
9982 save_CXXFLAGS=$CXXFLAGS
9983 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
9984 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
9985 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
9986 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
9987 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
9988 CXXFLAGS=$save_CXXFLAGS
9990 # this is in m4/ax_boost_base.m4
9991 FilterLibs "${BOOST_LDFLAGS}"
9992 BOOST_LDFLAGS="${filteredlibs}"
9994 AC_MSG_RESULT([internal])
9995 BUILD_TYPE="$BUILD_TYPE BOOST"
9997 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
9998 # use warning-suppressing wrapper headers
9999 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10001 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10004 AC_SUBST(SYSTEM_BOOST)
10006 dnl ===================================================================
10007 dnl Check for system mdds
10008 dnl ===================================================================
10009 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10011 dnl ===================================================================
10012 dnl Check for system glm
10013 dnl ===================================================================
10014 AC_MSG_CHECKING([which glm to use])
10015 if test "$with_system_glm" = "yes"; then
10016 AC_MSG_RESULT([external])
10018 AC_LANG_PUSH([C++])
10019 AC_CHECK_HEADER([glm/glm.hpp], [],
10020 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10023 AC_MSG_RESULT([internal])
10024 BUILD_TYPE="$BUILD_TYPE GLM"
10026 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10028 AC_SUBST([GLM_CFLAGS])
10029 AC_SUBST([SYSTEM_GLM])
10031 dnl ===================================================================
10032 dnl Check for system odbc
10033 dnl ===================================================================
10034 AC_MSG_CHECKING([which odbc headers to use])
10035 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
10036 AC_MSG_RESULT([external])
10037 SYSTEM_ODBC_HEADERS=TRUE
10039 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10040 save_CPPFLAGS=$CPPFLAGS
10042 PathFormat "$winsdktest"
10043 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"
10044 AC_CHECK_HEADER(sqlext.h, [],
10045 [AC_MSG_ERROR(odbc not found. install odbc)],
10046 [#include <windows.h>])
10047 CPPFLAGS=$save_CPPFLAGS
10049 AC_CHECK_HEADER(sqlext.h, [],
10050 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10052 elif test "$enable_database_connectivity" != yes; then
10053 AC_MSG_RESULT([none])
10055 AC_MSG_RESULT([internal])
10056 SYSTEM_ODBC_HEADERS=
10058 AC_SUBST(SYSTEM_ODBC_HEADERS)
10060 dnl ===================================================================
10061 dnl Enable LDAP support
10062 dnl ===================================================================
10064 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then
10065 AC_MSG_CHECKING([whether to enable LDAP support])
10066 if test "$enable_ldap" != "yes"; then
10067 AC_MSG_RESULT([no])
10071 AC_MSG_RESULT([yes])
10075 AC_SUBST(ENABLE_LDAP)
10077 dnl ===================================================================
10078 dnl Check for system openldap
10079 dnl ===================================================================
10081 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then
10082 AC_MSG_CHECKING([which openldap library to use])
10083 if test "$with_system_openldap" = "yes"; then
10084 AC_MSG_RESULT([external])
10085 SYSTEM_OPENLDAP=TRUE
10086 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10087 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10088 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10090 AC_MSG_RESULT([internal])
10092 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10095 AC_SUBST(SYSTEM_OPENLDAP)
10097 dnl ===================================================================
10098 dnl Check for system NSS
10099 dnl ===================================================================
10100 if test "$enable_fuzzers" != "yes"; then
10101 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10102 AC_DEFINE(HAVE_FEATURE_NSS)
10104 AC_DEFINE(ENABLE_NSS)
10105 elif test $_os != iOS ; then
10108 AC_SUBST(ENABLE_NSS)
10110 dnl ===================================================================
10111 dnl Check for TLS/SSL and cryptographic implementation to use
10112 dnl ===================================================================
10113 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10114 if test -n "$with_tls"; then
10117 AC_DEFINE(USE_TLS_OPENSSL)
10119 AC_MSG_RESULT([$TLS])
10121 if test "$enable_openssl" != "yes"; then
10122 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10125 # warn that OpenSSL has been selected but not all TLS code has this option
10126 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10127 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10130 AC_DEFINE(USE_TLS_NSS)
10132 AC_MSG_RESULT([$TLS])
10135 AC_MSG_RESULT([none])
10136 AC_MSG_WARN([Skipping TLS/SSL])
10140 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10142 nss - Mozilla's Network Security Services (NSS)
10147 # default to using NSS, it results in smaller oox lib
10148 AC_DEFINE(USE_TLS_NSS)
10150 AC_MSG_RESULT([$TLS])
10154 dnl ===================================================================
10155 dnl Check for system sane
10156 dnl ===================================================================
10157 AC_MSG_CHECKING([which sane header to use])
10158 if test "$with_system_sane" = "yes"; then
10159 AC_MSG_RESULT([external])
10160 AC_CHECK_HEADER(sane/sane.h, [],
10161 [AC_MSG_ERROR(sane not found. install sane)], [])
10163 AC_MSG_RESULT([internal])
10164 BUILD_TYPE="$BUILD_TYPE SANE"
10167 dnl ===================================================================
10168 dnl Check for system icu
10169 dnl ===================================================================
10176 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10177 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10178 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10179 AC_MSG_CHECKING([which icu to use])
10180 if test "$with_system_icu" = "yes"; then
10181 AC_MSG_RESULT([external])
10183 AC_LANG_PUSH([C++])
10184 AC_MSG_CHECKING([for unicode/rbbi.h])
10185 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10188 if test "$cross_compiling" != "yes"; then
10189 PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10190 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10191 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10192 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10195 if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10196 ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10197 ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10198 ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10199 AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10200 if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10201 AC_MSG_RESULT([yes])
10203 AC_MSG_RESULT([no])
10204 if test "$with_system_icu_for_build" != "force"; then
10205 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10206 You can use --with-system-icu-for-build=force to use it anyway.])
10211 if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10212 # using the system icu tools can lead to version confusion, use the
10213 # ones from the build environment when cross-compiling
10214 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10215 if test -z "$SYSTEM_GENBRK"; then
10216 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10218 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10219 if test -z "$SYSTEM_GENCCODE"; then
10220 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10222 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10223 if test -z "$SYSTEM_GENCMN"; then
10224 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10226 if test "$ICU_MAJOR" -ge "49"; then
10227 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10228 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10229 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10231 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10232 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10233 ICU_RECLASSIFIED_HEBREW_LETTER=
10237 if test "$cross_compiling" = "yes"; then
10238 if test "$ICU_MAJOR" -ge "50"; then
10239 AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10244 AC_MSG_RESULT([internal])
10246 BUILD_TYPE="$BUILD_TYPE ICU"
10247 # surprisingly set these only for "internal" (to be used by various other
10248 # external libs): the system icu-config is quite unhelpful and spits out
10249 # dozens of weird flags and also default path -I/usr/include
10250 ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10251 ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10253 if test "$ICU_MAJOR" -ge "59"; then
10254 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10255 # with -std=c++11 but not all external libraries can be built with that,
10256 # for those use a bit-compatible typedef uint16_t UChar; see
10257 # icu/source/common/unicode/umachine.h
10258 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10262 AC_SUBST(SYSTEM_ICU)
10263 AC_SUBST(SYSTEM_GENBRK)
10264 AC_SUBST(SYSTEM_GENCCODE)
10265 AC_SUBST(SYSTEM_GENCMN)
10266 AC_SUBST(ICU_MAJOR)
10267 AC_SUBST(ICU_MINOR)
10268 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10269 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10270 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10271 AC_SUBST(ICU_CFLAGS)
10273 AC_SUBST(ICU_UCHAR_TYPE)
10275 dnl ==================================================================
10277 dnl ==================================================================
10278 DEFAULT_CRASHDUMP_VALUE="true"
10279 AC_MSG_CHECKING([whether to enable breakpad])
10280 if test "$enable_breakpad" != yes; then
10281 AC_MSG_RESULT([no])
10283 AC_MSG_RESULT([yes])
10284 ENABLE_BREAKPAD="TRUE"
10285 AC_DEFINE(ENABLE_BREAKPAD)
10286 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10287 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10289 AC_MSG_CHECKING([for disable crash dump])
10290 if test "$enable_crashdump" = no; then
10291 DEFAULT_CRASHDUMP_VALUE="false"
10292 AC_MSG_RESULT([yes])
10294 AC_MSG_RESULT([no])
10297 AC_MSG_CHECKING([for crashreport config])
10298 if test "$with_symbol_config" = "no"; then
10299 BREAKPAD_SYMBOL_CONFIG="invalid"
10300 AC_MSG_RESULT([no])
10302 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10303 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10304 AC_MSG_RESULT([yes])
10306 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10308 AC_SUBST(ENABLE_BREAKPAD)
10309 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10311 dnl ==================================================================
10313 dnl ==================================================================
10314 AC_MSG_CHECKING([whether to enable fuzzers])
10315 if test "$enable_fuzzers" != yes; then
10316 AC_MSG_RESULT([no])
10318 AC_MSG_RESULT([yes])
10319 ENABLE_FUZZERS="TRUE"
10320 AC_DEFINE([ENABLE_FUZZERS],1)
10321 BUILD_TYPE="$BUILD_TYPE FUZZERS"
10323 AC_SUBST(ENABLE_FUZZERS)
10325 dnl ===================================================================
10327 dnl ===================================================================
10328 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
10329 if test "$with_system_orcus" != "yes"; then
10330 if test "$SYSTEM_BOOST" = "TRUE"; then
10331 # ===========================================================
10332 # Determine if we are going to need to link with Boost.System
10333 # ===========================================================
10334 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10335 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10336 dnl in documentation has no effect.
10337 AC_MSG_CHECKING([if we need to link with Boost.System])
10338 AC_LANG_PUSH([C++])
10339 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
10340 @%:@include <boost/version.hpp>
10342 #if BOOST_VERSION >= 105000
10343 # error yes, we need to link with Boost.System
10346 AC_MSG_RESULT([no])
10348 AC_MSG_RESULT([yes])
10354 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10355 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10356 AC_SUBST([BOOST_SYSTEM_LIB])
10357 AC_SUBST(SYSTEM_LIBORCUS)
10359 dnl ===================================================================
10361 dnl ===================================================================
10362 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10363 ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10364 ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10366 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10367 ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10368 ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10370 if test "$COM" = "MSC"; then # override the above
10371 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10372 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10375 if test "$with_system_harfbuzz" = "yes"; then
10376 if test "$with_system_graphite" = "no"; then
10377 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10379 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10381 save_CFLAGS="$CFLAGS"
10382 LIBS="$LIBS $HARFBUZZ_LIBS"
10383 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10384 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10386 CFLAGS="$save_CFLAGS"
10388 if test "$with_system_graphite" = "yes"; then
10389 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10393 AC_MSG_CHECKING([whether to use X11])
10394 dnl ***************************************
10395 dnl testing for X libraries and includes...
10396 dnl ***************************************
10397 if test "$USING_X11" = TRUE; then
10398 AC_DEFINE(HAVE_FEATURE_X11)
10400 AC_MSG_RESULT([$USING_X11])
10402 if test "$USING_X11" = TRUE; then
10405 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10407 if test -z "$x_includes"; then
10408 x_includes="default_x_includes"
10410 if test -z "$x_libraries"; then
10411 x_libraries="default_x_libraries"
10413 CFLAGS="$CFLAGS $X_CFLAGS"
10414 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10415 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10417 x_includes="no_x_includes"
10418 x_libraries="no_x_libraries"
10421 if test "$USING_X11" = TRUE; then
10422 dnl ===================================================================
10423 dnl Check for extension headers
10424 dnl ===================================================================
10425 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10426 [#include <X11/extensions/shape.h>])
10428 # vcl needs ICE and SM
10429 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10430 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10431 [AC_MSG_ERROR(ICE library not found)])
10432 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10433 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10434 [AC_MSG_ERROR(SM library not found)])
10437 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10438 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10439 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10442 dnl ===================================================================
10443 dnl Check for system Xrender
10444 dnl ===================================================================
10445 AC_MSG_CHECKING([whether to use Xrender])
10446 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10447 AC_MSG_RESULT([yes])
10448 PKG_CHECK_MODULES(XRENDER, xrender)
10449 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10450 FilterLibs "${XRENDER_LIBS}"
10451 XRENDER_LIBS="${filteredlibs}"
10452 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10453 [AC_MSG_ERROR(libXrender not found or functional)], [])
10454 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10455 [AC_MSG_ERROR(Xrender not found. install X)], [])
10457 AC_MSG_RESULT([no])
10459 AC_SUBST(XRENDER_CFLAGS)
10460 AC_SUBST(XRENDER_LIBS)
10462 dnl ===================================================================
10463 dnl Check for XRandr
10464 dnl ===================================================================
10465 AC_MSG_CHECKING([whether to enable RandR support])
10466 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10467 AC_MSG_RESULT([yes])
10468 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10469 if test "$ENABLE_RANDR" != "TRUE"; then
10470 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10471 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10473 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10474 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10475 XRANDR_LIBS="-lXrandr "
10476 ENABLE_RANDR="TRUE"
10478 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10479 FilterLibs "${XRANDR_LIBS}"
10480 XRANDR_LIBS="${filteredlibs}"
10483 AC_MSG_RESULT([no])
10485 AC_SUBST(XRANDR_CFLAGS)
10486 AC_SUBST(XRANDR_LIBS)
10487 AC_SUBST(ENABLE_RANDR)
10489 if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
10490 if test -z "$WITH_WEBDAV"; then
10494 if test $_os = iOS -o $_os = Android; then
10497 AC_MSG_CHECKING([for webdav library])
10498 case "$WITH_WEBDAV" in
10500 AC_MSG_RESULT([serf])
10501 # Check for system apr-util
10502 libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10503 ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10504 ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10505 if test "$COM" = "MSC"; then
10507 test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10508 APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10511 # Check for system serf
10512 libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"],
10513 ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"])
10514 if test "$COM" = "MSC"; then
10515 SERF_LIB_DIR="Release"
10516 test -n "${MSVC_USE_DEBUG_RUNTIME}" && SERF_LIB_DIR="Debug"
10517 SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/${SERF_LIB_DIR}/serf-1.lib"
10521 AC_MSG_RESULT([neon])
10522 # Check for system neon
10523 libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.1])
10524 if test "$with_system_neon" = "yes"; then
10525 NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10529 AC_SUBST(NEON_VERSION)
10532 AC_MSG_RESULT([none, disabled])
10536 AC_SUBST(WITH_WEBDAV)
10538 dnl ===================================================================
10539 dnl Check for disabling cve_tests
10540 dnl ===================================================================
10541 AC_MSG_CHECKING([whether to execute CVE tests])
10542 # If not explicitly enabled or disabled, default
10543 if test -z "$enable_cve_tests"; then
10546 # Default cves off for Windows with its wild and wonderful
10547 # variety of AV software kicking in and panicking
10548 enable_cve_tests=no
10552 enable_cve_tests=yes
10556 if test "$enable_cve_tests" = "no"; then
10557 AC_MSG_RESULT([no])
10558 DISABLE_CVE_TESTS=TRUE
10559 AC_SUBST(DISABLE_CVE_TESTS)
10561 AC_MSG_RESULT([yes])
10564 dnl ===================================================================
10565 dnl Check for enabling chart XShape tests
10566 dnl ===================================================================
10567 AC_MSG_CHECKING([whether to execute chart XShape tests])
10568 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10569 AC_MSG_RESULT([yes])
10570 ENABLE_CHART_TESTS=TRUE
10571 AC_SUBST(ENABLE_CHART_TESTS)
10573 AC_MSG_RESULT([no])
10576 dnl ===================================================================
10577 dnl Check for system openssl
10578 dnl ===================================================================
10580 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10581 if test "$enable_openssl" = "yes"; then
10582 AC_MSG_RESULT([no])
10583 if test "$_os" = Darwin ; then
10584 # OpenSSL is deprecated when building for 10.7 or later.
10586 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10587 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10589 with_system_openssl=no
10590 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10591 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10592 && test "$with_system_openssl" != "no"; then
10593 with_system_openssl=yes
10594 SYSTEM_OPENSSL=TRUE
10596 OPENSSL_LIBS="-lssl -lcrypto"
10598 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10600 if test "$with_system_openssl" = "yes"; then
10601 AC_MSG_CHECKING([whether openssl supports SHA512])
10603 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10604 SHA512_CTX context;
10605 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10609 AC_MSG_RESULT([yes])
10610 DISABLE_OPENSSL=TRUE
10612 # warn that although OpenSSL is disabled, system libraries may depend on it
10613 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10614 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10617 AC_SUBST([DISABLE_OPENSSL])
10619 if test "$enable_cipher_openssl_backend" = yes && test "$DISABLE_OPENSSL" = TRUE; then
10620 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10621 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10622 enable_cipher_openssl_backend=no
10624 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10627 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10628 ENABLE_CIPHER_OPENSSL_BACKEND=
10629 if test "$enable_cipher_openssl_backend" = yes; then
10630 AC_MSG_RESULT([yes])
10631 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10633 AC_MSG_RESULT([no])
10635 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10637 dnl ===================================================================
10638 dnl Check for building gnutls
10639 dnl ===================================================================
10640 AC_MSG_CHECKING([whether to use gnutls])
10641 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10642 AC_MSG_RESULT([yes])
10643 AM_PATH_LIBGCRYPT()
10644 PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10645 AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10646 available in the system to use as replacement.]]))
10647 FilterLibs "${LIBGCRYPT_LIBS}"
10648 LIBGCRYPT_LIBS="${filteredlibs}"
10650 AC_MSG_RESULT([no])
10653 AC_SUBST([LIBGCRYPT_CFLAGS])
10654 AC_SUBST([LIBGCRYPT_LIBS])
10656 dnl ===================================================================
10657 dnl Check for system redland
10658 dnl ===================================================================
10659 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10660 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10661 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10662 if test "$with_system_redland" = "yes"; then
10663 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10664 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10670 AC_SUBST(RAPTOR_MAJOR)
10671 AC_SUBST(RASQAL_MAJOR)
10672 AC_SUBST(REDLAND_MAJOR)
10674 dnl ===================================================================
10675 dnl Check for system hunspell
10676 dnl ===================================================================
10677 AC_MSG_CHECKING([which libhunspell to use])
10678 if test "$_os" = iOS; then
10679 AC_MSG_RESULT([none])
10680 elif test "$with_system_hunspell" = "yes"; then
10681 AC_MSG_RESULT([external])
10682 SYSTEM_HUNSPELL=TRUE
10683 AC_LANG_PUSH([C++])
10684 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10685 if test "$HUNSPELL_PC" != "TRUE"; then
10686 AC_CHECK_HEADER(hunspell.hxx, [],
10688 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10689 [AC_MSG_ERROR(hunspell headers not found.)], [])
10691 AC_CHECK_LIB([hunspell], [main], [:],
10692 [ AC_MSG_ERROR(hunspell library not found.) ], [])
10693 HUNSPELL_LIBS=-lhunspell
10696 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10697 FilterLibs "${HUNSPELL_LIBS}"
10698 HUNSPELL_LIBS="${filteredlibs}"
10700 AC_MSG_RESULT([internal])
10702 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10703 if test "$COM" = "MSC"; then
10704 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10706 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10708 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
10710 AC_SUBST(SYSTEM_HUNSPELL)
10711 AC_SUBST(HUNSPELL_CFLAGS)
10712 AC_SUBST(HUNSPELL_LIBS)
10714 dnl ===================================================================
10715 dnl Check for system qrcodegen
10716 dnl ===================================================================
10717 AC_MSG_CHECKING([whether to use libqrcodegen])
10718 if test "$enable_qrcodegen" = "no"; then
10719 AC_MSG_RESULT([no])
10723 AC_MSG_RESULT([yes])
10724 ENABLE_QRCODEGEN=TRUE
10725 AC_MSG_CHECKING([which libqrcodegen to use])
10726 if test "$with_system_qrcodegen" = "yes"; then
10727 AC_MSG_RESULT([external])
10728 SYSTEM_QRCODEGEN=TRUE
10729 AC_LANG_PUSH([C++])
10730 AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
10731 [AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
10732 AC_CHECK_LIB([qrcodegencpp], [main], [:],
10733 [ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
10734 QRCODEGEN_LIBS=-lqrcodegencpp
10736 QRCODEGEN_CFLAGS=$(printf '%s' "$QRCODEGEN_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10737 FilterLibs "${QRCODEGEN_LIBS}"
10738 QRCODEGEN_LIBS="${filteredlibs}"
10740 AC_MSG_RESULT([internal])
10742 BUILD_TYPE="$BUILD_TYPE QRCODEGEN"
10744 if test "$ENABLE_QRCODEGEN" = TRUE; then
10745 AC_DEFINE(ENABLE_QRCODEGEN)
10748 AC_SUBST(SYSTEM_QRCODEGEN)
10749 AC_SUBST(ENABLE_QRCODEGEN)
10750 AC_SUBST(QRCODEGEN_CFLAGS)
10751 AC_SUBST(QRCODEGEN_LIBS)
10753 dnl ===================================================================
10754 dnl Check for system box2d
10755 dnl ===================================================================
10756 AC_MSG_CHECKING([which box2d to use])
10757 if test "$with_system_box2d" = "yes"; then
10758 AC_MSG_RESULT([external])
10760 AC_LANG_PUSH([C++])
10761 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
10762 [BOX2D_H_FOUND='FALSE'])
10763 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
10765 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
10767 # fail this. there's no other alternative to check when we are here.
10768 AC_CHECK_HEADER([Box2D/Box2D.h], [],
10769 [AC_MSG_ERROR(box2d headers not found.)])
10771 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
10773 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
10774 [ AC_MSG_ERROR(box2d library not found.) ], [])
10775 BOX2D_LIBS=-l$_BOX2D_LIB
10777 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10778 FilterLibs "${BOX2D_LIBS}"
10779 BOX2D_LIBS="${filteredlibs}"
10781 AC_MSG_RESULT([internal])
10783 BUILD_TYPE="$BUILD_TYPE BOX2D"
10785 AC_SUBST(SYSTEM_BOX2D)
10786 AC_SUBST(BOX2D_CFLAGS)
10787 AC_SUBST(BOX2D_LIBS)
10789 dnl ===================================================================
10790 dnl Checking for altlinuxhyph
10791 dnl ===================================================================
10792 AC_MSG_CHECKING([which altlinuxhyph to use])
10793 if test "$with_system_altlinuxhyph" = "yes"; then
10794 AC_MSG_RESULT([external])
10796 AC_CHECK_HEADER(hyphen.h, [],
10797 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
10798 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
10799 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
10800 [#include <hyphen.h>])
10801 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
10802 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10803 if test -z "$HYPHEN_LIB"; then
10804 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
10805 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10807 if test -z "$HYPHEN_LIB"; then
10808 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
10809 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10812 AC_MSG_RESULT([internal])
10814 BUILD_TYPE="$BUILD_TYPE HYPHEN"
10815 if test "$COM" = "MSC"; then
10816 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
10818 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
10821 AC_SUBST(SYSTEM_HYPH)
10822 AC_SUBST(HYPHEN_LIB)
10824 dnl ===================================================================
10825 dnl Checking for mythes
10826 dnl ===================================================================
10827 AC_MSG_CHECKING([which mythes to use])
10828 if test "$_os" = iOS; then
10829 AC_MSG_RESULT([none])
10830 elif test "$with_system_mythes" = "yes"; then
10831 AC_MSG_RESULT([external])
10833 AC_LANG_PUSH([C++])
10834 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
10835 if test "$MYTHES_PKGCONFIG" = "no"; then
10836 AC_CHECK_HEADER(mythes.hxx, [],
10837 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
10838 AC_CHECK_LIB([mythes-1.2], [main], [:],
10839 [ MYTHES_FOUND=no], [])
10840 if test "$MYTHES_FOUND" = "no"; then
10841 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
10842 [ MYTHES_FOUND=no], [])
10844 if test "$MYTHES_FOUND" = "no"; then
10845 AC_MSG_ERROR([mythes library not found!.])
10849 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10850 FilterLibs "${MYTHES_LIBS}"
10851 MYTHES_LIBS="${filteredlibs}"
10853 AC_MSG_RESULT([internal])
10855 BUILD_TYPE="$BUILD_TYPE MYTHES"
10856 if test "$COM" = "MSC"; then
10857 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
10859 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
10862 AC_SUBST(SYSTEM_MYTHES)
10863 AC_SUBST(MYTHES_CFLAGS)
10864 AC_SUBST(MYTHES_LIBS)
10866 dnl ===================================================================
10867 dnl How should we build the linear programming solver ?
10868 dnl ===================================================================
10871 AC_MSG_CHECKING([whether to build with CoinMP])
10872 if test "$enable_coinmp" != "no"; then
10874 AC_MSG_RESULT([yes])
10875 if test "$with_system_coinmp" = "yes"; then
10877 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
10878 FilterLibs "${COINMP_LIBS}"
10879 COINMP_LIBS="${filteredlibs}"
10881 BUILD_TYPE="$BUILD_TYPE COINMP"
10884 AC_MSG_RESULT([no])
10886 AC_SUBST(ENABLE_COINMP)
10887 AC_SUBST(SYSTEM_COINMP)
10888 AC_SUBST(COINMP_CFLAGS)
10889 AC_SUBST(COINMP_LIBS)
10892 AC_MSG_CHECKING([whether to build with lpsolve])
10893 if test "$enable_lpsolve" != "no"; then
10894 ENABLE_LPSOLVE=TRUE
10895 AC_MSG_RESULT([yes])
10897 AC_MSG_RESULT([no])
10899 AC_SUBST(ENABLE_LPSOLVE)
10901 if test "$ENABLE_LPSOLVE" = TRUE; then
10902 AC_MSG_CHECKING([which lpsolve to use])
10903 if test "$with_system_lpsolve" = "yes"; then
10904 AC_MSG_RESULT([external])
10905 SYSTEM_LPSOLVE=TRUE
10906 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
10907 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
10909 # some systems need this. Like Ubuntu...
10910 AC_CHECK_LIB(m, floor)
10911 AC_CHECK_LIB(dl, dlopen)
10912 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
10913 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
10916 AC_MSG_RESULT([internal])
10918 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
10921 AC_SUBST(SYSTEM_LPSOLVE)
10923 dnl ===================================================================
10924 dnl Checking for libexttextcat
10925 dnl ===================================================================
10926 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
10927 if test "$with_system_libexttextcat" = "yes"; then
10928 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
10930 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
10932 dnl ===================================================================
10933 dnl Checking for libnumbertext
10934 dnl ===================================================================
10935 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
10936 if test "$with_system_libnumbertext" = "yes"; then
10937 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
10938 SYSTEM_LIBNUMBERTEXT=YES
10940 SYSTEM_LIBNUMBERTEXT=
10941 AC_LANG_PUSH([C++])
10942 save_CPPFLAGS=$CPPFLAGS
10943 CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
10944 AC_CHECK_HEADERS([codecvt regex])
10945 AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
10946 [ LIBNUMBERTEXT_CFLAGS=''
10947 AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
10948 Enable libnumbertext fallback (missing number to number name conversion).])
10950 CPPFLAGS=$save_CPPFLAGS
10953 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
10954 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
10955 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
10957 dnl ***************************************
10958 dnl testing libc version for Linux...
10959 dnl ***************************************
10960 if test "$_os" = "Linux"; then
10961 AC_MSG_CHECKING([whether libc is >= 2.1.1])
10962 exec 6>/dev/null # no output
10963 AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
10964 exec 6>&1 # output on again
10965 if test "$HAVE_LIBC"; then
10966 AC_MSG_RESULT([yes])
10968 AC_MSG_ERROR([no, upgrade libc])
10972 dnl =========================================
10973 dnl Check for uuidgen
10974 dnl =========================================
10975 if test "$_os" = "WINNT"; then
10976 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
10977 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
10978 UUIDGEN=uuidgen.exe
10981 AC_PATH_PROG([UUIDGEN], [uuidgen])
10982 if test -z "$UUIDGEN"; then
10983 AC_MSG_WARN([uuid is needed for building installation sets])
10987 dnl ***************************************
10988 dnl Checking for bison and flex
10989 dnl ***************************************
10990 AC_PATH_PROG(BISON, bison)
10991 if test -z "$BISON"; then
10992 AC_MSG_ERROR([no bison found in \$PATH, install it])
10994 AC_MSG_CHECKING([the bison version])
10995 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
10996 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
10997 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11000 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]
11001 dnl typedef union YYSTYPE
11004 dnl while at least 3.4.1 is know to be good:
11005 if test "$COMPILER_PLUGINS" = TRUE; then
11006 if test "$_bison_longver" -lt 2004; then
11007 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11010 if test "$_bison_longver" -lt 2000; then
11011 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11017 AC_PATH_PROG(FLEX, flex)
11018 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11019 FLEX=`cygpath -m $FLEX`
11021 if test -z "$FLEX"; then
11022 AC_MSG_ERROR([no flex found in \$PATH, install it])
11024 AC_MSG_CHECKING([the flex version])
11025 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11026 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11027 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11031 dnl ***************************************
11032 dnl Checking for patch
11033 dnl ***************************************
11034 AC_PATH_PROG(PATCH, patch)
11035 if test -z "$PATCH"; then
11036 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11039 dnl On Solaris or macOS, check if --with-gnu-patch was used
11040 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11041 if test -z "$with_gnu_patch"; then
11044 if test -x "$with_gnu_patch"; then
11045 GNUPATCH=$with_gnu_patch
11047 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11051 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11052 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11053 AC_MSG_RESULT([yes])
11055 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11061 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11062 GNUPATCH=`cygpath -m $GNUPATCH`
11065 dnl We also need to check for --with-gnu-cp
11067 if test -z "$with_gnu_cp"; then
11068 # check the place where the good stuff is hidden on Solaris...
11069 if test -x /usr/gnu/bin/cp; then
11070 GNUCP=/usr/gnu/bin/cp
11072 AC_PATH_PROGS(GNUCP, gnucp cp)
11074 if test -z $GNUCP; then
11075 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11078 if test -x "$with_gnu_cp"; then
11081 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11085 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11086 GNUCP=`cygpath -m $GNUCP`
11089 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11090 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11091 AC_MSG_RESULT([yes])
11092 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11093 AC_MSG_RESULT([yes])
11095 case "$build_os" in
11096 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11099 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11102 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11111 dnl ***************************************
11112 dnl testing assembler path
11113 dnl ***************************************
11115 if test "$_os" = "WINNT"; then
11116 case "$WIN_HOST_ARCH" in
11117 x86) assembler=ml.exe ;;
11118 x64) assembler=ml64.exe ;;
11119 arm64) assembler=armasm64.exe ;;
11122 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11123 if test -f "$MSVC_HOST_PATH/$assembler"; then
11124 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11125 AC_MSG_RESULT([$ML_EXE])
11127 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11133 dnl ===================================================================
11134 dnl We need zip and unzip
11135 dnl ===================================================================
11136 AC_PATH_PROG(ZIP, zip)
11137 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11138 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11139 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],,)
11142 AC_PATH_PROG(UNZIP, unzip)
11143 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11145 dnl ===================================================================
11146 dnl Zip must be a specific type for different build types.
11147 dnl ===================================================================
11148 if test $build_os = cygwin; then
11149 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11150 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11154 dnl ===================================================================
11155 dnl We need touch with -h option support.
11156 dnl ===================================================================
11157 AC_PATH_PROG(TOUCH, touch)
11158 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11160 if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then
11161 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],,)
11164 dnl ===================================================================
11165 dnl Check for system epoxy
11166 dnl ===================================================================
11167 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11169 dnl ===================================================================
11170 dnl Set vcl option: coordinate device in double or sal_Int32
11171 dnl ===================================================================
11173 dnl disabled for now, we don't want subtle differences between OSs
11174 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11175 dnl if test "$_os" = "Darwin" -o $_os = iOS ; then
11176 dnl AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11177 dnl AC_MSG_RESULT([double])
11179 dnl AC_MSG_RESULT([sal_Int32])
11182 dnl ===================================================================
11183 dnl Test which vclplugs have to be built.
11184 dnl ===================================================================
11186 if test "$USING_X11" != TRUE; then
11191 if test "x$enable_gtk3" = "xyes"; then
11193 AC_DEFINE(ENABLE_GTK3)
11196 AC_SUBST(ENABLE_GTK3)
11198 ENABLE_GTK3_KDE5=""
11199 if test "x$enable_gtk3_kde5" = "xyes"; then
11200 ENABLE_GTK3_KDE5="TRUE"
11201 AC_DEFINE(ENABLE_GTK3_KDE5)
11204 AC_SUBST(ENABLE_GTK3_KDE5)
11207 if test "x$enable_qt5" = "xyes"; then
11209 AC_DEFINE(ENABLE_QT5)
11212 AC_SUBST(ENABLE_QT5)
11215 if test "x$enable_kf5" = "xyes"; then
11217 AC_DEFINE(ENABLE_KF5)
11220 AC_SUBST(ENABLE_KF5)
11224 if test "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11225 if test "$with_system_cairo" = no; then
11226 add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11228 : ${with_system_cairo:=yes}
11229 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)
11230 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11231 FilterLibs "${GTK3_LIBS}"
11232 GTK3_LIBS="${filteredlibs}"
11234 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11235 if test "$with_system_epoxy" != "yes"; then
11236 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11237 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11238 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11241 AC_SUBST(GTK3_LIBS)
11242 AC_SUBST(GTK3_CFLAGS)
11244 if test "$enable_introspection" = yes; then
11245 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11246 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11248 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11252 if test "$_os" = "WINNT"; then
11254 elif test "$_os" = "Darwin"; then
11256 elif test "$_os" = "iOS"; then
11260 build_vcl_plugins="$R"
11261 if test -z "$build_vcl_plugins"; then
11262 build_vcl_plugins="none"
11264 AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins])
11266 dnl ===================================================================
11267 dnl check for dbus support
11268 dnl ===================================================================
11272 DBUS_GLIB_CFLAGS=""
11276 if test "$enable_dbus" = "no"; then
11280 AC_MSG_CHECKING([whether to enable DBUS support])
11281 if test "$test_dbus" = "yes"; then
11283 AC_MSG_RESULT([yes])
11284 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11285 AC_DEFINE(ENABLE_DBUS)
11286 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11287 FilterLibs "${DBUS_LIBS}"
11288 DBUS_LIBS="${filteredlibs}"
11290 # Glib is needed for BluetoothServer
11291 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11292 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11294 DBUS_HAVE_GLIB="TRUE"
11295 AC_DEFINE(DBUS_HAVE_GLIB,1)
11297 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11300 AC_MSG_RESULT([no])
11303 AC_SUBST(ENABLE_DBUS)
11304 AC_SUBST(DBUS_CFLAGS)
11305 AC_SUBST(DBUS_LIBS)
11306 AC_SUBST(DBUS_GLIB_CFLAGS)
11307 AC_SUBST(DBUS_GLIB_LIBS)
11308 AC_SUBST(DBUS_HAVE_GLIB)
11310 AC_MSG_CHECKING([whether to enable Impress remote control])
11311 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11312 AC_MSG_RESULT([yes])
11313 ENABLE_SDREMOTE=TRUE
11314 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11316 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11317 # The Bluetooth code doesn't compile with macOS SDK 10.15
11318 if test "$enable_sdremote_bluetooth" = yes; then
11319 AC_MSG_ERROR([macOS SDK $with_macosx_sdk does not currently support --enable-sdremote-bluetooth])
11321 enable_sdremote_bluetooth=no
11323 # If not explicitly enabled or disabled, default
11324 if test -z "$enable_sdremote_bluetooth"; then
11327 # Default to yes for these
11328 enable_sdremote_bluetooth=yes
11332 enable_sdremote_bluetooth=no
11336 # $enable_sdremote_bluetooth is guaranteed non-empty now
11338 if test "$enable_sdremote_bluetooth" != "no"; then
11339 if test "$OS" = "LINUX"; then
11340 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11341 AC_MSG_RESULT([yes])
11342 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11343 dnl ===================================================================
11344 dnl Check for system bluez
11345 dnl ===================================================================
11346 AC_MSG_CHECKING([which Bluetooth header to use])
11347 if test "$with_system_bluez" = "yes"; then
11348 AC_MSG_RESULT([external])
11349 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11350 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11353 AC_MSG_RESULT([internal])
11357 AC_MSG_RESULT([no, dbus disabled])
11358 ENABLE_SDREMOTE_BLUETOOTH=
11362 AC_MSG_RESULT([yes])
11363 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11367 AC_MSG_RESULT([no])
11368 ENABLE_SDREMOTE_BLUETOOTH=
11374 AC_MSG_RESULT([no])
11376 AC_SUBST(ENABLE_SDREMOTE)
11377 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11378 AC_SUBST(SYSTEM_BLUEZ)
11380 dnl ===================================================================
11381 dnl Check whether to enable GIO support
11382 dnl ===================================================================
11383 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11384 AC_MSG_CHECKING([whether to enable GIO support])
11385 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11386 dnl Need at least 2.26 for the dbus support.
11387 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11388 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11389 if test "$ENABLE_GIO" = "TRUE"; then
11390 AC_DEFINE(ENABLE_GIO)
11391 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11392 FilterLibs "${GIO_LIBS}"
11393 GIO_LIBS="${filteredlibs}"
11396 AC_MSG_RESULT([no])
11399 AC_SUBST(ENABLE_GIO)
11400 AC_SUBST(GIO_CFLAGS)
11404 dnl ===================================================================
11406 SPLIT_APP_MODULES=""
11407 if test "$enable_split_app_modules" = "yes"; then
11408 SPLIT_APP_MODULES="TRUE"
11410 AC_SUBST(SPLIT_APP_MODULES)
11412 SPLIT_OPT_FEATURES=""
11413 if test "$enable_split_opt_features" = "yes"; then
11414 SPLIT_OPT_FEATURES="TRUE"
11416 AC_SUBST(SPLIT_OPT_FEATURES)
11418 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then
11419 if test "$enable_cairo_canvas" = yes; then
11420 AC_MSG_ERROR([The cairo canvas should not be used for this platform])
11422 enable_cairo_canvas=no
11423 elif test -z "$enable_cairo_canvas"; then
11424 enable_cairo_canvas=yes
11427 ENABLE_CAIRO_CANVAS=""
11428 if test "$enable_cairo_canvas" = "yes"; then
11430 ENABLE_CAIRO_CANVAS="TRUE"
11431 AC_DEFINE(ENABLE_CAIRO_CANVAS)
11433 AC_SUBST(ENABLE_CAIRO_CANVAS)
11435 dnl ===================================================================
11436 dnl Check whether the GStreamer libraries are available.
11437 dnl ===================================================================
11439 ENABLE_GSTREAMER_1_0=""
11441 if test "$build_gstreamer_1_0" = "yes"; then
11443 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11444 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11445 ENABLE_GSTREAMER_1_0="TRUE"
11446 AC_MSG_RESULT([yes])
11447 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11448 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11449 FilterLibs "${GSTREAMER_1_0_LIBS}"
11450 GSTREAMER_1_0_LIBS="${filteredlibs}"
11451 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11453 AC_MSG_RESULT([no])
11456 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11457 AC_SUBST(GSTREAMER_1_0_LIBS)
11458 AC_SUBST(ENABLE_GSTREAMER_1_0)
11460 dnl ===================================================================
11461 dnl Check whether to build the VLC avmedia backend
11462 dnl ===================================================================
11466 AC_MSG_CHECKING([whether to enable the VLC avmedia backend])
11467 if test "$enable_avmedia" = yes -a $_os != iOS -a $_os != Android -a "$enable_vlc" = yes; then
11469 AC_MSG_RESULT([yes])
11471 AC_MSG_RESULT([no])
11473 AC_SUBST(ENABLE_VLC)
11475 ENABLE_OPENGL_TRANSITIONS=
11476 ENABLE_OPENGL_CANVAS=
11477 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11479 elif test "$_os" = "Darwin"; then
11480 # We use frameworks on macOS, no need for detail checks
11481 ENABLE_OPENGL_TRANSITIONS=TRUE
11482 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11483 ENABLE_OPENGL_CANVAS=TRUE
11484 elif test $_os = WINNT; then
11485 ENABLE_OPENGL_TRANSITIONS=TRUE
11486 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11487 ENABLE_OPENGL_CANVAS=TRUE
11489 if test "$USING_X11" = TRUE; then
11490 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11491 ENABLE_OPENGL_TRANSITIONS=TRUE
11492 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11493 ENABLE_OPENGL_CANVAS=TRUE
11497 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11498 AC_SUBST(ENABLE_OPENGL_CANVAS)
11500 dnl =================================================
11501 dnl Check whether to build with OpenCL support.
11502 dnl =================================================
11504 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11505 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11506 # platform (optional at run-time, used through clew).
11507 BUILD_TYPE="$BUILD_TYPE OPENCL"
11508 AC_DEFINE(HAVE_FEATURE_OPENCL)
11511 dnl =================================================
11512 dnl Check whether to build with dconf support.
11513 dnl =================================================
11515 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11516 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11517 if test "$enable_dconf" = yes; then
11518 AC_MSG_ERROR([dconf not found])
11523 AC_MSG_CHECKING([whether to enable dconf])
11524 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11528 AC_MSG_RESULT([no])
11531 AC_DEFINE(ENABLE_DCONF)
11532 AC_MSG_RESULT([yes])
11534 AC_SUBST([DCONF_CFLAGS])
11535 AC_SUBST([DCONF_LIBS])
11536 AC_SUBST([ENABLE_DCONF])
11539 AC_MSG_CHECKING([whether to build the PDF import feature])
11541 if test $_os != iOS -a \( -z "$enable_pdfimport" -o "$enable_pdfimport" = yes \); then
11542 AC_MSG_RESULT([yes])
11543 ENABLE_PDFIMPORT=TRUE
11544 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11546 AC_MSG_RESULT([no])
11550 AC_MSG_CHECKING([whether to build PDFium])
11552 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11553 AC_MSG_RESULT([yes])
11555 AC_DEFINE(HAVE_FEATURE_PDFIUM)
11556 BUILD_TYPE="$BUILD_TYPE PDFIUM"
11558 AC_MSG_RESULT([no])
11560 AC_SUBST(ENABLE_PDFIUM)
11562 dnl ===================================================================
11563 dnl Check for poppler
11564 dnl ===================================================================
11566 AC_MSG_CHECKING([whether to build Poppler])
11567 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11568 AC_MSG_RESULT([yes])
11569 ENABLE_POPPLER=TRUE
11570 AC_DEFINE(HAVE_FEATURE_POPPLER)
11572 AC_MSG_RESULT([no])
11574 AC_SUBST(ENABLE_POPPLER)
11576 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11577 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11580 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11581 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11584 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11585 dnl ===================================================================
11586 dnl Check for system poppler
11587 dnl ===================================================================
11588 AC_MSG_CHECKING([which PDF import poppler to use])
11589 if test "$with_system_poppler" = "yes"; then
11590 AC_MSG_RESULT([external])
11591 SYSTEM_POPPLER=TRUE
11592 PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11593 AC_LANG_PUSH([C++])
11594 save_CXXFLAGS=$CXXFLAGS
11595 save_CPPFLAGS=$CPPFLAGS
11596 CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11597 CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11598 AC_CHECK_HEADER([cpp/poppler-version.h],
11599 [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11601 CXXFLAGS=$save_CXXFLAGS
11602 CPPFLAGS=$save_CPPFLAGS
11604 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11606 FilterLibs "${POPPLER_LIBS}"
11607 POPPLER_LIBS="${filteredlibs}"
11609 AC_MSG_RESULT([internal])
11611 BUILD_TYPE="$BUILD_TYPE POPPLER"
11612 AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11614 AC_DEFINE([ENABLE_PDFIMPORT],1)
11616 AC_SUBST(ENABLE_PDFIMPORT)
11617 AC_SUBST(SYSTEM_POPPLER)
11618 AC_SUBST(POPPLER_CFLAGS)
11619 AC_SUBST(POPPLER_LIBS)
11622 AC_MSG_CHECKING([whether to build Skia])
11624 if test "$enable_skia" != "no" -a "$build_skia" = "yes"; then
11625 if test "$enable_skia" = "debug"; then
11626 AC_MSG_RESULT([yes (debug)])
11627 ENABLE_SKIA_DEBUG=TRUE
11629 AC_MSG_RESULT([yes])
11633 AC_DEFINE(HAVE_FEATURE_SKIA)
11634 BUILD_TYPE="$BUILD_TYPE SKIA"
11636 AC_MSG_RESULT([no])
11638 AC_SUBST(ENABLE_SKIA)
11639 AC_SUBST(ENABLE_SKIA_DEBUG)
11641 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11642 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11643 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11644 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11645 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11646 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11647 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11648 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11649 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11651 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE -a ! \( "$_os" = "WINNT" -a "$CPUNAME" = "ARM64" \); then
11652 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11653 AC_MSG_CHECKING([for Clang])
11654 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
11656 if test "$_os" = "WINNT"; then
11657 AC_MSG_CHECKING([for clang-cl])
11658 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
11659 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
11660 dnl explicitly set -m32/-m64
11661 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
11662 LO_CLANG_CXX="$LO_CLANG_CC"
11663 AC_MSG_RESULT([$LO_CLANG_CC])
11665 AC_MSG_RESULT([no])
11668 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
11669 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
11672 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11673 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
11674 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
11675 if test "$clang2_ver" -lt 50002; then
11676 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
11681 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
11682 # Skia is the default on Windows, so hard-require Clang.
11683 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
11684 if test "$_os" = "WINNT"; then
11685 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
11687 AC_MSG_WARN([Clang compiler not found.])
11692 CXX="$LO_CLANG_CXX"
11693 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
11696 flag_sse41=-msse4.1
11697 flag_sse42=-msse4.2
11700 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
11704 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
11705 AC_LANG_PUSH([C++])
11706 save_CXXFLAGS=$CXXFLAGS
11707 CXXFLAGS="$CXXFLAGS $flag_sse2"
11708 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11709 #include <emmintrin.h>
11711 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11712 c = _mm_xor_si128 (a, b);
11716 [can_compile_sse2=yes],
11717 [can_compile_sse2=no])
11719 CXXFLAGS=$save_CXXFLAGS
11720 AC_MSG_RESULT([${can_compile_sse2}])
11721 if test "${can_compile_sse2}" = "yes" ; then
11722 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
11725 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
11726 AC_LANG_PUSH([C++])
11727 save_CXXFLAGS=$CXXFLAGS
11728 CXXFLAGS="$CXXFLAGS $flag_ssse3"
11729 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11730 #include <tmmintrin.h>
11732 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11733 c = _mm_maddubs_epi16 (a, b);
11737 [can_compile_ssse3=yes],
11738 [can_compile_ssse3=no])
11740 CXXFLAGS=$save_CXXFLAGS
11741 AC_MSG_RESULT([${can_compile_ssse3}])
11742 if test "${can_compile_ssse3}" = "yes" ; then
11743 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
11746 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
11747 AC_LANG_PUSH([C++])
11748 save_CXXFLAGS=$CXXFLAGS
11749 CXXFLAGS="$CXXFLAGS $flag_sse41"
11750 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11751 #include <smmintrin.h>
11753 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11754 c = _mm_cmpeq_epi64 (a, b);
11758 [can_compile_sse41=yes],
11759 [can_compile_sse41=no])
11761 CXXFLAGS=$save_CXXFLAGS
11762 AC_MSG_RESULT([${can_compile_sse41}])
11763 if test "${can_compile_sse41}" = "yes" ; then
11764 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
11767 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
11768 AC_LANG_PUSH([C++])
11769 save_CXXFLAGS=$CXXFLAGS
11770 CXXFLAGS="$CXXFLAGS $flag_sse42"
11771 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11772 #include <nmmintrin.h>
11774 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11775 c = _mm_cmpgt_epi64 (a, b);
11779 [can_compile_sse42=yes],
11780 [can_compile_sse42=no])
11782 CXXFLAGS=$save_CXXFLAGS
11783 AC_MSG_RESULT([${can_compile_sse42}])
11784 if test "${can_compile_sse42}" = "yes" ; then
11785 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
11788 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
11789 AC_LANG_PUSH([C++])
11790 save_CXXFLAGS=$CXXFLAGS
11791 CXXFLAGS="$CXXFLAGS $flag_avx"
11792 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11793 #include <immintrin.h>
11795 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
11796 c = _mm256_xor_ps(a, b);
11800 [can_compile_avx=yes],
11801 [can_compile_avx=no])
11803 CXXFLAGS=$save_CXXFLAGS
11804 AC_MSG_RESULT([${can_compile_avx}])
11805 if test "${can_compile_avx}" = "yes" ; then
11806 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
11809 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
11810 AC_LANG_PUSH([C++])
11811 save_CXXFLAGS=$CXXFLAGS
11812 CXXFLAGS="$CXXFLAGS $flag_avx2"
11813 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11814 #include <immintrin.h>
11816 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
11817 c = _mm256_maddubs_epi16(a, b);
11821 [can_compile_avx2=yes],
11822 [can_compile_avx2=no])
11824 CXXFLAGS=$save_CXXFLAGS
11825 AC_MSG_RESULT([${can_compile_avx2}])
11826 if test "${can_compile_avx2}" = "yes" ; then
11827 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
11830 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
11831 AC_LANG_PUSH([C++])
11832 save_CXXFLAGS=$CXXFLAGS
11833 CXXFLAGS="$CXXFLAGS $flag_avx512"
11834 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11835 #include <immintrin.h>
11837 __m512i a = _mm512_loadu_si512(0);
11841 [can_compile_avx512=yes],
11842 [can_compile_avx512=no])
11844 CXXFLAGS=$save_CXXFLAGS
11845 AC_MSG_RESULT([${can_compile_avx512}])
11846 if test "${can_compile_avx512}" = "yes" ; then
11847 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
11850 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
11851 AC_LANG_PUSH([C++])
11852 save_CXXFLAGS=$CXXFLAGS
11853 CXXFLAGS="$CXXFLAGS $flag_f16c"
11854 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11855 #include <immintrin.h>
11857 __m128i a = _mm_set1_epi32 (0);
11859 c = _mm_cvtph_ps(a);
11863 [can_compile_f16c=yes],
11864 [can_compile_f16c=no])
11866 CXXFLAGS=$save_CXXFLAGS
11867 AC_MSG_RESULT([${can_compile_f16c}])
11868 if test "${can_compile_f16c}" = "yes" ; then
11869 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
11872 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
11873 AC_LANG_PUSH([C++])
11874 save_CXXFLAGS=$CXXFLAGS
11875 CXXFLAGS="$CXXFLAGS $flag_fma"
11876 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11877 #include <immintrin.h>
11879 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
11880 d = _mm256_fmadd_ps(a, b, c);
11884 [can_compile_fma=yes],
11885 [can_compile_fma=no])
11887 CXXFLAGS=$save_CXXFLAGS
11888 AC_MSG_RESULT([${can_compile_fma}])
11889 if test "${can_compile_fma}" = "yes" ; then
11890 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
11897 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
11899 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11900 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
11904 save_CFLAGS=$CFLAGS
11905 CFLAGS="$CFLAGS --ccache-skip -O2"
11906 dnl an empty program will do, we're checking the compiler flags
11907 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11908 [use_ccache=yes], [use_ccache=no])
11909 CFLAGS=$save_CFLAGS
11911 if test $use_ccache = yes; then
11912 AC_MSG_RESULT([yes])
11914 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
11915 AC_MSG_RESULT([no])
11919 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
11920 AC_LANG_PUSH([C++])
11922 CXX="$LO_CLANG_CXX"
11923 save_CXXFLAGS=$CXXFLAGS
11924 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
11925 dnl an empty program will do, we're checking the compiler flags
11926 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11927 [use_ccache=yes], [use_ccache=no])
11928 if test $use_ccache = yes; then
11929 AC_MSG_RESULT([yes])
11931 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
11932 AC_MSG_RESULT([no])
11934 CXXFLAGS=$save_CXXFLAGS
11939 AC_SUBST(LO_CLANG_CC)
11940 AC_SUBST(LO_CLANG_CXX)
11941 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
11942 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
11943 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
11944 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
11945 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
11946 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
11947 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
11948 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
11949 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
11950 AC_SUBST(CLANG_USE_LD)
11954 if test "$enable_gpgmepp" = no; then
11955 AC_MSG_CHECKING([whether to enable gpgmepp])
11956 AC_MSG_RESULT([no])
11957 elif test "$enable_mpl_subset" = "yes"; then
11958 AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
11959 AC_MSG_RESULT([yes])
11960 elif test "$enable_fuzzers" = "yes"; then
11961 AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
11962 AC_MSG_RESULT([yes])
11963 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
11964 dnl ===================================================================
11965 dnl Check for system gpgme
11966 dnl ===================================================================
11967 AC_MSG_CHECKING([which gpgmepp to use])
11968 if test "$with_system_gpgmepp" = "yes"; then
11969 AC_MSG_RESULT([external])
11970 SYSTEM_GPGMEPP=TRUE
11972 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
11973 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
11974 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
11975 # progress_callback is the only func with plain C linkage
11976 # checking for it also filters out older, KDE-dependent libgpgmepp versions
11977 AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
11978 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
11979 AC_CHECK_HEADER(gpgme.h, [],
11980 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
11982 AC_MSG_RESULT([internal])
11983 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
11984 AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
11986 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
11987 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
11988 if test "$_os" != "WINNT"; then
11989 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
11990 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
11993 ENABLE_GPGMEPP=TRUE
11994 AC_DEFINE([HAVE_FEATURE_GPGME])
11995 AC_PATH_PROG(GPG, gpg)
11996 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
11997 # so let's exclude that manually for the moment
11998 if test -n "$GPG" -a "$_os" != "WINNT"; then
11999 # make sure we not only have a working gpgme, but a full working
12000 # gpg installation to run OpenPGP signature verification
12001 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12003 if test "$_os" = "Linux"; then
12005 AC_MSG_CHECKING([for /run/user/$uid])
12006 if test -d /run/user/$uid; then
12007 AC_MSG_RESULT([yes])
12008 AC_PATH_PROG(GPGCONF, gpgconf)
12010 # Older versions of gpgconf are not working as expected, since
12011 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12012 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12013 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12014 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12015 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12016 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12017 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12018 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12019 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12020 if $GPGCONF --dump-options > /dev/null ; then
12021 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12022 AC_MSG_RESULT([yes])
12023 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12024 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12026 AC_MSG_RESULT([no])
12029 AC_MSG_RESULT([no. missing or broken gpgconf?])
12032 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12035 AC_MSG_RESULT([no])
12039 AC_SUBST(ENABLE_GPGMEPP)
12040 AC_SUBST(SYSTEM_GPGMEPP)
12041 AC_SUBST(GPG_ERROR_CFLAGS)
12042 AC_SUBST(GPG_ERROR_LIBS)
12043 AC_SUBST(LIBASSUAN_CFLAGS)
12044 AC_SUBST(LIBASSUAN_LIBS)
12045 AC_SUBST(GPGMEPP_CFLAGS)
12046 AC_SUBST(GPGMEPP_LIBS)
12048 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12049 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12050 AC_MSG_RESULT([yes])
12051 ENABLE_MEDIAWIKI=TRUE
12052 BUILD_TYPE="$BUILD_TYPE XSLTML"
12053 if test "x$with_java" = "xno"; then
12054 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12057 AC_MSG_RESULT([no])
12059 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12061 AC_SUBST(ENABLE_MEDIAWIKI)
12063 AC_MSG_CHECKING([whether to build the Report Builder])
12064 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12065 AC_MSG_RESULT([yes])
12066 ENABLE_REPORTBUILDER=TRUE
12067 AC_MSG_CHECKING([which jfreereport libs to use])
12068 if test "$with_system_jfreereport" = "yes"; then
12069 SYSTEM_JFREEREPORT=TRUE
12070 AC_MSG_RESULT([external])
12071 if test -z $SAC_JAR; then
12072 SAC_JAR=/usr/share/java/sac.jar
12074 if ! test -f $SAC_JAR; then
12075 AC_MSG_ERROR(sac.jar not found.)
12078 if test -z $LIBXML_JAR; then
12079 if test -f /usr/share/java/libxml-1.0.0.jar; then
12080 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12081 elif test -f /usr/share/java/libxml.jar; then
12082 LIBXML_JAR=/usr/share/java/libxml.jar
12084 AC_MSG_ERROR(libxml.jar replacement not found.)
12086 elif ! test -f $LIBXML_JAR; then
12087 AC_MSG_ERROR(libxml.jar not found.)
12090 if test -z $FLUTE_JAR; then
12091 if test -f /usr/share/java/flute-1.3.0.jar; then
12092 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12093 elif test -f /usr/share/java/flute.jar; then
12094 FLUTE_JAR=/usr/share/java/flute.jar
12096 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12098 elif ! test -f $FLUTE_JAR; then
12099 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12102 if test -z $JFREEREPORT_JAR; then
12103 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12104 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12105 elif test -f /usr/share/java/flow-engine.jar; then
12106 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12108 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12110 elif ! test -f $JFREEREPORT_JAR; then
12111 AC_MSG_ERROR(jfreereport.jar not found.)
12114 if test -z $LIBLAYOUT_JAR; then
12115 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12116 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12117 elif test -f /usr/share/java/liblayout.jar; then
12118 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12120 AC_MSG_ERROR(liblayout.jar replacement not found.)
12122 elif ! test -f $LIBLAYOUT_JAR; then
12123 AC_MSG_ERROR(liblayout.jar not found.)
12126 if test -z $LIBLOADER_JAR; then
12127 if test -f /usr/share/java/libloader-1.0.0.jar; then
12128 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12129 elif test -f /usr/share/java/libloader.jar; then
12130 LIBLOADER_JAR=/usr/share/java/libloader.jar
12132 AC_MSG_ERROR(libloader.jar replacement not found.)
12134 elif ! test -f $LIBLOADER_JAR; then
12135 AC_MSG_ERROR(libloader.jar not found.)
12138 if test -z $LIBFORMULA_JAR; then
12139 if test -f /usr/share/java/libformula-0.2.0.jar; then
12140 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12141 elif test -f /usr/share/java/libformula.jar; then
12142 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12144 AC_MSG_ERROR(libformula.jar replacement not found.)
12146 elif ! test -f $LIBFORMULA_JAR; then
12147 AC_MSG_ERROR(libformula.jar not found.)
12150 if test -z $LIBREPOSITORY_JAR; then
12151 if test -f /usr/share/java/librepository-1.0.0.jar; then
12152 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12153 elif test -f /usr/share/java/librepository.jar; then
12154 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12156 AC_MSG_ERROR(librepository.jar replacement not found.)
12158 elif ! test -f $LIBREPOSITORY_JAR; then
12159 AC_MSG_ERROR(librepository.jar not found.)
12162 if test -z $LIBFONTS_JAR; then
12163 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12164 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12165 elif test -f /usr/share/java/libfonts.jar; then
12166 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12168 AC_MSG_ERROR(libfonts.jar replacement not found.)
12170 elif ! test -f $LIBFONTS_JAR; then
12171 AC_MSG_ERROR(libfonts.jar not found.)
12174 if test -z $LIBSERIALIZER_JAR; then
12175 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12176 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12177 elif test -f /usr/share/java/libserializer.jar; then
12178 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12180 AC_MSG_ERROR(libserializer.jar replacement not found.)
12182 elif ! test -f $LIBSERIALIZER_JAR; then
12183 AC_MSG_ERROR(libserializer.jar not found.)
12186 if test -z $LIBBASE_JAR; then
12187 if test -f /usr/share/java/libbase-1.0.0.jar; then
12188 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12189 elif test -f /usr/share/java/libbase.jar; then
12190 LIBBASE_JAR=/usr/share/java/libbase.jar
12192 AC_MSG_ERROR(libbase.jar replacement not found.)
12194 elif ! test -f $LIBBASE_JAR; then
12195 AC_MSG_ERROR(libbase.jar not found.)
12199 AC_MSG_RESULT([internal])
12200 SYSTEM_JFREEREPORT=
12201 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12205 AC_MSG_RESULT([no])
12206 ENABLE_REPORTBUILDER=
12207 SYSTEM_JFREEREPORT=
12209 AC_SUBST(ENABLE_REPORTBUILDER)
12210 AC_SUBST(SYSTEM_JFREEREPORT)
12212 AC_SUBST(LIBXML_JAR)
12213 AC_SUBST(FLUTE_JAR)
12214 AC_SUBST(JFREEREPORT_JAR)
12215 AC_SUBST(LIBBASE_JAR)
12216 AC_SUBST(LIBLAYOUT_JAR)
12217 AC_SUBST(LIBLOADER_JAR)
12218 AC_SUBST(LIBFORMULA_JAR)
12219 AC_SUBST(LIBREPOSITORY_JAR)
12220 AC_SUBST(LIBFONTS_JAR)
12221 AC_SUBST(LIBSERIALIZER_JAR)
12223 # this has to be here because both the Wiki Publisher and the SRB use
12225 COMMONS_LOGGING_VERSION=1.2
12226 if test "$ENABLE_REPORTBUILDER" = "TRUE"; then
12227 AC_MSG_CHECKING([which Apache commons-* libs to use])
12228 if test "$with_system_apache_commons" = "yes"; then
12229 SYSTEM_APACHE_COMMONS=TRUE
12230 AC_MSG_RESULT([external])
12231 if test -z $COMMONS_LOGGING_JAR; then
12232 if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then
12233 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar
12234 elif test -f /usr/share/java/commons-logging.jar; then
12235 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar
12237 AC_MSG_ERROR(commons-logging.jar replacement not found.)
12239 elif ! test -f $COMMONS_LOGGING_JAR; then
12240 AC_MSG_ERROR(commons-logging.jar not found.)
12243 AC_MSG_RESULT([internal])
12244 SYSTEM_APACHE_COMMONS=
12245 BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS"
12249 AC_SUBST(SYSTEM_APACHE_COMMONS)
12250 AC_SUBST(COMMONS_LOGGING_JAR)
12251 AC_SUBST(COMMONS_LOGGING_VERSION)
12253 # scripting provider for BeanShell?
12254 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12255 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12256 AC_MSG_RESULT([yes])
12257 ENABLE_SCRIPTING_BEANSHELL=TRUE
12259 dnl ===================================================================
12260 dnl Check for system beanshell
12261 dnl ===================================================================
12262 AC_MSG_CHECKING([which beanshell to use])
12263 if test "$with_system_beanshell" = "yes"; then
12264 AC_MSG_RESULT([external])
12266 if test -z $BSH_JAR; then
12267 BSH_JAR=/usr/share/java/bsh.jar
12269 if ! test -f $BSH_JAR; then
12270 AC_MSG_ERROR(bsh.jar not found.)
12273 AC_MSG_RESULT([internal])
12275 BUILD_TYPE="$BUILD_TYPE BSH"
12278 AC_MSG_RESULT([no])
12279 ENABLE_SCRIPTING_BEANSHELL=
12280 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12282 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12283 AC_SUBST(SYSTEM_BSH)
12286 # scripting provider for JavaScript?
12287 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12288 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12289 AC_MSG_RESULT([yes])
12290 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12292 dnl ===================================================================
12293 dnl Check for system rhino
12294 dnl ===================================================================
12295 AC_MSG_CHECKING([which rhino to use])
12296 if test "$with_system_rhino" = "yes"; then
12297 AC_MSG_RESULT([external])
12299 if test -z $RHINO_JAR; then
12300 RHINO_JAR=/usr/share/java/js.jar
12302 if ! test -f $RHINO_JAR; then
12303 AC_MSG_ERROR(js.jar not found.)
12306 AC_MSG_RESULT([internal])
12308 BUILD_TYPE="$BUILD_TYPE RHINO"
12312 AC_MSG_RESULT([no])
12313 ENABLE_SCRIPTING_JAVASCRIPT=
12314 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12316 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12317 AC_SUBST(SYSTEM_RHINO)
12318 AC_SUBST(RHINO_JAR)
12320 # This is only used in Qt5/KF5 checks to determine if /usr/lib64
12321 # paths should be added to library search path. So lets put all 64-bit
12324 case "$host_cpu" in
12325 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12326 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12327 supports_multilib="yes"
12334 dnl ===================================================================
12335 dnl QT5 Integration
12336 dnl ===================================================================
12342 QT5_GOBJECT_CFLAGS=""
12343 QT5_GOBJECT_LIBS=""
12344 QT5_HAVE_GOBJECT=""
12345 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12346 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12347 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12349 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12350 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12352 if test -n "$supports_multilib"; then
12353 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12356 qt5_test_include="QtWidgets/qapplication.h"
12357 qt5_test_library="libQt5Widgets.so"
12359 dnl Check for qmake5
12360 AC_PATH_PROGS( QMAKE5, [qmake-qt5 qmake], no, [$QT5DIR/bin:$PATH])
12361 if test "$QMAKE5" = "no"; then
12362 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12364 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12365 if test -z "$qmake5_test_ver"; then
12366 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12368 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12369 qt5_minimal_minor="6"
12370 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12371 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12373 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12377 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12378 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12380 AC_MSG_CHECKING([for Qt5 headers])
12382 for inc_dir in $qt5_incdirs; do
12383 if test -r "$inc_dir/$qt5_test_include"; then
12384 qt5_incdir="$inc_dir"
12388 AC_MSG_RESULT([$qt5_incdir])
12389 if test "x$qt5_incdir" = "xno"; then
12390 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12392 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12393 AC_LANG_PUSH([C++])
12394 save_CPPFLAGS=$CPPFLAGS
12395 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12396 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12397 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12398 CPPFLAGS=$save_CPPFLAGS
12401 AC_MSG_CHECKING([for Qt5 libraries])
12403 for lib_dir in $qt5_libdirs; do
12404 if test -r "$lib_dir/$qt5_test_library"; then
12405 qt5_libdir="$lib_dir"
12409 AC_MSG_RESULT([$qt5_libdir])
12410 if test "x$qt5_libdir" = "xno"; then
12411 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12414 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12415 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12416 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12418 if test "$USING_X11" = TRUE; then
12419 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12420 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12421 QT5_HAVE_XCB_ICCCM=1
12422 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12424 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)])
12425 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12427 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12428 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12430 AC_DEFINE(QT5_USING_X11)
12433 dnl Check for Meta Object Compiler
12435 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12436 if test "$MOC5" = "no"; then
12437 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
12438 the root of your Qt installation by exporting QT5DIR before running "configure".])
12441 if test "$build_gstreamer_1_0" = "yes"; then
12442 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12444 AC_DEFINE(QT5_HAVE_GOBJECT)
12446 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12450 AC_SUBST(QT5_CFLAGS)
12453 AC_SUBST(QT5_GOBJECT_CFLAGS)
12454 AC_SUBST(QT5_GOBJECT_LIBS)
12455 AC_SUBST(QT5_HAVE_GOBJECT)
12457 dnl ===================================================================
12458 dnl KF5 Integration
12459 dnl ===================================================================
12463 KF5_CONFIG="kf5-config"
12464 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12465 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12467 if test "$OS" = "HAIKU"; then
12468 haiku_arch="`echo $RTL_ARCH | tr X x`"
12469 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12470 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12473 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12474 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12475 if test -n "$supports_multilib"; then
12476 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12479 kf5_test_include="KF5/kcoreaddons_version.h"
12480 kf5_test_library="libKF5CoreAddons.so"
12481 kf5_libdirs="$qt5_libdir $kf5_libdirs"
12483 dnl kf5 KDE4 support compatibility installed
12484 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12485 if test "$KF5_CONFIG" != "no"; then
12486 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12487 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12490 dnl Check for KF5 headers
12491 AC_MSG_CHECKING([for KF5 headers])
12493 for kf5_check in $kf5_incdirs; do
12494 if test -r "$kf5_check/$kf5_test_include"; then
12495 kf5_incdir="$kf5_check/KF5"
12499 AC_MSG_RESULT([$kf5_incdir])
12500 if test "x$kf5_incdir" = "xno"; then
12501 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12504 dnl Check for KF5 libraries
12505 AC_MSG_CHECKING([for KF5 libraries])
12507 for kf5_check in $kf5_libdirs; do
12508 if test -r "$kf5_check/$kf5_test_library"; then
12509 kf5_libdir="$kf5_check"
12514 AC_MSG_RESULT([$kf5_libdir])
12515 if test "x$kf5_libdir" = "xno"; then
12516 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12519 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"
12520 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12521 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12523 if test "$USING_X11" = TRUE; then
12524 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
12527 AC_LANG_PUSH([C++])
12528 save_CXXFLAGS=$CXXFLAGS
12529 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
12530 AC_MSG_CHECKING([whether KDE is >= 5.0])
12531 AC_RUN_IFELSE([AC_LANG_SOURCE([[
12532 #include <kcoreaddons_version.h>
12534 int main(int argc, char **argv) {
12535 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
12538 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
12539 CXXFLAGS=$save_CXXFLAGS
12542 AC_SUBST(KF5_CFLAGS)
12545 dnl ===================================================================
12546 dnl Test whether to include Evolution 2 support
12547 dnl ===================================================================
12548 AC_MSG_CHECKING([whether to enable evolution 2 support])
12549 if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then
12550 AC_MSG_RESULT([yes])
12551 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
12552 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12553 FilterLibs "${GOBJECT_LIBS}"
12554 GOBJECT_LIBS="${filteredlibs}"
12555 ENABLE_EVOAB2="TRUE"
12558 AC_MSG_RESULT([no])
12560 AC_SUBST(ENABLE_EVOAB2)
12561 AC_SUBST(GOBJECT_CFLAGS)
12562 AC_SUBST(GOBJECT_LIBS)
12564 dnl ===================================================================
12565 dnl Test which themes to include
12566 dnl ===================================================================
12567 AC_MSG_CHECKING([which themes to include])
12568 # if none given use default subset of available themes
12569 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
12570 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"
12574 if test "x$with_theme" != "xno"; then
12575 for theme in $with_theme; do
12577 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" ;;
12578 default) real_theme=colibre ;;
12579 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
12581 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
12584 AC_MSG_RESULT([$WITH_THEMES])
12585 AC_SUBST([WITH_THEMES])
12586 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
12587 for theme in $with_theme; do
12589 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
12594 dnl ===================================================================
12595 dnl Test whether to integrate helppacks into the product's installer
12596 dnl ===================================================================
12597 AC_MSG_CHECKING([for helppack integration])
12598 if test "$with_helppack_integration" = "no"; then
12599 AC_MSG_RESULT([no integration])
12601 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
12602 AC_MSG_RESULT([integration])
12605 ###############################################################################
12606 # Extensions checking
12607 ###############################################################################
12608 AC_MSG_CHECKING([for extensions integration])
12609 if test "x$enable_extension_integration" != "xno"; then
12610 WITH_EXTENSION_INTEGRATION=TRUE
12611 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
12612 AC_MSG_RESULT([yes, use integration])
12614 WITH_EXTENSION_INTEGRATION=
12615 AC_MSG_RESULT([no, do not integrate])
12617 AC_SUBST(WITH_EXTENSION_INTEGRATION)
12619 dnl Should any extra extensions be included?
12620 dnl There are standalone tests for each of these below.
12621 WITH_EXTRA_EXTENSIONS=
12622 AC_SUBST([WITH_EXTRA_EXTENSIONS])
12624 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
12625 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
12626 if test "x$with_java" != "xno"; then
12627 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
12628 libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
12631 AC_MSG_CHECKING([whether to build opens___.ttf])
12632 if test "$enable_build_opensymbol" = "yes"; then
12633 AC_MSG_RESULT([yes])
12634 AC_PATH_PROG(FONTFORGE, fontforge)
12635 if test -z "$FONTFORGE"; then
12636 AC_MSG_ERROR([fontforge not installed])
12639 AC_MSG_RESULT([no])
12640 OPENSYMBOL_TTF=f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
12641 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
12643 AC_SUBST(OPENSYMBOL_TTF)
12644 AC_SUBST(FONTFORGE)
12646 dnl ===================================================================
12647 dnl Test whether to include fonts
12648 dnl ===================================================================
12649 AC_MSG_CHECKING([whether to include third-party fonts])
12650 if test "$with_fonts" != "no"; then
12651 AC_MSG_RESULT([yes])
12653 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
12654 AC_DEFINE(HAVE_MORE_FONTS)
12656 AC_MSG_RESULT([no])
12658 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
12660 AC_SUBST(WITH_FONTS)
12663 dnl ===================================================================
12664 dnl Test whether to enable online update service
12665 dnl ===================================================================
12666 AC_MSG_CHECKING([whether to enable online update])
12667 ENABLE_ONLINE_UPDATE=
12668 ENABLE_ONLINE_UPDATE_MAR=
12670 if test "$enable_online_update" = ""; then
12671 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12672 AC_MSG_RESULT([yes])
12673 ENABLE_ONLINE_UPDATE="TRUE"
12675 AC_MSG_RESULT([no])
12678 if test "$enable_online_update" = "mar"; then
12679 AC_MSG_RESULT([yes - MAR-based online update])
12680 ENABLE_ONLINE_UPDATE_MAR="TRUE"
12681 if test "$with_update_config" = ""; then
12682 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
12684 UPDATE_CONFIG="$with_update_config"
12685 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
12686 elif test "$enable_online_update" = "yes"; then
12687 AC_MSG_RESULT([yes])
12688 ENABLE_ONLINE_UPDATE="TRUE"
12690 AC_MSG_RESULT([no])
12693 AC_SUBST(ENABLE_ONLINE_UPDATE)
12694 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
12695 AC_SUBST(UPDATE_CONFIG)
12697 dnl ===================================================================
12698 dnl Test whether we need bzip2
12699 dnl ===================================================================
12701 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
12702 AC_MSG_CHECKING([whether to use system bzip2])
12703 if test "$with_system_bzip2" = yes; then
12705 AC_MSG_RESULT([yes])
12706 PKG_CHECK_MODULES(BZIP2, bzip2)
12707 FilterLibs "${BZIP2_LIBS}"
12708 BZIP2_LIBS="${filteredlibs}"
12710 AC_MSG_RESULT([no])
12711 BUILD_TYPE="$BUILD_TYPE BZIP2"
12714 AC_SUBST(SYSTEM_BZIP2)
12715 AC_SUBST(BZIP2_CFLAGS)
12716 AC_SUBST(BZIP2_LIBS)
12718 dnl ===================================================================
12719 dnl Test whether to enable extension update
12720 dnl ===================================================================
12721 AC_MSG_CHECKING([whether to enable extension update])
12722 ENABLE_EXTENSION_UPDATE=
12723 if test "x$enable_extension_update" = "xno"; then
12724 AC_MSG_RESULT([no])
12726 AC_MSG_RESULT([yes])
12727 ENABLE_EXTENSION_UPDATE="TRUE"
12728 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
12729 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
12731 AC_SUBST(ENABLE_EXTENSION_UPDATE)
12734 dnl ===================================================================
12735 dnl Test whether to create MSI with LIMITUI=1 (silent install)
12736 dnl ===================================================================
12737 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
12738 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
12739 AC_MSG_RESULT([no])
12742 AC_MSG_RESULT([yes])
12743 ENABLE_SILENT_MSI=TRUE
12744 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
12746 AC_SUBST(ENABLE_SILENT_MSI)
12748 AC_MSG_CHECKING([whether and how to use Xinerama])
12749 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
12750 if test "$x_libraries" = "default_x_libraries"; then
12751 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
12752 if test "x$XINERAMALIB" = x; then
12753 XINERAMALIB="/usr/lib"
12756 XINERAMALIB="$x_libraries"
12758 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
12759 # we have both versions, let the user decide but use the dynamic one
12762 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
12763 XINERAMA_LINK=dynamic
12765 XINERAMA_LINK=static
12767 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
12768 # we have only the dynamic version
12770 XINERAMA_LINK=dynamic
12771 elif test -e "$XINERAMALIB/libXinerama.a"; then
12773 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
12775 XINERAMA_LINK=static
12785 if test "$USE_XINERAMA" = "TRUE"; then
12786 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
12787 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
12788 [AC_MSG_ERROR(Xinerama header not found.)], [])
12789 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
12790 if test "x$XEXTLIB" = x; then
12791 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
12793 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
12794 if test "$_os" = "FreeBSD"; then
12795 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
12797 if test "$_os" = "Linux"; then
12798 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
12800 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
12801 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
12803 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
12808 AC_MSG_RESULT([no])
12810 AC_SUBST(USE_XINERAMA)
12811 AC_SUBST(XINERAMA_LINK)
12813 dnl ===================================================================
12814 dnl Test whether to build cairo or rely on the system version
12815 dnl ===================================================================
12817 if test "$USING_X11" = TRUE; then
12818 # Used in vcl/Library_vclplug_gen.mk
12822 if test "$test_cairo" = "yes"; then
12823 AC_MSG_CHECKING([whether to use the system cairo])
12825 : ${with_system_cairo:=$with_system_libs}
12826 if test "$with_system_cairo" = "yes"; then
12828 AC_MSG_RESULT([yes])
12830 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
12831 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12832 FilterLibs "${CAIRO_LIBS}"
12833 CAIRO_LIBS="${filteredlibs}"
12835 if test "$test_xrender" = "yes"; then
12836 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
12838 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
12839 #ifdef PictStandardA8
12843 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
12849 AC_MSG_RESULT([no])
12851 BUILD_TYPE="$BUILD_TYPE CAIRO"
12855 AC_SUBST(SYSTEM_CAIRO)
12856 AC_SUBST(CAIRO_CFLAGS)
12857 AC_SUBST(CAIRO_LIBS)
12859 dnl ===================================================================
12860 dnl Test whether to use avahi
12861 dnl ===================================================================
12862 if test "$_os" = "WINNT"; then
12863 # Windows uses bundled mDNSResponder
12864 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
12865 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
12866 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
12867 [ENABLE_AVAHI="TRUE"])
12868 AC_DEFINE(HAVE_FEATURE_AVAHI)
12869 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12870 FilterLibs "${AVAHI_LIBS}"
12871 AVAHI_LIBS="${filteredlibs}"
12874 AC_SUBST(ENABLE_AVAHI)
12875 AC_SUBST(AVAHI_CFLAGS)
12876 AC_SUBST(AVAHI_LIBS)
12878 dnl ===================================================================
12879 dnl Test whether to use liblangtag
12880 dnl ===================================================================
12882 AC_MSG_CHECKING([whether to use system liblangtag])
12883 if test "$with_system_liblangtag" = yes; then
12884 SYSTEM_LIBLANGTAG=TRUE
12885 AC_MSG_RESULT([yes])
12886 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
12887 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
12888 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
12889 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12890 FilterLibs "${LIBLANGTAG_LIBS}"
12891 LIBLANGTAG_LIBS="${filteredlibs}"
12894 AC_MSG_RESULT([no])
12895 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
12896 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
12897 if test "$COM" = "MSC"; then
12898 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
12900 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
12903 AC_SUBST(SYSTEM_LIBLANGTAG)
12904 AC_SUBST(LIBLANGTAG_CFLAGS)
12905 AC_SUBST(LIBLANGTAG_LIBS)
12907 dnl ===================================================================
12908 dnl Test whether to build libpng or rely on the system version
12909 dnl ===================================================================
12911 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
12913 dnl ===================================================================
12914 dnl Check for runtime JVM search path
12915 dnl ===================================================================
12916 if test "$ENABLE_JAVA" != ""; then
12917 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
12918 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
12919 AC_MSG_RESULT([yes])
12920 if ! test -d "$with_jvm_path"; then
12921 AC_MSG_ERROR(["$with_jvm_path" not a directory])
12923 if ! test -d "$with_jvm_path"jvm; then
12924 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
12926 JVM_ONE_PATH_CHECK="$with_jvm_path"
12927 AC_SUBST(JVM_ONE_PATH_CHECK)
12929 AC_MSG_RESULT([no])
12933 dnl ===================================================================
12934 dnl Test for the presence of Ant and that it works
12935 dnl ===================================================================
12937 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
12938 ANT_HOME=; export ANT_HOME
12939 WITH_ANT_HOME=; export WITH_ANT_HOME
12940 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
12941 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
12942 if test "$_os" = "WINNT"; then
12943 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
12945 with_ant_home="$LODE_HOME/opt/ant"
12947 elif test -x "$LODE_HOME/opt/bin/ant" ; then
12948 with_ant_home="$LODE_HOME/opt/ant"
12951 if test -z "$with_ant_home"; then
12952 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
12954 if test "$_os" = "WINNT"; then
12955 # AC_PATH_PROGS needs unix path
12956 with_ant_home=`cygpath -u "$with_ant_home"`
12958 AbsolutePath "$with_ant_home"
12959 with_ant_home=$absolute_path
12960 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
12961 WITH_ANT_HOME=$with_ant_home
12962 ANT_HOME=$with_ant_home
12965 if test -z "$ANT"; then
12966 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
12968 # resolve relative or absolute symlink
12969 while test -h "$ANT"; do
12971 a_basename=`basename "$ANT"`
12972 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
12973 cd "`dirname "$ANT"`"
12974 cd "`dirname "$a_script"`"
12975 ANT="`pwd`"/"`basename "$a_script"`"
12979 AC_MSG_CHECKING([if $ANT works])
12980 mkdir -p conftest.dir
12983 cat > conftest.java << EOF
12984 public class conftest {
12985 int testmethod(int a, int b) {
12991 cat > conftest.xml << EOF
12992 <project name="conftest" default="conftest">
12993 <target name="conftest">
12994 <javac srcdir="." includes="conftest.java">
13000 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13001 if test $? = 0 -a -f ./conftest.class; then
13002 AC_MSG_RESULT([Ant works])
13003 if test -z "$WITH_ANT_HOME"; then
13004 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13005 if test -z "$ANT_HOME"; then
13006 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13009 ANT_HOME="$WITH_ANT_HOME"
13012 echo "configure: Ant test failed" >&5
13013 cat conftest.java >&5
13014 cat conftest.xml >&5
13015 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13018 rm -fr conftest.dir
13020 if test -z "$ANT_HOME"; then
13021 ANT_HOME="NO_ANT_HOME"
13023 PathFormat "$ANT_HOME"
13024 ANT_HOME="$formatted_path"
13026 ANT="$formatted_path"
13029 dnl Checking for ant.jar
13030 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13031 AC_MSG_CHECKING([Ant lib directory])
13032 if test -f $ANT_HOME/lib/ant.jar; then
13033 ANT_LIB="$ANT_HOME/lib"
13035 if test -f $ANT_HOME/ant.jar; then
13036 ANT_LIB="$ANT_HOME"
13038 if test -f /usr/share/java/ant.jar; then
13039 ANT_LIB=/usr/share/java
13041 if test -f /usr/share/ant-core/lib/ant.jar; then
13042 ANT_LIB=/usr/share/ant-core/lib
13044 if test -f $ANT_HOME/lib/ant/ant.jar; then
13045 ANT_LIB="$ANT_HOME/lib/ant"
13047 if test -f /usr/share/lib/ant/ant.jar; then
13048 ANT_LIB=/usr/share/lib/ant
13050 AC_MSG_ERROR([Ant libraries not found!])
13057 PathFormat "$ANT_LIB"
13058 ANT_LIB="$formatted_path"
13059 AC_MSG_RESULT([Ant lib directory found.])
13063 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13065 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13066 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13067 ant_version_major=`echo $ant_version | cut -d. -f1`
13068 ant_version_minor=`echo $ant_version | cut -d. -f2`
13069 echo "configure: ant_version $ant_version " >&5
13070 echo "configure: ant_version_major $ant_version_major " >&5
13071 echo "configure: ant_version_minor $ant_version_minor " >&5
13072 if test "$ant_version_major" -ge "2"; then
13073 AC_MSG_RESULT([yes, $ant_version])
13074 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13075 AC_MSG_RESULT([yes, $ant_version])
13077 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13080 rm -f conftest* core core.* *.core
13088 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13089 AC_MSG_CHECKING([for JUnit 4])
13090 if test "$with_junit" = "yes"; then
13091 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13092 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13093 elif test -e /usr/share/java/junit4.jar; then
13094 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13096 if test -e /usr/share/lib/java/junit.jar; then
13097 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13099 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13103 OOO_JUNIT_JAR=$with_junit
13105 if test "$_os" = "WINNT"; then
13106 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13108 printf 'import org.junit.Before;' > conftest.java
13109 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13110 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13113 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13114 specify its pathname via --with-junit=..., or disable it via --without-junit])
13116 rm -f conftest.class conftest.java
13117 if test $OOO_JUNIT_JAR != ""; then
13118 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13121 AC_MSG_CHECKING([for included Hamcrest])
13122 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13123 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13124 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13126 AC_MSG_RESULT([Not included])
13127 AC_MSG_CHECKING([for standalone hamcrest jar.])
13128 if test "$with_hamcrest" = "yes"; then
13129 if test -e /usr/share/lib/java/hamcrest.jar; then
13130 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13131 elif test -e /usr/share/java/hamcrest/core.jar; then
13132 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13134 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13137 HAMCREST_JAR=$with_hamcrest
13139 if test "$_os" = "WINNT"; then
13140 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13142 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13143 AC_MSG_RESULT([$HAMCREST_JAR])
13145 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),
13146 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13149 rm -f conftest.class conftest.java
13151 AC_SUBST(OOO_JUNIT_JAR)
13152 AC_SUBST(HAMCREST_JAR)
13158 # check for wget and curl
13163 if test "$enable_fetch_external" != "no"; then
13165 CURL=`which curl 2>/dev/null`
13167 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13169 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13170 if test $? -eq 0; then
13176 if test -z "$WGET" -a -z "$CURL"; then
13177 AC_MSG_ERROR([neither wget nor curl found!])
13186 # check for sha256sum
13190 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13191 eval "$i -a 256 --version" > /dev/null 2>&1
13193 if test $ret -eq 0; then
13194 SHA256SUM="$i -a 256"
13199 if test -z "$SHA256SUM"; then
13200 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13201 eval "$i --version" > /dev/null 2>&1
13203 if test $ret -eq 0; then
13210 if test -z "$SHA256SUM"; then
13211 AC_MSG_ERROR([no sha256sum found!])
13214 AC_SUBST(SHA256SUM)
13216 dnl ===================================================================
13217 dnl Dealing with l10n options
13218 dnl ===================================================================
13219 AC_MSG_CHECKING([which languages to be built])
13220 # get list of all languages
13221 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13222 # the sed command does the following:
13223 # + if a line ends with a backslash, append the next line to it
13224 # + adds " on the beginning of the value (after =)
13225 # + adds " at the end of the value
13226 # + removes en-US; we want to put it on the beginning
13227 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13228 [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)]
13229 ALL_LANGS="en-US $completelangiso"
13230 # check the configured localizations
13231 WITH_LANG="$with_lang"
13233 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13234 # (Norwegian is "nb" and "nn".)
13235 if test "$WITH_LANG" = "no"; then
13239 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13240 AC_MSG_RESULT([en-US])
13242 AC_MSG_RESULT([$WITH_LANG])
13243 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13244 if test -z "$MSGFMT"; then
13245 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13246 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13247 elif test -x "/opt/lo/bin/msgfmt"; then
13248 MSGFMT="/opt/lo/bin/msgfmt"
13250 AC_CHECK_PROGS(MSGFMT, [msgfmt])
13251 if test -z "$MSGFMT"; then
13252 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13256 if test -z "$MSGUNIQ"; then
13257 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13258 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13259 elif test -x "/opt/lo/bin/msguniq"; then
13260 MSGUNIQ="/opt/lo/bin/msguniq"
13262 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13263 if test -z "$MSGUNIQ"; then
13264 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13271 # check that the list is valid
13272 for lang in $WITH_LANG; do
13273 test "$lang" = "ALL" && continue
13274 # need to check for the exact string, so add space before and after the list of all languages
13275 for vl in $ALL_LANGS; do
13276 if test "$vl" = "$lang"; then
13280 if test "$vl" != "$lang"; then
13281 # if you're reading this - you prolly quoted your languages remove the quotes ...
13282 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13285 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13286 echo $WITH_LANG | grep -q en-US
13287 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13289 # list with substituted ALL
13290 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13291 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13292 test "$WITH_LANG" = "en-US" && WITH_LANG=
13293 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13294 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13295 ALL_LANGS=`echo $ALL_LANGS qtz`
13297 AC_SUBST(ALL_LANGS)
13298 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13299 AC_SUBST(WITH_LANG)
13300 AC_SUBST(WITH_LANG_LIST)
13301 AC_SUBST(GIT_NEEDED_SUBMODULES)
13303 WITH_POOR_HELP_LOCALIZATIONS=
13304 if test -d "$SRC_ROOT/translations/source"; then
13305 for l in `ls -1 $SRC_ROOT/translations/source`; do
13306 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13307 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13311 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13313 if test -n "$with_locales"; then
13314 WITH_LOCALES="$with_locales"
13316 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13317 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13318 # config_host/config_locales.h.in
13319 for locale in $WITH_LOCALES; do
13322 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13326 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13329 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13334 AC_DEFINE(WITH_LOCALE_ALL)
13336 AC_SUBST(WITH_LOCALES)
13338 dnl git submodule update --reference
13339 dnl ===================================================================
13340 if test -n "${GIT_REFERENCE_SRC}"; then
13341 for repo in ${GIT_NEEDED_SUBMODULES}; do
13342 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13343 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13347 AC_SUBST(GIT_REFERENCE_SRC)
13349 dnl git submodules linked dirs
13350 dnl ===================================================================
13351 if test -n "${GIT_LINK_SRC}"; then
13352 for repo in ${GIT_NEEDED_SUBMODULES}; do
13353 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13354 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13358 AC_SUBST(GIT_LINK_SRC)
13361 dnl ===================================================================
13362 AC_MSG_CHECKING([for alternative branding images directory])
13363 # initialize mapped arrays
13364 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13365 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg about.svg"
13367 if test -z "$with_branding" -o "$with_branding" = "no"; then
13368 AC_MSG_RESULT([none])
13369 DEFAULT_BRAND_IMAGES="$brand_files"
13371 if ! test -d $with_branding ; then
13372 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13374 AC_MSG_RESULT([$with_branding])
13375 CUSTOM_BRAND_DIR="$with_branding"
13376 for lfile in $brand_files
13378 if ! test -f $with_branding/$lfile ; then
13379 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13380 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13382 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13385 check_for_progress="yes"
13388 AC_SUBST([BRAND_INTRO_IMAGES])
13389 AC_SUBST([CUSTOM_BRAND_DIR])
13390 AC_SUBST([CUSTOM_BRAND_IMAGES])
13391 AC_SUBST([DEFAULT_BRAND_IMAGES])
13394 AC_MSG_CHECKING([for 'intro' progress settings])
13398 PROGRESSFRAMECOLOR=
13400 PROGRESSTEXTBASELINE=
13402 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13403 source "$with_branding/progress.conf"
13404 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13406 AC_MSG_RESULT([none])
13409 AC_SUBST(PROGRESSBARCOLOR)
13410 AC_SUBST(PROGRESSSIZE)
13411 AC_SUBST(PROGRESSPOSITION)
13412 AC_SUBST(PROGRESSFRAMECOLOR)
13413 AC_SUBST(PROGRESSTEXTCOLOR)
13414 AC_SUBST(PROGRESSTEXTBASELINE)
13417 dnl ===================================================================
13418 dnl Custom build version
13419 dnl ===================================================================
13420 AC_MSG_CHECKING([for extra build ID])
13421 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13422 EXTRA_BUILDID="$with_extra_buildid"
13424 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13425 if test -n "$EXTRA_BUILDID" ; then
13426 AC_MSG_RESULT([$EXTRA_BUILDID])
13428 AC_MSG_RESULT([not set])
13430 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13433 AC_MSG_CHECKING([for vendor])
13434 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13435 OOO_VENDOR="$USERNAME"
13437 if test -z "$OOO_VENDOR"; then
13441 if test -z "$OOO_VENDOR"; then
13442 OOO_VENDOR="`id -u -n`"
13445 AC_MSG_RESULT([not set, using $OOO_VENDOR])
13447 OOO_VENDOR="$with_vendor"
13448 AC_MSG_RESULT([$OOO_VENDOR])
13450 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13451 AC_SUBST(OOO_VENDOR)
13453 if test "$_os" = "Android" ; then
13454 ANDROID_PACKAGE_NAME=
13455 AC_MSG_CHECKING([for Android package name])
13456 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13457 if test -n "$ENABLE_DEBUG"; then
13458 # Default to the package name that makes ndk-gdb happy.
13459 ANDROID_PACKAGE_NAME="org.libreoffice"
13461 ANDROID_PACKAGE_NAME="org.example.libreoffice"
13464 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13466 ANDROID_PACKAGE_NAME="$with_android_package_name"
13467 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13469 AC_SUBST(ANDROID_PACKAGE_NAME)
13472 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13473 if test "$with_compat_oowrappers" = "yes"; then
13474 WITH_COMPAT_OOWRAPPERS=TRUE
13477 WITH_COMPAT_OOWRAPPERS=
13480 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13482 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13483 AC_MSG_CHECKING([for install dirname])
13484 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13485 INSTALLDIRNAME="$with_install_dirname"
13487 AC_MSG_RESULT([$INSTALLDIRNAME])
13488 AC_SUBST(INSTALLDIRNAME)
13490 AC_MSG_CHECKING([for prefix])
13491 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13492 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13493 PREFIXDIR="$prefix"
13494 AC_MSG_RESULT([$PREFIXDIR])
13495 AC_SUBST(PREFIXDIR)
13497 LIBDIR=[$(eval echo $(eval echo $libdir))]
13500 DATADIR=[$(eval echo $(eval echo $datadir))]
13503 MANDIR=[$(eval echo $(eval echo $mandir))]
13506 DOCDIR=[$(eval echo $(eval echo $docdir))]
13509 BINDIR=[$(eval echo $(eval echo $bindir))]
13512 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
13513 AC_SUBST(INSTALLDIR)
13515 TESTINSTALLDIR="${BUILDDIR}/test-install"
13516 AC_SUBST(TESTINSTALLDIR)
13519 # ===================================================================
13520 # OAuth2 id and secrets
13521 # ===================================================================
13523 AC_MSG_CHECKING([for Google Drive client id and secret])
13524 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
13525 AC_MSG_RESULT([not set])
13526 GDRIVE_CLIENT_ID="\"\""
13527 GDRIVE_CLIENT_SECRET="\"\""
13529 AC_MSG_RESULT([set])
13530 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
13531 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
13533 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
13534 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
13536 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
13537 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
13538 AC_MSG_RESULT([not set])
13539 ALFRESCO_CLOUD_CLIENT_ID="\"\""
13540 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
13542 AC_MSG_RESULT([set])
13543 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
13544 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
13546 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
13547 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
13549 AC_MSG_CHECKING([for OneDrive client id and secret])
13550 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
13551 AC_MSG_RESULT([not set])
13552 ONEDRIVE_CLIENT_ID="\"\""
13553 ONEDRIVE_CLIENT_SECRET="\"\""
13555 AC_MSG_RESULT([set])
13556 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
13557 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
13559 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
13560 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
13563 dnl ===================================================================
13564 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
13565 dnl --enable-dependency-tracking configure option
13566 dnl ===================================================================
13567 AC_MSG_CHECKING([whether to enable dependency tracking])
13568 if test "$enable_dependency_tracking" = "no"; then
13570 AC_MSG_RESULT([no])
13572 AC_MSG_RESULT([yes])
13576 dnl ===================================================================
13577 dnl Number of CPUs to use during the build
13578 dnl ===================================================================
13579 AC_MSG_CHECKING([for number of processors to use])
13580 # plain --with-parallelism is just the default
13581 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
13582 if test "$with_parallelism" = "no"; then
13585 PARALLELISM=$with_parallelism
13588 if test "$enable_icecream" = "yes"; then
13593 Darwin|FreeBSD|NetBSD|OpenBSD)
13594 PARALLELISM=`sysctl -n hw.ncpu`
13598 PARALLELISM=`getconf _NPROCESSORS_ONLN`
13600 # what else than above does profit here *and* has /proc?
13602 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
13606 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
13607 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
13611 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
13612 if test -z "$with_parallelism"; then
13613 AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
13614 add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
13617 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."
13621 if test $PARALLELISM -eq 0; then
13622 AC_MSG_RESULT([explicit make -j option needed])
13624 AC_MSG_RESULT([$PARALLELISM])
13626 AC_SUBST(PARALLELISM)
13628 IWYU_PATH="$with_iwyu"
13629 AC_SUBST(IWYU_PATH)
13630 if test ! -z "$IWYU_PATH"; then
13631 if test ! -f "$IWYU_PATH"; then
13632 AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
13637 # Set up ILIB for MSVC build
13640 if test "$build_os" = "cygwin"; then
13642 if test -n "$JAVA_HOME"; then
13643 ILIB="$ILIB;$JAVA_HOME/lib"
13646 ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
13647 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
13648 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13649 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13650 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
13651 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13652 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13654 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
13655 ucrtlibpath_formatted=$formatted_path
13656 ILIB="$ILIB;$ucrtlibpath_formatted"
13657 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
13658 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
13659 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
13661 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
13664 if test "$cross_compiling" != "yes"; then
13665 ILIB_FOR_BUILD="$ILIB"
13669 AC_SUBST(ILIB_FOR_BUILD)
13671 # ===================================================================
13672 # Creating bigger shared library to link against
13673 # ===================================================================
13674 AC_MSG_CHECKING([whether to create huge library])
13677 if test $_os = iOS -o $_os = Android; then
13678 # Never any point in mergelibs for these as we build just static
13679 # libraries anyway...
13680 enable_mergelibs=no
13683 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
13684 if test $_os != Linux -a $_os != WINNT; then
13685 add_warning "--enable-mergelibs is not tested for this platform"
13688 AC_MSG_RESULT([yes])
13689 AC_DEFINE(ENABLE_MERGELIBS)
13691 AC_MSG_RESULT([no])
13693 AC_SUBST([MERGELIBS])
13695 dnl ===================================================================
13696 dnl icerun is a wrapper that stops us spawning tens of processes
13697 dnl locally - for tools that can't be executed on the compile cluster
13698 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
13699 dnl ===================================================================
13700 AC_MSG_CHECKING([whether to use icerun wrapper])
13702 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
13703 ICECREAM_RUN=icerun
13704 AC_MSG_RESULT([yes])
13706 AC_MSG_RESULT([no])
13708 AC_SUBST(ICECREAM_RUN)
13710 dnl ===================================================================
13711 dnl Setup the ICECC_VERSION for the build the same way it was set for
13712 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
13713 dnl ===================================================================
13714 x_ICECC_VERSION=[\#]
13715 if test -n "$ICECC_VERSION" ; then
13718 AC_SUBST(x_ICECC_VERSION)
13719 AC_SUBST(ICECC_VERSION)
13721 dnl ===================================================================
13723 AC_MSG_CHECKING([MPL subset])
13726 if test "$enable_mpl_subset" = "yes"; then
13728 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
13730 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
13733 if test "$warn_report" = "true"; then
13734 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
13736 if test "x$enable_postgresql_sdbc" != "xno"; then
13737 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
13739 if test "$enable_lotuswordpro" = "yes"; then
13740 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
13742 if test "$WITH_WEBDAV" = "neon"; then
13743 AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
13745 if test -n "$ENABLE_POPPLER"; then
13746 if test "x$SYSTEM_POPPLER" = "x"; then
13747 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
13750 # cf. m4/libo_check_extension.m4
13751 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
13752 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
13754 for theme in $WITH_THEMES; do
13756 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
13757 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
13762 ENABLE_OPENGL_TRANSITIONS=
13764 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
13765 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
13769 AC_DEFINE(MPL_HAVE_SUBSET)
13770 AC_MSG_RESULT([only])
13772 AC_MSG_RESULT([no restrictions])
13774 AC_SUBST(MPL_SUBSET)
13776 dnl ===================================================================
13778 AC_MSG_CHECKING([formula logger])
13779 ENABLE_FORMULA_LOGGER=
13781 if test "x$enable_formula_logger" = "xyes"; then
13782 AC_MSG_RESULT([yes])
13783 AC_DEFINE(ENABLE_FORMULA_LOGGER)
13784 ENABLE_FORMULA_LOGGER=TRUE
13785 elif test -n "$ENABLE_DBGUTIL" ; then
13786 AC_MSG_RESULT([yes])
13787 AC_DEFINE(ENABLE_FORMULA_LOGGER)
13788 ENABLE_FORMULA_LOGGER=TRUE
13790 AC_MSG_RESULT([no])
13793 AC_SUBST(ENABLE_FORMULA_LOGGER)
13795 dnl ===================================================================
13796 dnl Checking for active Antivirus software.
13797 dnl ===================================================================
13799 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
13800 AC_MSG_CHECKING([for active Antivirus software])
13801 ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
13802 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
13803 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
13804 AC_MSG_RESULT([found])
13805 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
13806 echo $EICAR_STRING > $SRC_ROOT/eicar
13807 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
13809 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13810 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13812 echo $EICAR_STRING > $BUILDDIR/eicar
13813 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
13815 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13816 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13818 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"
13820 AC_MSG_RESULT([not found])
13823 AC_MSG_RESULT([n/a])
13827 dnl ===================================================================
13828 dnl Setting up the environment.
13829 dnl ===================================================================
13830 AC_MSG_NOTICE([setting up the build environment variables...])
13834 if test "$build_os" = "cygwin"; then
13835 if test -d "$COMPATH/atlmfc/lib/spectre"; then
13836 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
13837 ATL_INCLUDE="$COMPATH/atlmfc/include"
13838 elif test -d "$COMPATH/atlmfc/lib"; then
13839 ATL_LIB="$COMPATH/atlmfc/lib"
13840 ATL_INCLUDE="$COMPATH/atlmfc/include"
13842 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
13843 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
13845 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
13846 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
13847 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
13849 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
13850 PathFormat "/usr/bin/find.exe"
13851 FIND="$formatted_path"
13852 PathFormat "/usr/bin/sort.exe"
13853 SORT="$formatted_path"
13854 PathFormat "/usr/bin/grep.exe"
13855 WIN_GREP="$formatted_path"
13856 PathFormat "/usr/bin/ls.exe"
13857 WIN_LS="$formatted_path"
13858 PathFormat "/usr/bin/touch.exe"
13859 WIN_TOUCH="$formatted_path"
13865 AC_SUBST(ATL_INCLUDE)
13871 AC_SUBST(WIN_TOUCH)
13873 AC_SUBST(BUILD_TYPE)
13878 PERL="$formatted_path"
13881 if test -n "$TMPDIR"; then
13882 TEMP_DIRECTORY="$TMPDIR"
13884 TEMP_DIRECTORY="/tmp"
13886 if test "$build_os" = "cygwin"; then
13887 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
13889 AC_SUBST(TEMP_DIRECTORY)
13891 # setup the PATH for the environment
13892 if test -n "$LO_PATH_FOR_BUILD"; then
13893 LO_PATH="$LO_PATH_FOR_BUILD"
13896 pathmunge "$MSVC_HOST_PATH" "before"
13904 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
13905 if test "$ENABLE_JAVA" != ""; then
13906 pathmunge "$JAVA_HOME/bin" "after"
13911 # Win32 make needs native paths
13912 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
13913 LO_PATH=`cygpath -p -m "$PATH"`
13915 if test "$WIN_BUILD_ARCH" = "x64"; then
13916 # needed for msi packaging
13917 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
13919 # .NET 4.6 and higher don't have bin directory
13920 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
13921 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
13923 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
13924 pathmunge "$CSC_PATH" "before"
13925 pathmunge "$MIDL_PATH" "before"
13926 pathmunge "$AL_PATH" "before"
13927 pathmunge "$MSVC_MULTI_PATH" "before"
13928 pathmunge "$MSVC_BUILD_PATH" "before"
13929 if test -n "$MSBUILD_PATH" ; then
13930 pathmunge "$MSBUILD_PATH" "before"
13932 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
13933 if test "$ENABLE_JAVA" != ""; then
13934 if test -d "$JAVA_HOME/jre/bin/client"; then
13935 pathmunge "$JAVA_HOME/jre/bin/client" "before"
13937 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
13938 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
13940 pathmunge "$JAVA_HOME/bin" "before"
13942 pathmunge "$MSVC_HOST_PATH" "before"
13946 pathmunge "/usr/css/bin" "before"
13947 if test "$ENABLE_JAVA" != ""; then
13948 pathmunge "$JAVA_HOME/bin" "after"
13956 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
13957 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
13958 x_LO_ELFCHECK_ALLOWLIST=
13960 x_LO_ELFCHECK_ALLOWLIST=[\#]
13962 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
13963 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
13967 # Generate a configuration sha256 we can use for deps
13968 if test -f config_host.mk; then
13969 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
13971 if test -f config_host_lang.mk; then
13972 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
13975 CFLAGS=$my_original_CFLAGS
13976 CXXFLAGS=$my_original_CXXFLAGS
13977 CPPFLAGS=$my_original_CPPFLAGS
13979 AC_CONFIG_LINKS([include:include])
13981 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
13982 # BUILD platform configuration] - otherwise breaks cross building
13983 AC_CONFIG_FILES([config_host.mk
13984 config_host_lang.mk
13986 bin/bffvalidator.sh
13987 bin/odfvalidator.sh
13989 hardened_runtime.xcent
13990 instsetoo_native/util/openoffice.lst
13991 sysui/desktop/macosx/Info.plist])
13992 AC_CONFIG_HEADERS([config_host/config_buildid.h])
13993 AC_CONFIG_HEADERS([config_host/config_box2d.h])
13994 AC_CONFIG_HEADERS([config_host/config_clang.h])
13995 AC_CONFIG_HEADERS([config_host/config_dconf.h])
13996 AC_CONFIG_HEADERS([config_host/config_eot.h])
13997 AC_CONFIG_HEADERS([config_host/config_extensions.h])
13998 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
13999 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14000 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14001 AC_CONFIG_HEADERS([config_host/config_features.h])
14002 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14003 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14004 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14005 AC_CONFIG_HEADERS([config_host/config_folders.h])
14006 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14007 AC_CONFIG_HEADERS([config_host/config_gio.h])
14008 AC_CONFIG_HEADERS([config_host/config_global.h])
14009 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14010 AC_CONFIG_HEADERS([config_host/config_java.h])
14011 AC_CONFIG_HEADERS([config_host/config_langs.h])
14012 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14013 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14014 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14015 AC_CONFIG_HEADERS([config_host/config_locales.h])
14016 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14017 AC_CONFIG_HEADERS([config_host/config_oox.h])
14018 AC_CONFIG_HEADERS([config_host/config_options.h])
14019 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14020 AC_CONFIG_HEADERS([config_host/config_qrcodegen.h])
14021 AC_CONFIG_HEADERS([config_host/config_skia.h])
14022 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14023 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14024 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14025 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14026 AC_CONFIG_HEADERS([config_host/config_version.h])
14027 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14028 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14029 AC_CONFIG_HEADERS([config_host/config_python.h])
14030 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14033 if test "$CROSS_COMPILING" = TRUE; then
14034 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14037 # touch the config timestamp file
14038 if test ! -f config_host.mk.stamp; then
14039 echo > config_host.mk.stamp
14040 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14041 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14043 echo > config_host.mk.stamp
14046 # touch the config lang timestamp file
14047 if test ! -f config_host_lang.mk.stamp; then
14048 echo > config_host_lang.mk.stamp
14049 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14050 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14052 echo > config_host_lang.mk.stamp
14056 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14057 -a "$build_os" = "cygwin"; then
14060 ****************************************************************************
14062 Your make version is known to be horribly slow, and hard to debug
14063 problems with. To get a reasonably functional make please do:
14065 to install a pre-compiled binary make for Win32
14067 mkdir -p /opt/lo/bin
14069 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14070 cp make-4.2.1-msvc.exe make
14073 to install from source:
14074 place yourself in a working directory of you choice.
14076 git clone git://git.savannah.gnu.org/make.git
14078 [go to Start menu, open "Visual Studio 2019", click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14079 set PATH=%PATH%;C:\Cygwin\bin
14080 [or Cygwin64, if that is what you have]
14081 cd path-to-make-repo-you-cloned-above
14082 build_w32.bat --without-guile
14084 should result in a WinRel/gnumake.exe.
14085 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14087 Then re-run autogen.sh
14089 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14090 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14093 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14094 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14100 ****************************************************************************
14105 To view some help, run:
14110 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14112 After the build has finished successfully, you can immediately run what you built using the command:
14115 if test $_os = Darwin; then
14116 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14118 echo instdir/program/soffice
14122 If you want to run the smoketest, run:
14128 if test -f warn; then
14133 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: