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-unowinreg,
1648 AS_HELP_STRING([--enable-build-unowinreg],
1649 [Do not use the prebuilt unowinreg.dll. Build it instead. The MinGW C++
1650 compiler is needed on Linux.]),
1653 AC_ARG_ENABLE(build-opensymbol,
1654 AS_HELP_STRING([--enable-build-opensymbol],
1655 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1656 fontforge installed.]),
1659 AC_ARG_ENABLE(dependency-tracking,
1660 AS_HELP_STRING([--enable-dependency-tracking],
1661 [Do not reject slow dependency extractors.])[
1662 --disable-dependency-tracking
1663 Disables generation of dependency information.
1664 Speed up one-time builds.],
1667 AC_ARG_ENABLE(icecream,
1668 AS_HELP_STRING([--enable-icecream],
1669 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1670 It defaults to /opt/icecream for the location of the icecream gcc/g++
1671 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1675 AS_HELP_STRING([--enable-ld=<linker>],
1676 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1677 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1678 If <linker> contains any ':', the part before the first ':' is used as the value of
1679 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1680 needed for Clang 12).]),
1683 libo_FUZZ_ARG_ENABLE(cups,
1684 AS_HELP_STRING([--disable-cups],
1685 [Do not build cups support.])
1688 AC_ARG_ENABLE(ccache,
1689 AS_HELP_STRING([--disable-ccache],
1690 [Do not try to use ccache automatically.
1691 By default, unless on Windows, we will try to detect if ccache is available; in that case if
1692 CC/CXX are not yet set, and --enable-icecream is not given, we
1693 attempt to use ccache. --disable-ccache disables ccache completely.
1694 Additionally ccache's depend mode is enabled if possible,
1695 use --enable-ccache=nodepend to enable ccache without depend mode.
1699 libo_FUZZ_ARG_ENABLE(online-update,
1700 AS_HELP_STRING([--enable-online-update],
1701 [Enable the online update service that will check for new versions of
1702 LibreOffice. By default, it is enabled on Windows and Mac, disabled on Linux.
1703 If the value is "mar", the experimental Mozilla-like update will be
1704 enabled instead of the traditional update mechanism.]),
1707 AC_ARG_WITH(update-config,
1708 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1709 [Path to the update config ini file]))
1711 libo_FUZZ_ARG_ENABLE(extension-update,
1712 AS_HELP_STRING([--disable-extension-update],
1713 [Disable possibility to update installed extensions.]),
1716 libo_FUZZ_ARG_ENABLE(release-build,
1717 AS_HELP_STRING([--enable-release-build],
1718 [Enable release build. Note that the "release build" choice is orthogonal to
1719 whether symbols are present, debug info is generated, or optimization
1721 See http://wiki.documentfoundation.org/Development/DevBuild]),
1724 AC_ARG_ENABLE(windows-build-signing,
1725 AS_HELP_STRING([--enable-windows-build-signing],
1726 [Enable signing of windows binaries (*.exe, *.dll)]),
1729 AC_ARG_ENABLE(silent-msi,
1730 AS_HELP_STRING([--enable-silent-msi],
1731 [Enable MSI with LIMITUI=1 (silent install).]),
1734 AC_ARG_ENABLE(macosx-code-signing,
1735 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1736 [Sign executables, dylibs, frameworks and the app bundle. If you
1737 don't provide an identity the first suitable certificate
1738 in your keychain is used.]),
1741 AC_ARG_ENABLE(macosx-package-signing,
1742 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1743 [Create a .pkg suitable for uploading to the Mac App Store and sign
1744 it. If you don't provide an identity the first suitable certificate
1745 in your keychain is used.]),
1748 AC_ARG_ENABLE(macosx-sandbox,
1749 AS_HELP_STRING([--enable-macosx-sandbox],
1750 [Make the app bundle run in a sandbox. Requires code signing.
1751 Is required by apps distributed in the Mac App Store, and implies
1752 adherence to App Store rules.]),
1755 AC_ARG_WITH(macosx-bundle-identifier,
1756 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1757 [Define the macOS bundle identifier. Default is the somewhat weird
1758 org.libreoffice.script ("script", huh?).]),
1759 ,with_macosx_bundle_identifier=org.libreoffice.script)
1761 AC_ARG_WITH(product-name,
1762 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1763 [Define the product name. Default is AC_PACKAGE_NAME.]),
1764 ,with_product_name=$PRODUCTNAME)
1766 AC_ARG_WITH(package-version,
1767 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1768 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1771 libo_FUZZ_ARG_ENABLE(readonly-installset,
1772 AS_HELP_STRING([--enable-readonly-installset],
1773 [Prevents any attempts by LibreOffice to write into its installation. That means
1774 at least that no "system-wide" extensions can be added. Partly experimental work in
1775 progress, probably not fully implemented. Always enabled for macOS.]),
1778 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1779 AS_HELP_STRING([--disable-mariadb-sdbc],
1780 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1783 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1784 AS_HELP_STRING([--disable-postgresql-sdbc],
1785 [Disable the build of the PostgreSQL-SDBC driver.])
1788 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1789 AS_HELP_STRING([--disable-lotuswordpro],
1790 [Disable the build of the Lotus Word Pro filter.]),
1791 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1793 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1794 AS_HELP_STRING([--disable-firebird-sdbc],
1795 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1796 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1798 AC_ARG_ENABLE(bogus-pkg-config,
1799 AS_HELP_STRING([--enable-bogus-pkg-config],
1800 [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.]),
1803 AC_ARG_ENABLE(openssl,
1804 AS_HELP_STRING([--disable-openssl],
1805 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1806 components will either use GNUTLS or NSS. Work in progress,
1807 use only if you are hacking on it.]),
1808 ,enable_openssl=yes)
1810 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1811 AS_HELP_STRING([--enable-cipher-openssl-backend],
1812 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1813 Requires --enable-openssl.]))
1815 AC_ARG_ENABLE(library-bin-tar,
1816 AS_HELP_STRING([--enable-library-bin-tar],
1817 [Enable the building and reused of tarball of binary build for some 'external' libraries.
1818 Some libraries can save their build result in a tarball
1819 stored in TARFILE_LOCATION. That binary tarball is
1820 uniquely identified by the source tarball,
1821 the content of the config_host.mk file and the content
1822 of the top-level directory in core for that library
1823 If this option is enabled, then if such a tarfile exist, it will be untarred
1824 instead of the source tarfile, and the build step will be skipped for that
1826 If a proper tarfile does not exist, then the normal source-based
1827 build is done for that library and a proper binary tarfile is created
1828 for the next time.]),
1831 AC_ARG_ENABLE(dconf,
1832 AS_HELP_STRING([--disable-dconf],
1833 [Disable the dconf configuration backend (enabled by default where
1836 libo_FUZZ_ARG_ENABLE(formula-logger,
1838 [--enable-formula-logger],
1839 [Enable formula logger for logging formula calculation flow in Calc.]
1844 AS_HELP_STRING([--disable-ldap],
1845 [Disable LDAP support.]),
1848 AC_ARG_ENABLE(opencl,
1849 AS_HELP_STRING([--disable-opencl],
1850 [Disable OpenCL support.]),
1853 dnl ===================================================================
1854 dnl Optional Packages (--with/without-)
1855 dnl ===================================================================
1857 AC_ARG_WITH(gcc-home,
1858 AS_HELP_STRING([--with-gcc-home],
1859 [Specify the location of gcc/g++ manually. This can be used in conjunction
1860 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1861 non-default path.]),
1864 AC_ARG_WITH(gnu-patch,
1865 AS_HELP_STRING([--with-gnu-patch],
1866 [Specify location of GNU patch on Solaris or FreeBSD.]),
1869 AC_ARG_WITH(build-platform-configure-options,
1870 AS_HELP_STRING([--with-build-platform-configure-options],
1871 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1875 AS_HELP_STRING([--with-gnu-cp],
1876 [Specify location of GNU cp on Solaris or FreeBSD.]),
1879 AC_ARG_WITH(external-tar,
1880 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1881 [Specify an absolute path of where to find (and store) tarfiles.]),
1882 TARFILE_LOCATION=$withval ,
1885 AC_ARG_WITH(referenced-git,
1886 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1887 [Specify another checkout directory to reference. This makes use of
1888 git submodule update --reference, and saves a lot of diskspace
1889 when having multiple trees side-by-side.]),
1890 GIT_REFERENCE_SRC=$withval ,
1893 AC_ARG_WITH(linked-git,
1894 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
1895 [Specify a directory where the repositories of submodules are located.
1896 This uses a method similar to git-new-workdir to get submodules.]),
1897 GIT_LINK_SRC=$withval ,
1900 AC_ARG_WITH(galleries,
1901 AS_HELP_STRING([--with-galleries],
1902 [Specify how galleries should be built. It is possible either to
1903 build these internally from source ("build"),
1904 or to disable them ("no")]),
1908 AS_HELP_STRING([--with-theme="theme1 theme2..."],
1909 [Choose which themes to include. By default those themes with an '*' are included.
1910 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
1911 *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
1914 libo_FUZZ_ARG_WITH(helppack-integration,
1915 AS_HELP_STRING([--without-helppack-integration],
1916 [It will not integrate the helppacks to the installer
1917 of the product. Please use this switch to use the online help
1918 or separate help packages.]),
1921 libo_FUZZ_ARG_WITH(fonts,
1922 AS_HELP_STRING([--without-fonts],
1923 [LibreOffice includes some third-party fonts to provide a reliable basis for
1924 help content, templates, samples, etc. When these fonts are already
1925 known to be available on the system then you should use this option.]),
1929 AS_HELP_STRING([--with-epm],
1930 [Decides which epm to use. Default is to use the one from the system if
1931 one is built. When either this is not there or you say =internal epm
1935 AC_ARG_WITH(package-format,
1936 AS_HELP_STRING([--with-package-format],
1937 [Specify package format(s) for LibreOffice installation sets. The
1938 implicit --without-package-format leads to no installation sets being
1939 generated. Possible values: aix, archive, bsd, deb, dmg,
1940 installed, msi, pkg, and rpm.
1941 Example: --with-package-format='deb rpm']),
1945 AS_HELP_STRING([--with-tls],
1946 [Decides which TLS/SSL and cryptographic implementations to use for
1947 LibreOffice's code. Notice that this doesn't apply for depending
1948 libraries like "neon", for example. Default is to use NSS
1949 although OpenSSL is also possible. Notice that selecting NSS restricts
1950 the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
1951 restrict by now the usage of NSS in LO's code. Possible values:
1952 openssl, nss. Example: --with-tls="nss"]),
1955 AC_ARG_WITH(system-libs,
1956 AS_HELP_STRING([--with-system-libs],
1957 [Use libraries already on system -- enables all --with-system-* flags.]),
1960 AC_ARG_WITH(system-bzip2,
1961 AS_HELP_STRING([--with-system-bzip2],
1962 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
1963 [with_system_bzip2="$with_system_libs"])
1965 AC_ARG_WITH(system-headers,
1966 AS_HELP_STRING([--with-system-headers],
1967 [Use headers already on system -- enables all --with-system-* flags for
1968 external packages whose headers are the only entities used i.e.
1969 boost/odbc/sane-header(s).]),,
1970 [with_system_headers="$with_system_libs"])
1972 AC_ARG_WITH(system-jars,
1973 AS_HELP_STRING([--without-system-jars],
1974 [When building with --with-system-libs, also the needed jars are expected
1975 on the system. Use this to disable that]),,
1976 [with_system_jars="$with_system_libs"])
1978 AC_ARG_WITH(system-cairo,
1979 AS_HELP_STRING([--with-system-cairo],
1980 [Use cairo libraries already on system. Happens automatically for
1981 (implicit) --enable-gtk3.]))
1983 AC_ARG_WITH(system-epoxy,
1984 AS_HELP_STRING([--with-system-epoxy],
1985 [Use epoxy libraries already on system. Happens automatically for
1986 (implicit) --enable-gtk3.]),,
1987 [with_system_epoxy="$with_system_libs"])
1989 AC_ARG_WITH(myspell-dicts,
1990 AS_HELP_STRING([--with-myspell-dicts],
1991 [Adds myspell dictionaries to the LibreOffice installation set]),
1994 AC_ARG_WITH(system-dicts,
1995 AS_HELP_STRING([--without-system-dicts],
1996 [Do not use dictionaries from system paths.]),
1999 AC_ARG_WITH(external-dict-dir,
2000 AS_HELP_STRING([--with-external-dict-dir],
2001 [Specify external dictionary dir.]),
2004 AC_ARG_WITH(external-hyph-dir,
2005 AS_HELP_STRING([--with-external-hyph-dir],
2006 [Specify external hyphenation pattern dir.]),
2009 AC_ARG_WITH(external-thes-dir,
2010 AS_HELP_STRING([--with-external-thes-dir],
2011 [Specify external thesaurus dir.]),
2014 AC_ARG_WITH(system-zlib,
2015 AS_HELP_STRING([--with-system-zlib],
2016 [Use zlib already on system.]),,
2017 [with_system_zlib=auto])
2019 AC_ARG_WITH(system-jpeg,
2020 AS_HELP_STRING([--with-system-jpeg],
2021 [Use jpeg already on system.]),,
2022 [with_system_jpeg="$with_system_libs"])
2024 AC_ARG_WITH(system-clucene,
2025 AS_HELP_STRING([--with-system-clucene],
2026 [Use clucene already on system.]),,
2027 [with_system_clucene="$with_system_libs"])
2029 AC_ARG_WITH(system-expat,
2030 AS_HELP_STRING([--with-system-expat],
2031 [Use expat already on system.]),,
2032 [with_system_expat="$with_system_libs"])
2034 AC_ARG_WITH(system-libxml,
2035 AS_HELP_STRING([--with-system-libxml],
2036 [Use libxml/libxslt already on system.]),,
2037 [with_system_libxml=auto])
2039 AC_ARG_WITH(system-icu,
2040 AS_HELP_STRING([--with-system-icu],
2041 [Use icu already on system.]),,
2042 [with_system_icu="$with_system_libs"])
2044 AC_ARG_WITH(system-ucpp,
2045 AS_HELP_STRING([--with-system-ucpp],
2046 [Use ucpp already on system.]),,
2049 AC_ARG_WITH(system-openldap,
2050 AS_HELP_STRING([--with-system-openldap],
2051 [Use the OpenLDAP LDAP SDK already on system.]),,
2052 [with_system_openldap="$with_system_libs"])
2054 libo_FUZZ_ARG_ENABLE(poppler,
2055 AS_HELP_STRING([--disable-poppler],
2056 [Disable building Poppler.])
2059 AC_ARG_WITH(system-poppler,
2060 AS_HELP_STRING([--with-system-poppler],
2061 [Use system poppler (only needed for PDF import).]),,
2062 [with_system_poppler="$with_system_libs"])
2064 libo_FUZZ_ARG_ENABLE(gpgmepp,
2065 AS_HELP_STRING([--disable-gpgmepp],
2066 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2069 AC_ARG_WITH(system-gpgmepp,
2070 AS_HELP_STRING([--with-system-gpgmepp],
2071 [Use gpgmepp already on system]),,
2072 [with_system_gpgmepp="$with_system_libs"])
2074 AC_ARG_WITH(system-apache-commons,
2075 AS_HELP_STRING([--with-system-apache-commons],
2076 [Use Apache commons libraries already on system.]),,
2077 [with_system_apache_commons="$with_system_jars"])
2079 AC_ARG_WITH(system-mariadb,
2080 AS_HELP_STRING([--with-system-mariadb],
2081 [Use MariaDB/MySQL libraries already on system.]),,
2082 [with_system_mariadb="$with_system_libs"])
2084 AC_ARG_ENABLE(bundle-mariadb,
2085 AS_HELP_STRING([--enable-bundle-mariadb],
2086 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2089 AC_ARG_WITH(system-postgresql,
2090 AS_HELP_STRING([--with-system-postgresql],
2091 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2092 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2093 [with_system_postgresql="$with_system_libs"])
2095 AC_ARG_WITH(libpq-path,
2096 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2097 [Use this PostgreSQL C interface (libpq) installation for building
2098 the PostgreSQL-SDBC extension.]),
2101 AC_ARG_WITH(system-firebird,
2102 AS_HELP_STRING([--with-system-firebird],
2103 [Use Firebird libraries already on system, for building the Firebird-SDBC
2104 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2105 [with_system_firebird="$with_system_libs"])
2107 AC_ARG_WITH(system-libtommath,
2108 AS_HELP_STRING([--with-system-libtommath],
2109 [Use libtommath already on system]),,
2110 [with_system_libtommath="$with_system_libs"])
2112 AC_ARG_WITH(system-hsqldb,
2113 AS_HELP_STRING([--with-system-hsqldb],
2114 [Use hsqldb already on system.]))
2116 AC_ARG_WITH(hsqldb-jar,
2117 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2118 [Specify path to jarfile manually.]),
2119 HSQLDB_JAR=$withval)
2121 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2122 AS_HELP_STRING([--disable-scripting-beanshell],
2123 [Disable support for scripts in BeanShell.]),
2127 AC_ARG_WITH(system-beanshell,
2128 AS_HELP_STRING([--with-system-beanshell],
2129 [Use beanshell already on system.]),,
2130 [with_system_beanshell="$with_system_jars"])
2132 AC_ARG_WITH(beanshell-jar,
2133 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2134 [Specify path to jarfile manually.]),
2137 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2138 AS_HELP_STRING([--disable-scripting-javascript],
2139 [Disable support for scripts in JavaScript.]),
2143 AC_ARG_WITH(system-rhino,
2144 AS_HELP_STRING([--with-system-rhino],
2145 [Use rhino already on system.]),,)
2146 # [with_system_rhino="$with_system_jars"])
2147 # Above is not used as we have different debug interface
2148 # patched into internal rhino. This code needs to be fixed
2149 # before we can enable it by default.
2151 AC_ARG_WITH(rhino-jar,
2152 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2153 [Specify path to jarfile manually.]),
2156 AC_ARG_WITH(commons-logging-jar,
2157 AS_HELP_STRING([--with-commons-logging-jar=JARFILE],
2158 [Specify path to jarfile manually.]),
2159 COMMONS_LOGGING_JAR=$withval)
2161 AC_ARG_WITH(system-jfreereport,
2162 AS_HELP_STRING([--with-system-jfreereport],
2163 [Use JFreeReport already on system.]),,
2164 [with_system_jfreereport="$with_system_jars"])
2166 AC_ARG_WITH(sac-jar,
2167 AS_HELP_STRING([--with-sac-jar=JARFILE],
2168 [Specify path to jarfile manually.]),
2171 AC_ARG_WITH(libxml-jar,
2172 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2173 [Specify path to jarfile manually.]),
2174 LIBXML_JAR=$withval)
2176 AC_ARG_WITH(flute-jar,
2177 AS_HELP_STRING([--with-flute-jar=JARFILE],
2178 [Specify path to jarfile manually.]),
2181 AC_ARG_WITH(jfreereport-jar,
2182 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2183 [Specify path to jarfile manually.]),
2184 JFREEREPORT_JAR=$withval)
2186 AC_ARG_WITH(liblayout-jar,
2187 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2188 [Specify path to jarfile manually.]),
2189 LIBLAYOUT_JAR=$withval)
2191 AC_ARG_WITH(libloader-jar,
2192 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2193 [Specify path to jarfile manually.]),
2194 LIBLOADER_JAR=$withval)
2196 AC_ARG_WITH(libformula-jar,
2197 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2198 [Specify path to jarfile manually.]),
2199 LIBFORMULA_JAR=$withval)
2201 AC_ARG_WITH(librepository-jar,
2202 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2203 [Specify path to jarfile manually.]),
2204 LIBREPOSITORY_JAR=$withval)
2206 AC_ARG_WITH(libfonts-jar,
2207 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2208 [Specify path to jarfile manually.]),
2209 LIBFONTS_JAR=$withval)
2211 AC_ARG_WITH(libserializer-jar,
2212 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2213 [Specify path to jarfile manually.]),
2214 LIBSERIALIZER_JAR=$withval)
2216 AC_ARG_WITH(libbase-jar,
2217 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2218 [Specify path to jarfile manually.]),
2219 LIBBASE_JAR=$withval)
2221 AC_ARG_WITH(system-odbc,
2222 AS_HELP_STRING([--with-system-odbc],
2223 [Use the odbc headers already on system.]),,
2224 [with_system_odbc="auto"])
2226 AC_ARG_WITH(system-sane,
2227 AS_HELP_STRING([--with-system-sane],
2228 [Use sane.h already on system.]),,
2229 [with_system_sane="$with_system_headers"])
2231 AC_ARG_WITH(system-bluez,
2232 AS_HELP_STRING([--with-system-bluez],
2233 [Use bluetooth.h already on system.]),,
2234 [with_system_bluez="$with_system_headers"])
2236 AC_ARG_WITH(system-curl,
2237 AS_HELP_STRING([--with-system-curl],
2238 [Use curl already on system.]),,
2239 [with_system_curl=auto])
2241 AC_ARG_WITH(system-boost,
2242 AS_HELP_STRING([--with-system-boost],
2243 [Use boost already on system.]),,
2244 [with_system_boost="$with_system_headers"])
2246 AC_ARG_WITH(system-glm,
2247 AS_HELP_STRING([--with-system-glm],
2248 [Use glm already on system.]),,
2249 [with_system_glm="$with_system_headers"])
2251 AC_ARG_WITH(system-hunspell,
2252 AS_HELP_STRING([--with-system-hunspell],
2253 [Use libhunspell already on system.]),,
2254 [with_system_hunspell="$with_system_libs"])
2256 libo_FUZZ_ARG_ENABLE(qrcodegen,
2257 AS_HELP_STRING([--disable-qrcodegen],
2258 [Disable use of qrcodegen external library.]))
2260 AC_ARG_WITH(system-qrcodegen,
2261 AS_HELP_STRING([--with-system-qrcodegen],
2262 [Use libqrcodegen already on system.]),,
2263 [with_system_qrcodegen="$with_system_libs"])
2265 AC_ARG_WITH(system-box2d,
2266 AS_HELP_STRING([--with-system-box2d],
2267 [Use box2d already on system.]),,
2268 [with_system_box2d="$with_system_libs"])
2270 AC_ARG_WITH(system-mythes,
2271 AS_HELP_STRING([--with-system-mythes],
2272 [Use mythes already on system.]),,
2273 [with_system_mythes="$with_system_libs"])
2275 AC_ARG_WITH(system-altlinuxhyph,
2276 AS_HELP_STRING([--with-system-altlinuxhyph],
2277 [Use ALTLinuxhyph already on system.]),,
2278 [with_system_altlinuxhyph="$with_system_libs"])
2280 AC_ARG_WITH(system-lpsolve,
2281 AS_HELP_STRING([--with-system-lpsolve],
2282 [Use lpsolve already on system.]),,
2283 [with_system_lpsolve="$with_system_libs"])
2285 AC_ARG_WITH(system-coinmp,
2286 AS_HELP_STRING([--with-system-coinmp],
2287 [Use CoinMP already on system.]),,
2288 [with_system_coinmp="$with_system_libs"])
2290 AC_ARG_WITH(system-liblangtag,
2291 AS_HELP_STRING([--with-system-liblangtag],
2292 [Use liblangtag library already on system.]),,
2293 [with_system_liblangtag="$with_system_libs"])
2296 AS_HELP_STRING([--with-webdav],
2297 [Specify which library to use for webdav implementation.
2298 Possible values: "neon", "serf", "no". The default value is "neon".
2299 Example: --with-webdav="serf"]),
2300 WITH_WEBDAV=$withval,
2303 AC_ARG_WITH(linker-hash-style,
2304 AS_HELP_STRING([--with-linker-hash-style],
2305 [Use linker with --hash-style=<style> when linking shared objects.
2306 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2307 if supported on the build system, and "sysv" otherwise.]))
2309 AC_ARG_WITH(jdk-home,
2310 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2311 [If you have installed JDK 9 or later on your system please supply the
2312 path here. Note that this is not the location of the java command but the
2313 location of the entire distribution. In case of cross-compiling, this
2314 is the JDK of the host os. Use --with-build-platform-configure-options
2315 to point to a different build platform JDK.]),
2319 AS_HELP_STRING([--with-help],
2320 [Enable the build of help. There is a special parameter "common" that
2321 can be used to bundle only the common part, .e.g help-specific icons.
2322 This is useful when you build the helpcontent separately.])
2324 Usage: --with-help build the old local help
2325 --without-help no local help (default)
2326 --with-help=html build the new HTML local help
2327 --with-help=online build the new HTML online help
2331 AC_ARG_WITH(omindex,
2332 AS_HELP_STRING([--with-omindex],
2333 [Enable the support of xapian-omega index for online help.])
2335 Usage: --with-omindex=server prepare the pages for omindex
2336 but let xapian-omega be built in server.
2337 --with-omindex=noxap do not prepare online pages
2342 libo_FUZZ_ARG_WITH(java,
2343 AS_HELP_STRING([--with-java=<java command>],
2344 [Specify the name of the Java interpreter command. Typically "java"
2345 which is the default.
2347 To build without support for Java components, applets, accessibility
2348 or the XML filters written in Java, use --without-java or --with-java=no.]),
2349 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2350 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2353 AC_ARG_WITH(jvm-path,
2354 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2355 [Use a specific JVM search path at runtime.
2356 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2359 AC_ARG_WITH(ant-home,
2360 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2361 [If you have installed Apache Ant on your system, please supply the path here.
2362 Note that this is not the location of the Ant binary but the location
2363 of the entire distribution.]),
2366 AC_ARG_WITH(symbol-config,
2367 AS_HELP_STRING([--with-symbol-config],
2368 [Configuration for the crashreport symbol upload]),
2370 [with_symbol_config=no])
2372 AC_ARG_WITH(export-validation,
2373 AS_HELP_STRING([--without-export-validation],
2374 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2375 ,with_export_validation=auto)
2377 AC_ARG_WITH(bffvalidator,
2378 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2379 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2380 Requires installed Microsoft Office Binary File Format Validator.
2381 Note: export-validation (--with-export-validation) is required to be turned on.
2382 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2383 ,with_bffvalidator=no)
2385 libo_FUZZ_ARG_WITH(junit,
2386 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2387 [Specifies the JUnit 4 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(hamcrest,
2392 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2393 [Specifies the hamcrest jar file to use for JUnit-based tests.
2394 --without-junit disables those tests. Not relevant in the --without-java case.]),
2397 AC_ARG_WITH(perl-home,
2398 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2399 [If you have installed Perl 5 Distribution, on your system, please
2400 supply the path here. Note that this is not the location of the Perl
2401 binary but the location of the entire distribution.]),
2404 libo_FUZZ_ARG_WITH(doxygen,
2406 [--with-doxygen=<absolute path to doxygen executable>],
2407 [Specifies the doxygen executable to use when generating ODK C/C++
2408 documentation. --without-doxygen disables generation of ODK C/C++
2409 documentation. Not relevant in the --disable-odk case.]),
2412 AC_ARG_WITH(visual-studio,
2413 AS_HELP_STRING([--with-visual-studio=<2019>],
2414 [Specify which Visual Studio version to use in case several are
2415 installed. Currently only 2019 (default) is supported.]),
2418 AC_ARG_WITH(windows-sdk,
2419 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2420 [Specify which Windows SDK, or "Windows Kit", version to use
2421 in case the one that came with the selected Visual Studio
2422 is not what you want for some reason. Note that not all compiler/SDK
2423 combinations are supported. The intent is that this option should not
2428 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2429 [Use this option to build LibreOffice with additional UI language support.
2430 English (US) is always included by default.
2431 Separate multiple languages with space.
2432 For all languages, use --with-lang=ALL.]),
2435 AC_ARG_WITH(locales,
2436 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2437 [Use this option to limit the locale information built in.
2438 Separate multiple locales with space.
2439 Very experimental and might well break stuff.
2440 Just a desperate measure to shrink code and data size.
2441 By default all the locales available is included.
2442 This option is completely unrelated to --with-lang.])
2444 Affects also our character encoding conversion
2445 tables for encodings mainly targeted for a
2446 particular locale, like EUC-CN and EUC-TW for
2447 zh, ISO-2022-JP for ja.
2449 Affects also our add-on break iterator data for
2452 For the default, all locales, don't use this switch at all.
2453 Specifying just the language part of a locale means all matching
2454 locales will be included.
2458 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2459 libo_FUZZ_ARG_WITH(krb5,
2460 AS_HELP_STRING([--with-krb5],
2461 [Enable MIT Kerberos 5 support in modules that support it.
2462 By default automatically enabled on platforms
2463 where a good system Kerberos 5 is available.]),
2466 libo_FUZZ_ARG_WITH(gssapi,
2467 AS_HELP_STRING([--with-gssapi],
2468 [Enable GSSAPI support in modules that support it.
2469 By default automatically enabled on platforms
2470 where a good system GSSAPI is available.]),
2474 AS_HELP_STRING([--with-iwyu],
2475 [Use given IWYU binary path to check unneeded includes instead of building.
2476 Use only if you are hacking on it.]),
2479 libo_FUZZ_ARG_WITH(lxml,
2480 AS_HELP_STRING([--without-lxml],
2481 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2482 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2483 report widget classes and ids.]),
2486 libo_FUZZ_ARG_WITH(latest-c++,
2487 AS_HELP_STRING([--with-latest-c++],
2488 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2489 published standard.]),,
2490 [with_latest_c__=no])
2492 dnl ===================================================================
2494 dnl ===================================================================
2496 AC_ARG_WITH(branding,
2497 AS_HELP_STRING([--with-branding=/path/to/images],
2498 [Use given path to retrieve branding images set.])
2500 Search for intro.png about.svg and logo.svg.
2501 If any is missing, default ones will be used instead.
2503 Search also progress.conf for progress
2504 settings on intro screen :
2506 PROGRESSBARCOLOR="255,255,255" Set color of
2507 progress bar. Comma separated RGB decimal values.
2508 PROGRESSSIZE="407,6" Set size of progress bar.
2509 Comma separated decimal values (width, height).
2510 PROGRESSPOSITION="61,317" Set position of progress
2511 bar from left,top. Comma separated decimal values.
2512 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2513 bar frame. Comma separated RGB decimal values.
2514 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2515 bar text. Comma separated RGB decimal values.
2516 PROGRESSTEXTBASELINE="287" Set vertical position of
2517 progress bar text from top. Decimal value.
2519 Default values will be used if not found.
2524 AC_ARG_WITH(extra-buildid,
2525 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2526 [Show addition build identification in about dialog.]),
2531 AS_HELP_STRING([--with-vendor="John the Builder"],
2532 [Set vendor of the build.]),
2535 AC_ARG_WITH(android-package-name,
2536 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2537 [Set Android package name of the build.]),
2540 AC_ARG_WITH(compat-oowrappers,
2541 AS_HELP_STRING([--with-compat-oowrappers],
2542 [Install oo* wrappers in parallel with
2543 lo* ones to keep backward compatibility.
2544 Has effect only with make distro-pack-install]),
2547 AC_ARG_WITH(os-version,
2548 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2549 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2552 AC_ARG_WITH(mingw-cross-compiler,
2553 AS_HELP_STRING([--with-mingw-cross-compiler=<mingw32-g++ command>],
2554 [Specify the MinGW cross-compiler to use.
2555 When building on the ODK on Unix and building unowinreg.dll,
2556 specify the MinGW C++ cross-compiler.]),
2559 AC_ARG_WITH(idlc-cpp,
2560 AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2561 [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2564 AC_ARG_WITH(parallelism,
2565 AS_HELP_STRING([--with-parallelism],
2566 [Number of jobs to run simultaneously during build. Parallel builds can
2567 save a lot of time on multi-cpu machines. Defaults to the number of
2568 CPUs on the machine, unless you configure --enable-icecream - then to
2572 AC_ARG_WITH(all-tarballs,
2573 AS_HELP_STRING([--with-all-tarballs],
2574 [Download all external tarballs unconditionally]))
2576 AC_ARG_WITH(gdrive-client-id,
2577 AS_HELP_STRING([--with-gdrive-client-id],
2578 [Provides the client id of the application for OAuth2 authentication
2579 on Google Drive. If either this or --with-gdrive-client-secret is
2580 empty, the feature will be disabled]),
2583 AC_ARG_WITH(gdrive-client-secret,
2584 AS_HELP_STRING([--with-gdrive-client-secret],
2585 [Provides the client secret of the application for OAuth2
2586 authentication on Google Drive. If either this or
2587 --with-gdrive-client-id is empty, the feature will be disabled]),
2590 AC_ARG_WITH(alfresco-cloud-client-id,
2591 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2592 [Provides the client id of the application for OAuth2 authentication
2593 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2594 empty, the feature will be disabled]),
2597 AC_ARG_WITH(alfresco-cloud-client-secret,
2598 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2599 [Provides the client secret of the application for OAuth2
2600 authentication on Alfresco Cloud. If either this or
2601 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2604 AC_ARG_WITH(onedrive-client-id,
2605 AS_HELP_STRING([--with-onedrive-client-id],
2606 [Provides the client id of the application for OAuth2 authentication
2607 on OneDrive. If either this or --with-onedrive-client-secret is
2608 empty, the feature will be disabled]),
2611 AC_ARG_WITH(onedrive-client-secret,
2612 AS_HELP_STRING([--with-onedrive-client-secret],
2613 [Provides the client secret of the application for OAuth2
2614 authentication on OneDrive. If either this or
2615 --with-onedrive-client-id is empty, the feature will be disabled]),
2617 dnl ===================================================================
2618 dnl Do we want to use pre-build binary tarball for recompile
2619 dnl ===================================================================
2621 if test "$enable_library_bin_tar" = "yes" ; then
2622 USE_LIBRARY_BIN_TAR=TRUE
2624 USE_LIBRARY_BIN_TAR=
2626 AC_SUBST(USE_LIBRARY_BIN_TAR)
2628 dnl ===================================================================
2629 dnl Test whether build target is Release Build
2630 dnl ===================================================================
2631 AC_MSG_CHECKING([whether build target is Release Build])
2632 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2634 ENABLE_RELEASE_BUILD=
2635 GET_TASK_ALLOW_ENTITLEMENT='
2636 <!-- We want to be able to debug a hardened process when not building for release -->
2637 <key>com.apple.security.get-task-allow</key>
2640 AC_MSG_RESULT([yes])
2641 ENABLE_RELEASE_BUILD=TRUE
2642 GET_TASK_ALLOW_ENTITLEMENT=''
2644 AC_SUBST(ENABLE_RELEASE_BUILD)
2645 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2647 dnl ===================================================================
2648 dnl Test whether to sign Windows Build
2649 dnl ===================================================================
2650 AC_MSG_CHECKING([whether to sign windows build])
2651 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2652 AC_MSG_RESULT([yes])
2653 WINDOWS_BUILD_SIGNING="TRUE"
2656 WINDOWS_BUILD_SIGNING="FALSE"
2658 AC_SUBST(WINDOWS_BUILD_SIGNING)
2660 dnl ===================================================================
2661 dnl MacOSX build and runtime environment options
2662 dnl ===================================================================
2664 AC_ARG_WITH(macosx-sdk,
2665 AS_HELP_STRING([--with-macosx-sdk=<version>],
2666 [Prefer a specific SDK for building.])
2668 If the requested SDK is not available, a search for the oldest one will be done.
2669 With current Xcode versions, only the latest SDK is included, so this option is
2670 not terribly useful. It works fine to build with a new SDK and run the result
2673 e. g.: --with-macosx-sdk=10.10
2675 there are 3 options to control the MacOSX build:
2676 --with-macosx-sdk (referred as 'sdk' below)
2677 --with-macosx-version-min-required (referred as 'min' below)
2678 --with-macosx-version-max-allowed (referred as 'max' below)
2680 the connection between these value and the default they take is as follow:
2681 ( ? means not specified on the command line, s means the SDK version found,
2682 constraint: 8 <= x <= y <= z)
2684 ==========================================
2685 command line || config result
2686 ==========================================
2687 min | max | sdk || min | max | sdk |
2688 ? | ? | ? || 10.10 | 10.s | 10.s |
2689 ? | ? | 10.x || 10.10 | 10.x | 10.x |
2690 ? | 10.x | ? || 10.10 | 10.s | 10.s |
2691 ? | 10.x | 10.y || 10.10 | 10.x | 10.y |
2692 10.x | ? | ? || 10.x | 10.s | 10.s |
2693 10.x | ? | 10.y || 10.x | 10.y | 10.y |
2694 10.x | 10.y | ? || 10.x | 10.y | 10.y |
2695 10.x | 10.y | 10.z || 10.x | 10.y | 10.z |
2698 see: http://developer.apple.com/library/mac/#technotes/tn2064/_index.html
2699 for a detailed technical explanation of these variables
2701 Note: MACOSX_DEPLOYMENT_TARGET will be set to the value of 'min'.
2705 AC_ARG_WITH(macosx-version-min-required,
2706 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2707 [set the minimum OS version needed to run the built LibreOffice])
2709 e. g.: --with-macosx-version-min-required=10.10
2710 see --with-macosx-sdk for more info
2714 AC_ARG_WITH(macosx-version-max-allowed,
2715 AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2716 [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2718 e. g.: --with-macosx-version-max-allowed=10.10
2719 see --with-macosx-sdk for more info
2724 dnl ===================================================================
2725 dnl options for stuff used during cross-compilation build
2726 dnl Not quite superseded by --with-build-platform-configure-options.
2727 dnl TODO: check, if the "force" option is still needed anywhere.
2728 dnl ===================================================================
2730 AC_ARG_WITH(system-icu-for-build,
2731 AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2732 [Use icu already on system for build tools (cross-compilation only).]))
2735 dnl ===================================================================
2736 dnl Check for incompatible options set by fuzzing, and reset those
2737 dnl automatically to working combinations
2738 dnl ===================================================================
2740 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2741 "$enable_dbus" != "$enable_avahi"; then
2742 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2743 enable_avahi=$enable_dbus
2748 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2749 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2753 add_lopath_before ()
2758 for dir in $LO_PATH ; do
2759 if test "$dir" != "$1" ; then
2760 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2763 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2766 dnl ===================================================================
2767 dnl check for required programs (grep, awk, sed, bash)
2768 dnl ===================================================================
2773 if test -n "$1"; then
2774 if test "$build_os" = "cygwin"; then
2775 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2777 new_path=`cygpath -sm "$formatted_path"`
2780 new_path=`cygpath -u "$formatted_path"`
2785 if test "$2" = "after"; then
2786 add_lopath_after "$new_path"
2788 add_lopath_before "$new_path"
2794 AC_PATH_PROG( AWK, $AWK)
2795 if test -z "$AWK"; then
2796 AC_MSG_ERROR([install awk to run this script])
2799 AC_PATH_PROG(BASH, bash)
2800 if test -z "$BASH"; then
2801 AC_MSG_ERROR([bash not found in \$PATH])
2805 AC_MSG_CHECKING([for GNU or BSD tar])
2806 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2807 $a --version 2> /dev/null | egrep "GNU|bsdtar" 2>&1 > /dev/null
2808 if test $? -eq 0; then
2813 AC_MSG_RESULT($GNUTAR)
2814 if test -z "$GNUTAR"; then
2815 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2819 AC_MSG_CHECKING([for tar's option to strip components])
2820 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2821 if test $? -eq 0; then
2822 STRIP_COMPONENTS="--strip-components"
2824 $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2825 if test $? -eq 0; then
2826 STRIP_COMPONENTS="--strip-path"
2828 STRIP_COMPONENTS="unsupported"
2831 AC_MSG_RESULT($STRIP_COMPONENTS)
2832 if test x$STRIP_COMPONENTS = xunsupported; then
2833 AC_MSG_ERROR([you need a tar that is able to strip components.])
2835 AC_SUBST(STRIP_COMPONENTS)
2837 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2838 dnl desktop OSes from "mobile" ones.
2840 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2841 dnl In other words, that when building for an OS that is not a
2842 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2844 dnl Note the direction of the implication; there is no assumption that
2845 dnl cross-compiling would imply a non-desktop OS.
2847 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
2848 BUILD_TYPE="$BUILD_TYPE DESKTOP"
2849 AC_DEFINE(HAVE_FEATURE_DESKTOP)
2850 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2853 # Whether to build "avmedia" functionality or not.
2855 if test -z "$enable_avmedia"; then
2859 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2860 if test "$enable_avmedia" = yes; then
2861 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2863 USE_AVMEDIA_DUMMY='TRUE'
2865 AC_SUBST(USE_AVMEDIA_DUMMY)
2867 # Decide whether to build database connectivity stuff (including
2868 # Base) or not. We probably don't want to on non-desktop OSes.
2869 if test -z "$enable_database_connectivity"; then
2870 # --disable-database-connectivity is unfinished work in progress
2871 # and the iOS test app doesn't link if we actually try to use it.
2872 # if test $_os != iOS -a $_os != Android; then
2873 if test $_os != iOS; then
2874 enable_database_connectivity=yes
2878 if test "$enable_database_connectivity" = yes; then
2879 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2880 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2883 if test -z "$enable_extensions"; then
2884 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2885 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2886 enable_extensions=yes
2890 if test "$enable_extensions" = yes; then
2891 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2892 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2895 if test -z "$enable_scripting"; then
2896 # Disable scripting for iOS unless specifically overridden
2897 # with --enable-scripting.
2898 if test $_os != iOS; then
2899 enable_scripting=yes
2903 DISABLE_SCRIPTING=''
2904 if test "$enable_scripting" = yes; then
2905 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2906 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2908 DISABLE_SCRIPTING='TRUE'
2909 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2912 if test $_os = iOS -o $_os = Android; then
2913 # Disable dynamic_loading always for iOS and Android
2914 enable_dynamic_loading=no
2915 elif test -z "$enable_dynamic_loading"; then
2916 # Otherwise enable it unless specifically disabled
2917 enable_dynamic_loading=yes
2920 DISABLE_DYNLOADING=''
2921 if test "$enable_dynamic_loading" = yes; then
2922 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
2924 DISABLE_DYNLOADING='TRUE'
2926 AC_SUBST(DISABLE_DYNLOADING)
2928 # remember SYSBASE value
2931 dnl ===================================================================
2932 dnl Sort out various gallery compilation options
2933 dnl ===================================================================
2934 AC_MSG_CHECKING([how to build and package galleries])
2935 if test -n "${with_galleries}"; then
2936 if test "$with_galleries" = "build"; then
2937 WITH_GALLERY_BUILD=TRUE
2938 AC_MSG_RESULT([build from source images internally])
2939 elif test "$with_galleries" = "no"; then
2941 AC_MSG_RESULT([disable non-internal gallery build])
2943 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
2946 if test $_os != iOS -a $_os != Android; then
2947 WITH_GALLERY_BUILD=TRUE
2948 AC_MSG_RESULT([internal src images for desktop])
2951 AC_MSG_RESULT([disable src image build])
2954 AC_SUBST(WITH_GALLERY_BUILD)
2956 dnl ===================================================================
2957 dnl Checks if ccache is available
2958 dnl ===================================================================
2960 if test "$_os" = "WINNT"; then
2961 # on windows/VC build do not use ccache
2963 elif test "$enable_ccache" = "no"; then
2965 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
2966 case "%$CC%$CXX%" in
2967 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
2968 # assume that's good then
2969 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
2970 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
2971 CCACHE_DEPEND_MODE=1
2974 AC_PATH_PROG([CCACHE],[ccache],[not found])
2975 if test "$CCACHE" = "not found"; then
2978 CCACHE_DEPEND_MODE=1
2979 # Need to check for ccache version: otherwise prevents
2980 # caching of the results (like "-x objective-c++" for Mac)
2981 if test $_os = Darwin -o $_os = iOS; then
2982 # Check ccache version
2983 AC_MSG_CHECKING([whether version of ccache is suitable])
2984 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
2985 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
2986 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
2987 AC_MSG_RESULT([yes, $CCACHE_VERSION])
2989 AC_MSG_RESULT([no, $CCACHE_VERSION])
3000 if test "$enable_ccache" = "nodepend"; then
3001 CCACHE_DEPEND_MODE=""
3003 AC_SUBST(CCACHE_DEPEND_MODE)
3005 if test "$CCACHE" != ""; then
3006 ccache_size_msg=$([ccache -s | tail -n 1 | sed 's/^[^0-9]*//' | sed -e 's/\.[0-9]*//'])
3007 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3008 if test "$ccache_size" = ""; then
3009 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3010 if test "$ccache_size" = ""; then
3013 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3014 if test $ccache_size -lt 1024; then
3016 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3017 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3019 # warn that ccache may be too small for debug build
3020 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3021 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3024 if test $ccache_size -lt 5; then
3025 #warn that ccache may be too small for debug build
3026 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3027 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3032 dnl ===================================================================
3033 dnl Checks for C compiler,
3034 dnl The check for the C++ compiler is later on.
3035 dnl ===================================================================
3036 if test "$_os" != "WINNT"; then
3038 AC_MSG_CHECKING([gcc home])
3039 if test -z "$with_gcc_home"; then
3040 if test "$enable_icecream" = "yes"; then
3041 if test -d "/usr/lib/icecc/bin"; then
3042 GCC_HOME="/usr/lib/icecc/"
3043 elif test -d "/usr/libexec/icecc/bin"; then
3044 GCC_HOME="/usr/libexec/icecc/"
3045 elif test -d "/opt/icecream/bin"; then
3046 GCC_HOME="/opt/icecream/"
3048 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3052 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3053 GCC_HOME_SET="false"
3056 GCC_HOME="$with_gcc_home"
3058 AC_MSG_RESULT($GCC_HOME)
3061 if test "$GCC_HOME_SET" = "true"; then
3062 if test -z "$CC"; then
3063 CC="$GCC_HOME/bin/gcc"
3066 if test -z "$CXX"; then
3067 CXX="$GCC_HOME/bin/g++"
3073 COMPATH=`dirname "$CC"`
3074 if test "$COMPATH" = "."; then
3075 AC_PATH_PROGS(COMPATH, $CC)
3076 dnl double square bracket to get single because of M4 quote...
3077 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3079 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3081 dnl ===================================================================
3083 dnl ===================================================================
3084 AC_MSG_CHECKING([whether to build with Java support])
3085 if test "$with_java" != "no"; then
3086 if test "$DISABLE_SCRIPTING" = TRUE; then
3087 AC_MSG_RESULT([no, overridden by --disable-scripting])
3091 AC_MSG_RESULT([yes])
3093 AC_DEFINE(HAVE_FEATURE_JAVA)
3100 AC_SUBST(ENABLE_JAVA)
3102 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3104 dnl ENABLE_JAVA="" indicate no Java support at all
3106 dnl ===================================================================
3107 dnl Check macOS SDK and compiler
3108 dnl ===================================================================
3110 if test $_os = Darwin; then
3112 # If no --with-macosx-sdk option is given, look for one
3114 # The intent is that for "most" Mac-based developers, a suitable
3115 # SDK will be found automatically without any configure options.
3117 # For developers with a current Xcode, the lowest-numbered SDK
3118 # higher than or equal to the minimum required should be found.
3120 AC_MSG_CHECKING([what macOS SDK to use])
3121 for _macosx_sdk in ${with_macosx_sdk-11.0 10.15 10.14 10.13}; do
3122 MACOSX_SDK_PATH=`xcrun --sdk macosx${_macosx_sdk} --show-sdk-path 2> /dev/null`
3123 if test -d "$MACOSX_SDK_PATH"; then
3124 with_macosx_sdk="${_macosx_sdk}"
3127 MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${_macosx_sdk}.sdk"
3128 if test -d "$MACOSX_SDK_PATH"; then
3129 with_macosx_sdk="${_macosx_sdk}"
3134 if test ! -d "$MACOSX_SDK_PATH"; then
3135 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3138 AC_MSG_RESULT([SDK $with_macosx_sdk at $MACOSX_SDK_PATH])
3140 case $with_macosx_sdk in
3142 MACOSX_SDK_VERSION=101300
3145 MACOSX_SDK_VERSION=101400
3148 MACOSX_SDK_VERSION=101500
3151 MACOSX_SDK_VERSION=110000
3154 AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value, supported values are 10.13--11.0])
3158 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3159 AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value for Apple Silicon])
3162 if test "$with_macosx_version_min_required" = "" ; then
3163 if test "$host_cpu" = x86_64; then
3164 with_macosx_version_min_required="10.10";
3166 with_macosx_version_min_required="11.0";
3170 if test "$with_macosx_version_max_allowed" = "" ; then
3171 with_macosx_version_max_allowed="$with_macosx_sdk"
3174 # export this so that "xcrun" invocations later return matching values
3175 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3176 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3177 export DEVELOPER_DIR
3178 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3179 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3181 AC_MSG_CHECKING([whether Xcode is new enough])
3182 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3183 my_xcode_ver2=${my_xcode_ver1#Xcode }
3184 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3185 if test "$my_xcode_ver3" -ge 1103; then
3186 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3188 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3191 case "$with_macosx_version_min_required" in
3193 MAC_OS_X_VERSION_MIN_REQUIRED="101000"
3196 MAC_OS_X_VERSION_MIN_REQUIRED="101100"
3199 MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3202 MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3205 MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3208 MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3211 MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3214 MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3217 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])
3221 LIBTOOL=/usr/bin/libtool
3222 INSTALL_NAME_TOOL=install_name_tool
3223 if test -z "$save_CC"; then
3224 stdlib=-stdlib=libc++
3226 AC_MSG_CHECKING([what C compiler to use])
3227 CC="`xcrun -find clang`"
3228 CC_BASE=`first_arg_basename "$CC"`
3229 if test "$host_cpu" = x86_64; then
3230 CC+=" -target x86_64-apple-macos"
3232 CC+=" -target arm64-apple-macos"
3234 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3235 AC_MSG_RESULT([$CC])
3237 AC_MSG_CHECKING([what C++ compiler to use])
3238 CXX="`xcrun -find clang++`"
3239 CXX_BASE=`first_arg_basename "$CXX"`
3240 if test "$host_cpu" = x86_64; then
3241 CXX+=" -target x86_64-apple-macos"
3243 CXX+=" -target arm64-apple-macos"
3245 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3246 AC_MSG_RESULT([$CXX])
3248 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3251 STRIP=`xcrun -find strip`
3252 LIBTOOL=`xcrun -find libtool`
3253 RANLIB=`xcrun -find ranlib`
3256 case "$with_macosx_version_max_allowed" in
3258 MAC_OS_X_VERSION_MAX_ALLOWED="101000"
3261 MAC_OS_X_VERSION_MAX_ALLOWED="101100"
3264 MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3267 MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3270 MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3273 MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3276 MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3279 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])
3283 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3284 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3285 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])
3290 AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3291 if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3292 AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3296 AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3297 AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3299 AC_MSG_CHECKING([whether to do code signing])
3301 if test "$enable_macosx_code_signing" = yes; then
3302 # By default use the first suitable certificate (?).
3304 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3305 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3306 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3307 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3308 # "Developer ID Application" one.
3310 identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3311 if test -n "$identity"; then
3312 MACOSX_CODESIGNING_IDENTITY=$identity
3313 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3314 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3316 AC_MSG_ERROR([cannot determine identity to use])
3318 elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3319 MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3320 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3321 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3326 AC_MSG_CHECKING([whether to create a Mac App Store package])
3328 if test -n "$enable_macosx_package_signing" -a -z "$MACOSX_CODESIGNING_IDENTITY"; then
3329 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3330 elif test "$enable_macosx_package_signing" = yes; then
3331 # By default use the first suitable certificate.
3332 # It should be a "3rd Party Mac Developer Installer" one
3334 identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3335 if test -n "$identity"; then
3336 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3337 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3338 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3340 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3342 elif test -n "$enable_macosx_package_signing"; then
3343 MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3344 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3345 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3350 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3351 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3354 AC_MSG_CHECKING([whether to sandbox the application])
3356 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3357 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3358 elif test "$enable_macosx_sandbox" = yes; then
3359 ENABLE_MACOSX_SANDBOX=TRUE
3360 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3361 AC_MSG_RESULT([yes])
3366 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3367 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3368 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3370 AC_SUBST(MACOSX_SDK_PATH)
3371 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3372 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3373 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3374 AC_SUBST(INSTALL_NAME_TOOL)
3375 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3376 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3377 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3378 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3379 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3381 dnl ===================================================================
3382 dnl Check iOS SDK and compiler
3383 dnl ===================================================================
3385 if test $_os = iOS; then
3386 AC_MSG_CHECKING([what iOS SDK to use])
3387 current_sdk_ver=14.2
3388 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"
3389 if test "$enable_ios_simulator" = "yes"; then
3390 platform=iPhoneSimulator
3391 versionmin=-mios-simulator-version-min=12.2
3394 versionmin=-miphoneos-version-min=12.2
3396 xcode_developer=`xcode-select -print-path`
3398 for sdkver in $current_sdk_ver $older_sdk_vers; do
3399 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3406 if test -z "$sysroot"; then
3407 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3410 AC_MSG_RESULT($sysroot)
3412 stdlib="-stdlib=libc++"
3414 AC_MSG_CHECKING([what C compiler to use])
3415 CC="`xcrun -find clang`"
3416 CC_BASE=`first_arg_basename "$CC"`
3417 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3418 AC_MSG_RESULT([$CC])
3420 AC_MSG_CHECKING([what C++ compiler to use])
3421 CXX="`xcrun -find clang++`"
3422 CXX_BASE=`first_arg_basename "$CXX"`
3423 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3424 AC_MSG_RESULT([$CXX])
3426 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3429 STRIP=`xcrun -find strip`
3430 LIBTOOL=`xcrun -find libtool`
3431 RANLIB=`xcrun -find ranlib`
3434 AC_MSG_CHECKING([whether to treat the installation as read-only])
3436 if test $_os = Darwin; then
3437 enable_readonly_installset=yes
3438 elif test "$enable_extensions" != yes; then
3439 enable_readonly_installset=yes
3441 if test "$enable_readonly_installset" = yes; then
3442 AC_MSG_RESULT([yes])
3443 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3448 dnl ===================================================================
3449 dnl Structure of install set
3450 dnl ===================================================================
3452 if test $_os = Darwin; then
3453 LIBO_BIN_FOLDER=MacOS
3454 LIBO_ETC_FOLDER=Resources
3455 LIBO_LIBEXEC_FOLDER=MacOS
3456 LIBO_LIB_FOLDER=Frameworks
3457 LIBO_LIB_PYUNO_FOLDER=Resources
3458 LIBO_SHARE_FOLDER=Resources
3459 LIBO_SHARE_HELP_FOLDER=Resources/help
3460 LIBO_SHARE_JAVA_FOLDER=Resources/java
3461 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3462 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3463 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3464 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3465 LIBO_URE_BIN_FOLDER=MacOS
3466 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3467 LIBO_URE_LIB_FOLDER=Frameworks
3468 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3469 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3470 elif test $_os = WINNT; then
3471 LIBO_BIN_FOLDER=program
3472 LIBO_ETC_FOLDER=program
3473 LIBO_LIBEXEC_FOLDER=program
3474 LIBO_LIB_FOLDER=program
3475 LIBO_LIB_PYUNO_FOLDER=program
3476 LIBO_SHARE_FOLDER=share
3477 LIBO_SHARE_HELP_FOLDER=help
3478 LIBO_SHARE_JAVA_FOLDER=program/classes
3479 LIBO_SHARE_PRESETS_FOLDER=presets
3480 LIBO_SHARE_READMES_FOLDER=readmes
3481 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3482 LIBO_SHARE_SHELL_FOLDER=program/shell
3483 LIBO_URE_BIN_FOLDER=program
3484 LIBO_URE_ETC_FOLDER=program
3485 LIBO_URE_LIB_FOLDER=program
3486 LIBO_URE_MISC_FOLDER=program
3487 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3489 LIBO_BIN_FOLDER=program
3490 LIBO_ETC_FOLDER=program
3491 LIBO_LIBEXEC_FOLDER=program
3492 LIBO_LIB_FOLDER=program
3493 LIBO_LIB_PYUNO_FOLDER=program
3494 LIBO_SHARE_FOLDER=share
3495 LIBO_SHARE_HELP_FOLDER=help
3496 LIBO_SHARE_JAVA_FOLDER=program/classes
3497 LIBO_SHARE_PRESETS_FOLDER=presets
3498 LIBO_SHARE_READMES_FOLDER=readmes
3499 if test "$enable_fuzzers" != yes; then
3500 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3502 LIBO_SHARE_RESOURCE_FOLDER=resource
3504 LIBO_SHARE_SHELL_FOLDER=program/shell
3505 LIBO_URE_BIN_FOLDER=program
3506 LIBO_URE_ETC_FOLDER=program
3507 LIBO_URE_LIB_FOLDER=program
3508 LIBO_URE_MISC_FOLDER=program
3509 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3511 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3512 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3513 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3514 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3515 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3516 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3517 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3518 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3519 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3520 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3521 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3522 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3523 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3524 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3525 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3526 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3528 # Not all of them needed in config_host.mk, add more if need arises
3529 AC_SUBST(LIBO_BIN_FOLDER)
3530 AC_SUBST(LIBO_ETC_FOLDER)
3531 AC_SUBST(LIBO_LIB_FOLDER)
3532 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3533 AC_SUBST(LIBO_SHARE_FOLDER)
3534 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3535 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3536 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3537 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3538 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3539 AC_SUBST(LIBO_URE_BIN_FOLDER)
3540 AC_SUBST(LIBO_URE_ETC_FOLDER)
3541 AC_SUBST(LIBO_URE_LIB_FOLDER)
3542 AC_SUBST(LIBO_URE_MISC_FOLDER)
3543 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3545 dnl ===================================================================
3546 dnl Windows specific tests and stuff
3547 dnl ===================================================================
3551 # Return value: $regvalue
3554 if test "$build_os" = "wsl"; then
3555 regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3559 local _regentry="/proc/registry${1}/${2}"
3560 if test -f "$_regentry"; then
3561 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3562 # Registry keys read via /proc/registry* are always \0 terminated!
3563 local _regvalue=$(tr -d '\0' < "$_regentry")
3564 if test $? -eq 0; then
3570 # Get a value from the 32-bit side of the Registry
3573 reg_get_value "32" "$1"
3576 # Get a value from the 64-bit side of the Registry
3579 reg_get_value "64" "$1"
3588 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3597 PLATFORMID=windows_x86_64
3599 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3601 WIN_MULTI_ARCH="x86"
3607 PLATFORMID=windows_x86
3610 WIN_OTHER_ARCH="x64"
3615 PLATFORMID=windows_arm64
3617 SCPDEFS="$SCPDEFS -DWINDOWS_ARM64"
3618 WIN_HOST_ARCH="arm64"
3623 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3627 case "$build_cpu" in
3628 x86_64) WIN_BUILD_ARCH="x64" ;;
3629 i*86) WIN_BUILD_ARCH="x86" ;;
3630 aarch64) WIN_BUILD_ARCH="arm64" ;;
3632 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3636 SCPDEFS="$SCPDEFS -D_MSC_VER"
3640 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3641 # other-arch won't, but wouldn't break the build (x64 on x86).
3642 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3643 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3647 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3648 # To allow building Windows multi-arch releases without cross-tooling
3649 if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3650 cross_compiling="yes"
3653 if test "$cross_compiling" = "yes"; then
3654 export CROSS_COMPILING=TRUE
3657 BUILD_TYPE="$BUILD_TYPE NATIVE"
3659 AC_SUBST(CROSS_COMPILING)
3661 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3662 # NOTE: must _not_ be used for bundled external libraries!
3664 if test "$GCC" = "yes"; then
3665 AC_MSG_CHECKING( for -isystem )
3667 CFLAGS="$CFLAGS -Werror"
3668 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3670 if test -n "$ISYSTEM"; then
3676 if test -z "$ISYSTEM"; then
3677 # fall back to using -I
3682 dnl ===================================================================
3683 dnl Check which Visual Studio compiler is used
3684 dnl ===================================================================
3686 map_vs_year_to_version()
3688 # Return value: $vsversion
3696 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3700 vs_versions_to_check()
3702 # Args: $1 (optional) : versions to check, in the order of preference
3703 # Return value: $vsversions
3707 if test -n "$1"; then
3708 map_vs_year_to_version "$1"
3709 vsversions=$vsversion
3711 # We accept only 2019
3716 win_get_env_from_vsvars32bat()
3718 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3719 # Also seems to be located in another directory under the same name: vsvars32.bat
3720 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3721 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3722 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3723 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3725 if test "$build_os" = "wsl"; then
3726 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3728 chmod +x $WRAPPERBATCHFILEPATH
3729 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3731 rm -f $WRAPPERBATCHFILEPATH
3732 printf '%s' "$result"
3737 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3738 if test -n "$regvalue"; then
3739 PathFormat "$regvalue"
3740 UCRTSDKDIR=$formatted_path_unix
3741 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3742 UCRTVERSION=$regvalue
3744 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3748 if test -z "$UCRTSDKDIR"; then
3749 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3750 ide_env_file="${ide_env_dir}VsDevCmd.bat"
3751 if test -f "$ide_env_file"; then
3752 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3753 UCRTSDKDIR=$formatted_path
3754 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3755 dnl Hack needed at least by tml:
3756 if test "$UCRTVERSION" = 10.0.15063.0 \
3757 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3758 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3760 UCRTVERSION=10.0.14393.0
3763 AC_MSG_ERROR([No UCRT found])
3770 # Find Visual C++ 2019
3771 # Args: $1 (optional) : The VS version year
3772 # Return values: $vctest, $vcyear, $vcnum, $vcnumwithdot, $vcbuildnumber
3774 unset vctest vcnum vcnumwithdot vcbuildnumber
3776 vs_versions_to_check "$1"
3777 if test "$build_os" = wsl; then
3778 vswhere="$PROGRAMFILESX86"
3780 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3782 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3783 PathFormat "$vswhere"
3784 vswhere=$formatted_path_unix
3785 for ver in $vsversions; do
3786 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3787 # Fall back to all MS products (this includes VC++ Build Tools)
3788 if ! test -n "$vswhereoutput"; then
3789 AC_MSG_CHECKING([VC++ Build Tools and similar])
3790 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3792 if test -n "$vswhereoutput"; then
3793 PathFormat "$vswhereoutput"
3794 vctest=$formatted_path_unix
3799 if test -n "$vctest"; then
3800 vcnumwithdot="$ver.0"
3801 case "$vcnumwithdot" in
3807 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3814 AC_MSG_CHECKING([$1 compiler])
3816 CL_EXE_PATH="$2/cl.exe"
3818 if test ! -f "$CL_EXE_PATH"; then
3819 if test "$1" = "multi-arch"; then
3820 AC_MSG_WARN([no compiler (cl.exe) in $2])
3823 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3827 dnl ===========================================================
3828 dnl Check for the corresponding mspdb*.dll
3829 dnl ===========================================================
3831 # MSVC 15.0 has libraries from 14.0?
3834 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3835 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3838 # The compiles has to find its shared libraries
3840 TEMP_PATH=`cygpath -d "$2"`
3841 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3843 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3844 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3849 AC_MSG_RESULT([$CL_EXE_PATH])
3855 if test "$_os" = "WINNT"; then
3856 AC_MSG_CHECKING([Visual C++])
3857 find_msvc "$with_visual_studio"
3858 if test -z "$vctest"; then
3859 if test -n "$with_visual_studio"; then
3860 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3862 AC_MSG_ERROR([no Visual Studio 2019 installation found])
3867 VC_PRODUCT_DIR="$vctest/VC"
3868 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3870 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3871 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3872 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3873 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3874 if test $? -ne 0; then
3880 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3881 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3882 test_cl_exe "build" "$MSVC_BUILD_PATH"
3885 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3886 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3887 test_cl_exe "host" "$MSVC_HOST_PATH"
3889 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
3892 AC_MSG_CHECKING([for short pathname of VC product directory])
3893 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
3894 AC_MSG_RESULT([$VC_PRODUCT_DIR])
3899 AC_MSG_CHECKING([for UCRT location])
3901 # find_ucrt errors out if it doesn't find it
3902 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
3903 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
3904 ucrtincpath_formatted=$formatted_path
3905 # SOLARINC is used for external modules and must be set too.
3906 # And no, it's not sufficient to set SOLARINC only, as configure
3907 # itself doesn't honour it.
3908 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
3909 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
3910 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
3911 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
3913 AC_SUBST(UCRTSDKDIR)
3914 AC_SUBST(UCRTVERSION)
3916 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
3917 # Find the proper version of MSBuild.exe to use based on the VS version
3918 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
3919 if test -n "$regvalue" ; then
3920 AC_MSG_RESULT([found: $regvalue])
3921 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3923 if test "$vcnumwithdot" = "16.0"; then
3924 if test "$WIN_BUILD_ARCH" != "x64"; then
3925 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
3927 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
3930 if test "$WIN_BUILD_ARCH" != "x64"; then
3931 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin"
3933 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64"
3936 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3937 AC_MSG_RESULT([$regvalue])
3940 # Find the version of devenv.exe
3941 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
3942 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
3943 DEVENV_unix=$(cygpath -u "$DEVENV")
3944 if test ! -e "$DEVENV_unix"; then
3945 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
3948 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
3949 dnl needed when building CLR code:
3950 if test -z "$MSVC_CXX"; then
3951 # This gives us a posix path with 8.3 filename restrictions
3952 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
3955 if test -z "$CC"; then
3957 CC_BASE=`first_arg_basename "$CC"`
3959 if test -z "$CXX"; then
3961 CXX_BASE=`first_arg_basename "$CXX"`
3964 if test -n "$CC"; then
3965 # Remove /cl.exe from CC case insensitive
3966 AC_MSG_NOTICE([found Visual C++ $vcyear])
3968 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
3969 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
3971 PathFormat "$COMPATH"
3972 COMPATH=`win_short_path_for_make "$formatted_path"`
3976 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
3977 # are always "better", we list them in reverse chronological order.
3981 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
3985 # The expectation is that --with-windows-sdk should not need to be used
3986 if test -n "$with_windows_sdk"; then
3987 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
3988 *" "$with_windows_sdk" "*)
3989 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
3992 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
3997 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4002 AC_MSG_ERROR([Visual C++ not found after all, huh])
4005 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.4])
4006 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4007 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4008 // between Visual Studio versions and _MSC_VER:
4012 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4014 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4015 # version of the Explorer extension (and maybe other small
4016 # bits, too) needed when installing a 32-bit LibreOffice on a
4017 # 64-bit OS. The 64-bit Explorer extension is a feature that
4018 # has been present since long in OOo. Don't confuse it with
4019 # building LibreOffice itself as 64-bit code.
4024 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4025 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4026 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4027 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4030 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4031 AC_MSG_RESULT([found])
4033 AC_MSG_RESULT([not found])
4034 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4036 elif test "$WIN_HOST_ARCH" = "x64"; then
4041 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4042 AC_SUBST(CXX_X64_BINARY)
4044 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4045 # needed to support TWAIN scan on both 32- and 64-bit systems
4047 case "$WIN_HOST_ARCH" in
4049 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4050 if test -n "$CXX_X86_BINARY"; then
4052 AC_MSG_RESULT([preset])
4053 elif test -n "$WIN_MULTI_ARCH"; then
4055 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4056 CXX_X86_BINARY+=" /arch:SSE"
4057 AC_MSG_RESULT([found])
4059 AC_MSG_RESULT([not found])
4060 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4065 CXX_X86_BINARY=$MSVC_CXX
4069 AC_SUBST(CXX_X86_BINARY)
4078 UNOWINREG_DLL="185d60944ea767075d27247c3162b3bc-unowinreg.dll"
4079 AC_SUBST(UNOWINREG_DLL)
4082 AC_MSG_CHECKING([whether the compiler is actually Clang])
4083 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4089 [AC_MSG_RESULT([yes])
4091 [AC_MSG_RESULT([no])])
4092 AC_SUBST(COM_IS_CLANG)
4096 if test "$COM_IS_CLANG" = TRUE; then
4097 AC_MSG_CHECKING([whether Clang is new enough])
4098 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4099 #if !defined __apple_build_version__
4103 [my_apple_clang=yes],[my_apple_clang=])
4104 if test "$my_apple_clang" = yes; then
4105 AC_MSG_RESULT([assumed yes (Apple Clang)])
4107 if test "$_os" = WINNT; then
4108 dnl In which case, assume clang-cl:
4110 dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4118 CC_PLAIN="$CC_PLAIN $i"
4125 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4126 CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4127 CLANGVER=`echo $clang_version \
4128 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4129 if test "$CLANGVER" -ge 50002; then
4130 AC_MSG_RESULT([yes ($clang_version)])
4132 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4134 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4135 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4139 SHOWINCLUDES_PREFIX=
4140 if test "$_os" = WINNT; then
4141 dnl We need to guess the prefix of the -showIncludes output, it can be
4143 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4144 echo "#include <stdlib.h>" > conftest.c
4145 SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4146 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4147 rm -f conftest.c conftest.obj
4148 if test -z "$SHOWINCLUDES_PREFIX"; then
4149 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4151 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4154 AC_SUBST(SHOWINCLUDES_PREFIX)
4157 # prefix C with ccache if needed
4159 if test "$CCACHE" != ""; then
4160 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4164 CFLAGS="$CFLAGS --ccache-skip -O2"
4165 dnl an empty program will do, we're checking the compiler flags
4166 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4167 [use_ccache=yes], [use_ccache=no])
4169 if test $use_ccache = yes; then
4170 AC_MSG_RESULT([yes])
4173 CC_BASE="ccache $CC_BASE"
4179 # ===================================================================
4180 # check various GCC options that Clang does not support now but maybe
4181 # will somewhen in the future, check them even for GCC, so that the
4183 # ===================================================================
4186 if test "$GCC" = "yes"; then
4187 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4189 CFLAGS="$CFLAGS -Werror -ggdb2"
4190 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4192 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4193 AC_MSG_RESULT([yes])
4198 if test "$host_cpu" = "m68k"; then
4199 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4201 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4202 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4204 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4205 AC_MSG_RESULT([yes])
4211 AC_SUBST(HAVE_GCC_GGDB2)
4213 dnl ===================================================================
4214 dnl Test the gcc version
4215 dnl ===================================================================
4216 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4217 AC_MSG_CHECKING([the GCC version])
4218 _gcc_version=`$CC -dumpversion`
4219 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4220 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4221 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4223 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4225 if test "$gcc_full_version" -lt 70000; then
4226 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4229 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4230 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4231 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4232 # (which reports itself as GCC 4.2.1).
4235 AC_SUBST(GCC_VERSION)
4237 dnl Set the ENABLE_DBGUTIL variable
4238 dnl ===================================================================
4239 AC_MSG_CHECKING([whether to build with additional debug utilities])
4240 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4241 ENABLE_DBGUTIL="TRUE"
4242 # this is an extra var so it can have different default on different MSVC
4243 # versions (in case there are version specific problems with it)
4244 MSVC_USE_DEBUG_RUNTIME="TRUE"
4246 AC_MSG_RESULT([yes])
4247 # cppunit and graphite expose STL in public headers
4248 if test "$with_system_cppunit" = "yes"; then
4249 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4251 with_system_cppunit=no
4253 if test "$with_system_graphite" = "yes"; then
4254 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4256 with_system_graphite=no
4258 if test "$with_system_orcus" = "yes"; then
4259 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4261 with_system_orcus=no
4263 if test "$with_system_libcmis" = "yes"; then
4264 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4266 with_system_libcmis=no
4268 if test "$with_system_hunspell" = "yes"; then
4269 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4271 with_system_hunspell=no
4273 if test "$with_system_gpgmepp" = "yes"; then
4274 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4276 with_system_gpgmepp=no
4278 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4279 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4280 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4281 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4282 # of those two is using the system variant:
4283 if test "$with_system_libnumbertext" = "yes"; then
4284 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4286 with_system_libnumbertext=no
4288 if test "$with_system_libwps" = "yes"; then
4289 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4291 with_system_libwps=no
4295 MSVC_USE_DEBUG_RUNTIME=""
4298 AC_SUBST(ENABLE_DBGUTIL)
4299 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4301 dnl Set the ENABLE_DEBUG variable.
4302 dnl ===================================================================
4303 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4304 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4306 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4307 if test -z "$libo_fuzzed_enable_debug"; then
4308 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4310 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4315 AC_MSG_CHECKING([whether to do a debug build])
4316 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4318 if test -n "$ENABLE_DBGUTIL" ; then
4319 AC_MSG_RESULT([yes (dbgutil)])
4321 AC_MSG_RESULT([yes])
4327 AC_SUBST(ENABLE_DEBUG)
4329 dnl ===================================================================
4330 dnl Select the linker to use (gold/lld/ld.bfd).
4331 dnl This is done only after compiler checks (need to know if Clang is
4332 dnl used, for different defaults) and after checking if a debug build
4333 dnl is wanted (non-debug builds get the default linker if not explicitly
4334 dnl specified otherwise).
4335 dnl All checks for linker features/options should come after this.
4336 dnl ===================================================================
4339 use_ld=-fuse-ld=${1%%:*}
4341 if test "$use_ld_path" != "$1"; then
4342 use_ld="$use_ld --ld-path=$use_ld_path"
4344 use_ld_fail_if_error=$2
4346 AC_MSG_CHECKING([for $use_ld linker support])
4347 use_ld_ldflags_save="$LDFLAGS"
4348 LDFLAGS="$LDFLAGS $use_ld"
4349 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4352 printf ("hello world\n");
4353 ])], USE_LD=$use_ld, [])
4354 if test -n "$USE_LD"; then
4355 AC_MSG_RESULT( yes )
4358 if test -n "$use_ld_fail_if_error"; then
4364 if test -n "$use_ld_ok"; then
4365 dnl keep the value of LDFLAGS
4368 LDFLAGS="$use_ld_ldflags_save"
4372 if test "$enable_ld" != "no"; then
4373 if test "$GCC" = "yes"; then
4374 if test -n "$enable_ld"; then
4375 check_use_ld "$enable_ld" fail_if_error
4376 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4377 dnl non-debug builds default to the default linker
4379 elif test -n "$COM_IS_CLANG"; then
4381 if test $? -ne 0; then
4385 # For gcc first try gold, new versions also support lld.
4387 if test $? -ne 0; then
4391 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4393 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4394 if test -z "$ld_used"; then
4397 AC_MSG_CHECKING([for linker that is used])
4398 AC_MSG_RESULT([$ld_used])
4399 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4400 if echo "$ld_used" | grep -q "^GNU ld"; then
4401 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4402 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4406 if test "$enable_ld" = "yes"; then
4407 AC_MSG_ERROR([--enable-ld not supported])
4413 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4414 if test "$GCC" = "yes"; then
4415 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4416 bsymbolic_functions_ldflags_save=$LDFLAGS
4417 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4418 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4421 printf ("hello world\n");
4422 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4423 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4424 AC_MSG_RESULT( found )
4426 AC_MSG_RESULT( not found )
4428 LDFLAGS=$bsymbolic_functions_ldflags_save
4430 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4433 if test "$GCC" = "yes"; then
4434 for flag in "--gc-sections" "-dead_strip"; do
4435 AC_MSG_CHECKING([for $flag linker support])
4436 ldflags_save=$LDFLAGS
4437 LDFLAGS="$LDFLAGS -Wl,$flag"
4438 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4441 printf ("hello world\n");
4443 LD_GC_SECTIONS="-Wl,$flag"
4444 AC_MSG_RESULT( found )
4446 AC_MSG_RESULT( not found )
4448 LDFLAGS=$ldflags_save
4449 if test -n "$LD_GC_SECTIONS"; then
4454 AC_SUBST(LD_GC_SECTIONS)
4457 if test "$enable_split_debug" != no; then
4458 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4459 if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4460 AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4462 CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4463 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4465 if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4466 AC_MSG_RESULT([yes])
4468 if test "$enable_split_debug" = yes; then
4475 if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4476 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4477 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4480 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4482 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4483 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4485 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4486 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4488 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4489 AC_MSG_RESULT([yes])
4493 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4496 if test "$enable_gdb_index" != "no"; then
4497 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4498 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -o -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4499 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4501 CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4503 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4504 if test "$have_ggnu_pubnames" != "TRUE"; then
4505 if test "$enable_gdb_index" = "yes"; then
4506 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4511 AC_MSG_RESULT( yes )
4512 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4513 ldflags_save=$LDFLAGS
4514 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4515 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4518 printf ("hello world\n");
4519 ])], ENABLE_GDB_INDEX=TRUE, [])
4520 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4521 AC_MSG_RESULT( yes )
4523 if test "$enable_gdb_index" = "yes"; then
4529 LDFLAGS=$ldflags_save
4533 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4534 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4535 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4538 AC_SUBST(ENABLE_GDB_INDEX)
4540 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4543 if test "$enable_sal_log" = yes; then
4546 AC_SUBST(ENABLE_SAL_LOG)
4548 dnl Check for enable symbols option
4549 dnl ===================================================================
4550 AC_MSG_CHECKING([whether to generate debug information])
4551 if test -z "$enable_symbols"; then
4552 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4558 if test "$enable_symbols" = yes; then
4559 ENABLE_SYMBOLS_FOR=all
4560 AC_MSG_RESULT([yes])
4561 elif test "$enable_symbols" = no; then
4565 # Selective debuginfo.
4566 ENABLE_SYMBOLS_FOR="$enable_symbols"
4567 AC_MSG_RESULT([for "$enable_symbols"])
4569 AC_SUBST(ENABLE_SYMBOLS_FOR)
4571 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4572 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4573 AC_MSG_CHECKING([whether enough memory is available for linking])
4574 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4575 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4576 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4577 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4579 AC_MSG_RESULT([yes])
4584 ENABLE_OPTIMIZED_DEBUG=
4585 AC_MSG_CHECKING([whether to compile with optimization flags])
4586 if test -z "$enable_optimized"; then
4587 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4590 enable_optimized=yes
4593 if test "$enable_optimized" = yes; then
4594 ENABLE_OPTIMIZED=TRUE
4595 AC_MSG_RESULT([yes])
4596 elif test "$enable_optimized" = debug; then
4597 ENABLE_OPTIMIZED_DEBUG=TRUE
4598 AC_MSG_RESULT([yes (debug)])
4600 if test "$GCC" = "yes"; then
4601 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4603 CFLAGS="$CFLAGS -Werror -Og"
4604 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4606 if test "$HAVE_GCC_OG" = "TRUE"; then
4607 AC_MSG_RESULT([yes])
4612 if test -z "$HAVE_GCC_OG"; then
4613 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4618 AC_SUBST(ENABLE_OPTIMIZED)
4619 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4622 # determine CPUNAME, OS, ...
4623 # The USING_X11 flag tells whether the host os uses X by default. Can be overridden with the --without-x option.
4634 PLATFORMID=aix_powerpc
4651 if test "$enable_ios_simulator" = "yes"; then
4656 PLATFORMID=macosx_arm64
4660 if test "$enable_ios_simulator" = "yes"; then
4665 PLATFORMID=macosx_x86_64
4668 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4682 if test "$enable_ios_simulator" = "yes"; then
4683 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4687 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4692 PLATFORMID=ios_arm64
4706 PLATFORMID=dragonfly_x86
4711 PLATFORMID=dragonfly_x86_64
4714 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4729 PLATFORMID=freebsd_aarch64
4735 PLATFORMID=freebsd_x86
4740 PLATFORMID=freebsd_x86_64
4745 PLATFORMID=freebsd_powerpc64
4750 PLATFORMID=freebsd_powerpc
4753 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4770 PLATFORMID=haiku_x86
4775 PLATFORMID=haiku_x86_64
4778 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4795 PLATFORMID=kfreebsd_x86
4800 PLATFORMID=kfreebsd_x86_64
4803 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4819 PLATFORMID=linux_aarch64
4825 PLATFORMID=linux_alpha
4831 PLATFORMID=linux_arm_eabi
4835 PLATFORMID=linux_arm_oabi
4843 PLATFORMID=linux_hppa
4848 PLATFORMID=linux_x86
4853 PLATFORMID=linux_ia64
4859 PLATFORMID=linux_mips_eb
4864 EPM_FLAGS="-a mips64"
4865 PLATFORMID=linux_mips64_eb
4870 EPM_FLAGS="-a mips64el"
4871 PLATFORMID=linux_mips64_el
4876 EPM_FLAGS="-a mipsel"
4877 PLATFORMID=linux_mips_el
4882 PLATFORMID=linux_m68k
4887 PLATFORMID=linux_powerpc
4892 PLATFORMID=linux_powerpc64
4896 RTL_ARCH=PowerPC_64_LE
4897 PLATFORMID=linux_powerpc64_le
4902 PLATFORMID=linux_sparc
4907 PLATFORMID=linux_sparc64
4912 PLATFORMID=linux_s390
4917 PLATFORMID=linux_s390x
4922 PLATFORMID=linux_x86_64
4925 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4942 PLATFORMID=android_arm_eabi
4947 PLATFORMID=android_aarch64
4952 PLATFORMID=android_x86
4957 PLATFORMID=android_x86_64
4960 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4976 PLATFORMID=netbsd_x86
4981 PLATFORMID=netbsd_powerpc
4986 PLATFORMID=netbsd_sparc
4991 PLATFORMID=netbsd_x86_64
4994 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5010 PLATFORMID=openbsd_x86
5015 PLATFORMID=openbsd_x86_64
5018 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5021 SOLARINC="$SOLARINC -I/usr/local/include"
5035 PLATFORMID=solaris_x86
5040 PLATFORMID=solaris_sparc
5045 PLATFORMID=solaris_sparc64
5048 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5051 SOLARINC="$SOLARINC -I/usr/local/include"
5055 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5059 if test "$with_x" = "no"; then
5060 AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5064 if test "$enable_gui" = "no"; then
5065 if test "$USING_X11" != TRUE; then
5066 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5070 AC_DEFINE(HAVE_FEATURE_UI,0)
5073 AC_SUBST(DISABLE_GUI)
5075 WORKDIR="${BUILDDIR}/workdir"
5076 INSTDIR="${BUILDDIR}/instdir"
5077 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5078 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5079 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5087 AC_SUBST([INSTROOT])
5088 AC_SUBST([INSTROOTBASE])
5092 AC_SUBST(PLATFORMID)
5093 AC_SUBST(WINDOWS_X64)
5094 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5096 dnl ===================================================================
5097 dnl Test which package format to use
5098 dnl ===================================================================
5099 AC_MSG_CHECKING([which package format to use])
5100 if test -n "$with_package_format" -a "$with_package_format" != no; then
5101 for i in $with_package_format; do
5103 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5106 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5107 aix - AIX software distribution
5108 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5109 deb - Debian software distribution
5110 pkg - Solaris software distribution
5111 rpm - RedHat software distribution
5113 LibreOffice additionally supports:
5114 archive - .tar.gz or .zip
5116 installed - installation tree
5122 # fakeroot is needed to ensure correct file ownerships/permissions
5123 # inside deb packages and tar archives created on Linux and Solaris.
5124 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5125 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5126 if test "$FAKEROOT" = "no"; then
5128 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5131 PKGFORMAT="$with_package_format"
5132 AC_MSG_RESULT([$PKGFORMAT])
5135 AC_MSG_RESULT([none])
5139 dnl ===================================================================
5140 dnl Set up a different compiler to produce tools to run on the build
5141 dnl machine when doing cross-compilation
5142 dnl ===================================================================
5144 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5145 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5146 if test "$cross_compiling" = "yes"; then
5147 AC_MSG_CHECKING([for BUILD platform configuration])
5149 rm -rf CONF-FOR-BUILD config_build.mk
5150 mkdir CONF-FOR-BUILD
5151 # Here must be listed all files needed when running the configure script. In particular, also
5152 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5153 # keep them in the same order as there.
5154 (cd $SRC_ROOT && tar cf - \
5156 bin/get_config_variables \
5157 solenv/bin/getcompver.awk \
5158 solenv/inc/langlist.mk \
5161 config_host_lang.mk.in \
5163 bin/bffvalidator.sh.in \
5164 bin/odfvalidator.sh.in \
5165 bin/officeotron.sh.in \
5166 hardened_runtime.xcent.in \
5167 instsetoo_native/util/openoffice.lst.in \
5169 sysui/desktop/macosx/Info.plist.in) \
5170 | (cd CONF-FOR-BUILD && tar xf -)
5171 cp configure CONF-FOR-BUILD
5172 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5174 unset COM USING_X11 OS CPUNAME
5175 unset CC CXX SYSBASE CFLAGS
5176 unset AR NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5177 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5178 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC PKG_CONFIG_LIBDIR
5179 if test -n "$CC_FOR_BUILD"; then
5180 export CC="$CC_FOR_BUILD"
5181 CC_BASE=`first_arg_basename "$CC"`
5183 if test -n "$CXX_FOR_BUILD"; then
5184 export CXX="$CXX_FOR_BUILD"
5185 CXX_BASE=`first_arg_basename "$CXX"`
5187 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5191 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5192 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5193 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5194 if test -n "$ENABLE_JAVA"; then
5196 iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5198 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5199 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5202 if test -z "$with_jdk_home"; then
5203 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.])
5208 sub_conf_opts="$sub_conf_opts --without-java"
5210 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5211 test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5212 sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options"
5214 # Don't bother having configure look for stuff not needed for the build platform anyway
5216 --build="$build_alias" \
5218 --disable-firebird-sdbc \
5220 --disable-gstreamer-1-0 \
5222 --disable-mariadb-sdbc \
5223 --disable-online-update \
5225 --disable-pdfimport \
5226 --disable-postgresql-sdbc \
5228 --enable-icecream="$enable_icecream" \
5231 --with-parallelism="$with_parallelism" \
5232 --with-theme="$with_theme" \
5233 --with-tls=openssl \
5236 2>&1 | sed -e 's/^/ /'
5237 test -f ./config_host.mk 2>/dev/null || exit
5239 # filter permitted build targets
5240 PERMITTED_BUILD_TARGETS="
5269 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5270 # newlined lists, to use grep as a filter
5271 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5272 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5273 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5274 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5276 cp config_host.mk ../config_build.mk
5277 cp config_host_lang.mk ../config_build_lang.mk
5278 mv config.log ../config.Build.log
5279 mkdir -p ../config_build
5280 mv config_host/*.h ../config_build
5282 # all these will get a _FOR_BUILD postfix
5283 DIRECT_FOR_BUILD_SETTINGS="
5293 LIBO_URE_MISC_FOLDER
5299 # these overwrite host config with build config
5300 OVERWRITING_SETTINGS="
5305 JAVA_CLASSPATH_NOT_SET
5313 # these need some special handling
5314 EXTRA_HANDLED_SETTINGS="
5321 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5325 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5326 echo "$line" >>build-config
5328 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5330 VV=`eval "echo $VV"`
5331 if test -n "$VV"; then
5332 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5333 echo "$line" >>build-config
5337 for V in $OVERWRITING_SETTINGS; do
5339 VV=`eval "echo $VV"`
5340 if test -n "$VV"; then
5341 line=${V}='${'${V}:-$VV'}'
5342 echo "$line" >>build-config
5346 for V in INSTDIR INSTROOT WORKDIR; do
5348 VV=`eval "echo $VV"`
5349 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5350 if test -n "$VV"; then
5351 line="${V}_FOR_BUILD='$VV'"
5352 echo "$line" >>build-config
5357 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([Running configure script for BUILD system failed, see CONF-FOR-BUILD/config.log])
5358 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])
5359 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5360 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5362 eval `cat CONF-FOR-BUILD/build-config`
5364 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5366 rm -rf CONF-FOR-BUILD
5370 CXX_FOR_BUILD="$CXX"
5371 INSTDIR_FOR_BUILD="$INSTDIR"
5372 INSTROOT_FOR_BUILD="$INSTROOT"
5373 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5374 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5375 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5376 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5377 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5378 WORKDIR_FOR_BUILD="$WORKDIR"
5380 AC_SUBST(OS_FOR_BUILD)
5381 AC_SUBST(INSTDIR_FOR_BUILD)
5382 AC_SUBST(INSTROOT_FOR_BUILD)
5383 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5384 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5385 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5386 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5387 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5388 AC_SUBST(WORKDIR_FOR_BUILD)
5389 AC_SUBST(CC_FOR_BUILD)
5390 AC_SUBST(CXX_FOR_BUILD)
5392 dnl ===================================================================
5393 dnl Check for syslog header
5394 dnl ===================================================================
5395 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5397 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5398 dnl ===================================================================
5399 AC_MSG_CHECKING([whether to turn warnings to errors])
5400 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5401 ENABLE_WERROR="TRUE"
5402 PYTHONWARNINGS="error"
5403 AC_MSG_RESULT([yes])
5405 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5406 ENABLE_WERROR="TRUE"
5407 PYTHONWARNINGS="error"
5408 AC_MSG_RESULT([yes])
5413 AC_SUBST(ENABLE_WERROR)
5414 AC_SUBST(PYTHONWARNINGS)
5416 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5417 dnl ===================================================================
5418 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5419 if test -z "$enable_assert_always_abort"; then
5420 if test "$ENABLE_DEBUG" = TRUE; then
5421 enable_assert_always_abort=yes
5423 enable_assert_always_abort=no
5426 if test "$enable_assert_always_abort" = "yes"; then
5427 ASSERT_ALWAYS_ABORT="TRUE"
5428 AC_MSG_RESULT([yes])
5430 ASSERT_ALWAYS_ABORT="FALSE"
5433 AC_SUBST(ASSERT_ALWAYS_ABORT)
5435 # Determine whether to use ooenv for the instdir installation
5436 # ===================================================================
5437 if test $_os != "WINNT" -a $_os != "Darwin"; then
5438 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5439 if test "$enable_ooenv" = "no"; then
5443 AC_MSG_RESULT([yes])
5446 AC_SUBST(ENABLE_OOENV)
5448 if test "$USING_X11" != TRUE; then
5449 # be sure to do not mess with unneeded stuff
5454 build_gstreamer_1_0=no
5458 enable_cairo_canvas=no
5461 if test "$OS" = "HAIKU"; then
5462 enable_cairo_canvas=yes
5466 if test "$test_kf5" = "yes" -a "$enable_kde5" = "yes"; then
5467 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!])
5468 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!"
5472 if test "$test_kf5" = "yes"; then
5476 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5477 if test "$enable_qt5" = "no"; then
5478 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5484 dnl ===================================================================
5485 dnl check for cups support
5486 dnl ===================================================================
5489 if test "$enable_cups" = "no"; then
5493 AC_MSG_CHECKING([whether to enable CUPS support])
5494 if test "$test_cups" = "yes"; then
5496 AC_MSG_RESULT([yes])
5498 AC_MSG_CHECKING([whether cups support is present])
5499 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5500 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5501 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5502 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5509 AC_SUBST(ENABLE_CUPS)
5512 if test "$test_fontconfig" = "yes"; then
5513 PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5514 SYSTEM_FONTCONFIG=TRUE
5515 FilterLibs "${FONTCONFIG_LIBS}"
5516 FONTCONFIG_LIBS="${filteredlibs}"
5518 AC_SUBST(FONTCONFIG_CFLAGS)
5519 AC_SUBST(FONTCONFIG_LIBS)
5520 AC_SUBST([SYSTEM_FONTCONFIG])
5522 dnl whether to find & fetch external tarballs?
5523 dnl ===================================================================
5524 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5525 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5526 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5528 TARFILE_LOCATION="$LODE_HOME/ext_tar"
5531 if test -z "$TARFILE_LOCATION"; then
5532 if test -d "$SRC_ROOT/src" ; then
5533 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5534 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5536 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5538 AbsolutePath "$TARFILE_LOCATION"
5539 PathFormat "${absolute_path}"
5540 TARFILE_LOCATION="${formatted_path}"
5542 AC_SUBST(TARFILE_LOCATION)
5544 AC_MSG_CHECKING([whether we want to fetch tarballs])
5545 if test "$enable_fetch_external" != "no"; then
5546 if test "$with_all_tarballs" = "yes"; then
5547 AC_MSG_RESULT([yes, all of them])
5548 DO_FETCH_TARBALLS="ALL"
5550 AC_MSG_RESULT([yes, if we use them])
5551 DO_FETCH_TARBALLS="TRUE"
5557 AC_SUBST(DO_FETCH_TARBALLS)
5559 AC_MSG_CHECKING([whether to build help])
5560 if test -n "$with_help" -a "$with_help" != "no" -a $_os != iOS -a $_os != Android; then
5561 BUILD_TYPE="$BUILD_TYPE HELP"
5562 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5563 case "$with_help" in
5565 ENABLE_HTMLHELP=TRUE
5566 SCPDEFS="$SCPDEFS -DWITH_HELP"
5567 AC_MSG_RESULT([HTML])
5570 ENABLE_HTMLHELP=TRUE
5572 AC_MSG_RESULT([HTML])
5575 SCPDEFS="$SCPDEFS -DWITH_HELP"
5576 AC_MSG_RESULT([yes])
5579 AC_MSG_ERROR([Unknown --with-help=$with_help])
5585 AC_SUBST([ENABLE_HTMLHELP])
5586 AC_SUBST([HELP_ONLINE])
5588 AC_MSG_CHECKING([whether to enable xapian-omega support for help])
5589 if test -n "$with_omindex" -a "$with_omindex" != "no" -a $_os != iOS -a $_os != Android; then
5590 BUILD_TYPE="$BUILD_TYPE HELP"
5591 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5592 case "$with_omindex" in
5594 ENABLE_HTMLHELP=TRUE
5596 HELP_OMINDEX_PAGE=TRUE
5597 AC_MSG_RESULT([SERVER])
5600 ENABLE_HTMLHELP=TRUE
5602 HELP_OMINDEX_PAGE=FALSE
5603 AC_MSG_RESULT([NOXAP])
5606 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5610 HELP_OMINDEX_PAGE=FALSE
5613 AC_SUBST([ENABLE_HTMLHELP])
5614 AC_SUBST([HELP_OMINDEX_PAGE])
5615 AC_SUBST([HELP_ONLINE])
5618 dnl Test whether to include MySpell dictionaries
5619 dnl ===================================================================
5620 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5621 if test "$with_myspell_dicts" = "yes"; then
5622 AC_MSG_RESULT([yes])
5623 WITH_MYSPELL_DICTS=TRUE
5624 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5625 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5630 AC_SUBST(WITH_MYSPELL_DICTS)
5632 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5633 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5634 if test "$with_system_dicts" = yes; then
5635 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5637 with_system_dicts=no
5640 AC_MSG_CHECKING([whether to use dicts from external paths])
5641 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5642 AC_MSG_RESULT([yes])
5644 AC_MSG_CHECKING([for spelling dictionary directory])
5645 if test -n "$with_external_dict_dir"; then
5646 DICT_SYSTEM_DIR=file://$with_external_dict_dir
5648 DICT_SYSTEM_DIR=file:///usr/share/hunspell
5649 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5650 DICT_SYSTEM_DIR=file:///usr/share/myspell
5653 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5654 AC_MSG_CHECKING([for hyphenation patterns directory])
5655 if test -n "$with_external_hyph_dir"; then
5656 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5658 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5660 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5661 AC_MSG_CHECKING([for thesaurus directory])
5662 if test -n "$with_external_thes_dir"; then
5663 THES_SYSTEM_DIR=file://$with_external_thes_dir
5665 THES_SYSTEM_DIR=file:///usr/share/mythes
5667 AC_MSG_RESULT([$THES_SYSTEM_DIR])
5672 AC_SUBST(SYSTEM_DICTS)
5673 AC_SUBST(DICT_SYSTEM_DIR)
5674 AC_SUBST(HYPH_SYSTEM_DIR)
5675 AC_SUBST(THES_SYSTEM_DIR)
5677 dnl ===================================================================
5678 dnl Precompiled headers.
5680 AC_MSG_CHECKING([whether to enable pch feature])
5681 if test -z "$enable_pch"; then
5682 if test "$_os" = "WINNT"; then
5683 # Enabled by default on Windows.
5689 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5690 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5692 if test "$enable_pch" = "system"; then
5694 AC_MSG_RESULT([yes (system headers)])
5695 elif test "$enable_pch" = "base"; then
5697 AC_MSG_RESULT([yes (system and base headers)])
5698 elif test "$enable_pch" = "normal"; then
5700 AC_MSG_RESULT([yes (normal)])
5701 elif test "$enable_pch" = "full"; then
5703 AC_MSG_RESULT([yes (full)])
5704 elif test "$enable_pch" = "yes"; then
5705 # Pick a suitable default.
5706 if test "$GCC" = "yes"; then
5707 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5708 # while making the PCHs larger and rebuilds more likely.
5710 AC_MSG_RESULT([yes (system and base headers)])
5712 # With MSVC the highest level makes a significant difference,
5713 # and it was the default when there used to be no PCH levels.
5715 AC_MSG_RESULT([yes (full)])
5717 elif test "$enable_pch" = "no"; then
5720 AC_MSG_ERROR([Unknown value for --enable-pch])
5722 AC_SUBST(ENABLE_PCH)
5723 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5724 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5725 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5726 if test "$CCACHE_BIN" != "not found"; then
5727 AC_MSG_CHECKING([ccache version])
5728 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5729 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5730 AC_MSG_RESULT([$CCACHE_VERSION])
5731 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5732 if test "$CCACHE_NUMVER" -gt "030701"; then
5733 AC_MSG_RESULT([yes])
5735 AC_MSG_RESULT([no (not newer than 3.7.1)])
5741 PCH_INSTANTIATE_TEMPLATES=
5742 if test -n "$ENABLE_PCH"; then
5743 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5745 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5746 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5748 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5754 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5756 BUILDING_PCH_WITH_OBJ=
5757 if test -n "$ENABLE_PCH"; then
5758 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5760 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5761 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5763 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5769 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5773 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5774 AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
5776 CFLAGS="$CFLAGS -Werror -fpch-codegen"
5777 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5779 PCH_CODEGEN="-fpch-codegen"
5780 PCH_NO_CODEGEN="-fno-pch-codegen"
5783 if test -n "$PCH_CODEGEN"; then
5789 AC_SUBST(PCH_CODEGEN)
5790 AC_SUBST(PCH_NO_CODEGEN)
5792 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5793 AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
5795 CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
5796 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
5798 if test -n "$PCH_DEBUGINFO"; then
5804 AC_SUBST(PCH_DEBUGINFO)
5808 AC_MSG_CHECKING([the GNU Make version])
5809 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5810 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5811 if test "$_make_longver" -ge "038200"; then
5812 AC_MSG_RESULT([$GNUMAKE $_make_version])
5814 elif test "$_make_longver" -ge "038100"; then
5815 if test "$build_os" = "cygwin"; then
5816 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5818 AC_MSG_RESULT([$GNUMAKE $_make_version])
5820 dnl ===================================================================
5821 dnl Search all the common names for sha1sum
5822 dnl ===================================================================
5823 AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5824 if test -z "$SHA1SUM"; then
5825 AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5826 elif test "$SHA1SUM" = "openssl"; then
5827 SHA1SUM="openssl sha1"
5829 AC_MSG_CHECKING([for GNU Make bug 20033])
5830 TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
5831 $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
5832 A := \$(wildcard *.a)
5836 <TAB>@echo survived bug20033.
5840 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
5853 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
5854 <TAB>\$(call d1,\$(CHECKSUM)),\
5855 <TAB>\$(call d2,\$(CHECKSUM)))
5857 if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
5858 no_parallelism_make="YES"
5859 AC_MSG_RESULT([yes, disable parallelism])
5861 AC_MSG_RESULT([no, keep parallelism enabled])
5863 rm -rf $TESTGMAKEBUG20033
5865 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
5868 # find if gnumake support file function
5869 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
5870 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
5871 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5872 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
5874 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
5875 \$(file >test.txt,Success )
5882 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
5883 if test -f $TESTGMAKEFILEFUNC/test.txt; then
5884 HAVE_GNUMAKE_FILE_FUNC=TRUE
5885 AC_MSG_RESULT([yes])
5889 rm -rf $TESTGMAKEFILEFUNC
5890 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
5891 AC_SUBST(GNUMAKE_WIN_NATIVE)
5893 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
5895 if test "$_make_ver_check" = ""; then
5899 HAVE_LD_HASH_STYLE=FALSE
5900 WITH_LINKER_HASH_STYLE=
5901 AC_MSG_CHECKING([for --hash-style gcc linker support])
5902 if test "$GCC" = "yes"; then
5903 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
5904 hash_styles="gnu sysv"
5905 elif test "$with_linker_hash_style" = "no"; then
5908 hash_styles="$with_linker_hash_style"
5911 for hash_style in $hash_styles; do
5912 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
5913 hash_style_ldflags_save=$LDFLAGS
5914 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
5916 AC_RUN_IFELSE([AC_LANG_PROGRAM(
5923 HAVE_LD_HASH_STYLE=TRUE
5924 WITH_LINKER_HASH_STYLE=$hash_style
5926 [HAVE_LD_HASH_STYLE=FALSE],
5927 [HAVE_LD_HASH_STYLE=FALSE])
5928 LDFLAGS=$hash_style_ldflags_save
5931 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
5932 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
5936 LDFLAGS=$hash_style_ldflags_save
5940 AC_SUBST(HAVE_LD_HASH_STYLE)
5941 AC_SUBST(WITH_LINKER_HASH_STYLE)
5943 dnl ===================================================================
5944 dnl Check whether there's a Perl version available.
5945 dnl ===================================================================
5946 if test -z "$with_perl_home"; then
5947 AC_PATH_PROG(PERL, perl)
5949 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
5950 _perl_path="$with_perl_home/bin/perl"
5951 if test -x "$_perl_path"; then
5954 AC_MSG_ERROR([$_perl_path not found])
5958 dnl ===================================================================
5959 dnl Testing for Perl version 5 or greater.
5960 dnl $] is the Perl version variable, it is returned as an integer
5961 dnl ===================================================================
5962 if test "$PERL"; then
5963 AC_MSG_CHECKING([the Perl version])
5964 ${PERL} -e "exit($]);"
5966 if test "$_perl_version" -lt 5; then
5967 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
5969 AC_MSG_RESULT([Perl $_perl_version])
5971 AC_MSG_ERROR([Perl not found, install Perl 5])
5974 dnl ===================================================================
5975 dnl Testing for required Perl modules
5976 dnl ===================================================================
5978 AC_MSG_CHECKING([for required Perl modules])
5979 perl_use_string="use Cwd ; use Digest::MD5"
5980 if test "$_os" = "WINNT"; then
5981 if test -n "$PKGFORMAT"; then
5982 for i in $PKGFORMAT; do
5985 # for getting fonts versions to use in MSI
5986 perl_use_string="$perl_use_string ; use Font::TTF::Font"
5992 if test "$with_system_hsqldb" = "yes"; then
5993 perl_use_string="$perl_use_string ; use Archive::Zip"
5995 if test "$with_system_openssl" != "yes"; then
5996 # OpenSSL needs that to build
5997 perl_use_string="$perl_use_string ; use FindBin"
5999 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6000 AC_MSG_RESULT([all modules found])
6002 AC_MSG_RESULT([failed to find some modules])
6003 # Find out which modules are missing.
6004 for i in $perl_use_string; do
6005 if test "$i" != "use" -a "$i" != ";"; then
6006 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6007 missing_perl_modules="$missing_perl_modules $i"
6012 The missing Perl modules are: $missing_perl_modules
6013 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6016 dnl ===================================================================
6017 dnl Check for pkg-config
6018 dnl ===================================================================
6019 if test "$_os" != "WINNT"; then
6023 if test "$_os" != "WINNT"; then
6025 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6026 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6027 # explicitly. Or put /path/to/compiler in PATH yourself.
6029 # Use wrappers for LTO
6030 if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6031 AC_CHECK_TOOL(AR,gcc-ar)
6032 AC_CHECK_TOOL(NM,gcc-nm)
6033 AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6035 AC_CHECK_TOOL(AR,ar)
6036 AC_CHECK_TOOL(NM,nm)
6037 AC_CHECK_TOOL(RANLIB,ranlib)
6039 AC_CHECK_TOOL(OBJDUMP,objdump)
6040 AC_CHECK_TOOL(READELF,readelf)
6041 AC_CHECK_TOOL(STRIP,strip)
6042 if test "$_os" = "WINNT"; then
6043 AC_CHECK_TOOL(DLLTOOL,dlltool)
6044 AC_CHECK_TOOL(WINDRES,windres)
6051 AC_SUBST(PKG_CONFIG)
6057 dnl ===================================================================
6058 dnl pkg-config checks on macOS
6059 dnl ===================================================================
6061 if test $_os = Darwin; then
6062 AC_MSG_CHECKING([for bogus pkg-config])
6063 if test -n "$PKG_CONFIG"; then
6064 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6065 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6067 if test "$enable_bogus_pkg_config" = "yes"; then
6068 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6070 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.])
6074 AC_MSG_RESULT([no, good])
6080 # Return value: $csctest
6084 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6085 if test -n "$regvalue"; then
6093 # Return value: $altest
6097 # We need this check to detect 4.6.1 or above.
6098 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6099 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6100 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6106 for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6107 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6108 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6119 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6120 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6121 if test -n "$regvalue"; then
6128 find_winsdk_version()
6130 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6131 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6133 unset winsdktest winsdkbinsubdir winsdklibsubdir
6137 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6138 if test -n "$regvalue"; then
6139 winsdktest=$regvalue
6140 winsdklibsubdir=win8
6145 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6146 if test -n "$regvalue"; then
6147 winsdktest=$regvalue
6148 winsdklibsubdir=winv6.3
6153 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6154 if test -n "$regvalue"; then
6155 winsdktest=$regvalue
6156 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6157 if test -n "$regvalue"; then
6158 winsdkbinsubdir="$regvalue".0
6159 winsdklibsubdir=$winsdkbinsubdir
6160 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6161 local tmppath_unix=$(cygpath -u "$tmppath")
6162 # test exist the SDK path
6163 if test -d "$tmppath_unix"; then
6164 # when path is convertible to a short path then path is okay
6165 cygpath -d "$tmppath" >/dev/null 2>&1
6166 if test $? -ne 0; then
6167 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6170 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6181 # Return value: From find_winsdk_version
6185 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6186 find_winsdk_version $ver
6187 if test -n "$winsdktest"; then
6195 # Return value: $msmdir
6197 AC_MSG_CHECKING([for MSVC merge modules directory])
6198 local my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm
6203 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6206 for f in $my_msm_files; do
6207 echo "$as_me:$LINENO: searching for $f" >&5
6211 for ver in 14.0 15.0; do
6212 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir
6213 if test -n "$regvalue"; then
6214 for f in ${my_msm_files}; do
6215 if test -e "$regvalue/${f}"; then
6222 dnl Is the following fallback really necessary, or was it added in response
6223 dnl to never having started Visual Studio on a given machine, so the
6224 dnl registry keys checked above had presumably not yet been created?
6225 dnl Anyway, if it really is necessary, it might be worthwhile to extend it
6226 dnl to also check %CommonProgramFiles(X86)% (typically expanding to
6227 dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles%
6228 dnl expanding to "C:\Program Files\Common Files"), which would need
6229 dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to
6230 dnl obtain its value from cygwin:
6231 if test -z "$msmdir"; then
6232 my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/"
6233 for f in ${my_msm_files}; do
6234 if test -e "$my_msm_dir/${f}"; then
6240 dnl Starting from MSVC 15.0, merge modules are located in different directory
6243 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6244 echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5
6245 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6246 for f in ${my_msm_files}; do
6247 if test -e "$my_msm_dir/${f}"; then
6256 if test -n "$msmdir"; then
6257 msmdir=`cygpath -m "$msmdir"`
6258 AC_MSG_RESULT([$msmdir])
6260 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6261 AC_MSG_FAILURE([not found])
6263 AC_MSG_WARN([not found (check config.log)])
6264 add_warning "MSM none of ${my_msm_files} found"
6269 find_msvc_x64_dlls()
6271 # Return value: $msvcdllpath, $msvcdlls
6273 AC_MSG_CHECKING([for MSVC x64 DLL path])
6274 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6277 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6278 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5
6279 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then
6280 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"
6283 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5
6284 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then
6285 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"
6291 AC_MSG_RESULT([$msvcdllpath])
6292 AC_MSG_CHECKING([for MSVC x64 DLLs])
6293 msvcdlls="msvcp140.dll vcruntime140.dll"
6294 for dll in $msvcdlls; do
6295 if ! test -f "$msvcdllpath/$dll"; then
6296 AC_MSG_FAILURE([missing $dll])
6299 AC_MSG_RESULT([found all ($msvcdlls)])
6302 dnl =========================================
6303 dnl Check for the Windows SDK.
6304 dnl =========================================
6305 if test "$_os" = "WINNT"; then
6306 AC_MSG_CHECKING([for Windows SDK])
6307 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6309 WINDOWS_SDK_HOME=$winsdktest
6311 # normalize if found
6312 if test -n "$WINDOWS_SDK_HOME"; then
6313 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6314 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6317 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6320 if test -n "$WINDOWS_SDK_HOME"; then
6321 # Remove a possible trailing backslash
6322 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6324 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6325 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6326 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6327 have_windows_sdk_headers=yes
6328 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6329 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6330 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6331 have_windows_sdk_headers=yes
6332 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6333 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6334 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6335 have_windows_sdk_headers=yes
6337 have_windows_sdk_headers=no
6340 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6341 have_windows_sdk_libs=yes
6342 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6343 have_windows_sdk_libs=yes
6345 have_windows_sdk_libs=no
6348 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6349 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6350 the Windows SDK are installed.])
6354 if test -z "$WINDOWS_SDK_HOME"; then
6355 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6356 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6357 WINDOWS_SDK_VERSION=80
6358 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6359 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6360 WINDOWS_SDK_VERSION=81
6361 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6362 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6363 WINDOWS_SDK_VERSION=10
6364 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6366 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6368 PathFormat "$WINDOWS_SDK_HOME"
6369 WINDOWS_SDK_HOME="$formatted_path"
6370 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6371 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6372 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6373 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6374 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6375 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6376 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6380 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6381 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6382 dnl but not in v8.0), so allow this to be overridden with a
6383 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6384 dnl and configuration error if no WiLangId.vbs is found would arguably be
6385 dnl better, but I do not know under which conditions exactly it is needed by
6387 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6388 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6389 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6390 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6391 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6392 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6394 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6395 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6396 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6398 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6399 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6400 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6403 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6404 if test -n "$with_package_format" -a "$with_package_format" != no; then
6405 for i in "$with_package_format"; do
6406 if test "$i" = "msi"; then
6407 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6408 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6415 AC_SUBST(WINDOWS_SDK_HOME)
6416 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6417 AC_SUBST(WINDOWS_SDK_VERSION)
6418 AC_SUBST(WINDOWS_SDK_WILANGID)
6420 if test "$build_os" = "cygwin"; then
6421 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6422 dnl dir, it also determines that dir's path w/o an arch segment if any,
6423 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6424 AC_MSG_CHECKING([for midl.exe])
6427 if test -n "$winsdkbinsubdir" \
6428 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6430 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6431 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6432 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6433 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6434 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6435 elif test -f "$winsdktest/Bin/midl.exe"; then
6436 MIDL_PATH=$winsdktest/Bin
6437 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6439 if test ! -f "$MIDL_PATH/midl.exe"; then
6440 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6442 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6445 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6446 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6448 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6449 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6450 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6451 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6452 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6453 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6454 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6455 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6456 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6457 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6458 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6459 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6461 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6465 AC_MSG_CHECKING([for csc.exe])
6467 if test -f "$csctest/csc.exe"; then
6470 if test ! -f "$CSC_PATH/csc.exe"; then
6471 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6473 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6476 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6479 AC_MSG_CHECKING([for al.exe])
6481 if test -n "$winsdkbinsubdir" \
6482 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6484 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6485 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6486 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6487 elif test -f "$winsdktest/Bin/al.exe"; then
6488 AL_PATH="$winsdktest/Bin"
6491 if test -z "$AL_PATH"; then
6493 if test -f "$altest/bin/al.exe"; then
6494 AL_PATH="$altest/bin"
6495 elif test -f "$altest/al.exe"; then
6499 if test ! -f "$AL_PATH/al.exe"; then
6500 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6502 AC_MSG_RESULT([$AL_PATH/al.exe])
6505 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6507 dnl Check mscoree.lib / .NET Framework dir
6508 AC_MSG_CHECKING(.NET Framework)
6510 PathFormat "$frametest"
6511 frametest="$formatted_path"
6512 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6513 DOTNET_FRAMEWORK_HOME="$frametest"
6516 if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6517 DOTNET_FRAMEWORK_HOME="$winsdktest"
6520 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
6521 AC_MSG_ERROR([mscoree.lib not found])
6523 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6525 PathFormat "$MIDL_PATH"
6526 MIDL_PATH="$formatted_path"
6528 PathFormat "$AL_PATH"
6529 AL_PATH="$formatted_path"
6531 PathFormat "$DOTNET_FRAMEWORK_HOME"
6532 DOTNET_FRAMEWORK_HOME="$formatted_path"
6534 PathFormat "$CSC_PATH"
6535 CSC_PATH="$formatted_path"
6538 dnl ===================================================================
6539 dnl Testing for C++ compiler and version...
6540 dnl ===================================================================
6542 if test "$_os" != "WINNT"; then
6543 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6544 save_CXXFLAGS=$CXXFLAGS
6546 CXXFLAGS=$save_CXXFLAGS
6547 if test -z "$CXX_BASE"; then
6548 CXX_BASE=`first_arg_basename "$CXX"`
6552 dnl check for GNU C++ compiler version
6553 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6554 AC_MSG_CHECKING([the GNU C++ compiler version])
6556 _gpp_version=`$CXX -dumpversion`
6557 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6559 if test "$_gpp_majmin" -lt "700"; then
6560 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6562 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6565 dnl see https://code.google.com/p/android/issues/detail?id=41770
6569 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6570 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6571 #include <bits/c++config.h>]],[[
6572 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6573 && !defined(_GLIBCXX__PTHREADS) \
6574 && !defined(_GLIBCXX_HAS_GTHREADS)
6577 ]])],[AC_MSG_RESULT([yes])
6578 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6580 if test $glibcxx_threads = yes; then
6581 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6584 AC_SUBST(BOOST_CXXFLAGS)
6587 # prefx CXX with ccache if needed
6589 if test "$CCACHE" != ""; then
6590 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6592 save_CXXFLAGS=$CXXFLAGS
6593 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6594 dnl an empty program will do, we're checking the compiler flags
6595 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6596 [use_ccache=yes], [use_ccache=no])
6597 if test $use_ccache = yes; then
6598 AC_MSG_RESULT([yes])
6601 CXX_BASE="ccache $CXX_BASE"
6604 CXXFLAGS=$save_CXXFLAGS
6608 dnl ===================================================================
6609 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6610 dnl ===================================================================
6612 if test "$_os" != "WINNT"; then
6615 dnl Check whether there's a C pre-processor.
6620 dnl ===================================================================
6621 dnl Find integral type sizes and alignments
6622 dnl ===================================================================
6624 if test "$_os" != "WINNT"; then
6626 AC_CHECK_SIZEOF(long)
6627 AC_CHECK_SIZEOF(short)
6628 AC_CHECK_SIZEOF(int)
6629 AC_CHECK_SIZEOF(long long)
6630 AC_CHECK_SIZEOF(double)
6631 AC_CHECK_SIZEOF(void*)
6633 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6634 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6635 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6636 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6637 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6639 dnl Allow build without AC_CHECK_ALIGNOF, grrr
6640 m4_pattern_allow([AC_CHECK_ALIGNOF])
6641 m4_ifdef([AC_CHECK_ALIGNOF],
6643 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6644 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6645 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6646 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6649 case "$_os-$host_cpu" in
6651 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6652 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6653 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6654 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6657 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6658 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6659 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6660 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6663 if test -z "$ac_cv_alignof_short" -o \
6664 -z "$ac_cv_alignof_int" -o \
6665 -z "$ac_cv_alignof_long" -o \
6666 -z "$ac_cv_alignof_double"; then
6667 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.])
6673 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6674 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6675 if test $ac_cv_sizeof_long -eq 8; then
6676 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6677 elif test $ac_cv_sizeof_double -eq 8; then
6678 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6680 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6683 dnl Check for large file support
6685 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6686 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6688 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6689 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6693 SAL_TYPES_SIZEOFSHORT=2
6694 SAL_TYPES_SIZEOFINT=4
6695 SAL_TYPES_SIZEOFLONG=4
6696 SAL_TYPES_SIZEOFLONGLONG=8
6697 if test $WIN_HOST_BITS -eq 32; then
6698 SAL_TYPES_SIZEOFPOINTER=4
6700 SAL_TYPES_SIZEOFPOINTER=8
6702 SAL_TYPES_ALIGNMENT2=2
6703 SAL_TYPES_ALIGNMENT4=4
6704 SAL_TYPES_ALIGNMENT8=8
6707 AC_SUBST(LFS_CFLAGS)
6709 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6710 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6711 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6712 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6713 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6714 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6715 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6716 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6718 dnl ===================================================================
6719 dnl Check whether to enable runtime optimizations
6720 dnl ===================================================================
6721 ENABLE_RUNTIME_OPTIMIZATIONS=
6722 AC_MSG_CHECKING([whether to enable runtime optimizations])
6723 if test -z "$enable_runtime_optimizations"; then
6727 enable_runtime_optimizations=no
6733 if test "$enable_runtime_optimizations" != no; then
6734 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6735 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6736 AC_MSG_RESULT([yes])
6740 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6742 dnl ===================================================================
6743 dnl Check if valgrind headers are available
6744 dnl ===================================================================
6746 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6747 prev_cppflags=$CPPFLAGS
6748 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6749 # or where does it come from?
6750 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6751 AC_CHECK_HEADER([valgrind/valgrind.h],
6752 [ENABLE_VALGRIND=TRUE])
6753 CPPFLAGS=$prev_cppflags
6755 AC_SUBST([ENABLE_VALGRIND])
6756 if test -z "$ENABLE_VALGRIND"; then
6757 if test "$with_valgrind" = yes; then
6758 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6762 AC_SUBST([VALGRIND_CFLAGS])
6765 dnl ===================================================================
6766 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6767 dnl ===================================================================
6769 # We need at least the sys/sdt.h include header.
6770 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6771 if test "$SDT_H_FOUND" = "TRUE"; then
6772 # Found sys/sdt.h header, now make sure the c++ compiler works.
6773 # Old g++ versions had problems with probes in constructors/destructors.
6774 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6776 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6777 #include <sys/sdt.h>
6785 ProbeClass(int& v, const char *n) : ref(v), name(n)
6787 DTRACE_PROBE2(_test_, cons, name, ref);
6790 void method(int min)
6792 DTRACE_PROBE3(_test_, meth, name, ref, min);
6798 DTRACE_PROBE2(_test_, dest, name, ref);
6803 DTRACE_PROBE1(_test_, call, i);
6804 ProbeClass inst = ProbeClass(i, "call");
6806 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6807 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6810 AC_CONFIG_HEADERS([config_host/config_probes.h])
6812 dnl ===================================================================
6814 dnl ===================================================================
6815 HAVE_GCC_STACK_CLASH_PROTECTION=
6816 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6817 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6819 CFLAGS="$CFLAGS -fstack-clash-protection"
6821 [AC_LANG_PROGRAM(, [[return 0;]])],
6822 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6823 [AC_MSG_RESULT([no])])
6826 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6828 CFLAGS="$CFLAGS -Werror -mno-avx"
6829 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6831 if test "$HAVE_GCC_AVX" = "TRUE"; then
6832 AC_MSG_RESULT([yes])
6837 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6838 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6840 if (__sync_add_and_fetch(&v, 1) != 1 ||
6841 __sync_sub_and_fetch(&v, 1) != 0)
6843 __sync_synchronize();
6844 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6848 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6849 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6850 AC_MSG_RESULT([yes])
6851 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
6856 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
6858 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6861 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
6863 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
6864 AC_MSG_RESULT([yes])
6865 ], [AC_MSG_RESULT([no])])
6868 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
6870 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6873 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
6875 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
6876 AC_MSG_RESULT([yes])
6877 ], [AC_MSG_RESULT([no])])
6880 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
6882 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6884 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
6886 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
6887 AC_MSG_RESULT([yes])
6888 ], [AC_MSG_RESULT([no])])
6891 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
6893 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6896 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
6898 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
6899 AC_MSG_RESULT([yes])
6900 ], [AC_MSG_RESULT([no])])
6903 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
6905 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6908 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
6910 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
6911 AC_MSG_RESULT([yes])
6912 ], [AC_MSG_RESULT([no])])
6915 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
6917 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6919 void * f() { return __cxxabiv1::__cxa_get_globals(); }
6921 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
6922 AC_MSG_RESULT([yes])
6923 ], [AC_MSG_RESULT([no])])
6926 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
6928 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6930 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
6932 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
6933 AC_MSG_RESULT([yes])
6934 ], [AC_MSG_RESULT([no])])
6937 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
6939 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6941 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
6943 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
6944 AC_MSG_RESULT([yes])
6945 ], [AC_MSG_RESULT([no])])
6948 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
6950 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6953 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
6955 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
6956 AC_MSG_RESULT([yes])
6957 ], [AC_MSG_RESULT([no])])
6960 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
6962 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6965 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
6967 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
6968 AC_MSG_RESULT([yes])
6969 ], [AC_MSG_RESULT([no])])
6973 AC_SUBST(HAVE_GCC_AVX)
6974 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
6975 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
6977 dnl ===================================================================
6978 dnl Identify the C++ library
6979 dnl ===================================================================
6981 AC_MSG_CHECKING([what the C++ library is])
6983 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6989 [CPP_LIBRARY=GLIBCXX
6990 cpp_library_name="GNU libstdc++"
6992 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6994 #ifndef _LIBCPP_VERSION
6999 cpp_library_name="LLVM libc++"
7000 AC_DEFINE([HAVE_LIBCXX])
7002 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7009 cpp_library_name="Microsoft"
7011 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7012 AC_MSG_RESULT([$cpp_library_name])
7015 dnl ===================================================================
7017 dnl ===================================================================
7018 AC_PATH_PROG(GPERF, gperf)
7019 if test -z "$GPERF"; then
7020 AC_MSG_ERROR([gperf not found but needed. Install it.])
7022 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7023 GPERF=`cygpath -m $GPERF`
7025 AC_MSG_CHECKING([whether gperf is new enough])
7026 my_gperf_ver1=$($GPERF --version | head -n 1)
7027 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7028 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7029 if test "$my_gperf_ver3" -ge 301; then
7030 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7032 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7036 dnl ===================================================================
7037 dnl Check for system libcmis
7038 dnl ===================================================================
7039 # libcmis requires curl and we can't build curl for iOS
7040 if test $_os != iOS; then
7041 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7046 AC_SUBST(ENABLE_LIBCMIS)
7048 dnl ===================================================================
7050 dnl ===================================================================
7052 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7054 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7055 if test "$with_latest_c__" = yes; then
7056 CXXFLAGS_CXX11=-std:c++latest
7058 CXXFLAGS_CXX11=-std:c++17
7060 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -Zc:__cplusplus"
7061 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7062 my_flags='-std=c++17 -std=c++1z'
7063 if test "$with_latest_c__" = yes; then
7064 my_flags="-std=c++20 -std=c++2a $my_flags"
7066 for flag in $my_flags; do
7067 if test "$COM" = MSC; then
7068 flag="-Xclang $flag"
7070 save_CXXFLAGS=$CXXFLAGS
7071 CXXFLAGS="$CXXFLAGS $flag -Werror"
7072 if test "$SYSTEM_LIBCMIS" = TRUE; then
7073 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7076 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7077 #include <algorithm>
7078 #include <functional>
7081 #if defined SYSTEM_LIBCMIS
7082 // See ucb/source/ucp/cmis/auth_provider.hxx:
7083 #if !defined __clang__
7084 #pragma GCC diagnostic push
7085 #pragma GCC diagnostic ignored "-Wdeprecated"
7086 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7088 #include <libcmis/libcmis.hxx>
7089 #if !defined __clang__
7090 #pragma GCC diagnostic pop
7094 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7095 std::sort(v.begin(), v.end(), fn);
7097 ]])],[CXXFLAGS_CXX11=$flag])
7099 CXXFLAGS=$save_CXXFLAGS
7100 if test -n "$CXXFLAGS_CXX11"; then
7105 if test -n "$CXXFLAGS_CXX11"; then
7106 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7110 AC_SUBST(CXXFLAGS_CXX11)
7112 if test "$GCC" = "yes"; then
7113 save_CXXFLAGS=$CXXFLAGS
7114 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7116 CXXFLAGS=$save_CXXFLAGS
7117 AC_SUBST(ATOMIC_LIB)
7120 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7121 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7122 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7123 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7124 dnl again towards 4.7.2:
7125 if test $CPP_LIBRARY = GLIBCXX; then
7126 AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7128 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7130 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7131 // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7132 // GCC 4.7.0: 20120322
7133 // GCC 4.7.1: 20120614
7134 // and using a range check is not possible as the mapping between
7135 // __GLIBCXX__ values and GCC versions is not monotonic
7140 ]])], [AC_MSG_RESULT(no, ok)],
7141 [AC_MSG_ERROR(yes)])
7145 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7146 save_CXXFLAGS=$CXXFLAGS
7147 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7150 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7153 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7169 a thinga[]={{0,0}, {1,1}};
7170 b thingb[]={{0,0}, {1,1}};
7171 size_t i = sizeof(sal_n_array_size(thinga));
7172 size_t j = sizeof(sal_n_array_size(thingb));
7173 return !(i != 0 && j != 0);
7175 ], [ AC_MSG_RESULT(yes) ],
7176 [ AC_MSG_ERROR(no)])
7178 CXXFLAGS=$save_CXXFLAGS
7180 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7181 if test "$GCC" = yes; then
7182 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7184 save_CXXFLAGS=$CXXFLAGS
7185 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7186 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7187 CXXFLAGS=$save_CXXFLAGS
7189 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7190 AC_MSG_RESULT([yes])
7195 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7197 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
7198 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
7199 dnl from consteval constructor initializing const variable":
7201 save_CXXFLAGS=$CXXFLAGS
7202 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7203 AC_RUN_IFELSE([AC_LANG_PROGRAM([
7205 consteval S() { i = 1; }
7210 return (s.i == 1) ? 0 : 1;
7212 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
7213 AC_MSG_RESULT([yes])
7214 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
7215 CXXFLAGS=$save_CXXFLAGS
7218 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7220 save_CXXFLAGS=$CXXFLAGS
7221 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7222 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7223 #include <algorithm>
7224 #include <initializer_list>
7226 template<typename T> class S {
7230 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7232 constinit S<int> s{3, 2, 1};
7234 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7235 AC_MSG_RESULT([yes])
7236 ], [AC_MSG_RESULT([no])])
7237 CXXFLAGS=$save_CXXFLAGS
7240 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7242 save_CXXFLAGS=$CXXFLAGS
7243 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7244 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7246 #include <type_traits>
7247 // Don't check size_type directly, as it was called index_type before P1872R0:
7248 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7250 AC_DEFINE([HAVE_CPP_SPAN],[1])
7251 AC_MSG_RESULT([yes])
7252 ], [AC_MSG_RESULT([no])])
7253 CXXFLAGS=$save_CXXFLAGS
7256 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7258 save_CXXFLAGS=$CXXFLAGS
7259 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7260 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7261 struct S1 { S1(S1 &&); };
7263 S1 f(S2 s) { return s; }
7265 AC_DEFINE([HAVE_P1155R3],[1])
7266 AC_MSG_RESULT([yes])
7267 ], [AC_MSG_RESULT([no])])
7268 CXXFLAGS=$save_CXXFLAGS
7271 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7272 dnl which is included in -Wextra anyway):
7273 HAVE_WDEPRECATED_COPY_DTOR=
7274 if test "$GCC" = yes; then
7275 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7277 save_CXXFLAGS=$CXXFLAGS
7278 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7279 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7280 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7281 AC_MSG_RESULT([yes])
7282 ], [AC_MSG_RESULT([no])])
7283 CXXFLAGS=$save_CXXFLAGS
7286 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7288 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7289 dnl uninitialized warning for code like
7292 dnl boost::optional<OString> * g(bool b) {
7293 dnl boost::optional<OString> o;
7295 dnl return new boost::optional<OString>(o);
7298 dnl (as is e.g. present, in a slightly more elaborate form, in
7299 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7300 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7301 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7302 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7303 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7305 save_CXXFLAGS=$CXXFLAGS
7306 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7307 if test "$ENABLE_OPTIMIZED" = TRUE; then
7308 CXXFLAGS="$CXXFLAGS -O2"
7310 CXXFLAGS="$CXXFLAGS -O0"
7312 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7321 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7322 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7328 char stg[sizeof (S1)];
7336 ]])], [AC_MSG_RESULT([no])], [
7337 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7338 AC_MSG_RESULT([yes])
7340 CXXFLAGS=$save_CXXFLAGS
7343 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7345 dnl ===================================================================
7346 dnl CPU Intrinsics support - SSE, AVX
7347 dnl ===================================================================
7349 CXXFLAGS_INTRINSICS_SSE2=
7350 CXXFLAGS_INTRINSICS_SSSE3=
7351 CXXFLAGS_INTRINSICS_SSE41=
7352 CXXFLAGS_INTRINSICS_SSE42=
7353 CXXFLAGS_INTRINSICS_AVX=
7354 CXXFLAGS_INTRINSICS_AVX2=
7355 CXXFLAGS_INTRINSICS_AVX512=
7356 CXXFLAGS_INTRINSICS_F16C=
7357 CXXFLAGS_INTRINSICS_FMA=
7359 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7360 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7367 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7371 # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7372 # MSVC seems to differentiate only between SSE and SSE2, where in fact
7373 # SSE2 seems to be SSE2+.
7374 # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7375 # is not empty (and can be tested in gbuild).
7376 flag_sse2=-arch:SSE2
7377 flag_ssse3=-arch:SSE2
7378 flag_sse41=-arch:SSE2
7379 flag_sse42=-arch:SSE2
7381 flag_avx2=-arch:AVX2
7382 flag_avx512=-arch:AVX512
7383 # These are part of -arch:AVX2
7384 flag_f16c=-arch:AVX2
7388 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7390 save_CXXFLAGS=$CXXFLAGS
7391 CXXFLAGS="$CXXFLAGS $flag_sse2"
7392 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7393 #include <emmintrin.h>
7395 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7396 c = _mm_xor_si128 (a, b);
7400 [can_compile_sse2=yes],
7401 [can_compile_sse2=no])
7403 CXXFLAGS=$save_CXXFLAGS
7404 AC_MSG_RESULT([${can_compile_sse2}])
7405 if test "${can_compile_sse2}" = "yes" ; then
7406 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7409 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7411 save_CXXFLAGS=$CXXFLAGS
7412 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7413 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7414 #include <tmmintrin.h>
7416 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7417 c = _mm_maddubs_epi16 (a, b);
7421 [can_compile_ssse3=yes],
7422 [can_compile_ssse3=no])
7424 CXXFLAGS=$save_CXXFLAGS
7425 AC_MSG_RESULT([${can_compile_ssse3}])
7426 if test "${can_compile_ssse3}" = "yes" ; then
7427 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7430 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7432 save_CXXFLAGS=$CXXFLAGS
7433 CXXFLAGS="$CXXFLAGS $flag_sse41"
7434 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7435 #include <smmintrin.h>
7437 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7438 c = _mm_cmpeq_epi64 (a, b);
7442 [can_compile_sse41=yes],
7443 [can_compile_sse41=no])
7445 CXXFLAGS=$save_CXXFLAGS
7446 AC_MSG_RESULT([${can_compile_sse41}])
7447 if test "${can_compile_sse41}" = "yes" ; then
7448 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7451 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7453 save_CXXFLAGS=$CXXFLAGS
7454 CXXFLAGS="$CXXFLAGS $flag_sse42"
7455 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7456 #include <nmmintrin.h>
7458 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7459 c = _mm_cmpgt_epi64 (a, b);
7463 [can_compile_sse42=yes],
7464 [can_compile_sse42=no])
7466 CXXFLAGS=$save_CXXFLAGS
7467 AC_MSG_RESULT([${can_compile_sse42}])
7468 if test "${can_compile_sse42}" = "yes" ; then
7469 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7472 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7474 save_CXXFLAGS=$CXXFLAGS
7475 CXXFLAGS="$CXXFLAGS $flag_avx"
7476 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7477 #include <immintrin.h>
7479 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7480 c = _mm256_xor_ps(a, b);
7484 [can_compile_avx=yes],
7485 [can_compile_avx=no])
7487 CXXFLAGS=$save_CXXFLAGS
7488 AC_MSG_RESULT([${can_compile_avx}])
7489 if test "${can_compile_avx}" = "yes" ; then
7490 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7493 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7495 save_CXXFLAGS=$CXXFLAGS
7496 CXXFLAGS="$CXXFLAGS $flag_avx2"
7497 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7498 #include <immintrin.h>
7500 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7501 c = _mm256_maddubs_epi16(a, b);
7505 [can_compile_avx2=yes],
7506 [can_compile_avx2=no])
7508 CXXFLAGS=$save_CXXFLAGS
7509 AC_MSG_RESULT([${can_compile_avx2}])
7510 if test "${can_compile_avx2}" = "yes" ; then
7511 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7514 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7516 save_CXXFLAGS=$CXXFLAGS
7517 CXXFLAGS="$CXXFLAGS $flag_avx512"
7518 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7519 #include <immintrin.h>
7521 __m512i a = _mm512_loadu_si512(0);
7525 [can_compile_avx512=yes],
7526 [can_compile_avx512=no])
7528 CXXFLAGS=$save_CXXFLAGS
7529 AC_MSG_RESULT([${can_compile_avx512}])
7530 if test "${can_compile_avx512}" = "yes" ; then
7531 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7534 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7536 save_CXXFLAGS=$CXXFLAGS
7537 CXXFLAGS="$CXXFLAGS $flag_f16c"
7538 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7539 #include <immintrin.h>
7541 __m128i a = _mm_set1_epi32 (0);
7543 c = _mm_cvtph_ps(a);
7547 [can_compile_f16c=yes],
7548 [can_compile_f16c=no])
7550 CXXFLAGS=$save_CXXFLAGS
7551 AC_MSG_RESULT([${can_compile_f16c}])
7552 if test "${can_compile_f16c}" = "yes" ; then
7553 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7556 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7558 save_CXXFLAGS=$CXXFLAGS
7559 CXXFLAGS="$CXXFLAGS $flag_fma"
7560 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7561 #include <immintrin.h>
7563 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7564 d = _mm256_fmadd_ps(a, b, c);
7568 [can_compile_fma=yes],
7569 [can_compile_fma=no])
7571 CXXFLAGS=$save_CXXFLAGS
7572 AC_MSG_RESULT([${can_compile_fma}])
7573 if test "${can_compile_fma}" = "yes" ; then
7574 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7577 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7578 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7579 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7580 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7581 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7582 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7583 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7584 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7585 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7587 dnl ===================================================================
7588 dnl system stl sanity tests
7589 dnl ===================================================================
7590 if test "$_os" != "WINNT"; then
7594 save_CPPFLAGS="$CPPFLAGS"
7595 if test -n "$MACOSX_SDK_PATH"; then
7596 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7599 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7601 if test "$CPP_LIBRARY" = GLIBCXX; then
7602 dnl gcc#19664, gcc#22482, rhbz#162935
7603 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7604 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7605 AC_MSG_RESULT([$stlvisok])
7606 if test "$stlvisok" = "no"; then
7607 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7611 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7612 # when we don't make any dynamic libraries?
7613 if test "$DISABLE_DYNLOADING" = ""; then
7614 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7615 cat > conftestlib1.cc <<_ACEOF
7616 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7617 struct S2: S1<int> { virtual ~S2(); };
7620 cat > conftestlib2.cc <<_ACEOF
7621 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7622 struct S2: S1<int> { virtual ~S2(); };
7623 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7625 gccvisinlineshiddenok=yes
7626 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7627 gccvisinlineshiddenok=no
7629 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7630 dnl known to not work with -z defs (unsetting which makes the test
7632 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7633 if test "$COM_IS_CLANG" = TRUE; then
7634 for i in $CXX $CXXFLAGS; do
7637 my_linkflagsnoundefs=
7643 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7644 gccvisinlineshiddenok=no
7649 AC_MSG_RESULT([$gccvisinlineshiddenok])
7650 if test "$gccvisinlineshiddenok" = "no"; then
7651 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7655 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7656 cat >visibility.cxx <<_ACEOF
7657 #pragma GCC visibility push(hidden)
7658 struct __attribute__ ((visibility ("default"))) TestStruct {
7661 __attribute__ ((visibility ("default"))) void TestFunc() {
7665 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7670 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7673 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7685 rm -f visibility.s visibility.cxx
7687 AC_MSG_RESULT([$gccvisbroken])
7688 if test "$gccvisbroken" = "yes"; then
7689 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7692 CPPFLAGS="$save_CPPFLAGS"
7697 dnl ===================================================================
7699 dnl ===================================================================
7701 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7702 if test "$GCC" = "yes"; then
7703 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7705 save_CXXFLAGS=$CXXFLAGS
7706 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7707 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7708 CXXFLAGS=$save_CXXFLAGS
7710 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7711 AC_MSG_RESULT([yes])
7716 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7718 dnl ===================================================================
7719 dnl Compiler plugins
7720 dnl ===================================================================
7723 # currently only Clang
7725 if test "$COM_IS_CLANG" != "TRUE"; then
7726 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7727 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7728 enable_compiler_plugins=no
7732 COMPILER_PLUGINS_COM_IS_CLANG=
7733 if test "$COM_IS_CLANG" = "TRUE"; then
7734 if test -n "$enable_compiler_plugins"; then
7735 compiler_plugins="$enable_compiler_plugins"
7736 elif test -n "$ENABLE_DBGUTIL"; then
7737 compiler_plugins=test
7741 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7742 if test "$CLANGVER" -lt 50002; then
7743 if test "$compiler_plugins" = yes; then
7744 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7750 if test "$compiler_plugins" != "no"; then
7751 dnl The prefix where Clang resides, override to where Clang resides if
7752 dnl using a source build:
7753 if test -z "$CLANGDIR"; then
7754 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | head -n 1)))))
7756 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7757 if test -z "$COMPILER_PLUGINS_CXX"; then
7758 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7760 clangbindir=$CLANGDIR/bin
7761 if test "$build_os" = "cygwin"; then
7762 clangbindir=$(cygpath -u "$clangbindir")
7764 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
7765 if test -n "$LLVM_CONFIG"; then
7766 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
7767 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
7768 if test -z "$CLANGLIBDIR"; then
7769 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
7771 # Try if clang is built from source (in which case its includes are not together with llvm includes).
7772 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
7773 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
7774 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
7775 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
7777 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
7778 clangobjdir=$($LLVM_CONFIG --obj-root)
7779 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
7780 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
7783 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
7787 save_CPPFLAGS=$CPPFLAGS
7788 save_CXXFLAGS=$CXXFLAGS
7789 save_LDFLAGS=$LDFLAGS
7791 CXX=$COMPILER_PLUGINS_CXX
7792 CXXCPP="$COMPILER_PLUGINS_CXX -E"
7793 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7794 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7795 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
7796 [COMPILER_PLUGINS=TRUE],
7798 if test "$compiler_plugins" = "yes"; then
7799 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
7801 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
7802 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
7805 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
7806 dnl comment in compilerplugins/Makefile-clang.mk:
7807 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
7809 AC_MSG_CHECKING([for clang libraries to use])
7810 if test -z "$CLANGTOOLLIBS"; then
7811 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
7812 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
7814 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7815 [[ clang::FullSourceLoc().dump(); ]])
7816 ],[CLANGTOOLLIBS="$LIBS"],[])
7818 if test -z "$CLANGTOOLLIBS"; then
7819 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
7821 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7822 [[ clang::FullSourceLoc().dump(); ]])
7823 ],[CLANGTOOLLIBS="$LIBS"],[])
7825 AC_MSG_RESULT([$CLANGTOOLLIBS])
7826 if test -z "$CLANGTOOLLIBS"; then
7827 if test "$compiler_plugins" = "yes"; then
7828 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
7830 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
7831 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
7835 if test -n "$COMPILER_PLUGINS"; then
7836 if test -z "$CLANGSYSINCLUDE"; then
7837 if test -n "$LLVM_CONFIG"; then
7838 # Path to the clang system headers (no idea if there's a better way to get it).
7839 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
7846 CPPFLAGS=$save_CPPFLAGS
7847 CXXFLAGS=$save_CXXFLAGS
7848 LDFLAGS=$save_LDFLAGS
7852 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
7853 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7859 [AC_MSG_RESULT([yes])
7860 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
7861 [AC_MSG_RESULT([no])])
7862 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7865 if test "$enable_compiler_plugins" = "yes"; then
7866 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
7869 COMPILER_PLUGINS_ANALYZER_PCH=
7870 if test "$enable_compiler_plugins_analyzer_pch" != no; then
7871 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
7873 AC_SUBST(COMPILER_PLUGINS)
7874 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
7875 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7876 AC_SUBST(COMPILER_PLUGINS_CXX)
7877 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
7878 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
7879 AC_SUBST(COMPILER_PLUGINS_DEBUG)
7880 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
7882 AC_SUBST(CLANGLIBDIR)
7883 AC_SUBST(CLANGTOOLLIBS)
7884 AC_SUBST(CLANGSYSINCLUDE)
7886 # Plugin to help linker.
7887 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
7888 # This makes --enable-lto build with clang work.
7891 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
7892 AC_SUBST(HAVE_POSIX_FALLOCATE)
7894 JITC_PROCESSOR_TYPE=""
7895 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
7896 # IBMs JDK needs this...
7897 JITC_PROCESSOR_TYPE=6
7898 export JITC_PROCESSOR_TYPE
7900 AC_SUBST([JITC_PROCESSOR_TYPE])
7902 # Misc Windows Stuff
7903 AC_ARG_WITH(ucrt-dir,
7904 AS_HELP_STRING([--with-ucrt-dir],
7905 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
7906 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
7907 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
7908 Windows6.1-KB2999226-x64.msu
7909 Windows6.1-KB2999226-x86.msu
7910 Windows8.1-KB2999226-x64.msu
7911 Windows8.1-KB2999226-x86.msu
7912 Windows8-RT-KB2999226-x64.msu
7913 Windows8-RT-KB2999226-x86.msu
7914 A zip archive including those files is available from Microsoft site:
7915 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
7918 UCRT_REDISTDIR="$with_ucrt_dir"
7919 if test $_os = "WINNT"; then
7921 for i in $PKGFORMAT; do
7922 if test "$i" = msi; then
7927 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
7928 MSVC_DLLS="$msvcdlls"
7929 test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
7930 # MSVC 15.3 changed it to VC141
7931 if echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
7932 SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
7933 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
7934 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
7936 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
7939 if test "$UCRT_REDISTDIR" = "no"; then
7940 dnl explicitly disabled
7943 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
7944 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
7945 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
7946 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
7947 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
7948 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
7950 if test -n "$PKGFORMAT"; then
7951 for i in $PKGFORMAT; do
7954 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
7955 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
7964 AC_SUBST(UCRT_REDISTDIR)
7965 AC_SUBST(MSVC_DLL_PATH)
7969 dnl ===================================================================
7971 dnl ===================================================================
7972 if test "$ENABLE_JAVA" != ""; then
7974 # Windows-specific tests
7975 if test "$build_os" = "cygwin"; then
7976 if test -z "$with_jdk_home"; then
7977 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
7978 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
7979 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
7980 if test -n "$regvalue"; then
7982 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
7983 reg_jdk_home=$regvalue
7986 if test -f "$reg_jdk_home/lib/jvm.lib" -a -f "$reg_jdk_home/bin/java.exe"; then
7987 with_jdk_home="$reg_jdk_home"
7988 howfound="found automatically"
7990 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option pointing to a $WIN_HOST_BITS-bit JDK >= 9])
7993 test "$build_os" = "cygwin" && with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
7994 howfound="you passed"
7998 # 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.
7999 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8000 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8001 with_jdk_home=`/usr/libexec/java_home`
8004 JAVA_HOME=; export JAVA_HOME
8005 if test -z "$with_jdk_home"; then
8006 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8008 _java_path="$with_jdk_home/bin/$with_java"
8009 dnl Check if there is a Java interpreter at all.
8010 if test -x "$_java_path"; then
8011 JAVAINTERPRETER=$_java_path
8013 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8017 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8018 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8019 dnl loaded by java to run JunitTests:
8020 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8021 shortjdkhome=`cygpath -d "$with_jdk_home"`
8022 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
8023 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8024 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8025 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
8026 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8027 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8030 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8031 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8033 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8034 elif test "$cross_compiling" != "yes"; then
8036 AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8037 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8038 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8039 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8042 *) # assumption: everything else 32-bit
8043 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8044 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8045 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8052 dnl ===================================================================
8054 dnl ===================================================================
8056 # Whether all the complexity here actually is needed any more or not, no idea.
8058 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8060 AC_MSG_CHECKING([the installed JDK])
8061 if test -n "$JAVAINTERPRETER"; then
8062 dnl java -version sends output to stderr!
8063 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8064 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8065 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8066 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8067 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8068 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8069 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8070 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8074 dnl Sun JDK specific tests
8075 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8076 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8078 if test "$_jdk_ver" -lt 10900; then
8079 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8081 if test "$_jdk_ver" -gt 10900; then
8082 JAVA_CLASSPATH_NOT_SET=TRUE
8085 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8086 if test "$_os" = "WINNT"; then
8087 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8089 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8091 # set to limit VM usage for JunitTests
8093 # set to limit VM usage for javac
8094 JAVACFLAGS=-J-Xmx128M
8097 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8100 if test -z "$ENABLE_JAVA"; then
8104 elif test "$cross_compiling" = "yes"; then
8105 # Just assume compatibility of build and host JDK
8107 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8111 dnl ===================================================================
8112 dnl Checks for javac
8113 dnl ===================================================================
8114 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8115 javacompiler="javac"
8116 : ${JAVA_SOURCE_VER=8}
8117 : ${JAVA_TARGET_VER=8}
8118 if test -z "$with_jdk_home"; then
8119 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8121 _javac_path="$with_jdk_home/bin/$javacompiler"
8122 dnl Check if there is a Java compiler at all.
8123 if test -x "$_javac_path"; then
8124 JAVACOMPILER=$_javac_path
8127 if test -z "$JAVACOMPILER"; then
8128 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8130 if test "$build_os" = "cygwin"; then
8131 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8132 JAVACOMPILER="${JAVACOMPILER}.exe"
8134 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8138 dnl ===================================================================
8139 dnl Checks for javadoc
8140 dnl ===================================================================
8141 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8142 if test -z "$with_jdk_home"; then
8143 AC_PATH_PROG(JAVADOC, javadoc)
8145 _javadoc_path="$with_jdk_home/bin/javadoc"
8146 dnl Check if there is a javadoc at all.
8147 if test -x "$_javadoc_path"; then
8148 JAVADOC=$_javadoc_path
8150 AC_PATH_PROG(JAVADOC, javadoc)
8153 if test -z "$JAVADOC"; then
8154 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8156 if test "$build_os" = "cygwin"; then
8157 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8158 JAVADOC="${JAVADOC}.exe"
8160 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8163 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8164 JAVADOCISGJDOC="yes"
8168 AC_SUBST(JAVADOCISGJDOC)
8170 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8171 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8172 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8173 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8174 # try to recover first by looking whether we have an alternative
8175 # system as in Debian or newer SuSEs where following /usr/bin/javac
8176 # over /etc/alternatives/javac leads to the right bindir where we
8177 # just need to strip a bit away to get a valid JAVA_HOME
8178 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8179 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8180 # maybe only one level of symlink (e.g. on Mac)
8181 JAVA_HOME=$(readlink $JAVACOMPILER)
8182 if test "$(dirname $JAVA_HOME)" = "."; then
8183 # we've got no path to trim back
8188 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8189 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8190 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8191 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8193 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8194 if test "$JAVA_HOME" != "/usr"; then
8195 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8196 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8197 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8198 dnl Tiger already returns a JDK path...
8199 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8201 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8202 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8203 dnl that checks which version to run
8204 if test -f "$JAVA_HOME"; then
8205 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8210 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8212 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8213 if test -z "$JAVA_HOME"; then
8214 if test "x$with_jdk_home" = "x"; then
8215 cat > findhome.java <<_ACEOF
8216 [import java.io.File;
8220 public static void main(String args[])
8222 String jrelocation = System.getProperty("java.home");
8223 File jre = new File(jrelocation);
8224 System.out.println(jre.getParent());
8228 AC_MSG_CHECKING([if javac works])
8229 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8230 AC_TRY_EVAL(javac_cmd)
8231 if test $? = 0 -a -f ./findhome.class; then
8232 AC_MSG_RESULT([javac works])
8234 echo "configure: javac test failed" >&5
8235 cat findhome.java >&5
8236 AC_MSG_ERROR([javac does not work - java projects will not build!])
8238 AC_MSG_CHECKING([if gij knows its java.home])
8239 JAVA_HOME=`$JAVAINTERPRETER findhome`
8240 if test $? = 0 -a "$JAVA_HOME" != ""; then
8241 AC_MSG_RESULT([$JAVA_HOME])
8243 echo "configure: java test failed" >&5
8244 cat findhome.java >&5
8245 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8247 # clean-up after ourselves
8248 rm -f ./findhome.java ./findhome.class
8250 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8254 # now check if $JAVA_HOME is really valid
8255 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8256 case "${JAVA_HOME}" in
8257 /Library/Java/JavaVirtualMachines/*)
8260 AC_MSG_ERROR([JDK in $JAVA_HOME cannot be used in CppUnit tests - install Oracle JDK])
8263 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8264 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8265 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8266 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8267 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8268 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8269 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8272 PathFormat "$JAVA_HOME"
8273 JAVA_HOME="$formatted_path"
8276 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8279 AC_MSG_CHECKING([for JAWT lib])
8280 if test "$_os" = WINNT; then
8281 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8286 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8287 JAVA_ARCH=$my_java_arch
8302 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8303 JAVA_ARCH=$my_java_arch
8306 my_java_arch=sparcv9
8312 my_java_arch=$host_cpu
8315 # This is where JDK9 puts the library
8316 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8317 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8319 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8321 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8323 AC_MSG_RESULT([$JAWTLIB])
8327 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8331 JAVAINC="-I$JAVA_HOME/include"
8332 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8333 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8337 JAVAINC="-I$JAVA_HOME/include/win32"
8338 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8342 if test -d "$JAVA_HOME/include/darwin"; then
8343 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8345 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8350 JAVAINC="-I$JAVA_HOME/include"
8351 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8355 JAVAINC="-I$JAVA_HOME/include"
8356 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8357 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8358 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8359 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8363 JAVAINC="-I$JAVA_HOME/include"
8364 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8365 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8369 JAVAINC="-I$JAVA_HOME/include"
8370 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8371 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8375 JAVAINC="-I$JAVA_HOME/include"
8376 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8377 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8381 JAVAINC="-I$JAVA_HOME/include"
8382 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8383 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8387 JAVAINC="-I$JAVA_HOME/include"
8388 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8389 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8393 SOLARINC="$SOLARINC $JAVAINC"
8395 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8396 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8397 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8401 AC_SUBST(JAVACFLAGS)
8402 AC_SUBST(JAVACOMPILER)
8403 AC_SUBST(JAVAINTERPRETER)
8404 AC_SUBST(JAVAIFLAGS)
8405 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8406 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8408 AC_SUBST(JAVA_HOME_FOR_BUILD)
8410 AC_SUBST(JDK_FOR_BUILD)
8411 AC_SUBST(JAVA_SOURCE_VER)
8412 AC_SUBST(JAVA_TARGET_VER)
8415 dnl ===================================================================
8416 dnl Export file validation
8417 dnl ===================================================================
8418 AC_MSG_CHECKING([whether to enable export file validation])
8419 if test "$with_export_validation" != "no"; then
8420 if test -z "$ENABLE_JAVA"; then
8421 if test "$with_export_validation" = "yes"; then
8422 AC_MSG_ERROR([requested, but Java is disabled])
8424 AC_MSG_RESULT([no, as Java is disabled])
8426 elif ! test -d "${SRC_ROOT}/schema"; then
8427 if test "$with_export_validation" = "yes"; then
8428 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8430 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8433 AC_MSG_RESULT([yes])
8434 AC_DEFINE(HAVE_EXPORT_VALIDATION)
8436 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8437 if test -z "$ODFVALIDATOR"; then
8438 # remember to download the ODF toolkit with validator later
8439 AC_MSG_NOTICE([no odfvalidator found, will download it])
8440 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8441 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8443 # and fetch name of odfvalidator jar name from download.lst
8444 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8445 AC_SUBST(ODFVALIDATOR_JAR)
8447 if test -z "$ODFVALIDATOR_JAR"; then
8448 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8451 if test "$build_os" = "cygwin"; then
8452 # In case of Cygwin it will be executed from Windows,
8453 # so we need to run bash and absolute path to validator
8454 # so instead of "odfvalidator" it will be
8455 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8456 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8458 ODFVALIDATOR="sh $ODFVALIDATOR"
8460 AC_SUBST(ODFVALIDATOR)
8463 AC_PATH_PROGS(OFFICEOTRON, officeotron)
8464 if test -z "$OFFICEOTRON"; then
8465 # remember to download the officeotron with validator later
8466 AC_MSG_NOTICE([no officeotron found, will download it])
8467 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8468 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8470 # and fetch name of officeotron jar name from download.lst
8471 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8472 AC_SUBST(OFFICEOTRON_JAR)
8474 if test -z "$OFFICEOTRON_JAR"; then
8475 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8478 # check version of existing officeotron
8479 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8480 if test 0"$OFFICEOTRON_VER" -lt 704; then
8481 AC_MSG_ERROR([officeotron too old])
8484 if test "$build_os" = "cygwin"; then
8485 # In case of Cygwin it will be executed from Windows,
8486 # so we need to run bash and absolute path to validator
8487 # so instead of "odfvalidator" it will be
8488 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8489 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8491 OFFICEOTRON="sh $OFFICEOTRON"
8494 AC_SUBST(OFFICEOTRON)
8499 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8500 if test "$with_bffvalidator" != "no"; then
8501 AC_DEFINE(HAVE_BFFVALIDATOR)
8503 if test "$with_export_validation" = "no"; then
8504 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8507 if test "$with_bffvalidator" = "yes"; then
8508 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8510 BFFVALIDATOR="$with_bffvalidator"
8513 if test "$build_os" = "cygwin"; then
8514 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8515 AC_MSG_RESULT($BFFVALIDATOR)
8517 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8519 elif test -n "$BFFVALIDATOR"; then
8520 # We are not in Cygwin but need to run Windows binary with wine
8521 AC_PATH_PROGS(WINE, wine)
8523 # so swap in a shell wrapper that converts paths transparently
8524 BFFVALIDATOR_EXE="$BFFVALIDATOR"
8525 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8526 AC_SUBST(BFFVALIDATOR_EXE)
8527 AC_MSG_RESULT($BFFVALIDATOR)
8529 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8531 AC_SUBST(BFFVALIDATOR)
8536 dnl ===================================================================
8537 dnl Check for C preprocessor to use
8538 dnl ===================================================================
8539 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8540 if test -n "$with_idlc_cpp"; then
8541 AC_MSG_RESULT([$with_idlc_cpp])
8542 AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8544 AC_MSG_RESULT([ucpp])
8545 AC_MSG_CHECKING([which ucpp tp use])
8546 if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8547 AC_MSG_RESULT([external])
8548 AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8550 AC_MSG_RESULT([internal])
8551 BUILD_TYPE="$BUILD_TYPE UCPP"
8554 AC_SUBST(SYSTEM_UCPP)
8556 dnl ===================================================================
8557 dnl Check for epm (not needed for Windows)
8558 dnl ===================================================================
8559 AC_MSG_CHECKING([whether to enable EPM for packing])
8560 if test "$enable_epm" = "yes"; then
8561 AC_MSG_RESULT([yes])
8562 if test "$_os" != "WINNT"; then
8563 if test $_os = Darwin; then
8565 elif test -n "$with_epm"; then
8568 AC_PATH_PROG(EPM, epm, no)
8570 if test "$EPM" = "no" -o "$EPM" = "internal"; then
8571 AC_MSG_NOTICE([EPM will be built.])
8572 BUILD_TYPE="$BUILD_TYPE EPM"
8573 EPM=${WORKDIR}/UnpackedTarball/epm/epm
8575 # Gentoo has some epm which is something different...
8576 AC_MSG_CHECKING([whether the found epm is the right epm])
8577 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8578 AC_MSG_RESULT([yes])
8580 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8582 AC_MSG_CHECKING([epm version])
8583 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8584 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8585 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8586 AC_MSG_RESULT([OK, >= 3.7])
8588 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8589 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8594 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8595 AC_MSG_CHECKING([for rpm])
8596 for a in "$RPM" rpmbuild rpm; do
8597 $a --usage >/dev/null 2> /dev/null
8598 if test $? -eq 0; then
8602 $a --version >/dev/null 2> /dev/null
8603 if test $? -eq 0; then
8609 if test -z "$RPM"; then
8610 AC_MSG_ERROR([not found])
8611 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8612 RPM_PATH=`which $RPM`
8613 AC_MSG_RESULT([$RPM_PATH])
8614 SCPDEFS="$SCPDEFS -DWITH_RPM"
8616 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8619 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8620 AC_PATH_PROG(DPKG, dpkg, no)
8621 if test "$DPKG" = "no"; then
8622 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8625 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8626 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8627 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8628 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8629 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8630 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8631 AC_MSG_RESULT([yes])
8634 if echo "$PKGFORMAT" | $GREP -q rpm; then
8636 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8637 add_warning "the rpms will need to be installed with --nodeps"
8641 AC_MSG_WARN([the ${_pt}s will not be relocatable])
8642 add_warning "the ${_pt}s will not be relocatable"
8643 AC_MSG_WARN([if you want to make sure installation without --nodeps and
8644 relocation will work, you need to patch your epm with the
8645 patch in epm/epm-3.7.patch or build with
8646 --with-epm=internal which will build a suitable epm])
8651 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8652 AC_PATH_PROG(PKGMK, pkgmk, no)
8653 if test "$PKGMK" = "no"; then
8654 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8661 for i in $PKGFORMAT; do
8663 aix | bsd | deb | pkg | rpm | native | portable)
8665 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8675 if test "$enable_lotuswordpro" = "yes"; then
8678 AC_SUBST(ENABLE_LWP)
8680 dnl ===================================================================
8681 dnl Check for building ODK
8682 dnl ===================================================================
8683 if test "$enable_odk" = no; then
8686 if test "$with_doxygen" = no; then
8687 AC_MSG_CHECKING([for doxygen])
8691 if test "$with_doxygen" = yes; then
8692 AC_PATH_PROG([DOXYGEN], [doxygen])
8693 if test -z "$DOXYGEN"; then
8694 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8696 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8697 if ! dot -V 2>/dev/null; then
8698 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8702 AC_MSG_CHECKING([for doxygen])
8703 DOXYGEN=$with_doxygen
8704 AC_MSG_RESULT([$DOXYGEN])
8706 if test -n "$DOXYGEN"; then
8707 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8708 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8709 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8710 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8717 AC_MSG_CHECKING([whether to build the ODK])
8718 if test "$enable_odk" = "" -o "$enable_odk" != "no"; then
8719 AC_MSG_RESULT([yes])
8721 if test "$with_java" != "no"; then
8722 AC_MSG_CHECKING([whether to build unowinreg.dll])
8723 if test "$_os" = "WINNT" -a "$enable_build_unowinreg" = ""; then
8724 # build on Win by default
8725 enable_build_unowinreg=yes
8727 if test "$enable_build_unowinreg" = "" -o "$enable_build_unowinreg" = "no"; then
8731 AC_MSG_RESULT([yes])
8732 BUILD_UNOWINREG=TRUE
8734 if test "$_os" != "WINNT" -a "$BUILD_UNOWINREG" = "TRUE"; then
8735 if test -z "$with_mingw_cross_compiler"; then
8737 AC_CHECK_PROGS(MINGWCXX,i386-mingw32msvc-g++ i586-pc-mingw32-g++ i686-pc-mingw32-g++ i686-w64-mingw32-g++,false)
8738 elif test -x "$with_mingw_cross_compiler"; then
8739 MINGWCXX="$with_mingw_cross_compiler"
8741 AC_CHECK_TOOL(MINGWCXX, "$with_mingw_cross_compiler", false)
8744 if test "$MINGWCXX" = "false"; then
8745 AC_MSG_ERROR([MinGW32 C++ cross-compiler not found.])
8748 mingwstrip_test="`echo $MINGWCXX | $SED -e s/g++/strip/`"
8749 if test -x "$mingwstrip_test"; then
8750 MINGWSTRIP="$mingwstrip_test"
8752 AC_CHECK_TOOL(MINGWSTRIP, "$mingwstrip_test", false)
8755 if test "$MINGWSTRIP" = "false"; then
8756 AC_MSG_ERROR(MinGW32 binutils not found.)
8760 BUILD_TYPE="$BUILD_TYPE ODK"
8765 AC_SUBST(BUILD_UNOWINREG)
8767 AC_SUBST(MINGWSTRIP)
8769 dnl ===================================================================
8770 dnl Check for system zlib
8771 dnl ===================================================================
8772 if test "$with_system_zlib" = "auto"; then
8775 with_system_zlib="$with_system_libs"
8778 if test "$enable_fuzzers" != "yes"; then
8779 with_system_zlib=yes
8787 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8788 dnl and has no pkg-config for it at least on some tinderboxes,
8789 dnl so leaving that out for now
8790 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8791 AC_MSG_CHECKING([which zlib to use])
8792 if test "$with_system_zlib" = "yes"; then
8793 AC_MSG_RESULT([external])
8795 AC_CHECK_HEADER(zlib.h, [],
8796 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8797 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8798 [AC_MSG_ERROR(zlib not found or functional)], [])
8800 AC_MSG_RESULT([internal])
8802 BUILD_TYPE="$BUILD_TYPE ZLIB"
8803 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
8804 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
8806 AC_SUBST(ZLIB_CFLAGS)
8808 AC_SUBST(SYSTEM_ZLIB)
8810 dnl ===================================================================
8811 dnl Check for system jpeg
8812 dnl ===================================================================
8813 AC_MSG_CHECKING([which libjpeg to use])
8814 if test "$with_system_jpeg" = "yes"; then
8815 AC_MSG_RESULT([external])
8817 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
8818 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
8819 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
8820 [AC_MSG_ERROR(jpeg library not found or functional)], [])
8823 AC_MSG_RESULT([internal, libjpeg-turbo])
8824 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
8825 LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo"
8826 if test "$COM" = "MSC"; then
8827 LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib"
8829 LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg"
8833 x86_64 | amd64 | i*86 | x86 | ia32)
8834 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
8835 if test -z "$NASM" -a "$build_os" = "cygwin"; then
8836 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
8837 NASM="$LODE_HOME/opt/bin/nasm"
8838 elif test -x "/opt/lo/bin/nasm"; then
8839 NASM="/opt/lo/bin/nasm"
8843 if test -n "$NASM"; then
8844 AC_MSG_CHECKING([for object file format of host system])
8846 cygwin* | mingw* | pw32* | wsl*)
8856 msdosdjgpp* | go32*)
8859 os2-emx*) # not tested
8860 objfmt='MSOMF' # obj
8862 linux*coff* | linux*oldld*)
8878 kfreebsd* | freebsd* | netbsd* | openbsd*)
8879 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
8892 solaris* | sunos* | sysv* | sco*)
8902 darwin* | rhapsody* | nextstep* | openstep* | macos*)
8917 AC_MSG_RESULT([$objfmt])
8918 if test "$objfmt" = 'ELF ?'; then
8920 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
8923 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
8925 MSOMF) NAFLAGS='-fobj -DOBJ32';;
8926 Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
8927 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
8928 COFF) NAFLAGS='-fcoff -DCOFF';;
8929 a.out) NAFLAGS='-faout -DAOUT';;
8930 BSD-a.out) NAFLAGS='-faoutb -DAOUT';;
8931 ELF) NAFLAGS='-felf -DELF';;
8932 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__';;
8933 RDF) NAFLAGS='-frdf -DRDF';;
8934 Mach-O) NAFLAGS='-fmacho -DMACHO';;
8935 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
8937 AC_MSG_RESULT([$NAFLAGS])
8939 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
8940 cat > conftest.asm << EOF
8941 [%line __oline__ "configure"
8949 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
8950 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
8953 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
8954 cat conftest.asm >&AS_MESSAGE_LOG_FD
8957 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
8963 if test -z "$NASM"; then
8965 ****************************************************************************
8966 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
8970 if test "$build_os" = "cygwin"; then
8972 install a pre-compiled binary for Win32
8974 mkdir -p /opt/lo/bin
8976 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
8979 or get and install one from http://www.nasm.us/
8981 Then re-run autogen.sh
8983 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
8984 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
8989 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
8993 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
8994 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9001 AC_SUBST(LIBJPEG_CFLAGS)
9002 AC_SUBST(LIBJPEG_LIBS)
9003 AC_SUBST(SYSTEM_LIBJPEG)
9005 dnl ===================================================================
9006 dnl Check for system clucene
9007 dnl ===================================================================
9008 dnl we should rather be using
9009 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9010 dnl but the contribs-lib check seems tricky
9011 AC_MSG_CHECKING([which clucene to use])
9012 if test "$with_system_clucene" = "yes"; then
9013 AC_MSG_RESULT([external])
9015 PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9016 CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9017 FilterLibs "${CLUCENE_LIBS}"
9018 CLUCENE_LIBS="${filteredlibs}"
9020 save_CXXFLAGS=$CXXFLAGS
9021 save_CPPFLAGS=$CPPFLAGS
9022 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9023 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9024 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9025 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9026 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9027 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9028 CXXFLAGS=$save_CXXFLAGS
9029 CPPFLAGS=$save_CPPFLAGS
9032 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9034 AC_MSG_RESULT([internal])
9036 BUILD_TYPE="$BUILD_TYPE CLUCENE"
9038 AC_SUBST(SYSTEM_CLUCENE)
9039 AC_SUBST(CLUCENE_CFLAGS)
9040 AC_SUBST(CLUCENE_LIBS)
9042 dnl ===================================================================
9043 dnl Check for system expat
9044 dnl ===================================================================
9045 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9047 dnl ===================================================================
9048 dnl Check for system xmlsec
9049 dnl ===================================================================
9050 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9052 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9053 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9055 AC_DEFINE([ENABLE_EOT])
9056 AC_MSG_RESULT([yes])
9058 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9063 AC_SUBST([ENABLE_EOT])
9065 dnl ===================================================================
9066 dnl Check for DLP libs
9067 dnl ===================================================================
9068 AS_IF([test "$COM" = "MSC"],
9069 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9070 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9072 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9074 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9076 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9078 AS_IF([test "$COM" = "MSC"],
9079 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9080 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9082 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9084 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9086 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9087 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9089 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9091 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9093 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9095 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9096 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.17])
9098 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9099 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
9101 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9103 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9104 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9106 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9108 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9110 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9112 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9114 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9115 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9117 dnl ===================================================================
9118 dnl Check for system lcms2
9119 dnl ===================================================================
9120 if test "$with_system_lcms2" != "yes"; then
9123 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9124 if test "$GCC" = "yes"; then
9125 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9127 if test "$COM" = "MSC"; then # override the above
9128 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9131 dnl ===================================================================
9132 dnl Check for system cppunit
9133 dnl ===================================================================
9134 if test "$_os" != "Android" ; then
9135 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9138 dnl ===================================================================
9139 dnl Check whether freetype is available
9140 dnl ===================================================================
9141 if test "$test_freetype" = "yes"; then
9142 AC_MSG_CHECKING([whether freetype is available])
9143 # FreeType has 3 different kinds of versions
9144 # * release, like 2.4.10
9145 # * libtool, like 13.0.7 (this what pkg-config returns)
9147 # FreeType's docs/VERSION.DLL provides a table mapping between the three
9150 PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9151 FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9152 FilterLibs "${FREETYPE_LIBS}"
9153 FREETYPE_LIBS="${filteredlibs}"
9154 SYSTEM_FREETYPE=TRUE
9156 FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9157 if test "x$ac_config_site_64bit_host" = xYES; then
9158 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9160 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9163 AC_SUBST(FREETYPE_CFLAGS)
9164 AC_SUBST(FREETYPE_LIBS)
9165 AC_SUBST([SYSTEM_FREETYPE])
9167 # ===================================================================
9168 # Check for system libxslt
9169 # to prevent incompatibilities between internal libxml2 and external libxslt,
9170 # or vice versa, use with_system_libxml here
9171 # ===================================================================
9172 if test "$with_system_libxml" = "auto"; then
9175 with_system_libxml="$with_system_libs"
9178 if test "$enable_fuzzers" != "yes"; then
9179 with_system_libxml=yes
9181 with_system_libxml=no
9187 AC_MSG_CHECKING([which libxslt to use])
9188 if test "$with_system_libxml" = "yes"; then
9189 AC_MSG_RESULT([external])
9191 if test "$_os" = "Darwin"; then
9192 dnl make sure to use SDK path
9193 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9194 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9196 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9197 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9199 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9200 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9201 FilterLibs "${LIBXSLT_LIBS}"
9202 LIBXSLT_LIBS="${filteredlibs}"
9203 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9204 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9205 FilterLibs "${LIBEXSLT_LIBS}"
9206 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9209 dnl Check for xsltproc
9210 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9211 if test "$XSLTPROC" = "no"; then
9212 AC_MSG_ERROR([xsltproc is required])
9215 AC_MSG_RESULT([internal])
9217 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9219 AC_SUBST(SYSTEM_LIBXSLT)
9220 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9221 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9223 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9225 AC_SUBST(LIBEXSLT_CFLAGS)
9226 AC_SUBST(LIBEXSLT_LIBS)
9227 AC_SUBST(LIBXSLT_CFLAGS)
9228 AC_SUBST(LIBXSLT_LIBS)
9231 # ===================================================================
9232 # Check for system libxml
9233 # ===================================================================
9234 AC_MSG_CHECKING([which libxml to use])
9235 if test "$with_system_libxml" = "yes"; then
9236 AC_MSG_RESULT([external])
9238 if test "$_os" = "Darwin"; then
9239 dnl make sure to use SDK path
9240 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9242 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9243 elif test $_os = iOS; then
9244 dnl make sure to use SDK path
9245 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9246 LIBXML_CFLAGS="-I$usr/include/libxml2"
9247 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9249 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9250 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9251 FilterLibs "${LIBXML_LIBS}"
9252 LIBXML_LIBS="${filteredlibs}"
9255 dnl Check for xmllint
9256 AC_PATH_PROG(XMLLINT, xmllint, no)
9257 if test "$XMLLINT" = "no"; then
9258 AC_MSG_ERROR([xmllint is required])
9261 AC_MSG_RESULT([internal])
9263 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9264 if test "$COM" = "MSC"; then
9265 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9267 if test "$COM" = "MSC"; then
9268 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9270 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9271 if test "$_os" = Android; then
9272 LIBXML_LIBS="$LIBXML_LIBS -lm"
9275 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9277 AC_SUBST(SYSTEM_LIBXML)
9278 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9279 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9281 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9282 AC_SUBST(LIBXML_CFLAGS)
9283 AC_SUBST(LIBXML_LIBS)
9286 # =====================================================================
9287 # Checking for a Python interpreter with version >= 3.3.
9288 # Optionally user can pass an option to configure, i. e.
9289 # ./configure PYTHON=/usr/bin/python
9290 # =====================================================================
9291 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal; then
9292 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9293 enable_python=internal
9295 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9296 if test -n "$PYTHON"; then
9297 PYTHON_FOR_BUILD=$PYTHON
9299 # This allows a lack of system python with no error, we use internal one in that case.
9300 AM_PATH_PYTHON([3.3],, [:])
9301 # Clean PYTHON_VERSION checked below if cross-compiling
9303 if test "$PYTHON" != ":"; then
9304 PYTHON_FOR_BUILD=$PYTHON
9308 AC_SUBST(PYTHON_FOR_BUILD)
9310 # Checks for Python to use for Pyuno
9311 AC_MSG_CHECKING([which Python to use for Pyuno])
9312 case "$enable_python" in
9314 if test -z $PYTHON_FOR_BUILD; then
9315 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9316 # requirement from the choice whether to include Python stuff in the installer, but why
9318 AC_MSG_ERROR([Python is required at build time.])
9321 AC_MSG_RESULT([none])
9324 if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9325 AC_MSG_RESULT([no, overridden by --disable-scripting])
9327 elif test $build_os = cygwin; then
9328 dnl When building on Windows we don't attempt to use any installed
9329 dnl "system" Python.
9330 AC_MSG_RESULT([fully internal])
9331 enable_python=internal
9332 elif test "$cross_compiling" = yes; then
9333 AC_MSG_RESULT([system])
9334 enable_python=system
9336 # Unset variables set by the above AM_PATH_PYTHON so that
9337 # we actually do check anew.
9339 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
9340 AM_PATH_PYTHON([3.3],, [:])
9341 AC_MSG_CHECKING([which Python to use for Pyuno])
9342 if test "$PYTHON" = ":"; then
9343 if test -z "$PYTHON_FOR_BUILD"; then
9344 AC_MSG_RESULT([fully internal])
9346 AC_MSG_RESULT([internal])
9348 enable_python=internal
9350 AC_MSG_RESULT([system])
9351 enable_python=system
9356 AC_MSG_RESULT([internal])
9359 AC_MSG_RESULT([fully internal])
9360 enable_python=internal
9363 AC_MSG_RESULT([system])
9364 if test "$_os" = Darwin; then
9365 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9369 AC_MSG_ERROR([Incorrect --enable-python option])
9373 if test $enable_python != no; then
9374 BUILD_TYPE="$BUILD_TYPE PYUNO"
9377 if test $enable_python = system; then
9378 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9379 # Fallback: Accept these in the environment, or as set above
9382 elif test "$cross_compiling" != yes; then
9383 # Unset variables set by the above AM_PATH_PYTHON so that
9384 # we actually do check anew.
9385 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
9386 # This causes an error if no python command is found
9387 AM_PATH_PYTHON([3.3])
9388 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9389 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9390 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9391 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9392 if test -z "$PKG_CONFIG"; then
9393 PYTHON_CFLAGS="-I$python_include"
9394 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9395 elif $PKG_CONFIG --exists python-$python_version-embed; then
9396 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9397 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9398 elif $PKG_CONFIG --exists python-$python_version; then
9399 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9400 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9402 PYTHON_CFLAGS="-I$python_include"
9403 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9405 FilterLibs "${PYTHON_LIBS}"
9406 PYTHON_LIBS="${filteredlibs}"
9408 dnl How to find out the cross-compilation Python installation path?
9409 AC_MSG_CHECKING([for python version])
9410 AS_IF([test -n "$PYTHON_VERSION"],
9411 [AC_MSG_RESULT([$PYTHON_VERSION])],
9412 [AC_MSG_RESULT([not found])
9413 AC_MSG_ERROR([no usable python found])])
9414 test -n "$PYTHON_CFLAGS" && break
9417 dnl Check if the headers really work
9418 save_CPPFLAGS="$CPPFLAGS"
9419 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9420 AC_CHECK_HEADER(Python.h)
9421 CPPFLAGS="$save_CPPFLAGS"
9423 # let the PYTHON_FOR_BUILD match the same python installation that
9424 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9425 # better for PythonTests.
9426 PYTHON_FOR_BUILD=$PYTHON
9429 if test "$with_lxml" != no; then
9430 if test -z "$PYTHON_FOR_BUILD"; then
9433 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9436 if test "$cross_compiling" != yes ; then
9437 BUILD_TYPE="$BUILD_TYPE LXML"
9442 AC_MSG_CHECKING([for python lxml])
9443 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9444 AC_MSG_RESULT([yes])
9448 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9451 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9452 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9453 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9455 BUILD_TYPE="$BUILD_TYPE LXML"
9456 AC_MSG_RESULT([no, using internal lxml])
9459 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9467 dnl By now enable_python should be "system", "internal" or "no"
9468 case $enable_python in
9472 if test "x$ac_cv_header_Python_h" != "xyes"; then
9473 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9477 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9478 AC_MSG_CHECKING([for correct python library version])
9479 AC_RUN_IFELSE([AC_LANG_SOURCE([[
9482 int main(int argc, char **argv) {
9483 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9486 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9489 dnl FIXME Check if the Python library can be linked with, too?
9494 PYTHON_VERSION_MAJOR=3
9495 PYTHON_VERSION_MINOR=8
9496 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.4
9497 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9498 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9500 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9501 BUILD_TYPE="$BUILD_TYPE PYTHON"
9502 if test "$OS" = LINUX -o "$OS" = WNT ; then
9503 BUILD_TYPE="$BUILD_TYPE LIBFFI"
9505 # Embedded Python dies without Home set
9506 if test "$HOME" = ""; then
9515 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9519 AC_SUBST(DISABLE_PYTHON)
9520 AC_SUBST(SYSTEM_PYTHON)
9521 AC_SUBST(PYTHON_CFLAGS)
9522 AC_SUBST(PYTHON_LIBS)
9523 AC_SUBST(PYTHON_VERSION)
9524 AC_SUBST(PYTHON_VERSION_MAJOR)
9525 AC_SUBST(PYTHON_VERSION_MINOR)
9531 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9532 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9533 ENABLE_MARIADBC=TRUE
9534 AC_MSG_RESULT([yes])
9535 BUILD_TYPE="$BUILD_TYPE MARIADBC"
9539 AC_SUBST(ENABLE_MARIADBC)
9540 AC_SUBST(MARIADBC_MAJOR)
9541 AC_SUBST(MARIADBC_MINOR)
9542 AC_SUBST(MARIADBC_MICRO)
9544 if test "$ENABLE_MARIADBC" = "TRUE"; then
9545 dnl ===================================================================
9546 dnl Check for system MariaDB
9547 dnl ===================================================================
9548 AC_MSG_CHECKING([which MariaDB to use])
9549 if test "$with_system_mariadb" = "yes"; then
9550 AC_MSG_RESULT([external])
9551 SYSTEM_MARIADB_CONNECTOR_C=TRUE
9552 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9553 if test -z "$MARIADBCONFIG"; then
9554 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9555 if test -z "$MARIADBCONFIG"; then
9556 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9557 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9560 AC_MSG_CHECKING([MariaDB version])
9561 MARIADB_VERSION=`$MARIADBCONFIG --version`
9562 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9563 if test "$MARIADB_MAJOR" -ge "5"; then
9566 AC_MSG_ERROR([too old, use 5.0.x or later])
9568 AC_MSG_CHECKING([for MariaDB Client library])
9569 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9570 if test "$COM_IS_CLANG" = TRUE; then
9571 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9573 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9574 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9575 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9577 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9578 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9579 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9580 | sed -e 's|/lib64/|/lib/|')
9582 FilterLibs "${MARIADB_LIBS}"
9583 MARIADB_LIBS="${filteredlibs}"
9584 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9585 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9586 if test "$enable_bundle_mariadb" = "yes"; then
9587 AC_MSG_RESULT([yes])
9588 BUNDLE_MARIADB_CONNECTOR_C=TRUE
9589 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9591 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9593 /g' | grep -E '(mysqlclient|mariadb)')
9594 if test "$_os" = "Darwin"; then
9595 LIBMARIADB=${LIBMARIADB}.dylib
9596 elif test "$_os" = "WINNT"; then
9597 LIBMARIADB=${LIBMARIADB}.dll
9599 LIBMARIADB=${LIBMARIADB}.so
9601 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9602 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9603 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9604 AC_MSG_RESULT([found.])
9605 PathFormat "$LIBMARIADB_PATH"
9606 LIBMARIADB_PATH="$formatted_path"
9608 AC_MSG_ERROR([not found.])
9612 BUNDLE_MARIADB_CONNECTOR_C=
9615 AC_MSG_RESULT([internal])
9616 SYSTEM_MARIADB_CONNECTOR_C=
9617 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9618 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9619 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9622 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9623 AC_SUBST(MARIADB_CFLAGS)
9624 AC_SUBST(MARIADB_LIBS)
9625 AC_SUBST(LIBMARIADB)
9626 AC_SUBST(LIBMARIADB_PATH)
9627 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9630 dnl ===================================================================
9631 dnl Check for system hsqldb
9632 dnl ===================================================================
9633 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9634 HSQLDB_USE_JDBC_4_1=
9635 AC_MSG_CHECKING([which hsqldb to use])
9636 if test "$with_system_hsqldb" = "yes"; then
9637 AC_MSG_RESULT([external])
9639 if test -z $HSQLDB_JAR; then
9640 HSQLDB_JAR=/usr/share/java/hsqldb.jar
9642 if ! test -f $HSQLDB_JAR; then
9643 AC_MSG_ERROR(hsqldb.jar not found.)
9645 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9649 my $file = "$ENV{'HSQLDB_JAR'}";
9650 my $zip = Archive::Zip->new( $file );
9651 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9652 if ( $mf =~ m/Specification-Version: 1.8.*/ )
9654 push @l, split(/\n/, $mf);
9655 foreach my $line (@l)
9657 if ($line =~ m/Specification-Version:/)
9659 ($t, $version) = split (/:/,$line);
9660 $version =~ s/^\s//;
9661 ($a, $b, $c, $d) = split (/\./,$version);
9662 if ($c == "0" && $d > "8")
9677 AC_MSG_RESULT([yes])
9679 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9682 AC_MSG_RESULT([internal])
9684 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9686 AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9687 javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9688 if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9689 AC_MSG_RESULT([yes])
9690 HSQLDB_USE_JDBC_4_1=TRUE
9696 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9697 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9700 AC_SUBST(SYSTEM_HSQLDB)
9701 AC_SUBST(HSQLDB_JAR)
9702 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9704 dnl ===================================================================
9705 dnl Check for PostgreSQL stuff
9706 dnl ===================================================================
9707 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9708 if test "x$enable_postgresql_sdbc" != "xno"; then
9709 AC_MSG_RESULT([yes])
9710 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9712 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9713 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9715 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9716 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9719 postgres_interface=""
9720 if test "$with_system_postgresql" = "yes"; then
9721 postgres_interface="external PostgreSQL"
9722 SYSTEM_POSTGRESQL=TRUE
9723 if test "$_os" = Darwin; then
9725 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9726 pg_supp_path="$P_SEP$d$pg_supp_path"
9729 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9730 if test -n "$PGCONFIG"; then
9731 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9732 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9734 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9735 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9736 POSTGRESQL_LIB=$POSTGRESQL_LIBS
9738 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9741 FilterLibs "${POSTGRESQL_LIB}"
9742 POSTGRESQL_LIB="${filteredlibs}"
9744 # if/when anything else than PostgreSQL uses Kerberos,
9745 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9750 # macOS has system MIT Kerberos 5 since 10.4
9751 if test "$with_krb5" != "no"; then
9754 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9755 # that the libraries where these functions are located on macOS will change, is it?
9756 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9757 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9760 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9761 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9762 KRB5_LIBS="$KRB5_LIBS $LIBS"
9765 if test "$with_gssapi" != "no"; then
9768 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9769 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9775 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9776 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9779 Linux|GNU|*BSD|DragonFly)
9780 if test "$with_krb5" != "no"; then
9783 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9784 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9787 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9788 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9789 KRB5_LIBS="$KRB5_LIBS $LIBS"
9792 if test "$with_gssapi" != "no"; then
9795 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9796 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9802 if test "$with_krb5" = "yes"; then
9805 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9806 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9809 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9810 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9811 KRB5_LIBS="$KRB5_LIBS $LIBS"
9814 if test "$with_gssapi" = "yes"; then
9817 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9818 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9824 if test -n "$with_libpq_path"; then
9825 SYSTEM_POSTGRESQL=TRUE
9826 postgres_interface="external libpq"
9827 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
9828 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
9831 postgres_interface="internal"
9833 POSTGRESQL_INC="%OVERRIDE_ME%"
9834 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
9838 AC_MSG_CHECKING([PostgreSQL C interface])
9839 AC_MSG_RESULT([$postgres_interface])
9841 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
9842 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
9844 save_CPPFLAGS=$CPPFLAGS
9846 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
9847 LIBS="${LIBS} ${POSTGRESQL_LIB}"
9848 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
9849 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
9850 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
9852 CPPFLAGS=$save_CPPFLAGS
9855 BUILD_POSTGRESQL_SDBC=TRUE
9860 AC_SUBST(WITH_GSSAPI)
9861 AC_SUBST(GSSAPI_LIBS)
9863 AC_SUBST(BUILD_POSTGRESQL_SDBC)
9864 AC_SUBST(SYSTEM_POSTGRESQL)
9865 AC_SUBST(POSTGRESQL_INC)
9866 AC_SUBST(POSTGRESQL_LIB)
9868 dnl ===================================================================
9869 dnl Check for Firebird stuff
9870 dnl ===================================================================
9871 ENABLE_FIREBIRD_SDBC=
9872 if test "$enable_firebird_sdbc" = "yes" ; then
9873 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
9875 dnl ===================================================================
9876 dnl Check for system Firebird
9877 dnl ===================================================================
9878 AC_MSG_CHECKING([which Firebird to use])
9879 if test "$with_system_firebird" = "yes"; then
9880 AC_MSG_RESULT([external])
9881 SYSTEM_FIREBIRD=TRUE
9882 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
9883 if test -z "$FIREBIRDCONFIG"; then
9884 AC_MSG_NOTICE([No fb_config -- using pkg-config])
9885 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
9886 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
9888 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
9890 AC_MSG_NOTICE([fb_config found])
9891 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
9892 AC_MSG_CHECKING([for Firebird Client library])
9893 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
9894 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
9895 FilterLibs "${FIREBIRD_LIBS}"
9896 FIREBIRD_LIBS="${filteredlibs}"
9898 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
9899 AC_MSG_CHECKING([Firebird version])
9900 if test -n "${FIREBIRD_VERSION}"; then
9901 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
9902 FIREBIRD_MINOR=`echo $FIREBIRD_VERSION | cut -d"." -f2`
9903 if test "$FIREBIRD_MAJOR" -eq "3" -a "$FIREBIRD_MINOR" -eq "0"; then
9906 AC_MSG_ERROR([Ensure firebird 3.0.x is installed])
9909 save_CFLAGS="${CFLAGS}"
9910 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
9911 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
9912 #if defined(FB_API_VER) && FB_API_VER == 30
9913 int fb_api_is_30(void) { return 0; }
9915 #error "Wrong Firebird API version"
9916 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
9917 CFLAGS="$save_CFLAGS"
9919 ENABLE_FIREBIRD_SDBC=TRUE
9920 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9921 elif test "$enable_database_connectivity" != yes; then
9922 AC_MSG_RESULT([none])
9923 elif test "$cross_compiling" = "yes"; then
9924 AC_MSG_RESULT([none])
9926 dnl Embedded Firebird has version 3.0
9927 AC_DEFINE(HAVE_FIREBIRD_30, 1)
9928 dnl We need libatomic_ops for any non X86/X64 system
9929 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
9930 dnl ===================================================================
9931 dnl Check for system libatomic_ops
9932 dnl ===================================================================
9933 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
9934 if test "$with_system_libatomic_ops" = "yes"; then
9935 SYSTEM_LIBATOMIC_OPS=TRUE
9936 AC_CHECK_HEADERS(atomic_ops.h, [],
9937 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
9939 SYSTEM_LIBATOMIC_OPS=
9940 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
9941 LIBATOMIC_OPS_LIBS="-latomic_ops"
9942 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
9946 AC_MSG_RESULT([internal])
9948 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
9949 FIREBIRD_LIBS="-lfbclient"
9951 if test "$with_system_libtommath" = "yes"; then
9952 SYSTEM_LIBTOMMATH=TRUE
9953 dnl check for tommath presence
9955 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
9956 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
9960 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
9961 LIBTOMMATH_LIBS="-ltommath"
9962 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
9965 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
9966 ENABLE_FIREBIRD_SDBC=TRUE
9967 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9970 AC_SUBST(ENABLE_FIREBIRD_SDBC)
9971 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
9972 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
9973 AC_SUBST(LIBATOMIC_OPS_LIBS)
9974 AC_SUBST(SYSTEM_FIREBIRD)
9975 AC_SUBST(FIREBIRD_CFLAGS)
9976 AC_SUBST(FIREBIRD_LIBS)
9977 AC_SUBST(SYSTEM_LIBTOMMATH)
9978 AC_SUBST(LIBTOMMATH_CFLAGS)
9979 AC_SUBST(LIBTOMMATH_LIBS)
9981 dnl ===================================================================
9982 dnl Check for system curl
9983 dnl ===================================================================
9984 AC_MSG_CHECKING([which libcurl to use])
9985 if test "$with_system_curl" = "auto"; then
9986 with_system_curl="$with_system_libs"
9989 if test "$with_system_curl" = "yes"; then
9990 AC_MSG_RESULT([external])
9993 # First try PKGCONFIG and then fall back
9994 PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
9996 if test -n "$CURL_PKG_ERRORS"; then
9997 AC_PATH_PROG(CURLCONFIG, curl-config)
9998 if test -z "$CURLCONFIG"; then
9999 AC_MSG_ERROR([curl development files not found])
10001 CURL_LIBS=`$CURLCONFIG --libs`
10002 FilterLibs "${CURL_LIBS}"
10003 CURL_LIBS="${filteredlibs}"
10004 CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
10005 curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
10007 AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
10008 case $curl_version in
10009 dnl brackets doubled below because Autoconf uses them as m4 quote characters,
10010 dnl so they need to be doubled to end up in the configure script
10011 7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
10012 AC_MSG_RESULT([yes])
10015 AC_MSG_ERROR([no, you have $curl_version])
10022 AC_MSG_RESULT([internal])
10024 BUILD_TYPE="$BUILD_TYPE CURL"
10027 AC_SUBST(SYSTEM_CURL)
10028 AC_SUBST(CURL_CFLAGS)
10029 AC_SUBST(CURL_LIBS)
10030 AC_SUBST(ENABLE_CURL)
10032 dnl ===================================================================
10033 dnl Check for system boost
10034 dnl ===================================================================
10035 AC_MSG_CHECKING([which boost to use])
10036 if test "$with_system_boost" = "yes"; then
10037 AC_MSG_RESULT([external])
10039 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10041 AX_BOOST_FILESYSTEM
10044 AC_LANG_PUSH([C++])
10045 save_CXXFLAGS=$CXXFLAGS
10046 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10047 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10048 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10049 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10050 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10051 CXXFLAGS=$save_CXXFLAGS
10053 # this is in m4/ax_boost_base.m4
10054 FilterLibs "${BOOST_LDFLAGS}"
10055 BOOST_LDFLAGS="${filteredlibs}"
10057 AC_MSG_RESULT([internal])
10058 BUILD_TYPE="$BUILD_TYPE BOOST"
10060 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10061 # use warning-suppressing wrapper headers
10062 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10064 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10067 AC_SUBST(SYSTEM_BOOST)
10069 dnl ===================================================================
10070 dnl Check for system mdds
10071 dnl ===================================================================
10072 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10074 dnl ===================================================================
10075 dnl Check for system glm
10076 dnl ===================================================================
10077 AC_MSG_CHECKING([which glm to use])
10078 if test "$with_system_glm" = "yes"; then
10079 AC_MSG_RESULT([external])
10081 AC_LANG_PUSH([C++])
10082 AC_CHECK_HEADER([glm/glm.hpp], [],
10083 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10086 AC_MSG_RESULT([internal])
10087 BUILD_TYPE="$BUILD_TYPE GLM"
10089 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10091 AC_SUBST([GLM_CFLAGS])
10092 AC_SUBST([SYSTEM_GLM])
10094 dnl ===================================================================
10095 dnl Check for system odbc
10096 dnl ===================================================================
10097 AC_MSG_CHECKING([which odbc headers to use])
10098 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
10099 AC_MSG_RESULT([external])
10100 SYSTEM_ODBC_HEADERS=TRUE
10102 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10103 save_CPPFLAGS=$CPPFLAGS
10105 PathFormat "$winsdktest"
10106 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"
10107 AC_CHECK_HEADER(sqlext.h, [],
10108 [AC_MSG_ERROR(odbc not found. install odbc)],
10109 [#include <windows.h>])
10110 CPPFLAGS=$save_CPPFLAGS
10112 AC_CHECK_HEADER(sqlext.h, [],
10113 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10115 elif test "$enable_database_connectivity" != yes; then
10116 AC_MSG_RESULT([none])
10118 AC_MSG_RESULT([internal])
10119 SYSTEM_ODBC_HEADERS=
10121 AC_SUBST(SYSTEM_ODBC_HEADERS)
10123 dnl ===================================================================
10124 dnl Enable LDAP support
10125 dnl ===================================================================
10127 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then
10128 AC_MSG_CHECKING([whether to enable LDAP support])
10129 if test "$enable_ldap" != "yes"; then
10130 AC_MSG_RESULT([no])
10134 AC_MSG_RESULT([yes])
10138 AC_SUBST(ENABLE_LDAP)
10140 dnl ===================================================================
10141 dnl Check for system openldap
10142 dnl ===================================================================
10144 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then
10145 AC_MSG_CHECKING([which openldap library to use])
10146 if test "$with_system_openldap" = "yes"; then
10147 AC_MSG_RESULT([external])
10148 SYSTEM_OPENLDAP=TRUE
10149 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10150 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10151 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10153 AC_MSG_RESULT([internal])
10155 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10158 AC_SUBST(SYSTEM_OPENLDAP)
10160 dnl ===================================================================
10161 dnl Check for system NSS
10162 dnl ===================================================================
10163 if test "$enable_fuzzers" != "yes"; then
10164 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10165 AC_DEFINE(HAVE_FEATURE_NSS)
10167 AC_DEFINE(ENABLE_NSS)
10168 elif test $_os != iOS ; then
10171 AC_SUBST(ENABLE_NSS)
10173 dnl ===================================================================
10174 dnl Check for TLS/SSL and cryptographic implementation to use
10175 dnl ===================================================================
10176 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10177 if test -n "$with_tls"; then
10180 AC_DEFINE(USE_TLS_OPENSSL)
10182 AC_MSG_RESULT([$TLS])
10184 if test "$enable_openssl" != "yes"; then
10185 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10188 # warn that OpenSSL has been selected but not all TLS code has this option
10189 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10190 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10193 AC_DEFINE(USE_TLS_NSS)
10195 AC_MSG_RESULT([$TLS])
10198 AC_MSG_RESULT([none])
10199 AC_MSG_WARN([Skipping TLS/SSL])
10203 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10205 nss - Mozilla's Network Security Services (NSS)
10210 # default to using NSS, it results in smaller oox lib
10211 AC_DEFINE(USE_TLS_NSS)
10213 AC_MSG_RESULT([$TLS])
10217 dnl ===================================================================
10218 dnl Check for system sane
10219 dnl ===================================================================
10220 AC_MSG_CHECKING([which sane header to use])
10221 if test "$with_system_sane" = "yes"; then
10222 AC_MSG_RESULT([external])
10223 AC_CHECK_HEADER(sane/sane.h, [],
10224 [AC_MSG_ERROR(sane not found. install sane)], [])
10226 AC_MSG_RESULT([internal])
10227 BUILD_TYPE="$BUILD_TYPE SANE"
10230 dnl ===================================================================
10231 dnl Check for system icu
10232 dnl ===================================================================
10239 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10240 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10241 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10242 AC_MSG_CHECKING([which icu to use])
10243 if test "$with_system_icu" = "yes"; then
10244 AC_MSG_RESULT([external])
10246 AC_LANG_PUSH([C++])
10247 AC_MSG_CHECKING([for unicode/rbbi.h])
10248 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10251 if test "$cross_compiling" != "yes"; then
10252 PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10253 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10254 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10255 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10258 if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10259 ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10260 ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10261 ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10262 AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10263 if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10264 AC_MSG_RESULT([yes])
10266 AC_MSG_RESULT([no])
10267 if test "$with_system_icu_for_build" != "force"; then
10268 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10269 You can use --with-system-icu-for-build=force to use it anyway.])
10274 if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10275 # using the system icu tools can lead to version confusion, use the
10276 # ones from the build environment when cross-compiling
10277 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10278 if test -z "$SYSTEM_GENBRK"; then
10279 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10281 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10282 if test -z "$SYSTEM_GENCCODE"; then
10283 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10285 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10286 if test -z "$SYSTEM_GENCMN"; then
10287 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10289 if test "$ICU_MAJOR" -ge "49"; then
10290 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10291 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10292 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10294 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10295 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10296 ICU_RECLASSIFIED_HEBREW_LETTER=
10300 if test "$cross_compiling" = "yes"; then
10301 if test "$ICU_MAJOR" -ge "50"; then
10302 AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10307 AC_MSG_RESULT([internal])
10309 BUILD_TYPE="$BUILD_TYPE ICU"
10310 # surprisingly set these only for "internal" (to be used by various other
10311 # external libs): the system icu-config is quite unhelpful and spits out
10312 # dozens of weird flags and also default path -I/usr/include
10313 ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10314 ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10316 if test "$ICU_MAJOR" -ge "59"; then
10317 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10318 # with -std=c++11 but not all external libraries can be built with that,
10319 # for those use a bit-compatible typedef uint16_t UChar; see
10320 # icu/source/common/unicode/umachine.h
10321 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10325 AC_SUBST(SYSTEM_ICU)
10326 AC_SUBST(SYSTEM_GENBRK)
10327 AC_SUBST(SYSTEM_GENCCODE)
10328 AC_SUBST(SYSTEM_GENCMN)
10329 AC_SUBST(ICU_MAJOR)
10330 AC_SUBST(ICU_MINOR)
10331 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10332 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10333 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10334 AC_SUBST(ICU_CFLAGS)
10336 AC_SUBST(ICU_UCHAR_TYPE)
10338 dnl ==================================================================
10340 dnl ==================================================================
10341 DEFAULT_CRASHDUMP_VALUE="true"
10342 AC_MSG_CHECKING([whether to enable breakpad])
10343 if test "$enable_breakpad" != yes; then
10344 AC_MSG_RESULT([no])
10346 AC_MSG_RESULT([yes])
10347 ENABLE_BREAKPAD="TRUE"
10348 AC_DEFINE(ENABLE_BREAKPAD)
10349 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10350 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10352 AC_MSG_CHECKING([for disable crash dump])
10353 if test "$enable_crashdump" = no; then
10354 DEFAULT_CRASHDUMP_VALUE="false"
10355 AC_MSG_RESULT([yes])
10357 AC_MSG_RESULT([no])
10360 AC_MSG_CHECKING([for crashreport config])
10361 if test "$with_symbol_config" = "no"; then
10362 BREAKPAD_SYMBOL_CONFIG="invalid"
10363 AC_MSG_RESULT([no])
10365 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10366 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10367 AC_MSG_RESULT([yes])
10369 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10371 AC_SUBST(ENABLE_BREAKPAD)
10372 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10374 dnl ==================================================================
10376 dnl ==================================================================
10377 AC_MSG_CHECKING([whether to enable fuzzers])
10378 if test "$enable_fuzzers" != yes; then
10379 AC_MSG_RESULT([no])
10381 AC_MSG_RESULT([yes])
10382 ENABLE_FUZZERS="TRUE"
10383 AC_DEFINE([ENABLE_FUZZERS],1)
10384 BUILD_TYPE="$BUILD_TYPE FUZZERS"
10386 AC_SUBST(ENABLE_FUZZERS)
10388 dnl ===================================================================
10390 dnl ===================================================================
10391 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
10392 if test "$with_system_orcus" != "yes"; then
10393 if test "$SYSTEM_BOOST" = "TRUE"; then
10394 # ===========================================================
10395 # Determine if we are going to need to link with Boost.System
10396 # ===========================================================
10397 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10398 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10399 dnl in documentation has no effect.
10400 AC_MSG_CHECKING([if we need to link with Boost.System])
10401 AC_LANG_PUSH([C++])
10402 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
10403 @%:@include <boost/version.hpp>
10405 #if BOOST_VERSION >= 105000
10406 # error yes, we need to link with Boost.System
10409 AC_MSG_RESULT([no])
10411 AC_MSG_RESULT([yes])
10417 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10418 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10419 AC_SUBST([BOOST_SYSTEM_LIB])
10420 AC_SUBST(SYSTEM_LIBORCUS)
10422 dnl ===================================================================
10424 dnl ===================================================================
10425 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10426 ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10427 ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10429 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10430 ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10431 ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10433 if test "$COM" = "MSC"; then # override the above
10434 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10435 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10438 if test "$with_system_harfbuzz" = "yes"; then
10439 if test "$with_system_graphite" = "no"; then
10440 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10442 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10444 save_CFLAGS="$CFLAGS"
10445 LIBS="$LIBS $HARFBUZZ_LIBS"
10446 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10447 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10449 CFLAGS="$save_CFLAGS"
10451 if test "$with_system_graphite" = "yes"; then
10452 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10456 AC_MSG_CHECKING([whether to use X11])
10457 dnl ***************************************
10458 dnl testing for X libraries and includes...
10459 dnl ***************************************
10460 if test "$USING_X11" = TRUE; then
10461 AC_DEFINE(HAVE_FEATURE_X11)
10463 AC_MSG_RESULT([$USING_X11])
10465 if test "$USING_X11" = TRUE; then
10468 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10470 if test -z "$x_includes"; then
10471 x_includes="default_x_includes"
10473 if test -z "$x_libraries"; then
10474 x_libraries="default_x_libraries"
10476 CFLAGS="$CFLAGS $X_CFLAGS"
10477 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10478 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10480 x_includes="no_x_includes"
10481 x_libraries="no_x_libraries"
10484 if test "$USING_X11" = TRUE; then
10485 dnl ===================================================================
10486 dnl Check for extension headers
10487 dnl ===================================================================
10488 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10489 [#include <X11/extensions/shape.h>])
10491 # vcl needs ICE and SM
10492 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10493 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10494 [AC_MSG_ERROR(ICE library not found)])
10495 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10496 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10497 [AC_MSG_ERROR(SM library not found)])
10500 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10501 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10502 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10505 dnl ===================================================================
10506 dnl Check for system Xrender
10507 dnl ===================================================================
10508 AC_MSG_CHECKING([whether to use Xrender])
10509 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10510 AC_MSG_RESULT([yes])
10511 PKG_CHECK_MODULES(XRENDER, xrender)
10512 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10513 FilterLibs "${XRENDER_LIBS}"
10514 XRENDER_LIBS="${filteredlibs}"
10515 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10516 [AC_MSG_ERROR(libXrender not found or functional)], [])
10517 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10518 [AC_MSG_ERROR(Xrender not found. install X)], [])
10520 AC_MSG_RESULT([no])
10522 AC_SUBST(XRENDER_CFLAGS)
10523 AC_SUBST(XRENDER_LIBS)
10525 dnl ===================================================================
10526 dnl Check for XRandr
10527 dnl ===================================================================
10528 AC_MSG_CHECKING([whether to enable RandR support])
10529 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10530 AC_MSG_RESULT([yes])
10531 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10532 if test "$ENABLE_RANDR" != "TRUE"; then
10533 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10534 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10536 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10537 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10538 XRANDR_LIBS="-lXrandr "
10539 ENABLE_RANDR="TRUE"
10541 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10542 FilterLibs "${XRANDR_LIBS}"
10543 XRANDR_LIBS="${filteredlibs}"
10546 AC_MSG_RESULT([no])
10548 AC_SUBST(XRANDR_CFLAGS)
10549 AC_SUBST(XRANDR_LIBS)
10550 AC_SUBST(ENABLE_RANDR)
10552 if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
10553 if test -z "$WITH_WEBDAV"; then
10557 if test $_os = iOS -o $_os = Android; then
10560 AC_MSG_CHECKING([for webdav library])
10561 case "$WITH_WEBDAV" in
10563 AC_MSG_RESULT([serf])
10564 # Check for system apr-util
10565 libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10566 ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10567 ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10568 if test "$COM" = "MSC"; then
10570 test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10571 APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10574 # Check for system serf
10575 libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"],
10576 ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"])
10577 if test "$COM" = "MSC"; then
10578 SERF_LIB_DIR="Release"
10579 test -n "${MSVC_USE_DEBUG_RUNTIME}" && SERF_LIB_DIR="Debug"
10580 SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/${SERF_LIB_DIR}/serf-1.lib"
10584 AC_MSG_RESULT([neon])
10585 # Check for system neon
10586 libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.1])
10587 if test "$with_system_neon" = "yes"; then
10588 NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10592 AC_SUBST(NEON_VERSION)
10595 AC_MSG_RESULT([none, disabled])
10599 AC_SUBST(WITH_WEBDAV)
10601 dnl ===================================================================
10602 dnl Check for disabling cve_tests
10603 dnl ===================================================================
10604 AC_MSG_CHECKING([whether to execute CVE tests])
10605 # If not explicitly enabled or disabled, default
10606 if test -z "$enable_cve_tests"; then
10609 # Default cves off for Windows with its wild and wonderful
10610 # variety of AV software kicking in and panicking
10611 enable_cve_tests=no
10615 enable_cve_tests=yes
10619 if test "$enable_cve_tests" = "no"; then
10620 AC_MSG_RESULT([no])
10621 DISABLE_CVE_TESTS=TRUE
10622 AC_SUBST(DISABLE_CVE_TESTS)
10624 AC_MSG_RESULT([yes])
10627 dnl ===================================================================
10628 dnl Check for enabling chart XShape tests
10629 dnl ===================================================================
10630 AC_MSG_CHECKING([whether to execute chart XShape tests])
10631 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10632 AC_MSG_RESULT([yes])
10633 ENABLE_CHART_TESTS=TRUE
10634 AC_SUBST(ENABLE_CHART_TESTS)
10636 AC_MSG_RESULT([no])
10639 dnl ===================================================================
10640 dnl Check for system openssl
10641 dnl ===================================================================
10643 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10644 if test "$enable_openssl" = "yes"; then
10645 AC_MSG_RESULT([no])
10646 if test "$_os" = Darwin ; then
10647 # OpenSSL is deprecated when building for 10.7 or later.
10649 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10650 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10652 with_system_openssl=no
10653 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10654 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10655 && test "$with_system_openssl" != "no"; then
10656 with_system_openssl=yes
10657 SYSTEM_OPENSSL=TRUE
10659 OPENSSL_LIBS="-lssl -lcrypto"
10661 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10663 if test "$with_system_openssl" = "yes"; then
10664 AC_MSG_CHECKING([whether openssl supports SHA512])
10666 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10667 SHA512_CTX context;
10668 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10672 AC_MSG_RESULT([yes])
10673 DISABLE_OPENSSL=TRUE
10675 # warn that although OpenSSL is disabled, system libraries may depend on it
10676 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10677 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10680 AC_SUBST([DISABLE_OPENSSL])
10682 if test "$enable_cipher_openssl_backend" = yes && test "$DISABLE_OPENSSL" = TRUE; then
10683 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10684 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10685 enable_cipher_openssl_backend=no
10687 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10690 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10691 ENABLE_CIPHER_OPENSSL_BACKEND=
10692 if test "$enable_cipher_openssl_backend" = yes; then
10693 AC_MSG_RESULT([yes])
10694 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10696 AC_MSG_RESULT([no])
10698 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10700 dnl ===================================================================
10701 dnl Check for building gnutls
10702 dnl ===================================================================
10703 AC_MSG_CHECKING([whether to use gnutls])
10704 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10705 AC_MSG_RESULT([yes])
10706 AM_PATH_LIBGCRYPT()
10707 PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10708 AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10709 available in the system to use as replacement.]]))
10710 FilterLibs "${LIBGCRYPT_LIBS}"
10711 LIBGCRYPT_LIBS="${filteredlibs}"
10713 AC_MSG_RESULT([no])
10716 AC_SUBST([LIBGCRYPT_CFLAGS])
10717 AC_SUBST([LIBGCRYPT_LIBS])
10719 dnl ===================================================================
10720 dnl Check for system redland
10721 dnl ===================================================================
10722 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10723 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10724 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10725 if test "$with_system_redland" = "yes"; then
10726 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10727 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10733 AC_SUBST(RAPTOR_MAJOR)
10734 AC_SUBST(RASQAL_MAJOR)
10735 AC_SUBST(REDLAND_MAJOR)
10737 dnl ===================================================================
10738 dnl Check for system hunspell
10739 dnl ===================================================================
10740 AC_MSG_CHECKING([which libhunspell to use])
10741 if test "$_os" = iOS; then
10742 AC_MSG_RESULT([none])
10743 elif test "$with_system_hunspell" = "yes"; then
10744 AC_MSG_RESULT([external])
10745 SYSTEM_HUNSPELL=TRUE
10746 AC_LANG_PUSH([C++])
10747 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10748 if test "$HUNSPELL_PC" != "TRUE"; then
10749 AC_CHECK_HEADER(hunspell.hxx, [],
10751 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10752 [AC_MSG_ERROR(hunspell headers not found.)], [])
10754 AC_CHECK_LIB([hunspell], [main], [:],
10755 [ AC_MSG_ERROR(hunspell library not found.) ], [])
10756 HUNSPELL_LIBS=-lhunspell
10759 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10760 FilterLibs "${HUNSPELL_LIBS}"
10761 HUNSPELL_LIBS="${filteredlibs}"
10763 AC_MSG_RESULT([internal])
10765 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10766 if test "$COM" = "MSC"; then
10767 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10769 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10771 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
10773 AC_SUBST(SYSTEM_HUNSPELL)
10774 AC_SUBST(HUNSPELL_CFLAGS)
10775 AC_SUBST(HUNSPELL_LIBS)
10777 dnl ===================================================================
10778 dnl Check for system qrcodegen
10779 dnl ===================================================================
10780 AC_MSG_CHECKING([whether to use libqrcodegen])
10781 if test "$enable_qrcodegen" = "no"; then
10782 AC_MSG_RESULT([no])
10786 AC_MSG_RESULT([yes])
10787 ENABLE_QRCODEGEN=TRUE
10788 AC_MSG_CHECKING([which libqrcodegen to use])
10789 if test "$with_system_qrcodegen" = "yes"; then
10790 AC_MSG_RESULT([external])
10791 SYSTEM_QRCODEGEN=TRUE
10792 AC_LANG_PUSH([C++])
10793 AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
10794 [AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
10795 AC_CHECK_LIB([qrcodegencpp], [main], [:],
10796 [ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
10797 QRCODEGEN_LIBS=-lqrcodegencpp
10799 QRCODEGEN_CFLAGS=$(printf '%s' "$QRCODEGEN_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10800 FilterLibs "${QRCODEGEN_LIBS}"
10801 QRCODEGEN_LIBS="${filteredlibs}"
10803 AC_MSG_RESULT([internal])
10805 BUILD_TYPE="$BUILD_TYPE QRCODEGEN"
10807 if test "$ENABLE_QRCODEGEN" = TRUE; then
10808 AC_DEFINE(ENABLE_QRCODEGEN)
10811 AC_SUBST(SYSTEM_QRCODEGEN)
10812 AC_SUBST(ENABLE_QRCODEGEN)
10813 AC_SUBST(QRCODEGEN_CFLAGS)
10814 AC_SUBST(QRCODEGEN_LIBS)
10816 dnl ===================================================================
10817 dnl Check for system box2d
10818 dnl ===================================================================
10819 AC_MSG_CHECKING([which box2d to use])
10820 if test "$with_system_box2d" = "yes"; then
10821 AC_MSG_RESULT([external])
10823 AC_LANG_PUSH([C++])
10824 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
10825 [BOX2D_H_FOUND='FALSE'])
10826 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
10828 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
10830 # fail this. there's no other alternative to check when we are here.
10831 AC_CHECK_HEADER([Box2D/Box2D.h], [],
10832 [AC_MSG_ERROR(box2d headers not found.)])
10834 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
10836 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
10837 [ AC_MSG_ERROR(box2d library not found.) ], [])
10838 BOX2D_LIBS=-l$_BOX2D_LIB
10840 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10841 FilterLibs "${BOX2D_LIBS}"
10842 BOX2D_LIBS="${filteredlibs}"
10844 AC_MSG_RESULT([internal])
10846 BUILD_TYPE="$BUILD_TYPE BOX2D"
10848 AC_SUBST(SYSTEM_BOX2D)
10849 AC_SUBST(BOX2D_CFLAGS)
10850 AC_SUBST(BOX2D_LIBS)
10852 dnl ===================================================================
10853 dnl Checking for altlinuxhyph
10854 dnl ===================================================================
10855 AC_MSG_CHECKING([which altlinuxhyph to use])
10856 if test "$with_system_altlinuxhyph" = "yes"; then
10857 AC_MSG_RESULT([external])
10859 AC_CHECK_HEADER(hyphen.h, [],
10860 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
10861 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
10862 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
10863 [#include <hyphen.h>])
10864 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
10865 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10866 if test -z "$HYPHEN_LIB"; then
10867 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
10868 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10870 if test -z "$HYPHEN_LIB"; then
10871 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
10872 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10875 AC_MSG_RESULT([internal])
10877 BUILD_TYPE="$BUILD_TYPE HYPHEN"
10878 if test "$COM" = "MSC"; then
10879 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
10881 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
10884 AC_SUBST(SYSTEM_HYPH)
10885 AC_SUBST(HYPHEN_LIB)
10887 dnl ===================================================================
10888 dnl Checking for mythes
10889 dnl ===================================================================
10890 AC_MSG_CHECKING([which mythes to use])
10891 if test "$_os" = iOS; then
10892 AC_MSG_RESULT([none])
10893 elif test "$with_system_mythes" = "yes"; then
10894 AC_MSG_RESULT([external])
10896 AC_LANG_PUSH([C++])
10897 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
10898 if test "$MYTHES_PKGCONFIG" = "no"; then
10899 AC_CHECK_HEADER(mythes.hxx, [],
10900 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
10901 AC_CHECK_LIB([mythes-1.2], [main], [:],
10902 [ MYTHES_FOUND=no], [])
10903 if test "$MYTHES_FOUND" = "no"; then
10904 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
10905 [ MYTHES_FOUND=no], [])
10907 if test "$MYTHES_FOUND" = "no"; then
10908 AC_MSG_ERROR([mythes library not found!.])
10912 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10913 FilterLibs "${MYTHES_LIBS}"
10914 MYTHES_LIBS="${filteredlibs}"
10916 AC_MSG_RESULT([internal])
10918 BUILD_TYPE="$BUILD_TYPE MYTHES"
10919 if test "$COM" = "MSC"; then
10920 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
10922 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
10925 AC_SUBST(SYSTEM_MYTHES)
10926 AC_SUBST(MYTHES_CFLAGS)
10927 AC_SUBST(MYTHES_LIBS)
10929 dnl ===================================================================
10930 dnl How should we build the linear programming solver ?
10931 dnl ===================================================================
10934 AC_MSG_CHECKING([whether to build with CoinMP])
10935 if test "$enable_coinmp" != "no"; then
10937 AC_MSG_RESULT([yes])
10938 if test "$with_system_coinmp" = "yes"; then
10940 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
10941 FilterLibs "${COINMP_LIBS}"
10942 COINMP_LIBS="${filteredlibs}"
10944 BUILD_TYPE="$BUILD_TYPE COINMP"
10947 AC_MSG_RESULT([no])
10949 AC_SUBST(ENABLE_COINMP)
10950 AC_SUBST(SYSTEM_COINMP)
10951 AC_SUBST(COINMP_CFLAGS)
10952 AC_SUBST(COINMP_LIBS)
10955 AC_MSG_CHECKING([whether to build with lpsolve])
10956 if test "$enable_lpsolve" != "no"; then
10957 ENABLE_LPSOLVE=TRUE
10958 AC_MSG_RESULT([yes])
10960 AC_MSG_RESULT([no])
10962 AC_SUBST(ENABLE_LPSOLVE)
10964 if test "$ENABLE_LPSOLVE" = TRUE; then
10965 AC_MSG_CHECKING([which lpsolve to use])
10966 if test "$with_system_lpsolve" = "yes"; then
10967 AC_MSG_RESULT([external])
10968 SYSTEM_LPSOLVE=TRUE
10969 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
10970 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
10972 # some systems need this. Like Ubuntu...
10973 AC_CHECK_LIB(m, floor)
10974 AC_CHECK_LIB(dl, dlopen)
10975 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
10976 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
10979 AC_MSG_RESULT([internal])
10981 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
10984 AC_SUBST(SYSTEM_LPSOLVE)
10986 dnl ===================================================================
10987 dnl Checking for libexttextcat
10988 dnl ===================================================================
10989 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
10990 if test "$with_system_libexttextcat" = "yes"; then
10991 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
10993 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
10995 dnl ===================================================================
10996 dnl Checking for libnumbertext
10997 dnl ===================================================================
10998 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
10999 if test "$with_system_libnumbertext" = "yes"; then
11000 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11001 SYSTEM_LIBNUMBERTEXT=YES
11003 SYSTEM_LIBNUMBERTEXT=
11004 AC_LANG_PUSH([C++])
11005 save_CPPFLAGS=$CPPFLAGS
11006 CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11007 AC_CHECK_HEADERS([codecvt regex])
11008 AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11009 [ LIBNUMBERTEXT_CFLAGS=''
11010 AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11011 Enable libnumbertext fallback (missing number to number name conversion).])
11013 CPPFLAGS=$save_CPPFLAGS
11016 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11017 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11018 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11020 dnl ***************************************
11021 dnl testing libc version for Linux...
11022 dnl ***************************************
11023 if test "$_os" = "Linux"; then
11024 AC_MSG_CHECKING([whether libc is >= 2.1.1])
11025 exec 6>/dev/null # no output
11026 AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
11027 exec 6>&1 # output on again
11028 if test "$HAVE_LIBC"; then
11029 AC_MSG_RESULT([yes])
11031 AC_MSG_ERROR([no, upgrade libc])
11035 dnl =========================================
11036 dnl Check for uuidgen
11037 dnl =========================================
11038 if test "$_os" = "WINNT"; then
11039 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11040 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11041 UUIDGEN=uuidgen.exe
11044 AC_PATH_PROG([UUIDGEN], [uuidgen])
11045 if test -z "$UUIDGEN"; then
11046 AC_MSG_WARN([uuid is needed for building installation sets])
11050 dnl ***************************************
11051 dnl Checking for bison and flex
11052 dnl ***************************************
11053 AC_PATH_PROG(BISON, bison)
11054 if test -z "$BISON"; then
11055 AC_MSG_ERROR([no bison found in \$PATH, install it])
11057 AC_MSG_CHECKING([the bison version])
11058 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11059 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11060 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11063 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]
11064 dnl typedef union YYSTYPE
11067 dnl while at least 3.4.1 is know to be good:
11068 if test "$COMPILER_PLUGINS" = TRUE; then
11069 if test "$_bison_longver" -lt 2004; then
11070 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11073 if test "$_bison_longver" -lt 2000; then
11074 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11080 AC_PATH_PROG(FLEX, flex)
11081 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11082 FLEX=`cygpath -m $FLEX`
11084 if test -z "$FLEX"; then
11085 AC_MSG_ERROR([no flex found in \$PATH, install it])
11087 AC_MSG_CHECKING([the flex version])
11088 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11089 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11090 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11094 dnl ***************************************
11095 dnl Checking for patch
11096 dnl ***************************************
11097 AC_PATH_PROG(PATCH, patch)
11098 if test -z "$PATCH"; then
11099 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11102 dnl On Solaris or macOS, check if --with-gnu-patch was used
11103 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11104 if test -z "$with_gnu_patch"; then
11107 if test -x "$with_gnu_patch"; then
11108 GNUPATCH=$with_gnu_patch
11110 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11114 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11115 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11116 AC_MSG_RESULT([yes])
11118 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11124 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11125 GNUPATCH=`cygpath -m $GNUPATCH`
11128 dnl We also need to check for --with-gnu-cp
11130 if test -z "$with_gnu_cp"; then
11131 # check the place where the good stuff is hidden on Solaris...
11132 if test -x /usr/gnu/bin/cp; then
11133 GNUCP=/usr/gnu/bin/cp
11135 AC_PATH_PROGS(GNUCP, gnucp cp)
11137 if test -z $GNUCP; then
11138 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11141 if test -x "$with_gnu_cp"; then
11144 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11148 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11149 GNUCP=`cygpath -m $GNUCP`
11152 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11153 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11154 AC_MSG_RESULT([yes])
11155 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11156 AC_MSG_RESULT([yes])
11158 case "$build_os" in
11159 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11162 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11165 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11174 dnl ***************************************
11175 dnl testing assembler path
11176 dnl ***************************************
11178 if test "$_os" = "WINNT"; then
11179 case "$WIN_HOST_ARCH" in
11180 x86) assembler=ml.exe ;;
11181 x64) assembler=ml64.exe ;;
11182 arm64) assembler=armasm64.exe ;;
11185 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11186 if test -f "$MSVC_HOST_PATH/$assembler"; then
11187 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11188 AC_MSG_RESULT([$ML_EXE])
11190 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11196 dnl ===================================================================
11197 dnl We need zip and unzip
11198 dnl ===================================================================
11199 AC_PATH_PROG(ZIP, zip)
11200 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11201 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11202 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],,)
11205 AC_PATH_PROG(UNZIP, unzip)
11206 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11208 dnl ===================================================================
11209 dnl Zip must be a specific type for different build types.
11210 dnl ===================================================================
11211 if test $build_os = cygwin; then
11212 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11213 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11217 dnl ===================================================================
11218 dnl We need touch with -h option support.
11219 dnl ===================================================================
11220 AC_PATH_PROG(TOUCH, touch)
11221 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11223 if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then
11224 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],,)
11227 dnl ===================================================================
11228 dnl Check for system epoxy
11229 dnl ===================================================================
11230 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11232 dnl ===================================================================
11233 dnl Set vcl option: coordinate device in double or sal_Int32
11234 dnl ===================================================================
11236 dnl disabled for now, we don't want subtle differences between OSs
11237 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11238 dnl if test "$_os" = "Darwin" -o $_os = iOS ; then
11239 dnl AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11240 dnl AC_MSG_RESULT([double])
11242 dnl AC_MSG_RESULT([sal_Int32])
11245 dnl ===================================================================
11246 dnl Test which vclplugs have to be built.
11247 dnl ===================================================================
11249 if test "$USING_X11" != TRUE; then
11254 if test "x$enable_gtk3" = "xyes"; then
11256 AC_DEFINE(ENABLE_GTK3)
11259 AC_SUBST(ENABLE_GTK3)
11261 ENABLE_GTK3_KDE5=""
11262 if test "x$enable_gtk3_kde5" = "xyes"; then
11263 ENABLE_GTK3_KDE5="TRUE"
11264 AC_DEFINE(ENABLE_GTK3_KDE5)
11267 AC_SUBST(ENABLE_GTK3_KDE5)
11270 if test "x$enable_qt5" = "xyes"; then
11272 AC_DEFINE(ENABLE_QT5)
11275 AC_SUBST(ENABLE_QT5)
11278 if test "x$enable_kf5" = "xyes"; then
11280 AC_DEFINE(ENABLE_KF5)
11283 AC_SUBST(ENABLE_KF5)
11287 if test "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11288 if test "$with_system_cairo" = no; then
11289 add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11291 : ${with_system_cairo:=yes}
11292 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)
11293 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11294 FilterLibs "${GTK3_LIBS}"
11295 GTK3_LIBS="${filteredlibs}"
11297 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11298 if test "$with_system_epoxy" != "yes"; then
11299 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11300 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11301 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11304 AC_SUBST(GTK3_LIBS)
11305 AC_SUBST(GTK3_CFLAGS)
11307 if test "$enable_introspection" = yes; then
11308 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11309 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11311 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11315 if test "$_os" = "WINNT"; then
11317 elif test "$_os" = "Darwin"; then
11319 elif test "$_os" = "iOS"; then
11323 build_vcl_plugins="$R"
11324 if test -z "$build_vcl_plugins"; then
11325 build_vcl_plugins="none"
11327 AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins])
11329 dnl ===================================================================
11330 dnl check for dbus support
11331 dnl ===================================================================
11335 DBUS_GLIB_CFLAGS=""
11339 if test "$enable_dbus" = "no"; then
11343 AC_MSG_CHECKING([whether to enable DBUS support])
11344 if test "$test_dbus" = "yes"; then
11346 AC_MSG_RESULT([yes])
11347 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11348 AC_DEFINE(ENABLE_DBUS)
11349 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11350 FilterLibs "${DBUS_LIBS}"
11351 DBUS_LIBS="${filteredlibs}"
11353 # Glib is needed for BluetoothServer
11354 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11355 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11357 DBUS_HAVE_GLIB="TRUE"
11358 AC_DEFINE(DBUS_HAVE_GLIB,1)
11360 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11363 AC_MSG_RESULT([no])
11366 AC_SUBST(ENABLE_DBUS)
11367 AC_SUBST(DBUS_CFLAGS)
11368 AC_SUBST(DBUS_LIBS)
11369 AC_SUBST(DBUS_GLIB_CFLAGS)
11370 AC_SUBST(DBUS_GLIB_LIBS)
11371 AC_SUBST(DBUS_HAVE_GLIB)
11373 AC_MSG_CHECKING([whether to enable Impress remote control])
11374 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11375 AC_MSG_RESULT([yes])
11376 ENABLE_SDREMOTE=TRUE
11377 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11379 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11380 # The Bluetooth code doesn't compile with macOS SDK 10.15
11381 if test "$enable_sdremote_bluetooth" = yes; then
11382 AC_MSG_ERROR([macOS SDK $with_macosx_sdk does not currently support --enable-sdremote-bluetooth])
11384 enable_sdremote_bluetooth=no
11386 # If not explicitly enabled or disabled, default
11387 if test -z "$enable_sdremote_bluetooth"; then
11390 # Default to yes for these
11391 enable_sdremote_bluetooth=yes
11395 enable_sdremote_bluetooth=no
11399 # $enable_sdremote_bluetooth is guaranteed non-empty now
11401 if test "$enable_sdremote_bluetooth" != "no"; then
11402 if test "$OS" = "LINUX"; then
11403 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11404 AC_MSG_RESULT([yes])
11405 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11406 dnl ===================================================================
11407 dnl Check for system bluez
11408 dnl ===================================================================
11409 AC_MSG_CHECKING([which Bluetooth header to use])
11410 if test "$with_system_bluez" = "yes"; then
11411 AC_MSG_RESULT([external])
11412 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11413 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11416 AC_MSG_RESULT([internal])
11420 AC_MSG_RESULT([no, dbus disabled])
11421 ENABLE_SDREMOTE_BLUETOOTH=
11425 AC_MSG_RESULT([yes])
11426 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11430 AC_MSG_RESULT([no])
11431 ENABLE_SDREMOTE_BLUETOOTH=
11437 AC_MSG_RESULT([no])
11439 AC_SUBST(ENABLE_SDREMOTE)
11440 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11441 AC_SUBST(SYSTEM_BLUEZ)
11443 dnl ===================================================================
11444 dnl Check whether to enable GIO support
11445 dnl ===================================================================
11446 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11447 AC_MSG_CHECKING([whether to enable GIO support])
11448 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11449 dnl Need at least 2.26 for the dbus support.
11450 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11451 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11452 if test "$ENABLE_GIO" = "TRUE"; then
11453 AC_DEFINE(ENABLE_GIO)
11454 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11455 FilterLibs "${GIO_LIBS}"
11456 GIO_LIBS="${filteredlibs}"
11459 AC_MSG_RESULT([no])
11462 AC_SUBST(ENABLE_GIO)
11463 AC_SUBST(GIO_CFLAGS)
11467 dnl ===================================================================
11469 SPLIT_APP_MODULES=""
11470 if test "$enable_split_app_modules" = "yes"; then
11471 SPLIT_APP_MODULES="TRUE"
11473 AC_SUBST(SPLIT_APP_MODULES)
11475 SPLIT_OPT_FEATURES=""
11476 if test "$enable_split_opt_features" = "yes"; then
11477 SPLIT_OPT_FEATURES="TRUE"
11479 AC_SUBST(SPLIT_OPT_FEATURES)
11481 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then
11482 if test "$enable_cairo_canvas" = yes; then
11483 AC_MSG_ERROR([The cairo canvas should not be used for this platform])
11485 enable_cairo_canvas=no
11486 elif test -z "$enable_cairo_canvas"; then
11487 enable_cairo_canvas=yes
11490 ENABLE_CAIRO_CANVAS=""
11491 if test "$enable_cairo_canvas" = "yes"; then
11493 ENABLE_CAIRO_CANVAS="TRUE"
11494 AC_DEFINE(ENABLE_CAIRO_CANVAS)
11496 AC_SUBST(ENABLE_CAIRO_CANVAS)
11498 dnl ===================================================================
11499 dnl Check whether the GStreamer libraries are available.
11500 dnl ===================================================================
11502 ENABLE_GSTREAMER_1_0=""
11504 if test "$build_gstreamer_1_0" = "yes"; then
11506 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11507 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11508 ENABLE_GSTREAMER_1_0="TRUE"
11509 AC_MSG_RESULT([yes])
11510 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11511 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11512 FilterLibs "${GSTREAMER_1_0_LIBS}"
11513 GSTREAMER_1_0_LIBS="${filteredlibs}"
11514 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11516 AC_MSG_RESULT([no])
11519 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11520 AC_SUBST(GSTREAMER_1_0_LIBS)
11521 AC_SUBST(ENABLE_GSTREAMER_1_0)
11523 dnl ===================================================================
11524 dnl Check whether to build the VLC avmedia backend
11525 dnl ===================================================================
11529 AC_MSG_CHECKING([whether to enable the VLC avmedia backend])
11530 if test "$enable_avmedia" = yes -a $_os != iOS -a $_os != Android -a "$enable_vlc" = yes; then
11532 AC_MSG_RESULT([yes])
11534 AC_MSG_RESULT([no])
11536 AC_SUBST(ENABLE_VLC)
11538 ENABLE_OPENGL_TRANSITIONS=
11539 ENABLE_OPENGL_CANVAS=
11540 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11542 elif test "$_os" = "Darwin"; then
11543 # We use frameworks on macOS, no need for detail checks
11544 ENABLE_OPENGL_TRANSITIONS=TRUE
11545 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11546 ENABLE_OPENGL_CANVAS=TRUE
11547 elif test $_os = WINNT; then
11548 ENABLE_OPENGL_TRANSITIONS=TRUE
11549 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11550 ENABLE_OPENGL_CANVAS=TRUE
11552 if test "$USING_X11" = TRUE; then
11553 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11554 ENABLE_OPENGL_TRANSITIONS=TRUE
11555 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11556 ENABLE_OPENGL_CANVAS=TRUE
11560 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11561 AC_SUBST(ENABLE_OPENGL_CANVAS)
11563 dnl =================================================
11564 dnl Check whether to build with OpenCL support.
11565 dnl =================================================
11567 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11568 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11569 # platform (optional at run-time, used through clew).
11570 BUILD_TYPE="$BUILD_TYPE OPENCL"
11571 AC_DEFINE(HAVE_FEATURE_OPENCL)
11574 dnl =================================================
11575 dnl Check whether to build with dconf support.
11576 dnl =================================================
11578 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11579 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11580 if test "$enable_dconf" = yes; then
11581 AC_MSG_ERROR([dconf not found])
11586 AC_MSG_CHECKING([whether to enable dconf])
11587 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11591 AC_MSG_RESULT([no])
11594 AC_DEFINE(ENABLE_DCONF)
11595 AC_MSG_RESULT([yes])
11597 AC_SUBST([DCONF_CFLAGS])
11598 AC_SUBST([DCONF_LIBS])
11599 AC_SUBST([ENABLE_DCONF])
11602 AC_MSG_CHECKING([whether to build the PDF import feature])
11604 if test $_os != iOS -a \( -z "$enable_pdfimport" -o "$enable_pdfimport" = yes \); then
11605 AC_MSG_RESULT([yes])
11606 ENABLE_PDFIMPORT=TRUE
11607 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11609 AC_MSG_RESULT([no])
11613 AC_MSG_CHECKING([whether to build PDFium])
11615 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11616 AC_MSG_RESULT([yes])
11618 AC_DEFINE(HAVE_FEATURE_PDFIUM)
11619 BUILD_TYPE="$BUILD_TYPE PDFIUM"
11621 AC_MSG_RESULT([no])
11623 AC_SUBST(ENABLE_PDFIUM)
11625 dnl ===================================================================
11626 dnl Check for poppler
11627 dnl ===================================================================
11629 AC_MSG_CHECKING([whether to build Poppler])
11630 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11631 AC_MSG_RESULT([yes])
11632 ENABLE_POPPLER=TRUE
11633 AC_DEFINE(HAVE_FEATURE_POPPLER)
11635 AC_MSG_RESULT([no])
11637 AC_SUBST(ENABLE_POPPLER)
11639 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11640 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11643 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11644 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11647 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11648 dnl ===================================================================
11649 dnl Check for system poppler
11650 dnl ===================================================================
11651 AC_MSG_CHECKING([which PDF import poppler to use])
11652 if test "$with_system_poppler" = "yes"; then
11653 AC_MSG_RESULT([external])
11654 SYSTEM_POPPLER=TRUE
11655 PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11656 AC_LANG_PUSH([C++])
11657 save_CXXFLAGS=$CXXFLAGS
11658 save_CPPFLAGS=$CPPFLAGS
11659 CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11660 CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11661 AC_CHECK_HEADER([cpp/poppler-version.h],
11662 [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11664 CXXFLAGS=$save_CXXFLAGS
11665 CPPFLAGS=$save_CPPFLAGS
11667 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11669 FilterLibs "${POPPLER_LIBS}"
11670 POPPLER_LIBS="${filteredlibs}"
11672 AC_MSG_RESULT([internal])
11674 BUILD_TYPE="$BUILD_TYPE POPPLER"
11675 AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11677 AC_DEFINE([ENABLE_PDFIMPORT],1)
11679 AC_SUBST(ENABLE_PDFIMPORT)
11680 AC_SUBST(SYSTEM_POPPLER)
11681 AC_SUBST(POPPLER_CFLAGS)
11682 AC_SUBST(POPPLER_LIBS)
11685 AC_MSG_CHECKING([whether to build Skia])
11687 if test "$enable_skia" != "no" -a "$build_skia" = "yes"; then
11688 if test "$enable_skia" = "debug"; then
11689 AC_MSG_RESULT([yes (debug)])
11690 ENABLE_SKIA_DEBUG=TRUE
11692 AC_MSG_RESULT([yes])
11696 AC_DEFINE(HAVE_FEATURE_SKIA)
11697 BUILD_TYPE="$BUILD_TYPE SKIA"
11699 AC_MSG_RESULT([no])
11701 AC_SUBST(ENABLE_SKIA)
11702 AC_SUBST(ENABLE_SKIA_DEBUG)
11704 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11705 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11706 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11707 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11708 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11709 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11710 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11711 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11712 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11714 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE -a ! \( "$_os" = "WINNT" -a "$CPUNAME" = "ARM64" \); then
11715 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11716 AC_MSG_CHECKING([for Clang])
11717 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
11719 if test "$_os" = "WINNT"; then
11720 AC_MSG_CHECKING([for clang-cl])
11721 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
11722 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
11723 dnl explicitly set -m32/-m64
11724 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
11725 LO_CLANG_CXX="$LO_CLANG_CC"
11726 AC_MSG_RESULT([$LO_CLANG_CC])
11728 AC_MSG_RESULT([no])
11731 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
11732 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
11735 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11736 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
11737 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
11738 if test "$clang2_ver" -lt 50002; then
11739 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
11744 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
11745 # Skia is the default on Windows, so hard-require Clang.
11746 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
11747 if test "$_os" = "WINNT"; then
11748 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
11750 AC_MSG_WARN([Clang compiler not found.])
11755 CXX="$LO_CLANG_CXX"
11756 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
11759 flag_sse41=-msse4.1
11760 flag_sse42=-msse4.2
11763 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
11767 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
11768 AC_LANG_PUSH([C++])
11769 save_CXXFLAGS=$CXXFLAGS
11770 CXXFLAGS="$CXXFLAGS $flag_sse2"
11771 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11772 #include <emmintrin.h>
11774 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11775 c = _mm_xor_si128 (a, b);
11779 [can_compile_sse2=yes],
11780 [can_compile_sse2=no])
11782 CXXFLAGS=$save_CXXFLAGS
11783 AC_MSG_RESULT([${can_compile_sse2}])
11784 if test "${can_compile_sse2}" = "yes" ; then
11785 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
11788 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
11789 AC_LANG_PUSH([C++])
11790 save_CXXFLAGS=$CXXFLAGS
11791 CXXFLAGS="$CXXFLAGS $flag_ssse3"
11792 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11793 #include <tmmintrin.h>
11795 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11796 c = _mm_maddubs_epi16 (a, b);
11800 [can_compile_ssse3=yes],
11801 [can_compile_ssse3=no])
11803 CXXFLAGS=$save_CXXFLAGS
11804 AC_MSG_RESULT([${can_compile_ssse3}])
11805 if test "${can_compile_ssse3}" = "yes" ; then
11806 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
11809 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
11810 AC_LANG_PUSH([C++])
11811 save_CXXFLAGS=$CXXFLAGS
11812 CXXFLAGS="$CXXFLAGS $flag_sse41"
11813 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11814 #include <smmintrin.h>
11816 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11817 c = _mm_cmpeq_epi64 (a, b);
11821 [can_compile_sse41=yes],
11822 [can_compile_sse41=no])
11824 CXXFLAGS=$save_CXXFLAGS
11825 AC_MSG_RESULT([${can_compile_sse41}])
11826 if test "${can_compile_sse41}" = "yes" ; then
11827 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
11830 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
11831 AC_LANG_PUSH([C++])
11832 save_CXXFLAGS=$CXXFLAGS
11833 CXXFLAGS="$CXXFLAGS $flag_sse42"
11834 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11835 #include <nmmintrin.h>
11837 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11838 c = _mm_cmpgt_epi64 (a, b);
11842 [can_compile_sse42=yes],
11843 [can_compile_sse42=no])
11845 CXXFLAGS=$save_CXXFLAGS
11846 AC_MSG_RESULT([${can_compile_sse42}])
11847 if test "${can_compile_sse42}" = "yes" ; then
11848 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
11851 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
11852 AC_LANG_PUSH([C++])
11853 save_CXXFLAGS=$CXXFLAGS
11854 CXXFLAGS="$CXXFLAGS $flag_avx"
11855 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11856 #include <immintrin.h>
11858 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
11859 c = _mm256_xor_ps(a, b);
11863 [can_compile_avx=yes],
11864 [can_compile_avx=no])
11866 CXXFLAGS=$save_CXXFLAGS
11867 AC_MSG_RESULT([${can_compile_avx}])
11868 if test "${can_compile_avx}" = "yes" ; then
11869 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
11872 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
11873 AC_LANG_PUSH([C++])
11874 save_CXXFLAGS=$CXXFLAGS
11875 CXXFLAGS="$CXXFLAGS $flag_avx2"
11876 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11877 #include <immintrin.h>
11879 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
11880 c = _mm256_maddubs_epi16(a, b);
11884 [can_compile_avx2=yes],
11885 [can_compile_avx2=no])
11887 CXXFLAGS=$save_CXXFLAGS
11888 AC_MSG_RESULT([${can_compile_avx2}])
11889 if test "${can_compile_avx2}" = "yes" ; then
11890 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
11893 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
11894 AC_LANG_PUSH([C++])
11895 save_CXXFLAGS=$CXXFLAGS
11896 CXXFLAGS="$CXXFLAGS $flag_avx512"
11897 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11898 #include <immintrin.h>
11900 __m512i a = _mm512_loadu_si512(0);
11904 [can_compile_avx512=yes],
11905 [can_compile_avx512=no])
11907 CXXFLAGS=$save_CXXFLAGS
11908 AC_MSG_RESULT([${can_compile_avx512}])
11909 if test "${can_compile_avx512}" = "yes" ; then
11910 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
11913 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
11914 AC_LANG_PUSH([C++])
11915 save_CXXFLAGS=$CXXFLAGS
11916 CXXFLAGS="$CXXFLAGS $flag_f16c"
11917 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11918 #include <immintrin.h>
11920 __m128i a = _mm_set1_epi32 (0);
11922 c = _mm_cvtph_ps(a);
11926 [can_compile_f16c=yes],
11927 [can_compile_f16c=no])
11929 CXXFLAGS=$save_CXXFLAGS
11930 AC_MSG_RESULT([${can_compile_f16c}])
11931 if test "${can_compile_f16c}" = "yes" ; then
11932 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
11935 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
11936 AC_LANG_PUSH([C++])
11937 save_CXXFLAGS=$CXXFLAGS
11938 CXXFLAGS="$CXXFLAGS $flag_fma"
11939 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11940 #include <immintrin.h>
11942 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
11943 d = _mm256_fmadd_ps(a, b, c);
11947 [can_compile_fma=yes],
11948 [can_compile_fma=no])
11950 CXXFLAGS=$save_CXXFLAGS
11951 AC_MSG_RESULT([${can_compile_fma}])
11952 if test "${can_compile_fma}" = "yes" ; then
11953 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
11960 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
11962 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11963 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
11967 save_CFLAGS=$CFLAGS
11968 CFLAGS="$CFLAGS --ccache-skip -O2"
11969 dnl an empty program will do, we're checking the compiler flags
11970 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11971 [use_ccache=yes], [use_ccache=no])
11972 CFLAGS=$save_CFLAGS
11974 if test $use_ccache = yes; then
11975 AC_MSG_RESULT([yes])
11977 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
11978 AC_MSG_RESULT([no])
11982 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
11983 AC_LANG_PUSH([C++])
11985 CXX="$LO_CLANG_CXX"
11986 save_CXXFLAGS=$CXXFLAGS
11987 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
11988 dnl an empty program will do, we're checking the compiler flags
11989 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11990 [use_ccache=yes], [use_ccache=no])
11991 if test $use_ccache = yes; then
11992 AC_MSG_RESULT([yes])
11994 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
11995 AC_MSG_RESULT([no])
11997 CXXFLAGS=$save_CXXFLAGS
12002 AC_SUBST(LO_CLANG_CC)
12003 AC_SUBST(LO_CLANG_CXX)
12004 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12005 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12006 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12007 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12008 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12009 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12010 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12011 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12012 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12013 AC_SUBST(CLANG_USE_LD)
12017 if test "$enable_gpgmepp" = no; then
12018 AC_MSG_CHECKING([whether to enable gpgmepp])
12019 AC_MSG_RESULT([no])
12020 elif test "$enable_mpl_subset" = "yes"; then
12021 AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12022 AC_MSG_RESULT([yes])
12023 elif test "$enable_fuzzers" = "yes"; then
12024 AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12025 AC_MSG_RESULT([yes])
12026 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12027 dnl ===================================================================
12028 dnl Check for system gpgme
12029 dnl ===================================================================
12030 AC_MSG_CHECKING([which gpgmepp to use])
12031 if test "$with_system_gpgmepp" = "yes"; then
12032 AC_MSG_RESULT([external])
12033 SYSTEM_GPGMEPP=TRUE
12035 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12036 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12037 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
12038 # progress_callback is the only func with plain C linkage
12039 # checking for it also filters out older, KDE-dependent libgpgmepp versions
12040 AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12041 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12042 AC_CHECK_HEADER(gpgme.h, [],
12043 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12045 AC_MSG_RESULT([internal])
12046 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12047 AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12049 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12050 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12051 if test "$_os" != "WINNT"; then
12052 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12053 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12056 ENABLE_GPGMEPP=TRUE
12057 AC_DEFINE([HAVE_FEATURE_GPGME])
12058 AC_PATH_PROG(GPG, gpg)
12059 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12060 # so let's exclude that manually for the moment
12061 if test -n "$GPG" -a "$_os" != "WINNT"; then
12062 # make sure we not only have a working gpgme, but a full working
12063 # gpg installation to run OpenPGP signature verification
12064 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12066 if test "$_os" = "Linux"; then
12068 AC_MSG_CHECKING([for /run/user/$uid])
12069 if test -d /run/user/$uid; then
12070 AC_MSG_RESULT([yes])
12071 AC_PATH_PROG(GPGCONF, gpgconf)
12073 # Older versions of gpgconf are not working as expected, since
12074 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12075 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12076 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12077 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12078 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12079 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12080 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12081 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12082 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12083 if $GPGCONF --dump-options > /dev/null ; then
12084 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12085 AC_MSG_RESULT([yes])
12086 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12087 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12089 AC_MSG_RESULT([no])
12092 AC_MSG_RESULT([no. missing or broken gpgconf?])
12095 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12098 AC_MSG_RESULT([no])
12102 AC_SUBST(ENABLE_GPGMEPP)
12103 AC_SUBST(SYSTEM_GPGMEPP)
12104 AC_SUBST(GPG_ERROR_CFLAGS)
12105 AC_SUBST(GPG_ERROR_LIBS)
12106 AC_SUBST(LIBASSUAN_CFLAGS)
12107 AC_SUBST(LIBASSUAN_LIBS)
12108 AC_SUBST(GPGMEPP_CFLAGS)
12109 AC_SUBST(GPGMEPP_LIBS)
12111 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12112 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12113 AC_MSG_RESULT([yes])
12114 ENABLE_MEDIAWIKI=TRUE
12115 BUILD_TYPE="$BUILD_TYPE XSLTML"
12116 if test "x$with_java" = "xno"; then
12117 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12120 AC_MSG_RESULT([no])
12122 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12124 AC_SUBST(ENABLE_MEDIAWIKI)
12126 AC_MSG_CHECKING([whether to build the Report Builder])
12127 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12128 AC_MSG_RESULT([yes])
12129 ENABLE_REPORTBUILDER=TRUE
12130 AC_MSG_CHECKING([which jfreereport libs to use])
12131 if test "$with_system_jfreereport" = "yes"; then
12132 SYSTEM_JFREEREPORT=TRUE
12133 AC_MSG_RESULT([external])
12134 if test -z $SAC_JAR; then
12135 SAC_JAR=/usr/share/java/sac.jar
12137 if ! test -f $SAC_JAR; then
12138 AC_MSG_ERROR(sac.jar not found.)
12141 if test -z $LIBXML_JAR; then
12142 if test -f /usr/share/java/libxml-1.0.0.jar; then
12143 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12144 elif test -f /usr/share/java/libxml.jar; then
12145 LIBXML_JAR=/usr/share/java/libxml.jar
12147 AC_MSG_ERROR(libxml.jar replacement not found.)
12149 elif ! test -f $LIBXML_JAR; then
12150 AC_MSG_ERROR(libxml.jar not found.)
12153 if test -z $FLUTE_JAR; then
12154 if test -f /usr/share/java/flute-1.3.0.jar; then
12155 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12156 elif test -f /usr/share/java/flute.jar; then
12157 FLUTE_JAR=/usr/share/java/flute.jar
12159 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12161 elif ! test -f $FLUTE_JAR; then
12162 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12165 if test -z $JFREEREPORT_JAR; then
12166 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12167 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12168 elif test -f /usr/share/java/flow-engine.jar; then
12169 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12171 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12173 elif ! test -f $JFREEREPORT_JAR; then
12174 AC_MSG_ERROR(jfreereport.jar not found.)
12177 if test -z $LIBLAYOUT_JAR; then
12178 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12179 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12180 elif test -f /usr/share/java/liblayout.jar; then
12181 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12183 AC_MSG_ERROR(liblayout.jar replacement not found.)
12185 elif ! test -f $LIBLAYOUT_JAR; then
12186 AC_MSG_ERROR(liblayout.jar not found.)
12189 if test -z $LIBLOADER_JAR; then
12190 if test -f /usr/share/java/libloader-1.0.0.jar; then
12191 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12192 elif test -f /usr/share/java/libloader.jar; then
12193 LIBLOADER_JAR=/usr/share/java/libloader.jar
12195 AC_MSG_ERROR(libloader.jar replacement not found.)
12197 elif ! test -f $LIBLOADER_JAR; then
12198 AC_MSG_ERROR(libloader.jar not found.)
12201 if test -z $LIBFORMULA_JAR; then
12202 if test -f /usr/share/java/libformula-0.2.0.jar; then
12203 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12204 elif test -f /usr/share/java/libformula.jar; then
12205 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12207 AC_MSG_ERROR(libformula.jar replacement not found.)
12209 elif ! test -f $LIBFORMULA_JAR; then
12210 AC_MSG_ERROR(libformula.jar not found.)
12213 if test -z $LIBREPOSITORY_JAR; then
12214 if test -f /usr/share/java/librepository-1.0.0.jar; then
12215 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12216 elif test -f /usr/share/java/librepository.jar; then
12217 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12219 AC_MSG_ERROR(librepository.jar replacement not found.)
12221 elif ! test -f $LIBREPOSITORY_JAR; then
12222 AC_MSG_ERROR(librepository.jar not found.)
12225 if test -z $LIBFONTS_JAR; then
12226 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12227 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12228 elif test -f /usr/share/java/libfonts.jar; then
12229 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12231 AC_MSG_ERROR(libfonts.jar replacement not found.)
12233 elif ! test -f $LIBFONTS_JAR; then
12234 AC_MSG_ERROR(libfonts.jar not found.)
12237 if test -z $LIBSERIALIZER_JAR; then
12238 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12239 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12240 elif test -f /usr/share/java/libserializer.jar; then
12241 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12243 AC_MSG_ERROR(libserializer.jar replacement not found.)
12245 elif ! test -f $LIBSERIALIZER_JAR; then
12246 AC_MSG_ERROR(libserializer.jar not found.)
12249 if test -z $LIBBASE_JAR; then
12250 if test -f /usr/share/java/libbase-1.0.0.jar; then
12251 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12252 elif test -f /usr/share/java/libbase.jar; then
12253 LIBBASE_JAR=/usr/share/java/libbase.jar
12255 AC_MSG_ERROR(libbase.jar replacement not found.)
12257 elif ! test -f $LIBBASE_JAR; then
12258 AC_MSG_ERROR(libbase.jar not found.)
12262 AC_MSG_RESULT([internal])
12263 SYSTEM_JFREEREPORT=
12264 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12268 AC_MSG_RESULT([no])
12269 ENABLE_REPORTBUILDER=
12270 SYSTEM_JFREEREPORT=
12272 AC_SUBST(ENABLE_REPORTBUILDER)
12273 AC_SUBST(SYSTEM_JFREEREPORT)
12275 AC_SUBST(LIBXML_JAR)
12276 AC_SUBST(FLUTE_JAR)
12277 AC_SUBST(JFREEREPORT_JAR)
12278 AC_SUBST(LIBBASE_JAR)
12279 AC_SUBST(LIBLAYOUT_JAR)
12280 AC_SUBST(LIBLOADER_JAR)
12281 AC_SUBST(LIBFORMULA_JAR)
12282 AC_SUBST(LIBREPOSITORY_JAR)
12283 AC_SUBST(LIBFONTS_JAR)
12284 AC_SUBST(LIBSERIALIZER_JAR)
12286 # this has to be here because both the Wiki Publisher and the SRB use
12288 COMMONS_LOGGING_VERSION=1.2
12289 if test "$ENABLE_REPORTBUILDER" = "TRUE"; then
12290 AC_MSG_CHECKING([which Apache commons-* libs to use])
12291 if test "$with_system_apache_commons" = "yes"; then
12292 SYSTEM_APACHE_COMMONS=TRUE
12293 AC_MSG_RESULT([external])
12294 if test -z $COMMONS_LOGGING_JAR; then
12295 if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then
12296 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar
12297 elif test -f /usr/share/java/commons-logging.jar; then
12298 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar
12300 AC_MSG_ERROR(commons-logging.jar replacement not found.)
12302 elif ! test -f $COMMONS_LOGGING_JAR; then
12303 AC_MSG_ERROR(commons-logging.jar not found.)
12306 AC_MSG_RESULT([internal])
12307 SYSTEM_APACHE_COMMONS=
12308 BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS"
12312 AC_SUBST(SYSTEM_APACHE_COMMONS)
12313 AC_SUBST(COMMONS_LOGGING_JAR)
12314 AC_SUBST(COMMONS_LOGGING_VERSION)
12316 # scripting provider for BeanShell?
12317 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12318 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12319 AC_MSG_RESULT([yes])
12320 ENABLE_SCRIPTING_BEANSHELL=TRUE
12322 dnl ===================================================================
12323 dnl Check for system beanshell
12324 dnl ===================================================================
12325 AC_MSG_CHECKING([which beanshell to use])
12326 if test "$with_system_beanshell" = "yes"; then
12327 AC_MSG_RESULT([external])
12329 if test -z $BSH_JAR; then
12330 BSH_JAR=/usr/share/java/bsh.jar
12332 if ! test -f $BSH_JAR; then
12333 AC_MSG_ERROR(bsh.jar not found.)
12336 AC_MSG_RESULT([internal])
12338 BUILD_TYPE="$BUILD_TYPE BSH"
12341 AC_MSG_RESULT([no])
12342 ENABLE_SCRIPTING_BEANSHELL=
12343 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12345 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12346 AC_SUBST(SYSTEM_BSH)
12349 # scripting provider for JavaScript?
12350 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12351 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12352 AC_MSG_RESULT([yes])
12353 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12355 dnl ===================================================================
12356 dnl Check for system rhino
12357 dnl ===================================================================
12358 AC_MSG_CHECKING([which rhino to use])
12359 if test "$with_system_rhino" = "yes"; then
12360 AC_MSG_RESULT([external])
12362 if test -z $RHINO_JAR; then
12363 RHINO_JAR=/usr/share/java/js.jar
12365 if ! test -f $RHINO_JAR; then
12366 AC_MSG_ERROR(js.jar not found.)
12369 AC_MSG_RESULT([internal])
12371 BUILD_TYPE="$BUILD_TYPE RHINO"
12375 AC_MSG_RESULT([no])
12376 ENABLE_SCRIPTING_JAVASCRIPT=
12377 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12379 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12380 AC_SUBST(SYSTEM_RHINO)
12381 AC_SUBST(RHINO_JAR)
12383 # This is only used in Qt5/KF5 checks to determine if /usr/lib64
12384 # paths should be added to library search path. So lets put all 64-bit
12387 case "$host_cpu" in
12388 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12389 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12390 supports_multilib="yes"
12397 dnl ===================================================================
12398 dnl QT5 Integration
12399 dnl ===================================================================
12405 QT5_GOBJECT_CFLAGS=""
12406 QT5_GOBJECT_LIBS=""
12407 QT5_HAVE_GOBJECT=""
12408 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12409 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12410 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12412 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12413 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12415 if test -n "$supports_multilib"; then
12416 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12419 qt5_test_include="QtWidgets/qapplication.h"
12420 qt5_test_library="libQt5Widgets.so"
12422 dnl Check for qmake5
12423 AC_PATH_PROGS( QMAKE5, [qmake-qt5 qmake], no, [$QT5DIR/bin:$PATH])
12424 if test "$QMAKE5" = "no"; then
12425 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12427 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12428 if test -z "$qmake5_test_ver"; then
12429 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12431 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12432 qt5_minimal_minor="6"
12433 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12434 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12436 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12440 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12441 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12443 AC_MSG_CHECKING([for Qt5 headers])
12445 for inc_dir in $qt5_incdirs; do
12446 if test -r "$inc_dir/$qt5_test_include"; then
12447 qt5_incdir="$inc_dir"
12451 AC_MSG_RESULT([$qt5_incdir])
12452 if test "x$qt5_incdir" = "xno"; then
12453 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12455 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12456 AC_LANG_PUSH([C++])
12457 save_CPPFLAGS=$CPPFLAGS
12458 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12459 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12460 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12461 CPPFLAGS=$save_CPPFLAGS
12464 AC_MSG_CHECKING([for Qt5 libraries])
12466 for lib_dir in $qt5_libdirs; do
12467 if test -r "$lib_dir/$qt5_test_library"; then
12468 qt5_libdir="$lib_dir"
12472 AC_MSG_RESULT([$qt5_libdir])
12473 if test "x$qt5_libdir" = "xno"; then
12474 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12477 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12478 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12479 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12481 if test "$USING_X11" = TRUE; then
12482 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12483 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12484 QT5_HAVE_XCB_ICCCM=1
12485 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12487 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)])
12488 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12490 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12491 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12493 AC_DEFINE(QT5_USING_X11)
12496 dnl Check for Meta Object Compiler
12498 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12499 if test "$MOC5" = "no"; then
12500 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
12501 the root of your Qt installation by exporting QT5DIR before running "configure".])
12504 if test "$build_gstreamer_1_0" = "yes"; then
12505 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12507 AC_DEFINE(QT5_HAVE_GOBJECT)
12509 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12513 AC_SUBST(QT5_CFLAGS)
12516 AC_SUBST(QT5_GOBJECT_CFLAGS)
12517 AC_SUBST(QT5_GOBJECT_LIBS)
12518 AC_SUBST(QT5_HAVE_GOBJECT)
12520 dnl ===================================================================
12521 dnl KF5 Integration
12522 dnl ===================================================================
12526 KF5_CONFIG="kf5-config"
12527 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12528 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12530 if test "$OS" = "HAIKU"; then
12531 haiku_arch="`echo $RTL_ARCH | tr X x`"
12532 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12533 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12536 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12537 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12538 if test -n "$supports_multilib"; then
12539 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12542 kf5_test_include="KF5/kcoreaddons_version.h"
12543 kf5_test_library="libKF5CoreAddons.so"
12544 kf5_libdirs="$qt5_libdir $kf5_libdirs"
12546 dnl kf5 KDE4 support compatibility installed
12547 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12548 if test "$KF5_CONFIG" != "no"; then
12549 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12550 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12553 dnl Check for KF5 headers
12554 AC_MSG_CHECKING([for KF5 headers])
12556 for kf5_check in $kf5_incdirs; do
12557 if test -r "$kf5_check/$kf5_test_include"; then
12558 kf5_incdir="$kf5_check/KF5"
12562 AC_MSG_RESULT([$kf5_incdir])
12563 if test "x$kf5_incdir" = "xno"; then
12564 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12567 dnl Check for KF5 libraries
12568 AC_MSG_CHECKING([for KF5 libraries])
12570 for kf5_check in $kf5_libdirs; do
12571 if test -r "$kf5_check/$kf5_test_library"; then
12572 kf5_libdir="$kf5_check"
12577 AC_MSG_RESULT([$kf5_libdir])
12578 if test "x$kf5_libdir" = "xno"; then
12579 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12582 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"
12583 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12584 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12586 if test "$USING_X11" = TRUE; then
12587 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
12590 AC_LANG_PUSH([C++])
12591 save_CXXFLAGS=$CXXFLAGS
12592 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
12593 AC_MSG_CHECKING([whether KDE is >= 5.0])
12594 AC_RUN_IFELSE([AC_LANG_SOURCE([[
12595 #include <kcoreaddons_version.h>
12597 int main(int argc, char **argv) {
12598 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
12601 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
12602 CXXFLAGS=$save_CXXFLAGS
12605 AC_SUBST(KF5_CFLAGS)
12608 dnl ===================================================================
12609 dnl Test whether to include Evolution 2 support
12610 dnl ===================================================================
12611 AC_MSG_CHECKING([whether to enable evolution 2 support])
12612 if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then
12613 AC_MSG_RESULT([yes])
12614 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
12615 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12616 FilterLibs "${GOBJECT_LIBS}"
12617 GOBJECT_LIBS="${filteredlibs}"
12618 ENABLE_EVOAB2="TRUE"
12621 AC_MSG_RESULT([no])
12623 AC_SUBST(ENABLE_EVOAB2)
12624 AC_SUBST(GOBJECT_CFLAGS)
12625 AC_SUBST(GOBJECT_LIBS)
12627 dnl ===================================================================
12628 dnl Test which themes to include
12629 dnl ===================================================================
12630 AC_MSG_CHECKING([which themes to include])
12631 # if none given use default subset of available themes
12632 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
12633 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"
12637 if test "x$with_theme" != "xno"; then
12638 for theme in $with_theme; do
12640 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" ;;
12641 default) real_theme=colibre ;;
12642 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
12644 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
12647 AC_MSG_RESULT([$WITH_THEMES])
12648 AC_SUBST([WITH_THEMES])
12649 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
12650 for theme in $with_theme; do
12652 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
12657 dnl ===================================================================
12658 dnl Test whether to integrate helppacks into the product's installer
12659 dnl ===================================================================
12660 AC_MSG_CHECKING([for helppack integration])
12661 if test "$with_helppack_integration" = "no"; then
12662 AC_MSG_RESULT([no integration])
12664 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
12665 AC_MSG_RESULT([integration])
12668 ###############################################################################
12669 # Extensions checking
12670 ###############################################################################
12671 AC_MSG_CHECKING([for extensions integration])
12672 if test "x$enable_extension_integration" != "xno"; then
12673 WITH_EXTENSION_INTEGRATION=TRUE
12674 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
12675 AC_MSG_RESULT([yes, use integration])
12677 WITH_EXTENSION_INTEGRATION=
12678 AC_MSG_RESULT([no, do not integrate])
12680 AC_SUBST(WITH_EXTENSION_INTEGRATION)
12682 dnl Should any extra extensions be included?
12683 dnl There are standalone tests for each of these below.
12684 WITH_EXTRA_EXTENSIONS=
12685 AC_SUBST([WITH_EXTRA_EXTENSIONS])
12687 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
12688 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
12689 if test "x$with_java" != "xno"; then
12690 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
12691 libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
12694 AC_MSG_CHECKING([whether to build opens___.ttf])
12695 if test "$enable_build_opensymbol" = "yes"; then
12696 AC_MSG_RESULT([yes])
12697 AC_PATH_PROG(FONTFORGE, fontforge)
12698 if test -z "$FONTFORGE"; then
12699 AC_MSG_ERROR([fontforge not installed])
12702 AC_MSG_RESULT([no])
12703 OPENSYMBOL_TTF=f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
12704 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
12706 AC_SUBST(OPENSYMBOL_TTF)
12707 AC_SUBST(FONTFORGE)
12709 dnl ===================================================================
12710 dnl Test whether to include fonts
12711 dnl ===================================================================
12712 AC_MSG_CHECKING([whether to include third-party fonts])
12713 if test "$with_fonts" != "no"; then
12714 AC_MSG_RESULT([yes])
12716 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
12717 AC_DEFINE(HAVE_MORE_FONTS)
12719 AC_MSG_RESULT([no])
12721 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
12723 AC_SUBST(WITH_FONTS)
12726 dnl ===================================================================
12727 dnl Test whether to enable online update service
12728 dnl ===================================================================
12729 AC_MSG_CHECKING([whether to enable online update])
12730 ENABLE_ONLINE_UPDATE=
12731 ENABLE_ONLINE_UPDATE_MAR=
12733 if test "$enable_online_update" = ""; then
12734 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12735 AC_MSG_RESULT([yes])
12736 ENABLE_ONLINE_UPDATE="TRUE"
12738 AC_MSG_RESULT([no])
12741 if test "$enable_online_update" = "mar"; then
12742 AC_MSG_RESULT([yes - MAR-based online update])
12743 ENABLE_ONLINE_UPDATE_MAR="TRUE"
12744 if test "$with_update_config" = ""; then
12745 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
12747 UPDATE_CONFIG="$with_update_config"
12748 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
12749 elif test "$enable_online_update" = "yes"; then
12750 AC_MSG_RESULT([yes])
12751 ENABLE_ONLINE_UPDATE="TRUE"
12753 AC_MSG_RESULT([no])
12756 AC_SUBST(ENABLE_ONLINE_UPDATE)
12757 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
12758 AC_SUBST(UPDATE_CONFIG)
12760 dnl ===================================================================
12761 dnl Test whether we need bzip2
12762 dnl ===================================================================
12764 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
12765 AC_MSG_CHECKING([whether to use system bzip2])
12766 if test "$with_system_bzip2" = yes; then
12768 AC_MSG_RESULT([yes])
12769 PKG_CHECK_MODULES(BZIP2, bzip2)
12770 FilterLibs "${BZIP2_LIBS}"
12771 BZIP2_LIBS="${filteredlibs}"
12773 AC_MSG_RESULT([no])
12774 BUILD_TYPE="$BUILD_TYPE BZIP2"
12777 AC_SUBST(SYSTEM_BZIP2)
12778 AC_SUBST(BZIP2_CFLAGS)
12779 AC_SUBST(BZIP2_LIBS)
12781 dnl ===================================================================
12782 dnl Test whether to enable extension update
12783 dnl ===================================================================
12784 AC_MSG_CHECKING([whether to enable extension update])
12785 ENABLE_EXTENSION_UPDATE=
12786 if test "x$enable_extension_update" = "xno"; then
12787 AC_MSG_RESULT([no])
12789 AC_MSG_RESULT([yes])
12790 ENABLE_EXTENSION_UPDATE="TRUE"
12791 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
12792 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
12794 AC_SUBST(ENABLE_EXTENSION_UPDATE)
12797 dnl ===================================================================
12798 dnl Test whether to create MSI with LIMITUI=1 (silent install)
12799 dnl ===================================================================
12800 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
12801 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
12802 AC_MSG_RESULT([no])
12805 AC_MSG_RESULT([yes])
12806 ENABLE_SILENT_MSI=TRUE
12807 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
12809 AC_SUBST(ENABLE_SILENT_MSI)
12811 AC_MSG_CHECKING([whether and how to use Xinerama])
12812 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
12813 if test "$x_libraries" = "default_x_libraries"; then
12814 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
12815 if test "x$XINERAMALIB" = x; then
12816 XINERAMALIB="/usr/lib"
12819 XINERAMALIB="$x_libraries"
12821 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
12822 # we have both versions, let the user decide but use the dynamic one
12825 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
12826 XINERAMA_LINK=dynamic
12828 XINERAMA_LINK=static
12830 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
12831 # we have only the dynamic version
12833 XINERAMA_LINK=dynamic
12834 elif test -e "$XINERAMALIB/libXinerama.a"; then
12836 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
12838 XINERAMA_LINK=static
12848 if test "$USE_XINERAMA" = "TRUE"; then
12849 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
12850 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
12851 [AC_MSG_ERROR(Xinerama header not found.)], [])
12852 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
12853 if test "x$XEXTLIB" = x; then
12854 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
12856 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
12857 if test "$_os" = "FreeBSD"; then
12858 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
12860 if test "$_os" = "Linux"; then
12861 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
12863 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
12864 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
12866 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
12871 AC_MSG_RESULT([no])
12873 AC_SUBST(USE_XINERAMA)
12874 AC_SUBST(XINERAMA_LINK)
12876 dnl ===================================================================
12877 dnl Test whether to build cairo or rely on the system version
12878 dnl ===================================================================
12880 if test "$USING_X11" = TRUE; then
12881 # Used in vcl/Library_vclplug_gen.mk
12885 if test "$test_cairo" = "yes"; then
12886 AC_MSG_CHECKING([whether to use the system cairo])
12888 : ${with_system_cairo:=$with_system_libs}
12889 if test "$with_system_cairo" = "yes"; then
12891 AC_MSG_RESULT([yes])
12893 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
12894 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12895 FilterLibs "${CAIRO_LIBS}"
12896 CAIRO_LIBS="${filteredlibs}"
12898 if test "$test_xrender" = "yes"; then
12899 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
12901 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
12902 #ifdef PictStandardA8
12906 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
12912 AC_MSG_RESULT([no])
12914 BUILD_TYPE="$BUILD_TYPE CAIRO"
12918 AC_SUBST(SYSTEM_CAIRO)
12919 AC_SUBST(CAIRO_CFLAGS)
12920 AC_SUBST(CAIRO_LIBS)
12922 dnl ===================================================================
12923 dnl Test whether to use avahi
12924 dnl ===================================================================
12925 if test "$_os" = "WINNT"; then
12926 # Windows uses bundled mDNSResponder
12927 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
12928 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
12929 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
12930 [ENABLE_AVAHI="TRUE"])
12931 AC_DEFINE(HAVE_FEATURE_AVAHI)
12932 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12933 FilterLibs "${AVAHI_LIBS}"
12934 AVAHI_LIBS="${filteredlibs}"
12937 AC_SUBST(ENABLE_AVAHI)
12938 AC_SUBST(AVAHI_CFLAGS)
12939 AC_SUBST(AVAHI_LIBS)
12941 dnl ===================================================================
12942 dnl Test whether to use liblangtag
12943 dnl ===================================================================
12945 AC_MSG_CHECKING([whether to use system liblangtag])
12946 if test "$with_system_liblangtag" = yes; then
12947 SYSTEM_LIBLANGTAG=TRUE
12948 AC_MSG_RESULT([yes])
12949 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
12950 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
12951 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
12952 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12953 FilterLibs "${LIBLANGTAG_LIBS}"
12954 LIBLANGTAG_LIBS="${filteredlibs}"
12957 AC_MSG_RESULT([no])
12958 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
12959 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
12960 if test "$COM" = "MSC"; then
12961 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
12963 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
12966 AC_SUBST(SYSTEM_LIBLANGTAG)
12967 AC_SUBST(LIBLANGTAG_CFLAGS)
12968 AC_SUBST(LIBLANGTAG_LIBS)
12970 dnl ===================================================================
12971 dnl Test whether to build libpng or rely on the system version
12972 dnl ===================================================================
12974 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
12976 dnl ===================================================================
12977 dnl Check for runtime JVM search path
12978 dnl ===================================================================
12979 if test "$ENABLE_JAVA" != ""; then
12980 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
12981 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
12982 AC_MSG_RESULT([yes])
12983 if ! test -d "$with_jvm_path"; then
12984 AC_MSG_ERROR(["$with_jvm_path" not a directory])
12986 if ! test -d "$with_jvm_path"jvm; then
12987 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
12989 JVM_ONE_PATH_CHECK="$with_jvm_path"
12990 AC_SUBST(JVM_ONE_PATH_CHECK)
12992 AC_MSG_RESULT([no])
12996 dnl ===================================================================
12997 dnl Test for the presence of Ant and that it works
12998 dnl ===================================================================
13000 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13001 ANT_HOME=; export ANT_HOME
13002 WITH_ANT_HOME=; export WITH_ANT_HOME
13003 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13004 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13005 if test "$_os" = "WINNT"; then
13006 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13008 with_ant_home="$LODE_HOME/opt/ant"
13010 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13011 with_ant_home="$LODE_HOME/opt/ant"
13014 if test -z "$with_ant_home"; then
13015 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13017 if test "$_os" = "WINNT"; then
13018 # AC_PATH_PROGS needs unix path
13019 with_ant_home=`cygpath -u "$with_ant_home"`
13021 AbsolutePath "$with_ant_home"
13022 with_ant_home=$absolute_path
13023 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13024 WITH_ANT_HOME=$with_ant_home
13025 ANT_HOME=$with_ant_home
13028 if test -z "$ANT"; then
13029 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13031 # resolve relative or absolute symlink
13032 while test -h "$ANT"; do
13034 a_basename=`basename "$ANT"`
13035 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13036 cd "`dirname "$ANT"`"
13037 cd "`dirname "$a_script"`"
13038 ANT="`pwd`"/"`basename "$a_script"`"
13042 AC_MSG_CHECKING([if $ANT works])
13043 mkdir -p conftest.dir
13046 cat > conftest.java << EOF
13047 public class conftest {
13048 int testmethod(int a, int b) {
13054 cat > conftest.xml << EOF
13055 <project name="conftest" default="conftest">
13056 <target name="conftest">
13057 <javac srcdir="." includes="conftest.java">
13063 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13064 if test $? = 0 -a -f ./conftest.class; then
13065 AC_MSG_RESULT([Ant works])
13066 if test -z "$WITH_ANT_HOME"; then
13067 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13068 if test -z "$ANT_HOME"; then
13069 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13072 ANT_HOME="$WITH_ANT_HOME"
13075 echo "configure: Ant test failed" >&5
13076 cat conftest.java >&5
13077 cat conftest.xml >&5
13078 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13081 rm -fr conftest.dir
13083 if test -z "$ANT_HOME"; then
13084 ANT_HOME="NO_ANT_HOME"
13086 PathFormat "$ANT_HOME"
13087 ANT_HOME="$formatted_path"
13089 ANT="$formatted_path"
13092 dnl Checking for ant.jar
13093 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13094 AC_MSG_CHECKING([Ant lib directory])
13095 if test -f $ANT_HOME/lib/ant.jar; then
13096 ANT_LIB="$ANT_HOME/lib"
13098 if test -f $ANT_HOME/ant.jar; then
13099 ANT_LIB="$ANT_HOME"
13101 if test -f /usr/share/java/ant.jar; then
13102 ANT_LIB=/usr/share/java
13104 if test -f /usr/share/ant-core/lib/ant.jar; then
13105 ANT_LIB=/usr/share/ant-core/lib
13107 if test -f $ANT_HOME/lib/ant/ant.jar; then
13108 ANT_LIB="$ANT_HOME/lib/ant"
13110 if test -f /usr/share/lib/ant/ant.jar; then
13111 ANT_LIB=/usr/share/lib/ant
13113 AC_MSG_ERROR([Ant libraries not found!])
13120 PathFormat "$ANT_LIB"
13121 ANT_LIB="$formatted_path"
13122 AC_MSG_RESULT([Ant lib directory found.])
13126 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13128 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13129 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13130 ant_version_major=`echo $ant_version | cut -d. -f1`
13131 ant_version_minor=`echo $ant_version | cut -d. -f2`
13132 echo "configure: ant_version $ant_version " >&5
13133 echo "configure: ant_version_major $ant_version_major " >&5
13134 echo "configure: ant_version_minor $ant_version_minor " >&5
13135 if test "$ant_version_major" -ge "2"; then
13136 AC_MSG_RESULT([yes, $ant_version])
13137 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13138 AC_MSG_RESULT([yes, $ant_version])
13140 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13143 rm -f conftest* core core.* *.core
13151 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13152 AC_MSG_CHECKING([for JUnit 4])
13153 if test "$with_junit" = "yes"; then
13154 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13155 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13156 elif test -e /usr/share/java/junit4.jar; then
13157 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13159 if test -e /usr/share/lib/java/junit.jar; then
13160 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13162 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13166 OOO_JUNIT_JAR=$with_junit
13168 if test "$_os" = "WINNT"; then
13169 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13171 printf 'import org.junit.Before;' > conftest.java
13172 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13173 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13176 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13177 specify its pathname via --with-junit=..., or disable it via --without-junit])
13179 rm -f conftest.class conftest.java
13180 if test $OOO_JUNIT_JAR != ""; then
13181 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13184 AC_MSG_CHECKING([for included Hamcrest])
13185 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13186 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13187 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13189 AC_MSG_RESULT([Not included])
13190 AC_MSG_CHECKING([for standalone hamcrest jar.])
13191 if test "$with_hamcrest" = "yes"; then
13192 if test -e /usr/share/lib/java/hamcrest.jar; then
13193 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13194 elif test -e /usr/share/java/hamcrest/core.jar; then
13195 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13197 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13200 HAMCREST_JAR=$with_hamcrest
13202 if test "$_os" = "WINNT"; then
13203 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13205 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13206 AC_MSG_RESULT([$HAMCREST_JAR])
13208 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),
13209 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13212 rm -f conftest.class conftest.java
13214 AC_SUBST(OOO_JUNIT_JAR)
13215 AC_SUBST(HAMCREST_JAR)
13221 # check for wget and curl
13226 if test "$enable_fetch_external" != "no"; then
13228 CURL=`which curl 2>/dev/null`
13230 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13232 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13233 if test $? -eq 0; then
13239 if test -z "$WGET" -a -z "$CURL"; then
13240 AC_MSG_ERROR([neither wget nor curl found!])
13249 # check for sha256sum
13253 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13254 eval "$i -a 256 --version" > /dev/null 2>&1
13256 if test $ret -eq 0; then
13257 SHA256SUM="$i -a 256"
13262 if test -z "$SHA256SUM"; then
13263 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13264 eval "$i --version" > /dev/null 2>&1
13266 if test $ret -eq 0; then
13273 if test -z "$SHA256SUM"; then
13274 AC_MSG_ERROR([no sha256sum found!])
13277 AC_SUBST(SHA256SUM)
13279 dnl ===================================================================
13280 dnl Dealing with l10n options
13281 dnl ===================================================================
13282 AC_MSG_CHECKING([which languages to be built])
13283 # get list of all languages
13284 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13285 # the sed command does the following:
13286 # + if a line ends with a backslash, append the next line to it
13287 # + adds " on the beginning of the value (after =)
13288 # + adds " at the end of the value
13289 # + removes en-US; we want to put it on the beginning
13290 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13291 [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)]
13292 ALL_LANGS="en-US $completelangiso"
13293 # check the configured localizations
13294 WITH_LANG="$with_lang"
13296 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13297 # (Norwegian is "nb" and "nn".)
13298 if test "$WITH_LANG" = "no"; then
13302 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13303 AC_MSG_RESULT([en-US])
13305 AC_MSG_RESULT([$WITH_LANG])
13306 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13307 if test -z "$MSGFMT"; then
13308 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13309 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13310 elif test -x "/opt/lo/bin/msgfmt"; then
13311 MSGFMT="/opt/lo/bin/msgfmt"
13313 AC_CHECK_PROGS(MSGFMT, [msgfmt])
13314 if test -z "$MSGFMT"; then
13315 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13319 if test -z "$MSGUNIQ"; then
13320 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13321 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13322 elif test -x "/opt/lo/bin/msguniq"; then
13323 MSGUNIQ="/opt/lo/bin/msguniq"
13325 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13326 if test -z "$MSGUNIQ"; then
13327 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13334 # check that the list is valid
13335 for lang in $WITH_LANG; do
13336 test "$lang" = "ALL" && continue
13337 # need to check for the exact string, so add space before and after the list of all languages
13338 for vl in $ALL_LANGS; do
13339 if test "$vl" = "$lang"; then
13343 if test "$vl" != "$lang"; then
13344 # if you're reading this - you prolly quoted your languages remove the quotes ...
13345 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13348 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13349 echo $WITH_LANG | grep -q en-US
13350 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13352 # list with substituted ALL
13353 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13354 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13355 test "$WITH_LANG" = "en-US" && WITH_LANG=
13356 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13357 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13358 ALL_LANGS=`echo $ALL_LANGS qtz`
13360 AC_SUBST(ALL_LANGS)
13361 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13362 AC_SUBST(WITH_LANG)
13363 AC_SUBST(WITH_LANG_LIST)
13364 AC_SUBST(GIT_NEEDED_SUBMODULES)
13366 WITH_POOR_HELP_LOCALIZATIONS=
13367 if test -d "$SRC_ROOT/translations/source"; then
13368 for l in `ls -1 $SRC_ROOT/translations/source`; do
13369 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13370 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13374 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13376 if test -n "$with_locales"; then
13377 WITH_LOCALES="$with_locales"
13379 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13380 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13381 # config_host/config_locales.h.in
13382 for locale in $WITH_LOCALES; do
13385 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13389 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13392 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13397 AC_DEFINE(WITH_LOCALE_ALL)
13399 AC_SUBST(WITH_LOCALES)
13401 dnl git submodule update --reference
13402 dnl ===================================================================
13403 if test -n "${GIT_REFERENCE_SRC}"; then
13404 for repo in ${GIT_NEEDED_SUBMODULES}; do
13405 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13406 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13410 AC_SUBST(GIT_REFERENCE_SRC)
13412 dnl git submodules linked dirs
13413 dnl ===================================================================
13414 if test -n "${GIT_LINK_SRC}"; then
13415 for repo in ${GIT_NEEDED_SUBMODULES}; do
13416 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13417 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13421 AC_SUBST(GIT_LINK_SRC)
13424 dnl ===================================================================
13425 AC_MSG_CHECKING([for alternative branding images directory])
13426 # initialize mapped arrays
13427 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13428 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg about.svg"
13430 if test -z "$with_branding" -o "$with_branding" = "no"; then
13431 AC_MSG_RESULT([none])
13432 DEFAULT_BRAND_IMAGES="$brand_files"
13434 if ! test -d $with_branding ; then
13435 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13437 AC_MSG_RESULT([$with_branding])
13438 CUSTOM_BRAND_DIR="$with_branding"
13439 for lfile in $brand_files
13441 if ! test -f $with_branding/$lfile ; then
13442 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13443 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13445 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13448 check_for_progress="yes"
13451 AC_SUBST([BRAND_INTRO_IMAGES])
13452 AC_SUBST([CUSTOM_BRAND_DIR])
13453 AC_SUBST([CUSTOM_BRAND_IMAGES])
13454 AC_SUBST([DEFAULT_BRAND_IMAGES])
13457 AC_MSG_CHECKING([for 'intro' progress settings])
13461 PROGRESSFRAMECOLOR=
13463 PROGRESSTEXTBASELINE=
13465 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13466 source "$with_branding/progress.conf"
13467 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13469 AC_MSG_RESULT([none])
13472 AC_SUBST(PROGRESSBARCOLOR)
13473 AC_SUBST(PROGRESSSIZE)
13474 AC_SUBST(PROGRESSPOSITION)
13475 AC_SUBST(PROGRESSFRAMECOLOR)
13476 AC_SUBST(PROGRESSTEXTCOLOR)
13477 AC_SUBST(PROGRESSTEXTBASELINE)
13480 dnl ===================================================================
13481 dnl Custom build version
13482 dnl ===================================================================
13483 AC_MSG_CHECKING([for extra build ID])
13484 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13485 EXTRA_BUILDID="$with_extra_buildid"
13487 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13488 if test -n "$EXTRA_BUILDID" ; then
13489 AC_MSG_RESULT([$EXTRA_BUILDID])
13491 AC_MSG_RESULT([not set])
13493 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13496 AC_MSG_CHECKING([for vendor])
13497 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13498 OOO_VENDOR="$USERNAME"
13500 if test -z "$OOO_VENDOR"; then
13504 if test -z "$OOO_VENDOR"; then
13505 OOO_VENDOR="`id -u -n`"
13508 AC_MSG_RESULT([not set, using $OOO_VENDOR])
13510 OOO_VENDOR="$with_vendor"
13511 AC_MSG_RESULT([$OOO_VENDOR])
13513 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13514 AC_SUBST(OOO_VENDOR)
13516 if test "$_os" = "Android" ; then
13517 ANDROID_PACKAGE_NAME=
13518 AC_MSG_CHECKING([for Android package name])
13519 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13520 if test -n "$ENABLE_DEBUG"; then
13521 # Default to the package name that makes ndk-gdb happy.
13522 ANDROID_PACKAGE_NAME="org.libreoffice"
13524 ANDROID_PACKAGE_NAME="org.example.libreoffice"
13527 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13529 ANDROID_PACKAGE_NAME="$with_android_package_name"
13530 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13532 AC_SUBST(ANDROID_PACKAGE_NAME)
13535 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13536 if test "$with_compat_oowrappers" = "yes"; then
13537 WITH_COMPAT_OOWRAPPERS=TRUE
13540 WITH_COMPAT_OOWRAPPERS=
13543 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13545 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13546 AC_MSG_CHECKING([for install dirname])
13547 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13548 INSTALLDIRNAME="$with_install_dirname"
13550 AC_MSG_RESULT([$INSTALLDIRNAME])
13551 AC_SUBST(INSTALLDIRNAME)
13553 AC_MSG_CHECKING([for prefix])
13554 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13555 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13556 PREFIXDIR="$prefix"
13557 AC_MSG_RESULT([$PREFIXDIR])
13558 AC_SUBST(PREFIXDIR)
13560 LIBDIR=[$(eval echo $(eval echo $libdir))]
13563 DATADIR=[$(eval echo $(eval echo $datadir))]
13566 MANDIR=[$(eval echo $(eval echo $mandir))]
13569 DOCDIR=[$(eval echo $(eval echo $docdir))]
13572 BINDIR=[$(eval echo $(eval echo $bindir))]
13575 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
13576 AC_SUBST(INSTALLDIR)
13578 TESTINSTALLDIR="${BUILDDIR}/test-install"
13579 AC_SUBST(TESTINSTALLDIR)
13582 # ===================================================================
13583 # OAuth2 id and secrets
13584 # ===================================================================
13586 AC_MSG_CHECKING([for Google Drive client id and secret])
13587 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
13588 AC_MSG_RESULT([not set])
13589 GDRIVE_CLIENT_ID="\"\""
13590 GDRIVE_CLIENT_SECRET="\"\""
13592 AC_MSG_RESULT([set])
13593 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
13594 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
13596 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
13597 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
13599 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
13600 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
13601 AC_MSG_RESULT([not set])
13602 ALFRESCO_CLOUD_CLIENT_ID="\"\""
13603 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
13605 AC_MSG_RESULT([set])
13606 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
13607 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
13609 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
13610 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
13612 AC_MSG_CHECKING([for OneDrive client id and secret])
13613 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
13614 AC_MSG_RESULT([not set])
13615 ONEDRIVE_CLIENT_ID="\"\""
13616 ONEDRIVE_CLIENT_SECRET="\"\""
13618 AC_MSG_RESULT([set])
13619 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
13620 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
13622 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
13623 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
13626 dnl ===================================================================
13627 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
13628 dnl --enable-dependency-tracking configure option
13629 dnl ===================================================================
13630 AC_MSG_CHECKING([whether to enable dependency tracking])
13631 if test "$enable_dependency_tracking" = "no"; then
13633 AC_MSG_RESULT([no])
13635 AC_MSG_RESULT([yes])
13639 dnl ===================================================================
13640 dnl Number of CPUs to use during the build
13641 dnl ===================================================================
13642 AC_MSG_CHECKING([for number of processors to use])
13643 # plain --with-parallelism is just the default
13644 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
13645 if test "$with_parallelism" = "no"; then
13648 PARALLELISM=$with_parallelism
13651 if test "$enable_icecream" = "yes"; then
13656 Darwin|FreeBSD|NetBSD|OpenBSD)
13657 PARALLELISM=`sysctl -n hw.ncpu`
13661 PARALLELISM=`getconf _NPROCESSORS_ONLN`
13663 # what else than above does profit here *and* has /proc?
13665 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
13669 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
13670 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
13674 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
13675 if test -z "$with_parallelism"; then
13676 AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
13677 add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
13680 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."
13684 if test $PARALLELISM -eq 0; then
13685 AC_MSG_RESULT([explicit make -j option needed])
13687 AC_MSG_RESULT([$PARALLELISM])
13689 AC_SUBST(PARALLELISM)
13691 IWYU_PATH="$with_iwyu"
13692 AC_SUBST(IWYU_PATH)
13693 if test ! -z "$IWYU_PATH"; then
13694 if test ! -f "$IWYU_PATH"; then
13695 AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
13700 # Set up ILIB for MSVC build
13703 if test "$build_os" = "cygwin"; then
13705 if test -n "$JAVA_HOME"; then
13706 ILIB="$ILIB;$JAVA_HOME/lib"
13709 ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
13710 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
13711 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13712 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13713 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
13714 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13715 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13717 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
13718 ucrtlibpath_formatted=$formatted_path
13719 ILIB="$ILIB;$ucrtlibpath_formatted"
13720 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
13721 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
13722 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
13724 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
13727 if test "$cross_compiling" != "yes"; then
13728 ILIB_FOR_BUILD="$ILIB"
13732 AC_SUBST(ILIB_FOR_BUILD)
13734 # ===================================================================
13735 # Creating bigger shared library to link against
13736 # ===================================================================
13737 AC_MSG_CHECKING([whether to create huge library])
13740 if test $_os = iOS -o $_os = Android; then
13741 # Never any point in mergelibs for these as we build just static
13742 # libraries anyway...
13743 enable_mergelibs=no
13746 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
13747 if test $_os != Linux -a $_os != WINNT; then
13748 add_warning "--enable-mergelibs is not tested for this platform"
13751 AC_MSG_RESULT([yes])
13752 AC_DEFINE(ENABLE_MERGELIBS)
13754 AC_MSG_RESULT([no])
13756 AC_SUBST([MERGELIBS])
13758 dnl ===================================================================
13759 dnl icerun is a wrapper that stops us spawning tens of processes
13760 dnl locally - for tools that can't be executed on the compile cluster
13761 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
13762 dnl ===================================================================
13763 AC_MSG_CHECKING([whether to use icerun wrapper])
13765 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
13766 ICECREAM_RUN=icerun
13767 AC_MSG_RESULT([yes])
13769 AC_MSG_RESULT([no])
13771 AC_SUBST(ICECREAM_RUN)
13773 dnl ===================================================================
13774 dnl Setup the ICECC_VERSION for the build the same way it was set for
13775 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
13776 dnl ===================================================================
13777 x_ICECC_VERSION=[\#]
13778 if test -n "$ICECC_VERSION" ; then
13781 AC_SUBST(x_ICECC_VERSION)
13782 AC_SUBST(ICECC_VERSION)
13784 dnl ===================================================================
13786 AC_MSG_CHECKING([MPL subset])
13789 if test "$enable_mpl_subset" = "yes"; then
13791 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
13793 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
13796 if test "$warn_report" = "true"; then
13797 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
13799 if test "x$enable_postgresql_sdbc" != "xno"; then
13800 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
13802 if test "$enable_lotuswordpro" = "yes"; then
13803 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
13805 if test "$WITH_WEBDAV" = "neon"; then
13806 AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
13808 if test -n "$ENABLE_POPPLER"; then
13809 if test "x$SYSTEM_POPPLER" = "x"; then
13810 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
13813 # cf. m4/libo_check_extension.m4
13814 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
13815 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
13817 for theme in $WITH_THEMES; do
13819 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
13820 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
13825 ENABLE_OPENGL_TRANSITIONS=
13827 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
13828 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
13832 AC_DEFINE(MPL_HAVE_SUBSET)
13833 AC_MSG_RESULT([only])
13835 AC_MSG_RESULT([no restrictions])
13837 AC_SUBST(MPL_SUBSET)
13839 dnl ===================================================================
13841 AC_MSG_CHECKING([formula logger])
13842 ENABLE_FORMULA_LOGGER=
13844 if test "x$enable_formula_logger" = "xyes"; then
13845 AC_MSG_RESULT([yes])
13846 AC_DEFINE(ENABLE_FORMULA_LOGGER)
13847 ENABLE_FORMULA_LOGGER=TRUE
13848 elif test -n "$ENABLE_DBGUTIL" ; then
13849 AC_MSG_RESULT([yes])
13850 AC_DEFINE(ENABLE_FORMULA_LOGGER)
13851 ENABLE_FORMULA_LOGGER=TRUE
13853 AC_MSG_RESULT([no])
13856 AC_SUBST(ENABLE_FORMULA_LOGGER)
13858 dnl ===================================================================
13859 dnl Checking for active Antivirus software.
13860 dnl ===================================================================
13862 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
13863 AC_MSG_CHECKING([for active Antivirus software])
13864 ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
13865 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
13866 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
13867 AC_MSG_RESULT([found])
13868 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
13869 echo $EICAR_STRING > $SRC_ROOT/eicar
13870 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
13872 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13873 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13875 echo $EICAR_STRING > $BUILDDIR/eicar
13876 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
13878 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13879 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13881 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"
13883 AC_MSG_RESULT([not found])
13886 AC_MSG_RESULT([n/a])
13890 dnl ===================================================================
13891 dnl Setting up the environment.
13892 dnl ===================================================================
13893 AC_MSG_NOTICE([setting up the build environment variables...])
13897 if test "$build_os" = "cygwin"; then
13898 if test -d "$COMPATH/atlmfc/lib/spectre"; then
13899 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
13900 ATL_INCLUDE="$COMPATH/atlmfc/include"
13901 elif test -d "$COMPATH/atlmfc/lib"; then
13902 ATL_LIB="$COMPATH/atlmfc/lib"
13903 ATL_INCLUDE="$COMPATH/atlmfc/include"
13905 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
13906 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
13908 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
13909 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
13910 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
13912 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
13913 PathFormat "/usr/bin/find.exe"
13914 FIND="$formatted_path"
13915 PathFormat "/usr/bin/sort.exe"
13916 SORT="$formatted_path"
13917 PathFormat "/usr/bin/grep.exe"
13918 WIN_GREP="$formatted_path"
13919 PathFormat "/usr/bin/ls.exe"
13920 WIN_LS="$formatted_path"
13921 PathFormat "/usr/bin/touch.exe"
13922 WIN_TOUCH="$formatted_path"
13928 AC_SUBST(ATL_INCLUDE)
13934 AC_SUBST(WIN_TOUCH)
13936 AC_SUBST(BUILD_TYPE)
13941 PERL="$formatted_path"
13944 if test -n "$TMPDIR"; then
13945 TEMP_DIRECTORY="$TMPDIR"
13947 TEMP_DIRECTORY="/tmp"
13949 if test "$build_os" = "cygwin"; then
13950 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
13952 AC_SUBST(TEMP_DIRECTORY)
13954 # setup the PATH for the environment
13955 if test -n "$LO_PATH_FOR_BUILD"; then
13956 LO_PATH="$LO_PATH_FOR_BUILD"
13959 pathmunge "$MSVC_HOST_PATH" "before"
13967 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
13968 if test "$ENABLE_JAVA" != ""; then
13969 pathmunge "$JAVA_HOME/bin" "after"
13974 # Win32 make needs native paths
13975 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
13976 LO_PATH=`cygpath -p -m "$PATH"`
13978 if test "$WIN_BUILD_ARCH" = "x64"; then
13979 # needed for msi packaging
13980 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
13982 # .NET 4.6 and higher don't have bin directory
13983 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
13984 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
13986 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
13987 pathmunge "$CSC_PATH" "before"
13988 pathmunge "$MIDL_PATH" "before"
13989 pathmunge "$AL_PATH" "before"
13990 pathmunge "$MSVC_MULTI_PATH" "before"
13991 pathmunge "$MSVC_BUILD_PATH" "before"
13992 if test -n "$MSBUILD_PATH" ; then
13993 pathmunge "$MSBUILD_PATH" "before"
13995 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
13996 if test "$ENABLE_JAVA" != ""; then
13997 if test -d "$JAVA_HOME/jre/bin/client"; then
13998 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14000 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14001 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14003 pathmunge "$JAVA_HOME/bin" "before"
14005 pathmunge "$MSVC_HOST_PATH" "before"
14009 pathmunge "/usr/css/bin" "before"
14010 if test "$ENABLE_JAVA" != ""; then
14011 pathmunge "$JAVA_HOME/bin" "after"
14019 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14020 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14021 x_LO_ELFCHECK_ALLOWLIST=
14023 x_LO_ELFCHECK_ALLOWLIST=[\#]
14025 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14026 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14030 # Generate a configuration sha256 we can use for deps
14031 if test -f config_host.mk; then
14032 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14034 if test -f config_host_lang.mk; then
14035 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14038 CFLAGS=$my_original_CFLAGS
14039 CXXFLAGS=$my_original_CXXFLAGS
14040 CPPFLAGS=$my_original_CPPFLAGS
14042 AC_CONFIG_LINKS([include:include])
14044 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14045 # BUILD platform configuration] - otherwise breaks cross building
14046 AC_CONFIG_FILES([config_host.mk
14047 config_host_lang.mk
14049 bin/bffvalidator.sh
14050 bin/odfvalidator.sh
14052 hardened_runtime.xcent
14053 instsetoo_native/util/openoffice.lst
14054 sysui/desktop/macosx/Info.plist])
14055 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14056 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14057 AC_CONFIG_HEADERS([config_host/config_clang.h])
14058 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14059 AC_CONFIG_HEADERS([config_host/config_eot.h])
14060 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14061 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14062 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14063 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14064 AC_CONFIG_HEADERS([config_host/config_features.h])
14065 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14066 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14067 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14068 AC_CONFIG_HEADERS([config_host/config_folders.h])
14069 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14070 AC_CONFIG_HEADERS([config_host/config_gio.h])
14071 AC_CONFIG_HEADERS([config_host/config_global.h])
14072 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14073 AC_CONFIG_HEADERS([config_host/config_java.h])
14074 AC_CONFIG_HEADERS([config_host/config_langs.h])
14075 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14076 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14077 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14078 AC_CONFIG_HEADERS([config_host/config_locales.h])
14079 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14080 AC_CONFIG_HEADERS([config_host/config_oox.h])
14081 AC_CONFIG_HEADERS([config_host/config_options.h])
14082 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14083 AC_CONFIG_HEADERS([config_host/config_qrcodegen.h])
14084 AC_CONFIG_HEADERS([config_host/config_skia.h])
14085 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14086 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14087 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14088 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14089 AC_CONFIG_HEADERS([config_host/config_version.h])
14090 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14091 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14092 AC_CONFIG_HEADERS([config_host/config_python.h])
14093 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14096 if test "$CROSS_COMPILING" = TRUE; then
14097 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14100 # touch the config timestamp file
14101 if test ! -f config_host.mk.stamp; then
14102 echo > config_host.mk.stamp
14103 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14104 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14106 echo > config_host.mk.stamp
14109 # touch the config lang timestamp file
14110 if test ! -f config_host_lang.mk.stamp; then
14111 echo > config_host_lang.mk.stamp
14112 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14113 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14115 echo > config_host_lang.mk.stamp
14119 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14120 -a "$build_os" = "cygwin"; then
14123 ****************************************************************************
14125 Your make version is known to be horribly slow, and hard to debug
14126 problems with. To get a reasonably functional make please do:
14128 to install a pre-compiled binary make for Win32
14130 mkdir -p /opt/lo/bin
14132 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14133 cp make-4.2.1-msvc.exe make
14136 to install from source:
14137 place yourself in a working directory of you choice.
14139 git clone git://git.savannah.gnu.org/make.git
14141 [go to Start menu, open "Visual Studio 2019", click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14142 set PATH=%PATH%;C:\Cygwin\bin
14143 [or Cygwin64, if that is what you have]
14144 cd path-to-make-repo-you-cloned-above
14145 build_w32.bat --without-guile
14147 should result in a WinRel/gnumake.exe.
14148 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14150 Then re-run autogen.sh
14152 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14153 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14156 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14157 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14163 ****************************************************************************
14168 To view some help, run:
14173 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14175 After the build has finished successfully, you can immediately run what you built using the command:
14178 if test $_os = Darwin; then
14179 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14181 echo instdir/program/soffice
14185 If you want to run the smoketest, run:
14191 if test -f warn; then
14196 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: