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.1.0.0.alpha1+],[],[],[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 -z "$MACOSX_CODESIGNING_IDENTITY" -a "$enable_macosx_sandbox" = yes; then
3357 AC_MSG_ERROR([macOS sandboxing requires code signing])
3358 elif test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3359 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3360 elif test -n "$MACOSX_CODESIGNING_IDENTITY" -a "$enable_macosx_sandbox" = yes; then
3361 ENABLE_MACOSX_SANDBOX=TRUE
3362 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3363 AC_MSG_RESULT([yes])
3368 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3369 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3370 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3372 AC_SUBST(MACOSX_SDK_PATH)
3373 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3374 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3375 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3376 AC_SUBST(INSTALL_NAME_TOOL)
3377 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3378 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3379 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3380 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3381 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3383 dnl ===================================================================
3384 dnl Check iOS SDK and compiler
3385 dnl ===================================================================
3387 if test $_os = iOS; then
3388 AC_MSG_CHECKING([what iOS SDK to use])
3389 current_sdk_ver=14.1
3390 older_sdk_vers="14.0 13.7 13.6 13.5 13.4 13.2 13.1 13.0 12.4 12.2"
3391 if test "$enable_ios_simulator" = "yes"; then
3392 platform=iPhoneSimulator
3393 versionmin=-mios-simulator-version-min=12.2
3396 versionmin=-miphoneos-version-min=12.2
3398 xcode_developer=`xcode-select -print-path`
3400 for sdkver in $current_sdk_ver $older_sdk_vers; do
3401 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3408 if test -z "$sysroot"; then
3409 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3412 AC_MSG_RESULT($sysroot)
3414 stdlib="-stdlib=libc++"
3416 AC_MSG_CHECKING([what C compiler to use])
3417 CC="`xcrun -find clang`"
3418 CC_BASE=`first_arg_basename "$CC"`
3419 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3420 AC_MSG_RESULT([$CC])
3422 AC_MSG_CHECKING([what C++ compiler to use])
3423 CXX="`xcrun -find clang++`"
3424 CXX_BASE=`first_arg_basename "$CXX"`
3425 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3426 AC_MSG_RESULT([$CXX])
3428 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3431 STRIP=`xcrun -find strip`
3432 LIBTOOL=`xcrun -find libtool`
3433 RANLIB=`xcrun -find ranlib`
3436 AC_MSG_CHECKING([whether to treat the installation as read-only])
3438 if test $_os = Darwin; then
3439 enable_readonly_installset=yes
3440 elif test "$enable_extensions" != yes; then
3441 enable_readonly_installset=yes
3443 if test "$enable_readonly_installset" = yes; then
3444 AC_MSG_RESULT([yes])
3445 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3450 dnl ===================================================================
3451 dnl Structure of install set
3452 dnl ===================================================================
3454 if test $_os = Darwin; then
3455 LIBO_BIN_FOLDER=MacOS
3456 LIBO_ETC_FOLDER=Resources
3457 LIBO_LIBEXEC_FOLDER=MacOS
3458 LIBO_LIB_FOLDER=Frameworks
3459 LIBO_LIB_PYUNO_FOLDER=Resources
3460 LIBO_SHARE_FOLDER=Resources
3461 LIBO_SHARE_HELP_FOLDER=Resources/help
3462 LIBO_SHARE_JAVA_FOLDER=Resources/java
3463 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3464 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3465 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3466 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3467 LIBO_URE_BIN_FOLDER=MacOS
3468 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3469 LIBO_URE_LIB_FOLDER=Frameworks
3470 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3471 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3472 elif test $_os = WINNT; then
3473 LIBO_BIN_FOLDER=program
3474 LIBO_ETC_FOLDER=program
3475 LIBO_LIBEXEC_FOLDER=program
3476 LIBO_LIB_FOLDER=program
3477 LIBO_LIB_PYUNO_FOLDER=program
3478 LIBO_SHARE_FOLDER=share
3479 LIBO_SHARE_HELP_FOLDER=help
3480 LIBO_SHARE_JAVA_FOLDER=program/classes
3481 LIBO_SHARE_PRESETS_FOLDER=presets
3482 LIBO_SHARE_READMES_FOLDER=readmes
3483 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3484 LIBO_SHARE_SHELL_FOLDER=program/shell
3485 LIBO_URE_BIN_FOLDER=program
3486 LIBO_URE_ETC_FOLDER=program
3487 LIBO_URE_LIB_FOLDER=program
3488 LIBO_URE_MISC_FOLDER=program
3489 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3491 LIBO_BIN_FOLDER=program
3492 LIBO_ETC_FOLDER=program
3493 LIBO_LIBEXEC_FOLDER=program
3494 LIBO_LIB_FOLDER=program
3495 LIBO_LIB_PYUNO_FOLDER=program
3496 LIBO_SHARE_FOLDER=share
3497 LIBO_SHARE_HELP_FOLDER=help
3498 LIBO_SHARE_JAVA_FOLDER=program/classes
3499 LIBO_SHARE_PRESETS_FOLDER=presets
3500 LIBO_SHARE_READMES_FOLDER=readmes
3501 if test "$enable_fuzzers" != yes; then
3502 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3504 LIBO_SHARE_RESOURCE_FOLDER=resource
3506 LIBO_SHARE_SHELL_FOLDER=program/shell
3507 LIBO_URE_BIN_FOLDER=program
3508 LIBO_URE_ETC_FOLDER=program
3509 LIBO_URE_LIB_FOLDER=program
3510 LIBO_URE_MISC_FOLDER=program
3511 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3513 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3514 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3515 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3516 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3517 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3518 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3519 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3520 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3521 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3522 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3523 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3524 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3525 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3526 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3527 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3528 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3530 # Not all of them needed in config_host.mk, add more if need arises
3531 AC_SUBST(LIBO_BIN_FOLDER)
3532 AC_SUBST(LIBO_ETC_FOLDER)
3533 AC_SUBST(LIBO_LIB_FOLDER)
3534 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3535 AC_SUBST(LIBO_SHARE_FOLDER)
3536 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3537 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3538 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3539 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3540 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3541 AC_SUBST(LIBO_URE_BIN_FOLDER)
3542 AC_SUBST(LIBO_URE_ETC_FOLDER)
3543 AC_SUBST(LIBO_URE_LIB_FOLDER)
3544 AC_SUBST(LIBO_URE_MISC_FOLDER)
3545 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3547 dnl ===================================================================
3548 dnl Windows specific tests and stuff
3549 dnl ===================================================================
3553 # Return value: $regvalue
3556 if test "$build_os" = "wsl"; then
3557 regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3561 local _regentry="/proc/registry${1}/${2}"
3562 if test -f "$_regentry"; then
3563 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3564 # Registry keys read via /proc/registry* are always \0 terminated!
3565 local _regvalue=$(tr -d '\0' < "$_regentry")
3566 if test $? -eq 0; then
3572 # Get a value from the 32-bit side of the Registry
3575 reg_get_value "32" "$1"
3578 # Get a value from the 64-bit side of the Registry
3581 reg_get_value "64" "$1"
3590 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3599 PLATFORMID=windows_x86_64
3601 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3603 WIN_MULTI_ARCH="x86"
3609 PLATFORMID=windows_x86
3612 WIN_OTHER_ARCH="x64"
3617 PLATFORMID=windows_arm64
3619 SCPDEFS="$SCPDEFS -DWINDOWS_ARM64"
3620 WIN_HOST_ARCH="arm64"
3625 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3629 case "$build_cpu" in
3630 x86_64) WIN_BUILD_ARCH="x64" ;;
3631 i*86) WIN_BUILD_ARCH="x86" ;;
3632 aarch64) WIN_BUILD_ARCH="arm64" ;;
3634 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3638 SCPDEFS="$SCPDEFS -D_MSC_VER"
3642 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3643 # other-arch won't, but wouldn't break the build (x64 on x86).
3644 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3645 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3649 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3650 # To allow building Windows multi-arch releases without cross-tooling
3651 if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3652 cross_compiling="yes"
3655 if test "$cross_compiling" = "yes"; then
3656 export CROSS_COMPILING=TRUE
3659 BUILD_TYPE="$BUILD_TYPE NATIVE"
3661 AC_SUBST(CROSS_COMPILING)
3663 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3664 # NOTE: must _not_ be used for bundled external libraries!
3666 if test "$GCC" = "yes"; then
3667 AC_MSG_CHECKING( for -isystem )
3669 CFLAGS="$CFLAGS -Werror"
3670 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3672 if test -n "$ISYSTEM"; then
3678 if test -z "$ISYSTEM"; then
3679 # fall back to using -I
3684 dnl ===================================================================
3685 dnl Check which Visual Studio compiler is used
3686 dnl ===================================================================
3688 map_vs_year_to_version()
3690 # Return value: $vsversion
3698 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3702 vs_versions_to_check()
3704 # Args: $1 (optional) : versions to check, in the order of preference
3705 # Return value: $vsversions
3709 if test -n "$1"; then
3710 map_vs_year_to_version "$1"
3711 vsversions=$vsversion
3713 # We accept only 2019
3718 win_get_env_from_vsvars32bat()
3720 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3721 # Also seems to be located in another directory under the same name: vsvars32.bat
3722 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3723 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3724 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3725 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3727 if test "$build_os" = "wsl"; then
3728 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3730 chmod +x $WRAPPERBATCHFILEPATH
3731 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3733 rm -f $WRAPPERBATCHFILEPATH
3734 printf '%s' "$result"
3739 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3740 if test -n "$regvalue"; then
3741 PathFormat "$regvalue"
3742 UCRTSDKDIR=$formatted_path_unix
3743 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3744 UCRTVERSION=$regvalue
3746 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3750 if test -z "$UCRTSDKDIR"; then
3751 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3752 ide_env_file="${ide_env_dir}VsDevCmd.bat"
3753 if test -f "$ide_env_file"; then
3754 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3755 UCRTSDKDIR=$formatted_path
3756 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3757 dnl Hack needed at least by tml:
3758 if test "$UCRTVERSION" = 10.0.15063.0 \
3759 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3760 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3762 UCRTVERSION=10.0.14393.0
3765 AC_MSG_ERROR([No UCRT found])
3772 # Find Visual C++ 2019
3773 # Args: $1 (optional) : The VS version year
3774 # Return values: $vctest, $vcyear, $vcnum, $vcnumwithdot, $vcbuildnumber
3776 unset vctest vcnum vcnumwithdot vcbuildnumber
3778 vs_versions_to_check "$1"
3779 if test "$build_os" = wsl; then
3780 vswhere="$PROGRAMFILESX86"
3782 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3784 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3785 PathFormat "$vswhere"
3786 vswhere=$formatted_path_unix
3787 for ver in $vsversions; do
3788 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3789 # Fall back to all MS products (this includes VC++ Build Tools)
3790 if ! test -n "$vswhereoutput"; then
3791 AC_MSG_CHECKING([VC++ Build Tools and similar])
3792 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3794 if test -n "$vswhereoutput"; then
3795 PathFormat "$vswhereoutput"
3796 vctest=$formatted_path_unix
3801 if test -n "$vctest"; then
3802 vcnumwithdot="$ver.0"
3803 case "$vcnumwithdot" in
3809 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3816 AC_MSG_CHECKING([$1 compiler])
3818 CL_EXE_PATH="$2/cl.exe"
3820 if test ! -f "$CL_EXE_PATH"; then
3821 if test "$1" = "multi-arch"; then
3822 AC_MSG_WARN([no compiler (cl.exe) in $2])
3825 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3829 dnl ===========================================================
3830 dnl Check for the corresponding mspdb*.dll
3831 dnl ===========================================================
3833 # MSVC 15.0 has libraries from 14.0?
3836 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3837 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3840 # The compiles has to find its shared libraries
3842 TEMP_PATH=`cygpath -d "$2"`
3843 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3845 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3846 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3851 AC_MSG_RESULT([$CL_EXE_PATH])
3857 if test "$_os" = "WINNT"; then
3858 AC_MSG_CHECKING([Visual C++])
3859 find_msvc "$with_visual_studio"
3860 if test -z "$vctest"; then
3861 if test -n "$with_visual_studio"; then
3862 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3864 AC_MSG_ERROR([no Visual Studio 2019 installation found])
3869 VC_PRODUCT_DIR="$vctest/VC"
3870 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3872 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3873 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3874 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3875 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3876 if test $? -ne 0; then
3882 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3883 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3884 test_cl_exe "build" "$MSVC_BUILD_PATH"
3887 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3888 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3889 test_cl_exe "host" "$MSVC_HOST_PATH"
3891 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
3894 AC_MSG_CHECKING([for short pathname of VC product directory])
3895 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
3896 AC_MSG_RESULT([$VC_PRODUCT_DIR])
3901 AC_MSG_CHECKING([for UCRT location])
3903 # find_ucrt errors out if it doesn't find it
3904 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
3905 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
3906 ucrtincpath_formatted=$formatted_path
3907 # SOLARINC is used for external modules and must be set too.
3908 # And no, it's not sufficient to set SOLARINC only, as configure
3909 # itself doesn't honour it.
3910 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
3911 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
3912 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
3913 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
3915 AC_SUBST(UCRTSDKDIR)
3916 AC_SUBST(UCRTVERSION)
3918 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
3919 # Find the proper version of MSBuild.exe to use based on the VS version
3920 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
3921 if test -n "$regvalue" ; then
3922 AC_MSG_RESULT([found: $regvalue])
3923 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3925 if test "$vcnumwithdot" = "16.0"; then
3926 if test "$WIN_BUILD_ARCH" != "x64"; then
3927 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
3929 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
3932 if test "$WIN_BUILD_ARCH" != "x64"; then
3933 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin"
3935 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64"
3938 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3939 AC_MSG_RESULT([$regvalue])
3942 # Find the version of devenv.exe
3943 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
3944 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
3945 DEVENV_unix=$(cygpath -u "$DEVENV")
3946 if test ! -e "$DEVENV_unix"; then
3947 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
3950 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
3951 dnl needed when building CLR code:
3952 if test -z "$MSVC_CXX"; then
3953 # This gives us a posix path with 8.3 filename restrictions
3954 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
3957 if test -z "$CC"; then
3959 CC_BASE=`first_arg_basename "$CC"`
3961 if test -z "$CXX"; then
3963 CXX_BASE=`first_arg_basename "$CXX"`
3966 if test -n "$CC"; then
3967 # Remove /cl.exe from CC case insensitive
3968 AC_MSG_NOTICE([found Visual C++ $vcyear])
3970 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
3971 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
3973 PathFormat "$COMPATH"
3974 COMPATH=`win_short_path_for_make "$formatted_path"`
3978 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
3979 # are always "better", we list them in reverse chronological order.
3983 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
3987 # The expectation is that --with-windows-sdk should not need to be used
3988 if test -n "$with_windows_sdk"; then
3989 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
3990 *" "$with_windows_sdk" "*)
3991 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
3994 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
3999 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4004 AC_MSG_ERROR([Visual C++ not found after all, huh])
4007 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.4])
4008 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4009 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4010 // between Visual Studio versions and _MSC_VER:
4014 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4016 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4017 # version of the Explorer extension (and maybe other small
4018 # bits, too) needed when installing a 32-bit LibreOffice on a
4019 # 64-bit OS. The 64-bit Explorer extension is a feature that
4020 # has been present since long in OOo. Don't confuse it with
4021 # building LibreOffice itself as 64-bit code.
4026 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4027 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4028 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4029 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4032 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4033 AC_MSG_RESULT([found])
4035 AC_MSG_RESULT([not found])
4036 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4038 elif test "$WIN_HOST_ARCH" = "x64"; then
4043 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4044 AC_SUBST(CXX_X64_BINARY)
4046 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4047 # needed to support TWAIN scan on both 32- and 64-bit systems
4049 case "$WIN_HOST_ARCH" in
4051 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4052 if test -n "$CXX_X86_BINARY"; then
4054 AC_MSG_RESULT([preset])
4055 elif test -n "$WIN_MULTI_ARCH"; then
4057 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4058 CXX_X86_BINARY+=" /arch:SSE"
4059 AC_MSG_RESULT([found])
4061 AC_MSG_RESULT([not found])
4062 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4067 CXX_X86_BINARY=$MSVC_CXX
4071 AC_SUBST(CXX_X86_BINARY)
4080 UNOWINREG_DLL="185d60944ea767075d27247c3162b3bc-unowinreg.dll"
4081 AC_SUBST(UNOWINREG_DLL)
4084 AC_MSG_CHECKING([whether the compiler is actually Clang])
4085 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4091 [AC_MSG_RESULT([yes])
4093 [AC_MSG_RESULT([no])])
4094 AC_SUBST(COM_IS_CLANG)
4098 if test "$COM_IS_CLANG" = TRUE; then
4099 AC_MSG_CHECKING([whether Clang is new enough])
4100 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4101 #if !defined __apple_build_version__
4105 [my_apple_clang=yes],[my_apple_clang=])
4106 if test "$my_apple_clang" = yes; then
4107 AC_MSG_RESULT([assumed yes (Apple Clang)])
4109 if test "$_os" = WINNT; then
4110 dnl In which case, assume clang-cl:
4112 dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4120 CC_PLAIN="$CC_PLAIN $i"
4127 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4128 CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4129 CLANGVER=`echo $clang_version \
4130 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4131 if test "$CLANGVER" -ge 50002; then
4132 AC_MSG_RESULT([yes ($clang_version)])
4134 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4136 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4137 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4141 SHOWINCLUDES_PREFIX=
4142 if test "$_os" = WINNT; then
4143 dnl We need to guess the prefix of the -showIncludes output, it can be
4145 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4146 echo "#include <stdlib.h>" > conftest.c
4147 SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4148 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4149 rm -f conftest.c conftest.obj
4150 if test -z "$SHOWINCLUDES_PREFIX"; then
4151 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4153 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4156 AC_SUBST(SHOWINCLUDES_PREFIX)
4159 # prefix C with ccache if needed
4161 if test "$CCACHE" != ""; then
4162 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4166 CFLAGS="$CFLAGS --ccache-skip -O2"
4167 dnl an empty program will do, we're checking the compiler flags
4168 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4169 [use_ccache=yes], [use_ccache=no])
4171 if test $use_ccache = yes; then
4172 AC_MSG_RESULT([yes])
4175 CC_BASE="ccache $CC_BASE"
4181 # ===================================================================
4182 # check various GCC options that Clang does not support now but maybe
4183 # will somewhen in the future, check them even for GCC, so that the
4185 # ===================================================================
4188 if test "$GCC" = "yes"; then
4189 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4191 CFLAGS="$CFLAGS -Werror -ggdb2"
4192 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4194 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4195 AC_MSG_RESULT([yes])
4200 if test "$host_cpu" = "m68k"; then
4201 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4203 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4204 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4206 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4207 AC_MSG_RESULT([yes])
4213 AC_SUBST(HAVE_GCC_GGDB2)
4215 dnl ===================================================================
4216 dnl Test the gcc version
4217 dnl ===================================================================
4218 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4219 AC_MSG_CHECKING([the GCC version])
4220 _gcc_version=`$CC -dumpversion`
4221 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4222 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4223 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4225 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4227 if test "$gcc_full_version" -lt 70000; then
4228 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4231 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4232 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4233 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4234 # (which reports itself as GCC 4.2.1).
4237 AC_SUBST(GCC_VERSION)
4239 dnl Set the ENABLE_DBGUTIL variable
4240 dnl ===================================================================
4241 AC_MSG_CHECKING([whether to build with additional debug utilities])
4242 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4243 ENABLE_DBGUTIL="TRUE"
4244 # this is an extra var so it can have different default on different MSVC
4245 # versions (in case there are version specific problems with it)
4246 MSVC_USE_DEBUG_RUNTIME="TRUE"
4248 AC_MSG_RESULT([yes])
4249 # cppunit and graphite expose STL in public headers
4250 if test "$with_system_cppunit" = "yes"; then
4251 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4253 with_system_cppunit=no
4255 if test "$with_system_graphite" = "yes"; then
4256 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4258 with_system_graphite=no
4260 if test "$with_system_orcus" = "yes"; then
4261 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4263 with_system_orcus=no
4265 if test "$with_system_libcmis" = "yes"; then
4266 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4268 with_system_libcmis=no
4270 if test "$with_system_hunspell" = "yes"; then
4271 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4273 with_system_hunspell=no
4275 if test "$with_system_gpgmepp" = "yes"; then
4276 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4278 with_system_gpgmepp=no
4280 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4281 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4282 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4283 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4284 # of those two is using the system variant:
4285 if test "$with_system_libnumbertext" = "yes"; then
4286 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4288 with_system_libnumbertext=no
4290 if test "$with_system_libwps" = "yes"; then
4291 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4293 with_system_libwps=no
4297 MSVC_USE_DEBUG_RUNTIME=""
4300 AC_SUBST(ENABLE_DBGUTIL)
4301 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4303 dnl Set the ENABLE_DEBUG variable.
4304 dnl ===================================================================
4305 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4306 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4308 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4309 if test -z "$libo_fuzzed_enable_debug"; then
4310 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4312 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4317 AC_MSG_CHECKING([whether to do a debug build])
4318 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4320 if test -n "$ENABLE_DBGUTIL" ; then
4321 AC_MSG_RESULT([yes (dbgutil)])
4323 AC_MSG_RESULT([yes])
4329 AC_SUBST(ENABLE_DEBUG)
4331 dnl ===================================================================
4332 dnl Select the linker to use (gold/lld/ld.bfd).
4333 dnl This is done only after compiler checks (need to know if Clang is
4334 dnl used, for different defaults) and after checking if a debug build
4335 dnl is wanted (non-debug builds get the default linker if not explicitly
4336 dnl specified otherwise).
4337 dnl All checks for linker features/options should come after this.
4338 dnl ===================================================================
4341 use_ld=-fuse-ld=${1%%:*}
4343 if test "$use_ld_path" != "$1"; then
4344 use_ld="$use_ld --ld-path=$use_ld_path"
4346 use_ld_fail_if_error=$2
4348 AC_MSG_CHECKING([for $use_ld linker support])
4349 use_ld_ldflags_save="$LDFLAGS"
4350 LDFLAGS="$LDFLAGS $use_ld"
4351 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4354 printf ("hello world\n");
4355 ])], USE_LD=$use_ld, [])
4356 if test -n "$USE_LD"; then
4357 AC_MSG_RESULT( yes )
4360 if test -n "$use_ld_fail_if_error"; then
4366 if test -n "$use_ld_ok"; then
4367 dnl keep the value of LDFLAGS
4370 LDFLAGS="$use_ld_ldflags_save"
4374 if test "$enable_ld" != "no"; then
4375 if test "$GCC" = "yes"; then
4376 if test -n "$enable_ld"; then
4377 check_use_ld "$enable_ld" fail_if_error
4378 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4379 dnl non-debug builds default to the default linker
4381 elif test -n "$COM_IS_CLANG"; then
4383 if test $? -ne 0; then
4387 # For gcc first try gold, new versions also support lld.
4389 if test $? -ne 0; then
4393 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4395 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4396 if test -z "$ld_used"; then
4399 AC_MSG_CHECKING([for linker that is used])
4400 AC_MSG_RESULT([$ld_used])
4401 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4402 if echo "$ld_used" | grep -q "^GNU ld"; then
4403 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4404 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4408 if test "$enable_ld" = "yes"; then
4409 AC_MSG_ERROR([--enable-ld not supported])
4415 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4416 if test "$GCC" = "yes"; then
4417 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4418 bsymbolic_functions_ldflags_save=$LDFLAGS
4419 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4420 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4423 printf ("hello world\n");
4424 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4425 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4426 AC_MSG_RESULT( found )
4428 AC_MSG_RESULT( not found )
4430 LDFLAGS=$bsymbolic_functions_ldflags_save
4432 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4435 if test "$GCC" = "yes"; then
4436 for flag in "--gc-sections" "-dead_strip"; do
4437 AC_MSG_CHECKING([for $flag linker support])
4438 ldflags_save=$LDFLAGS
4439 LDFLAGS="$LDFLAGS -Wl,$flag"
4440 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4443 printf ("hello world\n");
4445 LD_GC_SECTIONS="-Wl,$flag"
4446 AC_MSG_RESULT( found )
4448 AC_MSG_RESULT( not found )
4450 LDFLAGS=$ldflags_save
4451 if test -n "$LD_GC_SECTIONS"; then
4456 AC_SUBST(LD_GC_SECTIONS)
4459 if test "$enable_split_debug" != no; then
4460 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4461 if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4462 AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4464 CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4465 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4467 if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4468 AC_MSG_RESULT([yes])
4470 if test "$enable_split_debug" = yes; then
4477 if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4478 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4479 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4482 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4484 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4485 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4487 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4488 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4490 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4491 AC_MSG_RESULT([yes])
4495 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4498 if test "$enable_gdb_index" != "no"; then
4499 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4500 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -o -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4501 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4503 CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4505 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4506 if test "$have_ggnu_pubnames" != "TRUE"; then
4507 if test "$enable_gdb_index" = "yes"; then
4508 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4513 AC_MSG_RESULT( yes )
4514 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4515 ldflags_save=$LDFLAGS
4516 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4517 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4520 printf ("hello world\n");
4521 ])], ENABLE_GDB_INDEX=TRUE, [])
4522 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4523 AC_MSG_RESULT( yes )
4525 if test "$enable_gdb_index" = "yes"; then
4531 LDFLAGS=$ldflags_save
4535 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4536 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4537 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4540 AC_SUBST(ENABLE_GDB_INDEX)
4542 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4545 if test "$enable_sal_log" = yes; then
4548 AC_SUBST(ENABLE_SAL_LOG)
4550 dnl Check for enable symbols option
4551 dnl ===================================================================
4552 AC_MSG_CHECKING([whether to generate debug information])
4553 if test -z "$enable_symbols"; then
4554 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4560 if test "$enable_symbols" = yes; then
4561 ENABLE_SYMBOLS_FOR=all
4562 AC_MSG_RESULT([yes])
4563 elif test "$enable_symbols" = no; then
4567 # Selective debuginfo.
4568 ENABLE_SYMBOLS_FOR="$enable_symbols"
4569 AC_MSG_RESULT([for "$enable_symbols"])
4571 AC_SUBST(ENABLE_SYMBOLS_FOR)
4573 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4574 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4575 AC_MSG_CHECKING([whether enough memory is available for linking])
4576 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4577 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4578 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4579 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4581 AC_MSG_RESULT([yes])
4586 ENABLE_OPTIMIZED_DEBUG=
4587 AC_MSG_CHECKING([whether to compile with optimization flags])
4588 if test -z "$enable_optimized"; then
4589 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4592 enable_optimized=yes
4595 if test "$enable_optimized" = yes; then
4596 ENABLE_OPTIMIZED=TRUE
4597 AC_MSG_RESULT([yes])
4598 elif test "$enable_optimized" = debug; then
4599 ENABLE_OPTIMIZED_DEBUG=TRUE
4600 AC_MSG_RESULT([yes (debug)])
4602 if test "$GCC" = "yes"; then
4603 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4605 CFLAGS="$CFLAGS -Werror -Og"
4606 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4608 if test "$HAVE_GCC_OG" = "TRUE"; then
4609 AC_MSG_RESULT([yes])
4614 if test -z "$HAVE_GCC_OG"; then
4615 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4620 AC_SUBST(ENABLE_OPTIMIZED)
4621 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4624 # determine CPUNAME, OS, ...
4625 # The USING_X11 flag tells whether the host os uses X by default. Can be overridden with the --without-x option.
4636 PLATFORMID=aix_powerpc
4653 if test "$enable_ios_simulator" = "yes"; then
4658 PLATFORMID=macosx_arm64
4662 if test "$enable_ios_simulator" = "yes"; then
4667 PLATFORMID=macosx_x86_64
4670 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4684 if test "$enable_ios_simulator" = "yes"; then
4685 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4689 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4694 PLATFORMID=ios_arm64
4708 PLATFORMID=dragonfly_x86
4713 PLATFORMID=dragonfly_x86_64
4716 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4731 PLATFORMID=freebsd_aarch64
4737 PLATFORMID=freebsd_x86
4742 PLATFORMID=freebsd_x86_64
4747 PLATFORMID=freebsd_powerpc64
4752 PLATFORMID=freebsd_powerpc
4755 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4772 PLATFORMID=haiku_x86
4777 PLATFORMID=haiku_x86_64
4780 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4797 PLATFORMID=kfreebsd_x86
4802 PLATFORMID=kfreebsd_x86_64
4805 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4821 PLATFORMID=linux_aarch64
4827 PLATFORMID=linux_alpha
4833 PLATFORMID=linux_arm_eabi
4837 PLATFORMID=linux_arm_oabi
4845 PLATFORMID=linux_hppa
4850 PLATFORMID=linux_x86
4855 PLATFORMID=linux_ia64
4861 PLATFORMID=linux_mips_eb
4866 EPM_FLAGS="-a mips64"
4867 PLATFORMID=linux_mips64_eb
4872 EPM_FLAGS="-a mips64el"
4873 PLATFORMID=linux_mips64_el
4878 EPM_FLAGS="-a mipsel"
4879 PLATFORMID=linux_mips_el
4884 PLATFORMID=linux_m68k
4889 PLATFORMID=linux_powerpc
4894 PLATFORMID=linux_powerpc64
4898 RTL_ARCH=PowerPC_64_LE
4899 PLATFORMID=linux_powerpc64_le
4904 PLATFORMID=linux_sparc
4909 PLATFORMID=linux_sparc64
4914 PLATFORMID=linux_s390
4919 PLATFORMID=linux_s390x
4924 PLATFORMID=linux_x86_64
4927 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4944 PLATFORMID=android_arm_eabi
4949 PLATFORMID=android_aarch64
4954 PLATFORMID=android_x86
4959 PLATFORMID=android_x86_64
4962 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4978 PLATFORMID=netbsd_x86
4983 PLATFORMID=netbsd_powerpc
4988 PLATFORMID=netbsd_sparc
4993 PLATFORMID=netbsd_x86_64
4996 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5012 PLATFORMID=openbsd_x86
5017 PLATFORMID=openbsd_x86_64
5020 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5023 SOLARINC="$SOLARINC -I/usr/local/include"
5037 PLATFORMID=solaris_x86
5042 PLATFORMID=solaris_sparc
5047 PLATFORMID=solaris_sparc64
5050 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5053 SOLARINC="$SOLARINC -I/usr/local/include"
5057 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5061 if test "$with_x" = "no"; then
5062 AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5066 if test "$enable_gui" = "no"; then
5067 if test "$USING_X11" != TRUE; then
5068 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5072 AC_DEFINE(HAVE_FEATURE_UI,0)
5075 AC_SUBST(DISABLE_GUI)
5077 WORKDIR="${BUILDDIR}/workdir"
5078 INSTDIR="${BUILDDIR}/instdir"
5079 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5080 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5081 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5089 AC_SUBST([INSTROOT])
5090 AC_SUBST([INSTROOTBASE])
5094 AC_SUBST(PLATFORMID)
5095 AC_SUBST(WINDOWS_X64)
5096 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5098 dnl ===================================================================
5099 dnl Test which package format to use
5100 dnl ===================================================================
5101 AC_MSG_CHECKING([which package format to use])
5102 if test -n "$with_package_format" -a "$with_package_format" != no; then
5103 for i in $with_package_format; do
5105 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5108 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5109 aix - AIX software distribution
5110 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5111 deb - Debian software distribution
5112 pkg - Solaris software distribution
5113 rpm - RedHat software distribution
5115 LibreOffice additionally supports:
5116 archive - .tar.gz or .zip
5118 installed - installation tree
5124 # fakeroot is needed to ensure correct file ownerships/permissions
5125 # inside deb packages and tar archives created on Linux and Solaris.
5126 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5127 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5128 if test "$FAKEROOT" = "no"; then
5130 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5133 PKGFORMAT="$with_package_format"
5134 AC_MSG_RESULT([$PKGFORMAT])
5137 AC_MSG_RESULT([none])
5141 dnl ===================================================================
5142 dnl Set up a different compiler to produce tools to run on the build
5143 dnl machine when doing cross-compilation
5144 dnl ===================================================================
5146 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5147 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5148 if test "$cross_compiling" = "yes"; then
5149 AC_MSG_CHECKING([for BUILD platform configuration])
5151 rm -rf CONF-FOR-BUILD config_build.mk
5152 mkdir CONF-FOR-BUILD
5153 # Here must be listed all files needed when running the configure script. In particular, also
5154 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5155 # keep them in the same order as there.
5156 (cd $SRC_ROOT && tar cf - \
5158 bin/get_config_variables \
5159 solenv/bin/getcompver.awk \
5160 solenv/inc/langlist.mk \
5163 config_host_lang.mk.in \
5165 bin/bffvalidator.sh.in \
5166 bin/odfvalidator.sh.in \
5167 bin/officeotron.sh.in \
5168 hardened_runtime.xcent.in \
5169 instsetoo_native/util/openoffice.lst.in \
5171 sysui/desktop/macosx/Info.plist.in) \
5172 | (cd CONF-FOR-BUILD && tar xf -)
5173 cp configure CONF-FOR-BUILD
5174 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5176 unset COM USING_X11 OS CPUNAME
5177 unset CC CXX SYSBASE CFLAGS
5178 unset AR NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5179 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5180 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC PKG_CONFIG_LIBDIR
5181 if test -n "$CC_FOR_BUILD"; then
5182 export CC="$CC_FOR_BUILD"
5183 CC_BASE=`first_arg_basename "$CC"`
5185 if test -n "$CXX_FOR_BUILD"; then
5186 export CXX="$CXX_FOR_BUILD"
5187 CXX_BASE=`first_arg_basename "$CXX"`
5189 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5193 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5194 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5195 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5196 if test -n "$ENABLE_JAVA"; then
5198 iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5200 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5201 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5204 if test -z "$with_jdk_home"; then
5205 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.])
5210 sub_conf_opts="$sub_conf_opts --without-java"
5212 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5213 test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5214 sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options"
5216 # Don't bother having configure look for stuff not needed for the build platform anyway
5218 --build="$build_alias" \
5220 --disable-firebird-sdbc \
5222 --disable-gstreamer-1-0 \
5224 --disable-mariadb-sdbc \
5225 --disable-online-update \
5227 --disable-pdfimport \
5228 --disable-postgresql-sdbc \
5230 --enable-icecream="$enable_icecream" \
5233 --with-parallelism="$with_parallelism" \
5234 --with-theme="$with_theme" \
5235 --with-tls=openssl \
5238 2>&1 | sed -e 's/^/ /'
5239 test -f ./config_host.mk 2>/dev/null || exit
5241 # filter permitted build targets
5242 PERMITTED_BUILD_TARGETS="
5271 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5272 # newlined lists, to use grep as a filter
5273 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5274 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5275 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5276 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5278 cp config_host.mk ../config_build.mk
5279 cp config_host_lang.mk ../config_build_lang.mk
5280 mv config.log ../config.Build.log
5281 mkdir -p ../config_build
5282 mv config_host/*.h ../config_build
5284 # all these will get a _FOR_BUILD postfix
5285 DIRECT_FOR_BUILD_SETTINGS="
5295 LIBO_URE_MISC_FOLDER
5301 # these overwrite host config with build config
5302 OVERWRITING_SETTINGS="
5307 JAVA_CLASSPATH_NOT_SET
5315 # these need some special handling
5316 EXTRA_HANDLED_SETTINGS="
5323 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5327 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5328 echo "$line" >>build-config
5330 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5332 VV=`eval "echo $VV"`
5333 if test -n "$VV"; then
5334 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5335 echo "$line" >>build-config
5339 for V in $OVERWRITING_SETTINGS; do
5341 VV=`eval "echo $VV"`
5342 if test -n "$VV"; then
5343 line=${V}='${'${V}:-$VV'}'
5344 echo "$line" >>build-config
5348 for V in INSTDIR INSTROOT WORKDIR; do
5350 VV=`eval "echo $VV"`
5351 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5352 if test -n "$VV"; then
5353 line="${V}_FOR_BUILD='$VV'"
5354 echo "$line" >>build-config
5359 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([Running configure script for BUILD system failed, see CONF-FOR-BUILD/config.log])
5360 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])
5361 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5362 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5364 eval `cat CONF-FOR-BUILD/build-config`
5366 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5368 rm -rf CONF-FOR-BUILD
5372 CXX_FOR_BUILD="$CXX"
5373 INSTDIR_FOR_BUILD="$INSTDIR"
5374 INSTROOT_FOR_BUILD="$INSTROOT"
5375 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5376 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5377 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5378 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5379 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5380 WORKDIR_FOR_BUILD="$WORKDIR"
5382 AC_SUBST(OS_FOR_BUILD)
5383 AC_SUBST(INSTDIR_FOR_BUILD)
5384 AC_SUBST(INSTROOT_FOR_BUILD)
5385 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5386 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5387 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5388 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5389 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5390 AC_SUBST(WORKDIR_FOR_BUILD)
5391 AC_SUBST(CC_FOR_BUILD)
5392 AC_SUBST(CXX_FOR_BUILD)
5394 dnl ===================================================================
5395 dnl Check for syslog header
5396 dnl ===================================================================
5397 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5399 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5400 dnl ===================================================================
5401 AC_MSG_CHECKING([whether to turn warnings to errors])
5402 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5403 ENABLE_WERROR="TRUE"
5404 PYTHONWARNINGS="error"
5405 AC_MSG_RESULT([yes])
5407 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5408 ENABLE_WERROR="TRUE"
5409 PYTHONWARNINGS="error"
5410 AC_MSG_RESULT([yes])
5415 AC_SUBST(ENABLE_WERROR)
5416 AC_SUBST(PYTHONWARNINGS)
5418 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5419 dnl ===================================================================
5420 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5421 if test -z "$enable_assert_always_abort"; then
5422 if test "$ENABLE_DEBUG" = TRUE; then
5423 enable_assert_always_abort=yes
5425 enable_assert_always_abort=no
5428 if test "$enable_assert_always_abort" = "yes"; then
5429 ASSERT_ALWAYS_ABORT="TRUE"
5430 AC_MSG_RESULT([yes])
5432 ASSERT_ALWAYS_ABORT="FALSE"
5435 AC_SUBST(ASSERT_ALWAYS_ABORT)
5437 # Determine whether to use ooenv for the instdir installation
5438 # ===================================================================
5439 if test $_os != "WINNT" -a $_os != "Darwin"; then
5440 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5441 if test "$enable_ooenv" = "no"; then
5445 AC_MSG_RESULT([yes])
5448 AC_SUBST(ENABLE_OOENV)
5450 if test "$USING_X11" != TRUE; then
5451 # be sure to do not mess with unneeded stuff
5456 build_gstreamer_1_0=no
5460 enable_cairo_canvas=no
5463 if test "$OS" = "HAIKU"; then
5464 enable_cairo_canvas=yes
5468 if test "$test_kf5" = "yes" -a "$enable_kde5" = "yes"; then
5469 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!])
5470 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!"
5474 if test "$test_kf5" = "yes"; then
5478 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5479 if test "$enable_qt5" = "no"; then
5480 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5486 dnl ===================================================================
5487 dnl check for cups support
5488 dnl ===================================================================
5491 if test "$enable_cups" = "no"; then
5495 AC_MSG_CHECKING([whether to enable CUPS support])
5496 if test "$test_cups" = "yes"; then
5498 AC_MSG_RESULT([yes])
5500 AC_MSG_CHECKING([whether cups support is present])
5501 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5502 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5503 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5504 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5511 AC_SUBST(ENABLE_CUPS)
5514 if test "$test_fontconfig" = "yes"; then
5515 PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5516 SYSTEM_FONTCONFIG=TRUE
5517 FilterLibs "${FONTCONFIG_LIBS}"
5518 FONTCONFIG_LIBS="${filteredlibs}"
5520 AC_SUBST(FONTCONFIG_CFLAGS)
5521 AC_SUBST(FONTCONFIG_LIBS)
5522 AC_SUBST([SYSTEM_FONTCONFIG])
5524 dnl whether to find & fetch external tarballs?
5525 dnl ===================================================================
5526 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5527 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5528 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5530 TARFILE_LOCATION="$LODE_HOME/ext_tar"
5533 if test -z "$TARFILE_LOCATION"; then
5534 if test -d "$SRC_ROOT/src" ; then
5535 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5536 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5538 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5540 AbsolutePath "$TARFILE_LOCATION"
5541 PathFormat "${absolute_path}"
5542 TARFILE_LOCATION="${formatted_path}"
5544 AC_SUBST(TARFILE_LOCATION)
5546 AC_MSG_CHECKING([whether we want to fetch tarballs])
5547 if test "$enable_fetch_external" != "no"; then
5548 if test "$with_all_tarballs" = "yes"; then
5549 AC_MSG_RESULT([yes, all of them])
5550 DO_FETCH_TARBALLS="ALL"
5552 AC_MSG_RESULT([yes, if we use them])
5553 DO_FETCH_TARBALLS="TRUE"
5559 AC_SUBST(DO_FETCH_TARBALLS)
5561 AC_MSG_CHECKING([whether to build help])
5562 if test -n "$with_help" -a "$with_help" != "no" -a $_os != iOS -a $_os != Android; then
5563 BUILD_TYPE="$BUILD_TYPE HELP"
5564 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5565 case "$with_help" in
5567 ENABLE_HTMLHELP=TRUE
5568 SCPDEFS="$SCPDEFS -DWITH_HELP"
5569 AC_MSG_RESULT([HTML])
5572 ENABLE_HTMLHELP=TRUE
5574 AC_MSG_RESULT([HTML])
5577 SCPDEFS="$SCPDEFS -DWITH_HELP"
5578 AC_MSG_RESULT([yes])
5581 AC_MSG_ERROR([Unknown --with-help=$with_help])
5587 AC_SUBST([ENABLE_HTMLHELP])
5588 AC_SUBST([HELP_ONLINE])
5590 AC_MSG_CHECKING([whether to enable xapian-omega support for help])
5591 if test -n "$with_omindex" -a "$with_omindex" != "no" -a $_os != iOS -a $_os != Android; then
5592 BUILD_TYPE="$BUILD_TYPE HELP"
5593 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5594 case "$with_omindex" in
5596 ENABLE_HTMLHELP=TRUE
5598 HELP_OMINDEX_PAGE=TRUE
5599 AC_MSG_RESULT([SERVER])
5602 ENABLE_HTMLHELP=TRUE
5604 HELP_OMINDEX_PAGE=FALSE
5605 AC_MSG_RESULT([NOXAP])
5608 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5612 HELP_OMINDEX_PAGE=FALSE
5615 AC_SUBST([ENABLE_HTMLHELP])
5616 AC_SUBST([HELP_OMINDEX_PAGE])
5617 AC_SUBST([HELP_ONLINE])
5620 dnl Test whether to include MySpell dictionaries
5621 dnl ===================================================================
5622 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5623 if test "$with_myspell_dicts" = "yes"; then
5624 AC_MSG_RESULT([yes])
5625 WITH_MYSPELL_DICTS=TRUE
5626 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5627 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5632 AC_SUBST(WITH_MYSPELL_DICTS)
5634 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5635 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5636 if test "$with_system_dicts" = yes; then
5637 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5639 with_system_dicts=no
5642 AC_MSG_CHECKING([whether to use dicts from external paths])
5643 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5644 AC_MSG_RESULT([yes])
5646 AC_MSG_CHECKING([for spelling dictionary directory])
5647 if test -n "$with_external_dict_dir"; then
5648 DICT_SYSTEM_DIR=file://$with_external_dict_dir
5650 DICT_SYSTEM_DIR=file:///usr/share/hunspell
5651 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5652 DICT_SYSTEM_DIR=file:///usr/share/myspell
5655 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5656 AC_MSG_CHECKING([for hyphenation patterns directory])
5657 if test -n "$with_external_hyph_dir"; then
5658 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5660 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5662 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5663 AC_MSG_CHECKING([for thesaurus directory])
5664 if test -n "$with_external_thes_dir"; then
5665 THES_SYSTEM_DIR=file://$with_external_thes_dir
5667 THES_SYSTEM_DIR=file:///usr/share/mythes
5669 AC_MSG_RESULT([$THES_SYSTEM_DIR])
5674 AC_SUBST(SYSTEM_DICTS)
5675 AC_SUBST(DICT_SYSTEM_DIR)
5676 AC_SUBST(HYPH_SYSTEM_DIR)
5677 AC_SUBST(THES_SYSTEM_DIR)
5679 dnl ===================================================================
5680 dnl Precompiled headers.
5682 AC_MSG_CHECKING([whether to enable pch feature])
5683 if test -z "$enable_pch"; then
5684 if test "$_os" = "WINNT"; then
5685 # Enabled by default on Windows.
5691 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5692 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5694 if test "$enable_pch" = "system"; then
5696 AC_MSG_RESULT([yes (system headers)])
5697 elif test "$enable_pch" = "base"; then
5699 AC_MSG_RESULT([yes (system and base headers)])
5700 elif test "$enable_pch" = "normal"; then
5702 AC_MSG_RESULT([yes (normal)])
5703 elif test "$enable_pch" = "full"; then
5705 AC_MSG_RESULT([yes (full)])
5706 elif test "$enable_pch" = "yes"; then
5707 # Pick a suitable default.
5708 if test "$GCC" = "yes"; then
5709 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5710 # while making the PCHs larger and rebuilds more likely.
5712 AC_MSG_RESULT([yes (system and base headers)])
5714 # With MSVC the highest level makes a significant difference,
5715 # and it was the default when there used to be no PCH levels.
5717 AC_MSG_RESULT([yes (full)])
5719 elif test "$enable_pch" = "no"; then
5722 AC_MSG_ERROR([Unknown value for --enable-pch])
5724 AC_SUBST(ENABLE_PCH)
5725 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5726 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5727 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5728 if test "$CCACHE_BIN" != "not found"; then
5729 AC_MSG_CHECKING([ccache version])
5730 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5731 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5732 AC_MSG_RESULT([$CCACHE_VERSION])
5733 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5734 if test "$CCACHE_NUMVER" -gt "030701"; then
5735 AC_MSG_RESULT([yes])
5737 AC_MSG_RESULT([no (not newer than 3.7.1)])
5743 PCH_INSTANTIATE_TEMPLATES=
5744 if test -n "$ENABLE_PCH"; then
5745 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5747 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5748 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5750 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5756 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5758 BUILDING_PCH_WITH_OBJ=
5759 if test -n "$ENABLE_PCH"; then
5760 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5762 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5763 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5765 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5771 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5775 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5776 AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
5778 CFLAGS="$CFLAGS -Werror -fpch-codegen"
5779 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5781 PCH_CODEGEN="-fpch-codegen"
5782 PCH_NO_CODEGEN="-fno-pch-codegen"
5785 if test -n "$PCH_CODEGEN"; then
5791 AC_SUBST(PCH_CODEGEN)
5792 AC_SUBST(PCH_NO_CODEGEN)
5794 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5795 AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
5797 CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
5798 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
5800 if test -n "$PCH_DEBUGINFO"; then
5806 AC_SUBST(PCH_DEBUGINFO)
5810 AC_MSG_CHECKING([the GNU Make version])
5811 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5812 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5813 if test "$_make_longver" -ge "038200"; then
5814 AC_MSG_RESULT([$GNUMAKE $_make_version])
5816 elif test "$_make_longver" -ge "038100"; then
5817 if test "$build_os" = "cygwin"; then
5818 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5820 AC_MSG_RESULT([$GNUMAKE $_make_version])
5822 dnl ===================================================================
5823 dnl Search all the common names for sha1sum
5824 dnl ===================================================================
5825 AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5826 if test -z "$SHA1SUM"; then
5827 AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5828 elif test "$SHA1SUM" = "openssl"; then
5829 SHA1SUM="openssl sha1"
5831 AC_MSG_CHECKING([for GNU Make bug 20033])
5832 TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
5833 $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
5834 A := \$(wildcard *.a)
5838 <TAB>@echo survived bug20033.
5842 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
5855 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
5856 <TAB>\$(call d1,\$(CHECKSUM)),\
5857 <TAB>\$(call d2,\$(CHECKSUM)))
5859 if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
5860 no_parallelism_make="YES"
5861 AC_MSG_RESULT([yes, disable parallelism])
5863 AC_MSG_RESULT([no, keep parallelism enabled])
5865 rm -rf $TESTGMAKEBUG20033
5867 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
5870 # find if gnumake support file function
5871 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
5872 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
5873 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5874 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
5876 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
5877 \$(file >test.txt,Success )
5884 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
5885 if test -f $TESTGMAKEFILEFUNC/test.txt; then
5886 HAVE_GNUMAKE_FILE_FUNC=TRUE
5887 AC_MSG_RESULT([yes])
5891 rm -rf $TESTGMAKEFILEFUNC
5892 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
5893 AC_SUBST(GNUMAKE_WIN_NATIVE)
5895 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
5897 if test "$_make_ver_check" = ""; then
5901 HAVE_LD_HASH_STYLE=FALSE
5902 WITH_LINKER_HASH_STYLE=
5903 AC_MSG_CHECKING([for --hash-style gcc linker support])
5904 if test "$GCC" = "yes"; then
5905 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
5906 hash_styles="gnu sysv"
5907 elif test "$with_linker_hash_style" = "no"; then
5910 hash_styles="$with_linker_hash_style"
5913 for hash_style in $hash_styles; do
5914 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
5915 hash_style_ldflags_save=$LDFLAGS
5916 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
5918 AC_RUN_IFELSE([AC_LANG_PROGRAM(
5925 HAVE_LD_HASH_STYLE=TRUE
5926 WITH_LINKER_HASH_STYLE=$hash_style
5928 [HAVE_LD_HASH_STYLE=FALSE],
5929 [HAVE_LD_HASH_STYLE=FALSE])
5930 LDFLAGS=$hash_style_ldflags_save
5933 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
5934 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
5938 LDFLAGS=$hash_style_ldflags_save
5942 AC_SUBST(HAVE_LD_HASH_STYLE)
5943 AC_SUBST(WITH_LINKER_HASH_STYLE)
5945 dnl ===================================================================
5946 dnl Check whether there's a Perl version available.
5947 dnl ===================================================================
5948 if test -z "$with_perl_home"; then
5949 AC_PATH_PROG(PERL, perl)
5951 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
5952 _perl_path="$with_perl_home/bin/perl"
5953 if test -x "$_perl_path"; then
5956 AC_MSG_ERROR([$_perl_path not found])
5960 dnl ===================================================================
5961 dnl Testing for Perl version 5 or greater.
5962 dnl $] is the Perl version variable, it is returned as an integer
5963 dnl ===================================================================
5964 if test "$PERL"; then
5965 AC_MSG_CHECKING([the Perl version])
5966 ${PERL} -e "exit($]);"
5968 if test "$_perl_version" -lt 5; then
5969 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
5971 AC_MSG_RESULT([Perl $_perl_version])
5973 AC_MSG_ERROR([Perl not found, install Perl 5])
5976 dnl ===================================================================
5977 dnl Testing for required Perl modules
5978 dnl ===================================================================
5980 AC_MSG_CHECKING([for required Perl modules])
5981 perl_use_string="use Cwd ; use Digest::MD5"
5982 if test "$_os" = "WINNT"; then
5983 if test -n "$PKGFORMAT"; then
5984 for i in $PKGFORMAT; do
5987 # for getting fonts versions to use in MSI
5988 perl_use_string="$perl_use_string ; use Font::TTF::Font"
5994 if test "$with_system_hsqldb" = "yes"; then
5995 perl_use_string="$perl_use_string ; use Archive::Zip"
5997 if test "$with_system_openssl" != "yes"; then
5998 # OpenSSL needs that to build
5999 perl_use_string="$perl_use_string ; use FindBin"
6001 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6002 AC_MSG_RESULT([all modules found])
6004 AC_MSG_RESULT([failed to find some modules])
6005 # Find out which modules are missing.
6006 for i in $perl_use_string; do
6007 if test "$i" != "use" -a "$i" != ";"; then
6008 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6009 missing_perl_modules="$missing_perl_modules $i"
6014 The missing Perl modules are: $missing_perl_modules
6015 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6018 dnl ===================================================================
6019 dnl Check for pkg-config
6020 dnl ===================================================================
6021 if test "$_os" != "WINNT"; then
6025 if test "$_os" != "WINNT"; then
6027 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6028 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6029 # explicitly. Or put /path/to/compiler in PATH yourself.
6031 # Use wrappers for LTO
6032 if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6033 AC_CHECK_TOOL(AR,gcc-ar)
6034 AC_CHECK_TOOL(NM,gcc-nm)
6035 AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6037 AC_CHECK_TOOL(AR,ar)
6038 AC_CHECK_TOOL(NM,nm)
6039 AC_CHECK_TOOL(RANLIB,ranlib)
6041 AC_CHECK_TOOL(OBJDUMP,objdump)
6042 AC_CHECK_TOOL(READELF,readelf)
6043 AC_CHECK_TOOL(STRIP,strip)
6044 if test "$_os" = "WINNT"; then
6045 AC_CHECK_TOOL(DLLTOOL,dlltool)
6046 AC_CHECK_TOOL(WINDRES,windres)
6053 AC_SUBST(PKG_CONFIG)
6059 dnl ===================================================================
6060 dnl pkg-config checks on macOS
6061 dnl ===================================================================
6063 if test $_os = Darwin; then
6064 AC_MSG_CHECKING([for bogus pkg-config])
6065 if test -n "$PKG_CONFIG"; then
6066 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6067 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6069 if test "$enable_bogus_pkg_config" = "yes"; then
6070 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6072 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.])
6076 AC_MSG_RESULT([no, good])
6082 # Return value: $csctest
6086 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6087 if test -n "$regvalue"; then
6095 # Return value: $altest
6099 # We need this check to detect 4.6.1 or above.
6100 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6101 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6102 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6108 for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6109 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6110 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6121 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6122 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6123 if test -n "$regvalue"; then
6130 find_winsdk_version()
6132 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6133 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6135 unset winsdktest winsdkbinsubdir winsdklibsubdir
6139 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6140 if test -n "$regvalue"; then
6141 winsdktest=$regvalue
6142 winsdklibsubdir=win8
6147 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6148 if test -n "$regvalue"; then
6149 winsdktest=$regvalue
6150 winsdklibsubdir=winv6.3
6155 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6156 if test -n "$regvalue"; then
6157 winsdktest=$regvalue
6158 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6159 if test -n "$regvalue"; then
6160 winsdkbinsubdir="$regvalue".0
6161 winsdklibsubdir=$winsdkbinsubdir
6162 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6163 local tmppath_unix=$(cygpath -u "$tmppath")
6164 # test exist the SDK path
6165 if test -d "$tmppath_unix"; then
6166 # when path is convertible to a short path then path is okay
6167 cygpath -d "$tmppath" >/dev/null 2>&1
6168 if test $? -ne 0; then
6169 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6172 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6183 # Return value: From find_winsdk_version
6187 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6188 find_winsdk_version $ver
6189 if test -n "$winsdktest"; then
6197 # Return value: $msmdir
6199 AC_MSG_CHECKING([for MSVC merge modules directory])
6200 local my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm
6205 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6208 for f in $my_msm_files; do
6209 echo "$as_me:$LINENO: searching for $f" >&5
6213 for ver in 14.0 15.0; do
6214 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir
6215 if test -n "$regvalue"; then
6216 for f in ${my_msm_files}; do
6217 if test -e "$regvalue/${f}"; then
6224 dnl Is the following fallback really necessary, or was it added in response
6225 dnl to never having started Visual Studio on a given machine, so the
6226 dnl registry keys checked above had presumably not yet been created?
6227 dnl Anyway, if it really is necessary, it might be worthwhile to extend it
6228 dnl to also check %CommonProgramFiles(X86)% (typically expanding to
6229 dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles%
6230 dnl expanding to "C:\Program Files\Common Files"), which would need
6231 dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to
6232 dnl obtain its value from cygwin:
6233 if test -z "$msmdir"; then
6234 my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/"
6235 for f in ${my_msm_files}; do
6236 if test -e "$my_msm_dir/${f}"; then
6242 dnl Starting from MSVC 15.0, merge modules are located in different directory
6245 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6246 echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5
6247 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6248 for f in ${my_msm_files}; do
6249 if test -e "$my_msm_dir/${f}"; then
6258 if test -n "$msmdir"; then
6259 msmdir=`cygpath -m "$msmdir"`
6260 AC_MSG_RESULT([$msmdir])
6262 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6263 AC_MSG_FAILURE([not found])
6265 AC_MSG_WARN([not found (check config.log)])
6266 add_warning "MSM none of ${my_msm_files} found"
6271 find_msvc_x64_dlls()
6273 # Return value: $msvcdllpath, $msvcdlls
6275 AC_MSG_CHECKING([for MSVC x64 DLL path])
6276 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6279 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6280 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5
6281 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then
6282 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"
6285 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5
6286 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then
6287 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"
6293 AC_MSG_RESULT([$msvcdllpath])
6294 AC_MSG_CHECKING([for MSVC x64 DLLs])
6295 msvcdlls="msvcp140.dll vcruntime140.dll"
6296 for dll in $msvcdlls; do
6297 if ! test -f "$msvcdllpath/$dll"; then
6298 AC_MSG_FAILURE([missing $dll])
6301 AC_MSG_RESULT([found all ($msvcdlls)])
6304 dnl =========================================
6305 dnl Check for the Windows SDK.
6306 dnl =========================================
6307 if test "$_os" = "WINNT"; then
6308 AC_MSG_CHECKING([for Windows SDK])
6309 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6311 WINDOWS_SDK_HOME=$winsdktest
6313 # normalize if found
6314 if test -n "$WINDOWS_SDK_HOME"; then
6315 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6316 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6319 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6322 if test -n "$WINDOWS_SDK_HOME"; then
6323 # Remove a possible trailing backslash
6324 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6326 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6327 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6328 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6329 have_windows_sdk_headers=yes
6330 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6331 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6332 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6333 have_windows_sdk_headers=yes
6334 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6335 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6336 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6337 have_windows_sdk_headers=yes
6339 have_windows_sdk_headers=no
6342 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6343 have_windows_sdk_libs=yes
6344 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6345 have_windows_sdk_libs=yes
6347 have_windows_sdk_libs=no
6350 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6351 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6352 the Windows SDK are installed.])
6356 if test -z "$WINDOWS_SDK_HOME"; then
6357 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6358 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6359 WINDOWS_SDK_VERSION=80
6360 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6361 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6362 WINDOWS_SDK_VERSION=81
6363 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6364 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6365 WINDOWS_SDK_VERSION=10
6366 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6368 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6370 PathFormat "$WINDOWS_SDK_HOME"
6371 WINDOWS_SDK_HOME="$formatted_path"
6372 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6373 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6374 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6375 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6376 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6377 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6378 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6382 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6383 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6384 dnl but not in v8.0), so allow this to be overridden with a
6385 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6386 dnl and configuration error if no WiLangId.vbs is found would arguably be
6387 dnl better, but I do not know under which conditions exactly it is needed by
6389 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6390 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6391 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6392 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6393 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6394 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6396 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6397 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6398 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6400 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6401 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6402 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6405 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6406 if test -n "$with_package_format" -a "$with_package_format" != no; then
6407 for i in "$with_package_format"; do
6408 if test "$i" = "msi"; then
6409 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6410 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6417 AC_SUBST(WINDOWS_SDK_HOME)
6418 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6419 AC_SUBST(WINDOWS_SDK_VERSION)
6420 AC_SUBST(WINDOWS_SDK_WILANGID)
6422 if test "$build_os" = "cygwin"; then
6423 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6424 dnl dir, it also determines that dir's path w/o an arch segment if any,
6425 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6426 AC_MSG_CHECKING([for midl.exe])
6429 if test -n "$winsdkbinsubdir" \
6430 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6432 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6433 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6434 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6435 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6436 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6437 elif test -f "$winsdktest/Bin/midl.exe"; then
6438 MIDL_PATH=$winsdktest/Bin
6439 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6441 if test ! -f "$MIDL_PATH/midl.exe"; then
6442 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6444 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6447 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6448 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6450 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6451 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6452 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6453 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6454 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6455 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6456 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6457 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6458 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6459 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6460 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6461 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6463 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6467 AC_MSG_CHECKING([for csc.exe])
6469 if test -f "$csctest/csc.exe"; then
6472 if test ! -f "$CSC_PATH/csc.exe"; then
6473 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6475 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6478 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6481 AC_MSG_CHECKING([for al.exe])
6483 if test -n "$winsdkbinsubdir" \
6484 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6486 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6487 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6488 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6489 elif test -f "$winsdktest/Bin/al.exe"; then
6490 AL_PATH="$winsdktest/Bin"
6493 if test -z "$AL_PATH"; then
6495 if test -f "$altest/bin/al.exe"; then
6496 AL_PATH="$altest/bin"
6497 elif test -f "$altest/al.exe"; then
6501 if test ! -f "$AL_PATH/al.exe"; then
6502 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6504 AC_MSG_RESULT([$AL_PATH/al.exe])
6507 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6509 dnl Check mscoree.lib / .NET Framework dir
6510 AC_MSG_CHECKING(.NET Framework)
6512 PathFormat "$frametest"
6513 frametest="$formatted_path"
6514 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6515 DOTNET_FRAMEWORK_HOME="$frametest"
6518 if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6519 DOTNET_FRAMEWORK_HOME="$winsdktest"
6522 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
6523 AC_MSG_ERROR([mscoree.lib not found])
6525 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6527 PathFormat "$MIDL_PATH"
6528 MIDL_PATH="$formatted_path"
6530 PathFormat "$AL_PATH"
6531 AL_PATH="$formatted_path"
6533 PathFormat "$DOTNET_FRAMEWORK_HOME"
6534 DOTNET_FRAMEWORK_HOME="$formatted_path"
6536 PathFormat "$CSC_PATH"
6537 CSC_PATH="$formatted_path"
6540 dnl ===================================================================
6541 dnl Testing for C++ compiler and version...
6542 dnl ===================================================================
6544 if test "$_os" != "WINNT"; then
6545 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6546 save_CXXFLAGS=$CXXFLAGS
6548 CXXFLAGS=$save_CXXFLAGS
6549 if test -z "$CXX_BASE"; then
6550 CXX_BASE=`first_arg_basename "$CXX"`
6554 dnl check for GNU C++ compiler version
6555 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6556 AC_MSG_CHECKING([the GNU C++ compiler version])
6558 _gpp_version=`$CXX -dumpversion`
6559 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6561 if test "$_gpp_majmin" -lt "700"; then
6562 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6564 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6567 dnl see https://code.google.com/p/android/issues/detail?id=41770
6571 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6572 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6573 #include <bits/c++config.h>]],[[
6574 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6575 && !defined(_GLIBCXX__PTHREADS) \
6576 && !defined(_GLIBCXX_HAS_GTHREADS)
6579 ]])],[AC_MSG_RESULT([yes])
6580 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6582 if test $glibcxx_threads = yes; then
6583 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6586 AC_SUBST(BOOST_CXXFLAGS)
6589 # prefx CXX with ccache if needed
6591 if test "$CCACHE" != ""; then
6592 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6594 save_CXXFLAGS=$CXXFLAGS
6595 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6596 dnl an empty program will do, we're checking the compiler flags
6597 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6598 [use_ccache=yes], [use_ccache=no])
6599 if test $use_ccache = yes; then
6600 AC_MSG_RESULT([yes])
6603 CXX_BASE="ccache $CXX_BASE"
6606 CXXFLAGS=$save_CXXFLAGS
6610 dnl ===================================================================
6611 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6612 dnl ===================================================================
6614 if test "$_os" != "WINNT"; then
6617 dnl Check whether there's a C pre-processor.
6622 dnl ===================================================================
6623 dnl Find integral type sizes and alignments
6624 dnl ===================================================================
6626 if test "$_os" != "WINNT"; then
6628 if test "$_os" = "iOS"; then
6629 AC_MSG_CHECKING([iOS setting sizes long, short, int, long long, double, voidp])
6631 ac_cv_sizeof_short=2
6633 ac_cv_sizeof_long_long=8
6634 ac_cv_sizeof_double=8
6635 ac_cv_sizeof_voidp=8
6637 AC_CHECK_SIZEOF(long)
6638 AC_CHECK_SIZEOF(short)
6639 AC_CHECK_SIZEOF(int)
6640 AC_CHECK_SIZEOF(long long)
6641 AC_CHECK_SIZEOF(double)
6642 AC_CHECK_SIZEOF(void*)
6645 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6646 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6647 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6648 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6649 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6651 dnl Allow build without AC_CHECK_ALIGNOF, grrr
6652 m4_pattern_allow([AC_CHECK_ALIGNOF])
6653 m4_ifdef([AC_CHECK_ALIGNOF],
6655 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6656 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6657 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6658 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6661 case "$_os-$host_cpu" in
6663 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6664 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6665 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6666 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6669 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6670 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6671 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6672 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6675 if test -z "$ac_cv_alignof_short" -o \
6676 -z "$ac_cv_alignof_int" -o \
6677 -z "$ac_cv_alignof_long" -o \
6678 -z "$ac_cv_alignof_double"; then
6679 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.])
6685 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6686 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6687 if test $ac_cv_sizeof_long -eq 8; then
6688 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6689 elif test $ac_cv_sizeof_double -eq 8; then
6690 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6692 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6695 dnl Check for large file support
6697 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6698 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6700 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6701 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6705 SAL_TYPES_SIZEOFSHORT=2
6706 SAL_TYPES_SIZEOFINT=4
6707 SAL_TYPES_SIZEOFLONG=4
6708 SAL_TYPES_SIZEOFLONGLONG=8
6709 if test $WIN_HOST_BITS -eq 32; then
6710 SAL_TYPES_SIZEOFPOINTER=4
6712 SAL_TYPES_SIZEOFPOINTER=8
6714 SAL_TYPES_ALIGNMENT2=2
6715 SAL_TYPES_ALIGNMENT4=4
6716 SAL_TYPES_ALIGNMENT8=8
6719 AC_SUBST(LFS_CFLAGS)
6721 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6722 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6723 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6724 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6725 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6726 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6727 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6728 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6730 dnl ===================================================================
6731 dnl Check whether to enable runtime optimizations
6732 dnl ===================================================================
6733 ENABLE_RUNTIME_OPTIMIZATIONS=
6734 AC_MSG_CHECKING([whether to enable runtime optimizations])
6735 if test -z "$enable_runtime_optimizations"; then
6739 enable_runtime_optimizations=no
6745 if test "$enable_runtime_optimizations" != no; then
6746 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6747 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6748 AC_MSG_RESULT([yes])
6752 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6754 dnl ===================================================================
6755 dnl Check if valgrind headers are available
6756 dnl ===================================================================
6758 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6759 prev_cppflags=$CPPFLAGS
6760 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6761 # or where does it come from?
6762 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6763 AC_CHECK_HEADER([valgrind/valgrind.h],
6764 [ENABLE_VALGRIND=TRUE])
6765 CPPFLAGS=$prev_cppflags
6767 AC_SUBST([ENABLE_VALGRIND])
6768 if test -z "$ENABLE_VALGRIND"; then
6769 if test "$with_valgrind" = yes; then
6770 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6774 AC_SUBST([VALGRIND_CFLAGS])
6777 dnl ===================================================================
6778 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6779 dnl ===================================================================
6781 # We need at least the sys/sdt.h include header.
6782 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6783 if test "$SDT_H_FOUND" = "TRUE"; then
6784 # Found sys/sdt.h header, now make sure the c++ compiler works.
6785 # Old g++ versions had problems with probes in constructors/destructors.
6786 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6788 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6789 #include <sys/sdt.h>
6797 ProbeClass(int& v, const char *n) : ref(v), name(n)
6799 DTRACE_PROBE2(_test_, cons, name, ref);
6802 void method(int min)
6804 DTRACE_PROBE3(_test_, meth, name, ref, min);
6810 DTRACE_PROBE2(_test_, dest, name, ref);
6815 DTRACE_PROBE1(_test_, call, i);
6816 ProbeClass inst = ProbeClass(i, "call");
6818 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6819 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6822 AC_CONFIG_HEADERS([config_host/config_probes.h])
6824 dnl ===================================================================
6826 dnl ===================================================================
6827 HAVE_GCC_STACK_CLASH_PROTECTION=
6828 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6829 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6831 CFLAGS="$CFLAGS -fstack-clash-protection"
6833 [AC_LANG_PROGRAM(, [[return 0;]])],
6834 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6835 [AC_MSG_RESULT([no])])
6838 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6840 CFLAGS="$CFLAGS -Werror -mno-avx"
6841 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6843 if test "$HAVE_GCC_AVX" = "TRUE"; then
6844 AC_MSG_RESULT([yes])
6849 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6850 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6852 if (__sync_add_and_fetch(&v, 1) != 1 ||
6853 __sync_sub_and_fetch(&v, 1) != 0)
6855 __sync_synchronize();
6856 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6860 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6861 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6862 AC_MSG_RESULT([yes])
6863 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
6868 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
6870 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6873 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
6875 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
6876 AC_MSG_RESULT([yes])
6877 ], [AC_MSG_RESULT([no])])
6880 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
6882 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6885 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
6887 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
6888 AC_MSG_RESULT([yes])
6889 ], [AC_MSG_RESULT([no])])
6892 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
6894 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6896 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
6898 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
6899 AC_MSG_RESULT([yes])
6900 ], [AC_MSG_RESULT([no])])
6903 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
6905 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6908 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
6910 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
6911 AC_MSG_RESULT([yes])
6912 ], [AC_MSG_RESULT([no])])
6915 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
6917 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6920 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
6922 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
6923 AC_MSG_RESULT([yes])
6924 ], [AC_MSG_RESULT([no])])
6927 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
6929 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6931 void * f() { return __cxxabiv1::__cxa_get_globals(); }
6933 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
6934 AC_MSG_RESULT([yes])
6935 ], [AC_MSG_RESULT([no])])
6938 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
6940 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6942 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
6944 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
6945 AC_MSG_RESULT([yes])
6946 ], [AC_MSG_RESULT([no])])
6949 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
6951 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6953 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
6955 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
6956 AC_MSG_RESULT([yes])
6957 ], [AC_MSG_RESULT([no])])
6960 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
6962 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6965 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
6967 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
6968 AC_MSG_RESULT([yes])
6969 ], [AC_MSG_RESULT([no])])
6972 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
6974 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6977 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
6979 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
6980 AC_MSG_RESULT([yes])
6981 ], [AC_MSG_RESULT([no])])
6985 AC_SUBST(HAVE_GCC_AVX)
6986 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
6987 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
6989 dnl ===================================================================
6990 dnl Identify the C++ library
6991 dnl ===================================================================
6993 AC_MSG_CHECKING([what the C++ library is])
6995 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7001 [CPP_LIBRARY=GLIBCXX
7002 cpp_library_name="GNU libstdc++"
7004 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7006 #ifndef _LIBCPP_VERSION
7011 cpp_library_name="LLVM libc++"
7012 AC_DEFINE([HAVE_LIBCXX])
7014 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7021 cpp_library_name="Microsoft"
7023 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7024 AC_MSG_RESULT([$cpp_library_name])
7027 dnl ===================================================================
7029 dnl ===================================================================
7030 AC_PATH_PROG(GPERF, gperf)
7031 if test -z "$GPERF"; then
7032 AC_MSG_ERROR([gperf not found but needed. Install it.])
7034 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7035 GPERF=`cygpath -m $GPERF`
7037 AC_MSG_CHECKING([whether gperf is new enough])
7038 my_gperf_ver1=$($GPERF --version | head -n 1)
7039 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7040 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7041 if test "$my_gperf_ver3" -ge 301; then
7042 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7044 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7048 dnl ===================================================================
7049 dnl Check for system libcmis
7050 dnl ===================================================================
7051 # libcmis requires curl and we can't build curl for iOS
7052 if test $_os != iOS; then
7053 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7058 AC_SUBST(ENABLE_LIBCMIS)
7060 dnl ===================================================================
7062 dnl ===================================================================
7064 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7066 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7067 if test "$with_latest_c__" = yes; then
7068 CXXFLAGS_CXX11=-std:c++latest
7070 CXXFLAGS_CXX11=-std:c++17
7072 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -Zc:__cplusplus"
7073 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7074 my_flags='-std=c++17 -std=c++1z'
7075 if test "$with_latest_c__" = yes; then
7076 my_flags="-std=c++20 -std=c++2a $my_flags"
7078 for flag in $my_flags; do
7079 if test "$COM" = MSC; then
7080 flag="-Xclang $flag"
7082 save_CXXFLAGS=$CXXFLAGS
7083 CXXFLAGS="$CXXFLAGS $flag -Werror"
7084 if test "$SYSTEM_LIBCMIS" = TRUE; then
7085 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7088 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7089 #include <algorithm>
7090 #include <functional>
7093 #if defined SYSTEM_LIBCMIS
7094 // See ucb/source/ucp/cmis/auth_provider.hxx:
7095 #if !defined __clang__
7096 #pragma GCC diagnostic push
7097 #pragma GCC diagnostic ignored "-Wdeprecated"
7098 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7100 #include <libcmis/libcmis.hxx>
7101 #if !defined __clang__
7102 #pragma GCC diagnostic pop
7106 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7107 std::sort(v.begin(), v.end(), fn);
7109 ]])],[CXXFLAGS_CXX11=$flag])
7111 CXXFLAGS=$save_CXXFLAGS
7112 if test -n "$CXXFLAGS_CXX11"; then
7117 if test -n "$CXXFLAGS_CXX11"; then
7118 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7122 AC_SUBST(CXXFLAGS_CXX11)
7124 if test "$GCC" = "yes"; then
7125 save_CXXFLAGS=$CXXFLAGS
7126 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7128 CXXFLAGS=$save_CXXFLAGS
7129 AC_SUBST(ATOMIC_LIB)
7132 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7133 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7134 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7135 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7136 dnl again towards 4.7.2:
7137 if test $CPP_LIBRARY = GLIBCXX; then
7138 AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7140 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7142 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7143 // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7144 // GCC 4.7.0: 20120322
7145 // GCC 4.7.1: 20120614
7146 // and using a range check is not possible as the mapping between
7147 // __GLIBCXX__ values and GCC versions is not monotonic
7152 ]])], [AC_MSG_RESULT(no, ok)],
7153 [AC_MSG_ERROR(yes)])
7157 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7158 save_CXXFLAGS=$CXXFLAGS
7159 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7162 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7165 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7181 a thinga[]={{0,0}, {1,1}};
7182 b thingb[]={{0,0}, {1,1}};
7183 size_t i = sizeof(sal_n_array_size(thinga));
7184 size_t j = sizeof(sal_n_array_size(thingb));
7185 return !(i != 0 && j != 0);
7187 ], [ AC_MSG_RESULT(yes) ],
7188 [ AC_MSG_ERROR(no)])
7190 CXXFLAGS=$save_CXXFLAGS
7192 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7193 if test "$GCC" = yes; then
7194 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7196 save_CXXFLAGS=$CXXFLAGS
7197 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7198 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7199 CXXFLAGS=$save_CXXFLAGS
7201 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7202 AC_MSG_RESULT([yes])
7207 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7209 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
7210 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
7211 dnl from consteval constructor initializing const variable":
7213 save_CXXFLAGS=$CXXFLAGS
7214 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7215 AC_RUN_IFELSE([AC_LANG_PROGRAM([
7217 consteval S() { i = 1; }
7222 return (s.i == 1) ? 0 : 1;
7224 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
7225 AC_MSG_RESULT([yes])
7226 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
7227 CXXFLAGS=$save_CXXFLAGS
7230 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7232 save_CXXFLAGS=$CXXFLAGS
7233 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7234 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7235 #include <algorithm>
7236 #include <initializer_list>
7238 template<typename T> class S {
7242 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7244 constinit S<int> s{3, 2, 1};
7246 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7247 AC_MSG_RESULT([yes])
7248 ], [AC_MSG_RESULT([no])])
7249 CXXFLAGS=$save_CXXFLAGS
7252 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7254 save_CXXFLAGS=$CXXFLAGS
7255 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7256 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7258 #include <type_traits>
7259 // Don't check size_type directly, as it was called index_type before P1872R0:
7260 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7262 AC_DEFINE([HAVE_CPP_SPAN],[1])
7263 AC_MSG_RESULT([yes])
7264 ], [AC_MSG_RESULT([no])])
7265 CXXFLAGS=$save_CXXFLAGS
7268 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7270 save_CXXFLAGS=$CXXFLAGS
7271 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7272 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7273 struct S1 { S1(S1 &&); };
7275 S1 f(S2 s) { return s; }
7277 AC_DEFINE([HAVE_P1155R3],[1])
7278 AC_MSG_RESULT([yes])
7279 ], [AC_MSG_RESULT([no])])
7280 CXXFLAGS=$save_CXXFLAGS
7283 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7284 dnl which is included in -Wextra anyway):
7285 HAVE_WDEPRECATED_COPY_DTOR=
7286 if test "$GCC" = yes; then
7287 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7289 save_CXXFLAGS=$CXXFLAGS
7290 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7291 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7292 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7293 AC_MSG_RESULT([yes])
7294 ], [AC_MSG_RESULT([no])])
7295 CXXFLAGS=$save_CXXFLAGS
7298 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7300 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7301 dnl uninitialized warning for code like
7304 dnl boost::optional<OString> * g(bool b) {
7305 dnl boost::optional<OString> o;
7307 dnl return new boost::optional<OString>(o);
7310 dnl (as is e.g. present, in a slightly more elaborate form, in
7311 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7312 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7313 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7314 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7315 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7317 save_CXXFLAGS=$CXXFLAGS
7318 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7319 if test "$ENABLE_OPTIMIZED" = TRUE; then
7320 CXXFLAGS="$CXXFLAGS -O2"
7322 CXXFLAGS="$CXXFLAGS -O0"
7324 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7333 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7334 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7340 char stg[sizeof (S1)];
7348 ]])], [AC_MSG_RESULT([no])], [
7349 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7350 AC_MSG_RESULT([yes])
7352 CXXFLAGS=$save_CXXFLAGS
7355 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7357 dnl ===================================================================
7358 dnl CPU Intrinsics support - SSE, AVX
7359 dnl ===================================================================
7361 CXXFLAGS_INTRINSICS_SSE2=
7362 CXXFLAGS_INTRINSICS_SSSE3=
7363 CXXFLAGS_INTRINSICS_SSE41=
7364 CXXFLAGS_INTRINSICS_SSE42=
7365 CXXFLAGS_INTRINSICS_AVX=
7366 CXXFLAGS_INTRINSICS_AVX2=
7367 CXXFLAGS_INTRINSICS_AVX512=
7368 CXXFLAGS_INTRINSICS_F16C=
7369 CXXFLAGS_INTRINSICS_FMA=
7371 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7372 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7379 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7383 # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7384 # MSVC seems to differentiate only between SSE and SSE2, where in fact
7385 # SSE2 seems to be SSE2+.
7386 # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7387 # is not empty (and can be tested in gbuild).
7388 flag_sse2=-arch:SSE2
7389 flag_ssse3=-arch:SSE2
7390 flag_sse41=-arch:SSE2
7391 flag_sse42=-arch:SSE2
7393 flag_avx2=-arch:AVX2
7394 flag_avx512=-arch:AVX512
7395 # These are part of -arch:AVX2
7396 flag_f16c=-arch:AVX2
7400 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7402 save_CXXFLAGS=$CXXFLAGS
7403 CXXFLAGS="$CXXFLAGS $flag_sse2"
7404 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7405 #include <emmintrin.h>
7407 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7408 c = _mm_xor_si128 (a, b);
7412 [can_compile_sse2=yes],
7413 [can_compile_sse2=no])
7415 CXXFLAGS=$save_CXXFLAGS
7416 AC_MSG_RESULT([${can_compile_sse2}])
7417 if test "${can_compile_sse2}" = "yes" ; then
7418 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7421 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7423 save_CXXFLAGS=$CXXFLAGS
7424 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7425 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7426 #include <tmmintrin.h>
7428 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7429 c = _mm_maddubs_epi16 (a, b);
7433 [can_compile_ssse3=yes],
7434 [can_compile_ssse3=no])
7436 CXXFLAGS=$save_CXXFLAGS
7437 AC_MSG_RESULT([${can_compile_ssse3}])
7438 if test "${can_compile_ssse3}" = "yes" ; then
7439 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7442 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7444 save_CXXFLAGS=$CXXFLAGS
7445 CXXFLAGS="$CXXFLAGS $flag_sse41"
7446 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7447 #include <smmintrin.h>
7449 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7450 c = _mm_cmpeq_epi64 (a, b);
7454 [can_compile_sse41=yes],
7455 [can_compile_sse41=no])
7457 CXXFLAGS=$save_CXXFLAGS
7458 AC_MSG_RESULT([${can_compile_sse41}])
7459 if test "${can_compile_sse41}" = "yes" ; then
7460 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7463 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7465 save_CXXFLAGS=$CXXFLAGS
7466 CXXFLAGS="$CXXFLAGS $flag_sse42"
7467 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7468 #include <nmmintrin.h>
7470 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7471 c = _mm_cmpgt_epi64 (a, b);
7475 [can_compile_sse42=yes],
7476 [can_compile_sse42=no])
7478 CXXFLAGS=$save_CXXFLAGS
7479 AC_MSG_RESULT([${can_compile_sse42}])
7480 if test "${can_compile_sse42}" = "yes" ; then
7481 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7484 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7486 save_CXXFLAGS=$CXXFLAGS
7487 CXXFLAGS="$CXXFLAGS $flag_avx"
7488 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7489 #include <immintrin.h>
7491 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7492 c = _mm256_xor_ps(a, b);
7496 [can_compile_avx=yes],
7497 [can_compile_avx=no])
7499 CXXFLAGS=$save_CXXFLAGS
7500 AC_MSG_RESULT([${can_compile_avx}])
7501 if test "${can_compile_avx}" = "yes" ; then
7502 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7505 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7507 save_CXXFLAGS=$CXXFLAGS
7508 CXXFLAGS="$CXXFLAGS $flag_avx2"
7509 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7510 #include <immintrin.h>
7512 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7513 c = _mm256_maddubs_epi16(a, b);
7517 [can_compile_avx2=yes],
7518 [can_compile_avx2=no])
7520 CXXFLAGS=$save_CXXFLAGS
7521 AC_MSG_RESULT([${can_compile_avx2}])
7522 if test "${can_compile_avx2}" = "yes" ; then
7523 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7526 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7528 save_CXXFLAGS=$CXXFLAGS
7529 CXXFLAGS="$CXXFLAGS $flag_avx512"
7530 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7531 #include <immintrin.h>
7533 __m512i a = _mm512_loadu_si512(0);
7537 [can_compile_avx512=yes],
7538 [can_compile_avx512=no])
7540 CXXFLAGS=$save_CXXFLAGS
7541 AC_MSG_RESULT([${can_compile_avx512}])
7542 if test "${can_compile_avx512}" = "yes" ; then
7543 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7546 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7548 save_CXXFLAGS=$CXXFLAGS
7549 CXXFLAGS="$CXXFLAGS $flag_f16c"
7550 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7551 #include <immintrin.h>
7553 __m128i a = _mm_set1_epi32 (0);
7555 c = _mm_cvtph_ps(a);
7559 [can_compile_f16c=yes],
7560 [can_compile_f16c=no])
7562 CXXFLAGS=$save_CXXFLAGS
7563 AC_MSG_RESULT([${can_compile_f16c}])
7564 if test "${can_compile_f16c}" = "yes" ; then
7565 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7568 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7570 save_CXXFLAGS=$CXXFLAGS
7571 CXXFLAGS="$CXXFLAGS $flag_fma"
7572 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7573 #include <immintrin.h>
7575 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7576 d = _mm256_fmadd_ps(a, b, c);
7580 [can_compile_fma=yes],
7581 [can_compile_fma=no])
7583 CXXFLAGS=$save_CXXFLAGS
7584 AC_MSG_RESULT([${can_compile_fma}])
7585 if test "${can_compile_fma}" = "yes" ; then
7586 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7589 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7590 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7591 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7592 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7593 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7594 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7595 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7596 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7597 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7599 dnl ===================================================================
7600 dnl system stl sanity tests
7601 dnl ===================================================================
7602 if test "$_os" != "WINNT"; then
7606 save_CPPFLAGS="$CPPFLAGS"
7607 if test -n "$MACOSX_SDK_PATH"; then
7608 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7611 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7613 if test "$CPP_LIBRARY" = GLIBCXX; then
7614 dnl gcc#19664, gcc#22482, rhbz#162935
7615 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7616 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7617 AC_MSG_RESULT([$stlvisok])
7618 if test "$stlvisok" = "no"; then
7619 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7623 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7624 # when we don't make any dynamic libraries?
7625 if test "$DISABLE_DYNLOADING" = ""; then
7626 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7627 cat > conftestlib1.cc <<_ACEOF
7628 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7629 struct S2: S1<int> { virtual ~S2(); };
7632 cat > conftestlib2.cc <<_ACEOF
7633 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7634 struct S2: S1<int> { virtual ~S2(); };
7635 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7637 gccvisinlineshiddenok=yes
7638 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7639 gccvisinlineshiddenok=no
7641 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7642 dnl known to not work with -z defs (unsetting which makes the test
7644 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7645 if test "$COM_IS_CLANG" = TRUE; then
7646 for i in $CXX $CXXFLAGS; do
7649 my_linkflagsnoundefs=
7655 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7656 gccvisinlineshiddenok=no
7661 AC_MSG_RESULT([$gccvisinlineshiddenok])
7662 if test "$gccvisinlineshiddenok" = "no"; then
7663 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7667 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7668 cat >visibility.cxx <<_ACEOF
7669 #pragma GCC visibility push(hidden)
7670 struct __attribute__ ((visibility ("default"))) TestStruct {
7673 __attribute__ ((visibility ("default"))) void TestFunc() {
7677 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7682 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7685 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7697 rm -f visibility.s visibility.cxx
7699 AC_MSG_RESULT([$gccvisbroken])
7700 if test "$gccvisbroken" = "yes"; then
7701 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7704 CPPFLAGS="$save_CPPFLAGS"
7709 dnl ===================================================================
7711 dnl ===================================================================
7713 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7714 if test "$GCC" = "yes"; then
7715 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7717 save_CXXFLAGS=$CXXFLAGS
7718 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7719 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7720 CXXFLAGS=$save_CXXFLAGS
7722 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7723 AC_MSG_RESULT([yes])
7728 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7730 dnl ===================================================================
7731 dnl Compiler plugins
7732 dnl ===================================================================
7735 # currently only Clang
7737 if test "$COM_IS_CLANG" != "TRUE"; then
7738 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7739 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7740 enable_compiler_plugins=no
7744 COMPILER_PLUGINS_COM_IS_CLANG=
7745 if test "$COM_IS_CLANG" = "TRUE"; then
7746 if test -n "$enable_compiler_plugins"; then
7747 compiler_plugins="$enable_compiler_plugins"
7748 elif test -n "$ENABLE_DBGUTIL"; then
7749 compiler_plugins=test
7753 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7754 if test "$CLANGVER" -lt 50002; then
7755 if test "$compiler_plugins" = yes; then
7756 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7762 if test "$compiler_plugins" != "no"; then
7763 dnl The prefix where Clang resides, override to where Clang resides if
7764 dnl using a source build:
7765 if test -z "$CLANGDIR"; then
7766 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | head -n 1)))))
7768 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7769 if test -z "$COMPILER_PLUGINS_CXX"; then
7770 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7772 clangbindir=$CLANGDIR/bin
7773 if test "$build_os" = "cygwin"; then
7774 clangbindir=$(cygpath -u "$clangbindir")
7776 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
7777 if test -n "$LLVM_CONFIG"; then
7778 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
7779 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
7780 if test -z "$CLANGLIBDIR"; then
7781 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
7783 # Try if clang is built from source (in which case its includes are not together with llvm includes).
7784 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
7785 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
7786 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
7787 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
7789 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
7790 clangobjdir=$($LLVM_CONFIG --obj-root)
7791 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
7792 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
7795 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
7799 save_CPPFLAGS=$CPPFLAGS
7800 save_CXXFLAGS=$CXXFLAGS
7801 save_LDFLAGS=$LDFLAGS
7803 CXX=$COMPILER_PLUGINS_CXX
7804 CXXCPP="$COMPILER_PLUGINS_CXX -E"
7805 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7806 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7807 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
7808 [COMPILER_PLUGINS=TRUE],
7810 if test "$compiler_plugins" = "yes"; then
7811 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
7813 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
7814 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
7817 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
7818 dnl comment in compilerplugins/Makefile-clang.mk:
7819 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
7821 AC_MSG_CHECKING([for clang libraries to use])
7822 if test -z "$CLANGTOOLLIBS"; then
7823 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
7824 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
7826 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7827 [[ clang::FullSourceLoc().dump(); ]])
7828 ],[CLANGTOOLLIBS="$LIBS"],[])
7830 if test -z "$CLANGTOOLLIBS"; then
7831 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
7833 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7834 [[ clang::FullSourceLoc().dump(); ]])
7835 ],[CLANGTOOLLIBS="$LIBS"],[])
7837 AC_MSG_RESULT([$CLANGTOOLLIBS])
7838 if test -z "$CLANGTOOLLIBS"; then
7839 if test "$compiler_plugins" = "yes"; then
7840 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
7842 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
7843 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
7847 if test -n "$COMPILER_PLUGINS"; then
7848 if test -z "$CLANGSYSINCLUDE"; then
7849 if test -n "$LLVM_CONFIG"; then
7850 # Path to the clang system headers (no idea if there's a better way to get it).
7851 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
7858 CPPFLAGS=$save_CPPFLAGS
7859 CXXFLAGS=$save_CXXFLAGS
7860 LDFLAGS=$save_LDFLAGS
7864 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
7865 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7871 [AC_MSG_RESULT([yes])
7872 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
7873 [AC_MSG_RESULT([no])])
7874 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7877 if test "$enable_compiler_plugins" = "yes"; then
7878 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
7881 COMPILER_PLUGINS_ANALYZER_PCH=
7882 if test "$enable_compiler_plugins_analyzer_pch" != no; then
7883 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
7885 AC_SUBST(COMPILER_PLUGINS)
7886 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
7887 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7888 AC_SUBST(COMPILER_PLUGINS_CXX)
7889 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
7890 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
7891 AC_SUBST(COMPILER_PLUGINS_DEBUG)
7892 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
7894 AC_SUBST(CLANGLIBDIR)
7895 AC_SUBST(CLANGTOOLLIBS)
7896 AC_SUBST(CLANGSYSINCLUDE)
7898 # Plugin to help linker.
7899 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
7900 # This makes --enable-lto build with clang work.
7903 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
7904 AC_SUBST(HAVE_POSIX_FALLOCATE)
7906 JITC_PROCESSOR_TYPE=""
7907 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
7908 # IBMs JDK needs this...
7909 JITC_PROCESSOR_TYPE=6
7910 export JITC_PROCESSOR_TYPE
7912 AC_SUBST([JITC_PROCESSOR_TYPE])
7914 # Misc Windows Stuff
7915 AC_ARG_WITH(ucrt-dir,
7916 AS_HELP_STRING([--with-ucrt-dir],
7917 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
7918 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
7919 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
7920 Windows6.1-KB2999226-x64.msu
7921 Windows6.1-KB2999226-x86.msu
7922 Windows8.1-KB2999226-x64.msu
7923 Windows8.1-KB2999226-x86.msu
7924 Windows8-RT-KB2999226-x64.msu
7925 Windows8-RT-KB2999226-x86.msu
7926 A zip archive including those files is available from Microsoft site:
7927 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
7930 UCRT_REDISTDIR="$with_ucrt_dir"
7931 if test $_os = "WINNT"; then
7933 for i in $PKGFORMAT; do
7934 if test "$i" = msi; then
7939 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
7940 MSVC_DLLS="$msvcdlls"
7941 test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
7942 # MSVC 15.3 changed it to VC141
7943 if echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
7944 SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
7945 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
7946 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
7948 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
7951 if test "$UCRT_REDISTDIR" = "no"; then
7952 dnl explicitly disabled
7955 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
7956 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
7957 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
7958 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
7959 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
7960 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
7962 if test -n "$PKGFORMAT"; then
7963 for i in $PKGFORMAT; do
7966 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
7967 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
7976 AC_SUBST(UCRT_REDISTDIR)
7977 AC_SUBST(MSVC_DLL_PATH)
7981 dnl ===================================================================
7983 dnl ===================================================================
7984 if test "$ENABLE_JAVA" != ""; then
7986 # Windows-specific tests
7987 if test "$build_os" = "cygwin"; then
7988 if test -z "$with_jdk_home"; then
7989 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
7990 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
7991 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
7992 if test -n "$regvalue"; then
7994 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
7995 reg_jdk_home=$regvalue
7998 if test -f "$reg_jdk_home/lib/jvm.lib" -a -f "$reg_jdk_home/bin/java.exe"; then
7999 with_jdk_home="$reg_jdk_home"
8000 howfound="found automatically"
8002 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option pointing to a $WIN_HOST_BITS-bit JDK >= 9])
8005 test "$build_os" = "cygwin" && with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8006 howfound="you passed"
8010 # 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.
8011 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8012 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8013 with_jdk_home=`/usr/libexec/java_home`
8016 JAVA_HOME=; export JAVA_HOME
8017 if test -z "$with_jdk_home"; then
8018 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8020 _java_path="$with_jdk_home/bin/$with_java"
8021 dnl Check if there is a Java interpreter at all.
8022 if test -x "$_java_path"; then
8023 JAVAINTERPRETER=$_java_path
8025 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8029 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8030 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8031 dnl loaded by java to run JunitTests:
8032 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8033 shortjdkhome=`cygpath -d "$with_jdk_home"`
8034 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
8035 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8036 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8037 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
8038 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8039 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8042 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8043 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8045 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8046 elif test "$cross_compiling" != "yes"; then
8048 AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8049 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8050 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8051 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8054 *) # assumption: everything else 32-bit
8055 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8056 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8057 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8064 dnl ===================================================================
8066 dnl ===================================================================
8068 # Whether all the complexity here actually is needed any more or not, no idea.
8070 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8072 AC_MSG_CHECKING([the installed JDK])
8073 if test -n "$JAVAINTERPRETER"; then
8074 dnl java -version sends output to stderr!
8075 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8076 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8077 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8078 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8079 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8080 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8081 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8082 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8086 dnl Sun JDK specific tests
8087 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8088 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8090 if test "$_jdk_ver" -lt 10900; then
8091 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8093 if test "$_jdk_ver" -gt 10900; then
8094 JAVA_CLASSPATH_NOT_SET=TRUE
8097 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8098 if test "$_os" = "WINNT"; then
8099 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8101 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8103 # set to limit VM usage for JunitTests
8105 # set to limit VM usage for javac
8106 JAVACFLAGS=-J-Xmx128M
8109 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8112 if test -z "$ENABLE_JAVA"; then
8116 elif test "$cross_compiling" = "yes"; then
8117 # Just assume compatibility of build and host JDK
8119 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8123 dnl ===================================================================
8124 dnl Checks for javac
8125 dnl ===================================================================
8126 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8127 javacompiler="javac"
8128 : ${JAVA_SOURCE_VER=8}
8129 : ${JAVA_TARGET_VER=8}
8130 if test -z "$with_jdk_home"; then
8131 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8133 _javac_path="$with_jdk_home/bin/$javacompiler"
8134 dnl Check if there is a Java compiler at all.
8135 if test -x "$_javac_path"; then
8136 JAVACOMPILER=$_javac_path
8139 if test -z "$JAVACOMPILER"; then
8140 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8142 if test "$build_os" = "cygwin"; then
8143 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8144 JAVACOMPILER="${JAVACOMPILER}.exe"
8146 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8150 dnl ===================================================================
8151 dnl Checks for javadoc
8152 dnl ===================================================================
8153 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8154 if test -z "$with_jdk_home"; then
8155 AC_PATH_PROG(JAVADOC, javadoc)
8157 _javadoc_path="$with_jdk_home/bin/javadoc"
8158 dnl Check if there is a javadoc at all.
8159 if test -x "$_javadoc_path"; then
8160 JAVADOC=$_javadoc_path
8162 AC_PATH_PROG(JAVADOC, javadoc)
8165 if test -z "$JAVADOC"; then
8166 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8168 if test "$build_os" = "cygwin"; then
8169 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8170 JAVADOC="${JAVADOC}.exe"
8172 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8175 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8176 JAVADOCISGJDOC="yes"
8180 AC_SUBST(JAVADOCISGJDOC)
8182 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8183 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8184 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8185 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8186 # try to recover first by looking whether we have an alternative
8187 # system as in Debian or newer SuSEs where following /usr/bin/javac
8188 # over /etc/alternatives/javac leads to the right bindir where we
8189 # just need to strip a bit away to get a valid JAVA_HOME
8190 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8191 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8192 # maybe only one level of symlink (e.g. on Mac)
8193 JAVA_HOME=$(readlink $JAVACOMPILER)
8194 if test "$(dirname $JAVA_HOME)" = "."; then
8195 # we've got no path to trim back
8200 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8201 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8202 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8203 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8205 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8206 if test "$JAVA_HOME" != "/usr"; then
8207 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8208 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8209 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8210 dnl Tiger already returns a JDK path...
8211 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8213 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8214 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8215 dnl that checks which version to run
8216 if test -f "$JAVA_HOME"; then
8217 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8222 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8224 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8225 if test -z "$JAVA_HOME"; then
8226 if test "x$with_jdk_home" = "x"; then
8227 cat > findhome.java <<_ACEOF
8228 [import java.io.File;
8232 public static void main(String args[])
8234 String jrelocation = System.getProperty("java.home");
8235 File jre = new File(jrelocation);
8236 System.out.println(jre.getParent());
8240 AC_MSG_CHECKING([if javac works])
8241 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8242 AC_TRY_EVAL(javac_cmd)
8243 if test $? = 0 -a -f ./findhome.class; then
8244 AC_MSG_RESULT([javac works])
8246 echo "configure: javac test failed" >&5
8247 cat findhome.java >&5
8248 AC_MSG_ERROR([javac does not work - java projects will not build!])
8250 AC_MSG_CHECKING([if gij knows its java.home])
8251 JAVA_HOME=`$JAVAINTERPRETER findhome`
8252 if test $? = 0 -a "$JAVA_HOME" != ""; then
8253 AC_MSG_RESULT([$JAVA_HOME])
8255 echo "configure: java test failed" >&5
8256 cat findhome.java >&5
8257 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8259 # clean-up after ourselves
8260 rm -f ./findhome.java ./findhome.class
8262 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8266 # now check if $JAVA_HOME is really valid
8267 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8268 case "${JAVA_HOME}" in
8269 /Library/Java/JavaVirtualMachines/*)
8272 AC_MSG_ERROR([JDK in $JAVA_HOME cannot be used in CppUnit tests - install Oracle JDK])
8275 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8276 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8277 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8278 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8279 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8280 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8281 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8284 PathFormat "$JAVA_HOME"
8285 JAVA_HOME="$formatted_path"
8288 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8291 AC_MSG_CHECKING([for JAWT lib])
8292 if test "$_os" = WINNT; then
8293 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8298 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8299 JAVA_ARCH=$my_java_arch
8314 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8315 JAVA_ARCH=$my_java_arch
8318 my_java_arch=sparcv9
8324 my_java_arch=$host_cpu
8327 # This is where JDK9 puts the library
8328 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8329 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8331 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8333 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8335 AC_MSG_RESULT([$JAWTLIB])
8339 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8343 JAVAINC="-I$JAVA_HOME/include"
8344 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8345 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8349 JAVAINC="-I$JAVA_HOME/include/win32"
8350 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8354 if test -d "$JAVA_HOME/include/darwin"; then
8355 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8357 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8362 JAVAINC="-I$JAVA_HOME/include"
8363 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8367 JAVAINC="-I$JAVA_HOME/include"
8368 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8369 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
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/linux"
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/linux"
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/netbsd"
8389 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8393 JAVAINC="-I$JAVA_HOME/include"
8394 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8395 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8399 JAVAINC="-I$JAVA_HOME/include"
8400 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8401 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8405 SOLARINC="$SOLARINC $JAVAINC"
8407 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8408 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8409 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8413 AC_SUBST(JAVACFLAGS)
8414 AC_SUBST(JAVACOMPILER)
8415 AC_SUBST(JAVAINTERPRETER)
8416 AC_SUBST(JAVAIFLAGS)
8417 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8418 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8420 AC_SUBST(JAVA_HOME_FOR_BUILD)
8422 AC_SUBST(JDK_FOR_BUILD)
8423 AC_SUBST(JAVA_SOURCE_VER)
8424 AC_SUBST(JAVA_TARGET_VER)
8427 dnl ===================================================================
8428 dnl Export file validation
8429 dnl ===================================================================
8430 AC_MSG_CHECKING([whether to enable export file validation])
8431 if test "$with_export_validation" != "no"; then
8432 if test -z "$ENABLE_JAVA"; then
8433 if test "$with_export_validation" = "yes"; then
8434 AC_MSG_ERROR([requested, but Java is disabled])
8436 AC_MSG_RESULT([no, as Java is disabled])
8438 elif ! test -d "${SRC_ROOT}/schema"; then
8439 if test "$with_export_validation" = "yes"; then
8440 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8442 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8445 AC_MSG_RESULT([yes])
8446 AC_DEFINE(HAVE_EXPORT_VALIDATION)
8448 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8449 if test -z "$ODFVALIDATOR"; then
8450 # remember to download the ODF toolkit with validator later
8451 AC_MSG_NOTICE([no odfvalidator found, will download it])
8452 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8453 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8455 # and fetch name of odfvalidator jar name from download.lst
8456 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8457 AC_SUBST(ODFVALIDATOR_JAR)
8459 if test -z "$ODFVALIDATOR_JAR"; then
8460 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8463 if test "$build_os" = "cygwin"; then
8464 # In case of Cygwin it will be executed from Windows,
8465 # so we need to run bash and absolute path to validator
8466 # so instead of "odfvalidator" it will be
8467 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8468 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8470 ODFVALIDATOR="sh $ODFVALIDATOR"
8472 AC_SUBST(ODFVALIDATOR)
8475 AC_PATH_PROGS(OFFICEOTRON, officeotron)
8476 if test -z "$OFFICEOTRON"; then
8477 # remember to download the officeotron with validator later
8478 AC_MSG_NOTICE([no officeotron found, will download it])
8479 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8480 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8482 # and fetch name of officeotron jar name from download.lst
8483 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8484 AC_SUBST(OFFICEOTRON_JAR)
8486 if test -z "$OFFICEOTRON_JAR"; then
8487 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8490 # check version of existing officeotron
8491 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8492 if test 0"$OFFICEOTRON_VER" -lt 704; then
8493 AC_MSG_ERROR([officeotron too old])
8496 if test "$build_os" = "cygwin"; then
8497 # In case of Cygwin it will be executed from Windows,
8498 # so we need to run bash and absolute path to validator
8499 # so instead of "odfvalidator" it will be
8500 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8501 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8503 OFFICEOTRON="sh $OFFICEOTRON"
8506 AC_SUBST(OFFICEOTRON)
8511 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8512 if test "$with_bffvalidator" != "no"; then
8513 AC_DEFINE(HAVE_BFFVALIDATOR)
8515 if test "$with_export_validation" = "no"; then
8516 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8519 if test "$with_bffvalidator" = "yes"; then
8520 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8522 BFFVALIDATOR="$with_bffvalidator"
8525 if test "$build_os" = "cygwin"; then
8526 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8527 AC_MSG_RESULT($BFFVALIDATOR)
8529 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8531 elif test -n "$BFFVALIDATOR"; then
8532 # We are not in Cygwin but need to run Windows binary with wine
8533 AC_PATH_PROGS(WINE, wine)
8535 # so swap in a shell wrapper that converts paths transparently
8536 BFFVALIDATOR_EXE="$BFFVALIDATOR"
8537 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8538 AC_SUBST(BFFVALIDATOR_EXE)
8539 AC_MSG_RESULT($BFFVALIDATOR)
8541 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8543 AC_SUBST(BFFVALIDATOR)
8548 dnl ===================================================================
8549 dnl Check for C preprocessor to use
8550 dnl ===================================================================
8551 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8552 if test -n "$with_idlc_cpp"; then
8553 AC_MSG_RESULT([$with_idlc_cpp])
8554 AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8556 AC_MSG_RESULT([ucpp])
8557 AC_MSG_CHECKING([which ucpp tp use])
8558 if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8559 AC_MSG_RESULT([external])
8560 AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8562 AC_MSG_RESULT([internal])
8563 BUILD_TYPE="$BUILD_TYPE UCPP"
8566 AC_SUBST(SYSTEM_UCPP)
8568 dnl ===================================================================
8569 dnl Check for epm (not needed for Windows)
8570 dnl ===================================================================
8571 AC_MSG_CHECKING([whether to enable EPM for packing])
8572 if test "$enable_epm" = "yes"; then
8573 AC_MSG_RESULT([yes])
8574 if test "$_os" != "WINNT"; then
8575 if test $_os = Darwin; then
8577 elif test -n "$with_epm"; then
8580 AC_PATH_PROG(EPM, epm, no)
8582 if test "$EPM" = "no" -o "$EPM" = "internal"; then
8583 AC_MSG_NOTICE([EPM will be built.])
8584 BUILD_TYPE="$BUILD_TYPE EPM"
8585 EPM=${WORKDIR}/UnpackedTarball/epm/epm
8587 # Gentoo has some epm which is something different...
8588 AC_MSG_CHECKING([whether the found epm is the right epm])
8589 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8590 AC_MSG_RESULT([yes])
8592 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8594 AC_MSG_CHECKING([epm version])
8595 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8596 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8597 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8598 AC_MSG_RESULT([OK, >= 3.7])
8600 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8601 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8606 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8607 AC_MSG_CHECKING([for rpm])
8608 for a in "$RPM" rpmbuild rpm; do
8609 $a --usage >/dev/null 2> /dev/null
8610 if test $? -eq 0; then
8614 $a --version >/dev/null 2> /dev/null
8615 if test $? -eq 0; then
8621 if test -z "$RPM"; then
8622 AC_MSG_ERROR([not found])
8623 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8624 RPM_PATH=`which $RPM`
8625 AC_MSG_RESULT([$RPM_PATH])
8626 SCPDEFS="$SCPDEFS -DWITH_RPM"
8628 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8631 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8632 AC_PATH_PROG(DPKG, dpkg, no)
8633 if test "$DPKG" = "no"; then
8634 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8637 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8638 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8639 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8640 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8641 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8642 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8643 AC_MSG_RESULT([yes])
8646 if echo "$PKGFORMAT" | $GREP -q rpm; then
8648 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8649 add_warning "the rpms will need to be installed with --nodeps"
8653 AC_MSG_WARN([the ${_pt}s will not be relocatable])
8654 add_warning "the ${_pt}s will not be relocatable"
8655 AC_MSG_WARN([if you want to make sure installation without --nodeps and
8656 relocation will work, you need to patch your epm with the
8657 patch in epm/epm-3.7.patch or build with
8658 --with-epm=internal which will build a suitable epm])
8663 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8664 AC_PATH_PROG(PKGMK, pkgmk, no)
8665 if test "$PKGMK" = "no"; then
8666 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8673 for i in $PKGFORMAT; do
8675 aix | bsd | deb | pkg | rpm | native | portable)
8677 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8687 if test "$enable_lotuswordpro" = "yes"; then
8690 AC_SUBST(ENABLE_LWP)
8692 dnl ===================================================================
8693 dnl Check for building ODK
8694 dnl ===================================================================
8695 if test "$enable_odk" = no; then
8698 if test "$with_doxygen" = no; then
8699 AC_MSG_CHECKING([for doxygen])
8703 if test "$with_doxygen" = yes; then
8704 AC_PATH_PROG([DOXYGEN], [doxygen])
8705 if test -z "$DOXYGEN"; then
8706 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8708 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8709 if ! dot -V 2>/dev/null; then
8710 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8714 AC_MSG_CHECKING([for doxygen])
8715 DOXYGEN=$with_doxygen
8716 AC_MSG_RESULT([$DOXYGEN])
8718 if test -n "$DOXYGEN"; then
8719 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8720 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8721 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8722 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8729 AC_MSG_CHECKING([whether to build the ODK])
8730 if test "$enable_odk" = "" -o "$enable_odk" != "no"; then
8731 AC_MSG_RESULT([yes])
8733 if test "$with_java" != "no"; then
8734 AC_MSG_CHECKING([whether to build unowinreg.dll])
8735 if test "$_os" = "WINNT" -a "$enable_build_unowinreg" = ""; then
8736 # build on Win by default
8737 enable_build_unowinreg=yes
8739 if test "$enable_build_unowinreg" = "" -o "$enable_build_unowinreg" = "no"; then
8743 AC_MSG_RESULT([yes])
8744 BUILD_UNOWINREG=TRUE
8746 if test "$_os" != "WINNT" -a "$BUILD_UNOWINREG" = "TRUE"; then
8747 if test -z "$with_mingw_cross_compiler"; then
8749 AC_CHECK_PROGS(MINGWCXX,i386-mingw32msvc-g++ i586-pc-mingw32-g++ i686-pc-mingw32-g++ i686-w64-mingw32-g++,false)
8750 elif test -x "$with_mingw_cross_compiler"; then
8751 MINGWCXX="$with_mingw_cross_compiler"
8753 AC_CHECK_TOOL(MINGWCXX, "$with_mingw_cross_compiler", false)
8756 if test "$MINGWCXX" = "false"; then
8757 AC_MSG_ERROR([MinGW32 C++ cross-compiler not found.])
8760 mingwstrip_test="`echo $MINGWCXX | $SED -e s/g++/strip/`"
8761 if test -x "$mingwstrip_test"; then
8762 MINGWSTRIP="$mingwstrip_test"
8764 AC_CHECK_TOOL(MINGWSTRIP, "$mingwstrip_test", false)
8767 if test "$MINGWSTRIP" = "false"; then
8768 AC_MSG_ERROR(MinGW32 binutils not found.)
8772 BUILD_TYPE="$BUILD_TYPE ODK"
8777 AC_SUBST(BUILD_UNOWINREG)
8779 AC_SUBST(MINGWSTRIP)
8781 dnl ===================================================================
8782 dnl Check for system zlib
8783 dnl ===================================================================
8784 if test "$with_system_zlib" = "auto"; then
8787 with_system_zlib="$with_system_libs"
8790 if test "$enable_fuzzers" != "yes"; then
8791 with_system_zlib=yes
8799 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8800 dnl and has no pkg-config for it at least on some tinderboxes,
8801 dnl so leaving that out for now
8802 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8803 AC_MSG_CHECKING([which zlib to use])
8804 if test "$with_system_zlib" = "yes"; then
8805 AC_MSG_RESULT([external])
8807 AC_CHECK_HEADER(zlib.h, [],
8808 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8809 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8810 [AC_MSG_ERROR(zlib not found or functional)], [])
8812 AC_MSG_RESULT([internal])
8814 BUILD_TYPE="$BUILD_TYPE ZLIB"
8815 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
8816 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
8818 AC_SUBST(ZLIB_CFLAGS)
8820 AC_SUBST(SYSTEM_ZLIB)
8822 dnl ===================================================================
8823 dnl Check for system jpeg
8824 dnl ===================================================================
8825 AC_MSG_CHECKING([which libjpeg to use])
8826 if test "$with_system_jpeg" = "yes"; then
8827 AC_MSG_RESULT([external])
8829 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
8830 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
8831 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
8832 [AC_MSG_ERROR(jpeg library not found or functional)], [])
8835 AC_MSG_RESULT([internal, libjpeg-turbo])
8836 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
8837 LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo"
8838 if test "$COM" = "MSC"; then
8839 LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib"
8841 LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg"
8845 x86_64 | amd64 | i*86 | x86 | ia32)
8846 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
8847 if test -z "$NASM" -a "$build_os" = "cygwin"; then
8848 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
8849 NASM="$LODE_HOME/opt/bin/nasm"
8850 elif test -x "/opt/lo/bin/nasm"; then
8851 NASM="/opt/lo/bin/nasm"
8855 if test -n "$NASM"; then
8856 AC_MSG_CHECKING([for object file format of host system])
8858 cygwin* | mingw* | pw32* | wsl*)
8868 msdosdjgpp* | go32*)
8871 os2-emx*) # not tested
8872 objfmt='MSOMF' # obj
8874 linux*coff* | linux*oldld*)
8890 kfreebsd* | freebsd* | netbsd* | openbsd*)
8891 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
8904 solaris* | sunos* | sysv* | sco*)
8914 darwin* | rhapsody* | nextstep* | openstep* | macos*)
8929 AC_MSG_RESULT([$objfmt])
8930 if test "$objfmt" = 'ELF ?'; then
8932 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
8935 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
8937 MSOMF) NAFLAGS='-fobj -DOBJ32';;
8938 Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
8939 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
8940 COFF) NAFLAGS='-fcoff -DCOFF';;
8941 a.out) NAFLAGS='-faout -DAOUT';;
8942 BSD-a.out) NAFLAGS='-faoutb -DAOUT';;
8943 ELF) NAFLAGS='-felf -DELF';;
8944 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__';;
8945 RDF) NAFLAGS='-frdf -DRDF';;
8946 Mach-O) NAFLAGS='-fmacho -DMACHO';;
8947 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
8949 AC_MSG_RESULT([$NAFLAGS])
8951 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
8952 cat > conftest.asm << EOF
8953 [%line __oline__ "configure"
8961 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
8962 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
8965 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
8966 cat conftest.asm >&AS_MESSAGE_LOG_FD
8969 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
8975 if test -z "$NASM"; then
8977 ****************************************************************************
8978 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
8982 if test "$build_os" = "cygwin"; then
8984 install a pre-compiled binary for Win32
8986 mkdir -p /opt/lo/bin
8988 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
8991 or get and install one from http://www.nasm.us/
8993 Then re-run autogen.sh
8995 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
8996 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9001 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9005 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9006 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9013 AC_SUBST(LIBJPEG_CFLAGS)
9014 AC_SUBST(LIBJPEG_LIBS)
9015 AC_SUBST(SYSTEM_LIBJPEG)
9017 dnl ===================================================================
9018 dnl Check for system clucene
9019 dnl ===================================================================
9020 dnl we should rather be using
9021 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9022 dnl but the contribs-lib check seems tricky
9023 AC_MSG_CHECKING([which clucene to use])
9024 if test "$with_system_clucene" = "yes"; then
9025 AC_MSG_RESULT([external])
9027 PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9028 CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9029 FilterLibs "${CLUCENE_LIBS}"
9030 CLUCENE_LIBS="${filteredlibs}"
9032 save_CXXFLAGS=$CXXFLAGS
9033 save_CPPFLAGS=$CPPFLAGS
9034 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9035 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9036 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9037 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9038 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9039 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9040 CXXFLAGS=$save_CXXFLAGS
9041 CPPFLAGS=$save_CPPFLAGS
9044 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9046 AC_MSG_RESULT([internal])
9048 BUILD_TYPE="$BUILD_TYPE CLUCENE"
9050 AC_SUBST(SYSTEM_CLUCENE)
9051 AC_SUBST(CLUCENE_CFLAGS)
9052 AC_SUBST(CLUCENE_LIBS)
9054 dnl ===================================================================
9055 dnl Check for system expat
9056 dnl ===================================================================
9057 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9059 dnl ===================================================================
9060 dnl Check for system xmlsec
9061 dnl ===================================================================
9062 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9064 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9065 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9067 AC_DEFINE([ENABLE_EOT])
9068 AC_MSG_RESULT([yes])
9070 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9075 AC_SUBST([ENABLE_EOT])
9077 dnl ===================================================================
9078 dnl Check for DLP libs
9079 dnl ===================================================================
9080 AS_IF([test "$COM" = "MSC"],
9081 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9082 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9084 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9086 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9088 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9090 AS_IF([test "$COM" = "MSC"],
9091 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9092 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9094 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9096 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9098 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9099 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9101 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9103 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9105 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9107 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9108 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.17])
9110 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9111 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
9113 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9115 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9116 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9118 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9120 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9122 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9124 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9126 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9127 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9129 dnl ===================================================================
9130 dnl Check for system lcms2
9131 dnl ===================================================================
9132 if test "$with_system_lcms2" != "yes"; then
9135 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9136 if test "$GCC" = "yes"; then
9137 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9139 if test "$COM" = "MSC"; then # override the above
9140 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9143 dnl ===================================================================
9144 dnl Check for system cppunit
9145 dnl ===================================================================
9146 if test "$_os" != "Android" ; then
9147 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9150 dnl ===================================================================
9151 dnl Check whether freetype is available
9152 dnl ===================================================================
9153 if test "$test_freetype" = "yes"; then
9154 AC_MSG_CHECKING([whether freetype is available])
9155 # FreeType has 3 different kinds of versions
9156 # * release, like 2.4.10
9157 # * libtool, like 13.0.7 (this what pkg-config returns)
9159 # FreeType's docs/VERSION.DLL provides a table mapping between the three
9162 PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9163 FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9164 FilterLibs "${FREETYPE_LIBS}"
9165 FREETYPE_LIBS="${filteredlibs}"
9166 SYSTEM_FREETYPE=TRUE
9168 FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9169 if test "x$ac_config_site_64bit_host" = xYES; then
9170 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9172 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9175 AC_SUBST(FREETYPE_CFLAGS)
9176 AC_SUBST(FREETYPE_LIBS)
9177 AC_SUBST([SYSTEM_FREETYPE])
9179 # ===================================================================
9180 # Check for system libxslt
9181 # to prevent incompatibilities between internal libxml2 and external libxslt,
9182 # or vice versa, use with_system_libxml here
9183 # ===================================================================
9184 if test "$with_system_libxml" = "auto"; then
9187 with_system_libxml="$with_system_libs"
9190 if test "$enable_fuzzers" != "yes"; then
9191 with_system_libxml=yes
9193 with_system_libxml=no
9199 AC_MSG_CHECKING([which libxslt to use])
9200 if test "$with_system_libxml" = "yes"; then
9201 AC_MSG_RESULT([external])
9203 if test "$_os" = "Darwin"; then
9204 dnl make sure to use SDK path
9205 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9206 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9208 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9209 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9211 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9212 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9213 FilterLibs "${LIBXSLT_LIBS}"
9214 LIBXSLT_LIBS="${filteredlibs}"
9215 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9216 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9217 FilterLibs "${LIBEXSLT_LIBS}"
9218 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9221 dnl Check for xsltproc
9222 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9223 if test "$XSLTPROC" = "no"; then
9224 AC_MSG_ERROR([xsltproc is required])
9227 AC_MSG_RESULT([internal])
9229 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9231 AC_SUBST(SYSTEM_LIBXSLT)
9232 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9233 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9235 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9237 AC_SUBST(LIBEXSLT_CFLAGS)
9238 AC_SUBST(LIBEXSLT_LIBS)
9239 AC_SUBST(LIBXSLT_CFLAGS)
9240 AC_SUBST(LIBXSLT_LIBS)
9243 # ===================================================================
9244 # Check for system libxml
9245 # ===================================================================
9246 AC_MSG_CHECKING([which libxml to use])
9247 if test "$with_system_libxml" = "yes"; then
9248 AC_MSG_RESULT([external])
9250 if test "$_os" = "Darwin"; then
9251 dnl make sure to use SDK path
9252 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9254 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9255 elif test $_os = iOS; then
9256 dnl make sure to use SDK path
9257 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9258 LIBXML_CFLAGS="-I$usr/include/libxml2"
9259 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9261 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9262 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9263 FilterLibs "${LIBXML_LIBS}"
9264 LIBXML_LIBS="${filteredlibs}"
9267 dnl Check for xmllint
9268 AC_PATH_PROG(XMLLINT, xmllint, no)
9269 if test "$XMLLINT" = "no"; then
9270 AC_MSG_ERROR([xmllint is required])
9273 AC_MSG_RESULT([internal])
9275 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9276 if test "$COM" = "MSC"; then
9277 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9279 if test "$COM" = "MSC"; then
9280 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9282 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9283 if test "$_os" = Android; then
9284 LIBXML_LIBS="$LIBXML_LIBS -lm"
9287 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9289 AC_SUBST(SYSTEM_LIBXML)
9290 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9291 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9293 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9294 AC_SUBST(LIBXML_CFLAGS)
9295 AC_SUBST(LIBXML_LIBS)
9298 # =====================================================================
9299 # Checking for a Python interpreter with version >= 3.3.
9300 # Optionally user can pass an option to configure, i. e.
9301 # ./configure PYTHON=/usr/bin/python
9302 # =====================================================================
9303 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal; then
9304 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9305 enable_python=internal
9307 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9308 if test -n "$PYTHON"; then
9309 PYTHON_FOR_BUILD=$PYTHON
9311 # This allows a lack of system python with no error, we use internal one in that case.
9312 AM_PATH_PYTHON([3.3],, [:])
9313 # Clean PYTHON_VERSION checked below if cross-compiling
9315 if test "$PYTHON" != ":"; then
9316 PYTHON_FOR_BUILD=$PYTHON
9320 AC_SUBST(PYTHON_FOR_BUILD)
9322 # Checks for Python to use for Pyuno
9323 AC_MSG_CHECKING([which Python to use for Pyuno])
9324 case "$enable_python" in
9326 if test -z $PYTHON_FOR_BUILD; then
9327 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9328 # requirement from the choice whether to include Python stuff in the installer, but why
9330 AC_MSG_ERROR([Python is required at build time.])
9333 AC_MSG_RESULT([none])
9336 if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9337 AC_MSG_RESULT([no, overridden by --disable-scripting])
9339 elif test $build_os = cygwin; then
9340 dnl When building on Windows we don't attempt to use any installed
9341 dnl "system" Python.
9342 AC_MSG_RESULT([fully internal])
9343 enable_python=internal
9344 elif test "$cross_compiling" = yes; then
9345 AC_MSG_RESULT([system])
9346 enable_python=system
9348 # Unset variables set by the above AM_PATH_PYTHON so that
9349 # we actually do check anew.
9351 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
9352 AM_PATH_PYTHON([3.3],, [:])
9353 AC_MSG_CHECKING([which Python to use for Pyuno])
9354 if test "$PYTHON" = ":"; then
9355 if test -z "$PYTHON_FOR_BUILD"; then
9356 AC_MSG_RESULT([fully internal])
9358 AC_MSG_RESULT([internal])
9360 enable_python=internal
9362 AC_MSG_RESULT([system])
9363 enable_python=system
9368 AC_MSG_RESULT([internal])
9371 AC_MSG_RESULT([fully internal])
9372 enable_python=internal
9375 AC_MSG_RESULT([system])
9376 if test "$_os" = Darwin; then
9377 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9381 AC_MSG_ERROR([Incorrect --enable-python option])
9385 if test $enable_python != no; then
9386 BUILD_TYPE="$BUILD_TYPE PYUNO"
9389 if test $enable_python = system; then
9390 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9391 # Fallback: Accept these in the environment, or as set above
9394 elif test "$cross_compiling" != yes; then
9395 # Unset variables set by the above AM_PATH_PYTHON so that
9396 # we actually do check anew.
9397 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
9398 # This causes an error if no python command is found
9399 AM_PATH_PYTHON([3.3])
9400 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9401 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9402 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9403 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9404 if test -z "$PKG_CONFIG"; then
9405 PYTHON_CFLAGS="-I$python_include"
9406 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9407 elif $PKG_CONFIG --exists python-$python_version-embed; then
9408 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9409 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9410 elif $PKG_CONFIG --exists python-$python_version; then
9411 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9412 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9414 PYTHON_CFLAGS="-I$python_include"
9415 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9417 FilterLibs "${PYTHON_LIBS}"
9418 PYTHON_LIBS="${filteredlibs}"
9420 dnl How to find out the cross-compilation Python installation path?
9421 AC_MSG_CHECKING([for python version])
9422 AS_IF([test -n "$PYTHON_VERSION"],
9423 [AC_MSG_RESULT([$PYTHON_VERSION])],
9424 [AC_MSG_RESULT([not found])
9425 AC_MSG_ERROR([no usable python found])])
9426 test -n "$PYTHON_CFLAGS" && break
9429 dnl Check if the headers really work
9430 save_CPPFLAGS="$CPPFLAGS"
9431 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9432 AC_CHECK_HEADER(Python.h)
9433 CPPFLAGS="$save_CPPFLAGS"
9435 # let the PYTHON_FOR_BUILD match the same python installation that
9436 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9437 # better for PythonTests.
9438 PYTHON_FOR_BUILD=$PYTHON
9441 if test "$with_lxml" != no; then
9442 if test -z "$PYTHON_FOR_BUILD"; then
9445 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9448 if test "$cross_compiling" != yes ; then
9449 BUILD_TYPE="$BUILD_TYPE LXML"
9454 AC_MSG_CHECKING([for python lxml])
9455 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9456 AC_MSG_RESULT([yes])
9460 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9463 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9464 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9465 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9467 BUILD_TYPE="$BUILD_TYPE LXML"
9468 AC_MSG_RESULT([no, using internal lxml])
9471 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9479 dnl By now enable_python should be "system", "internal" or "no"
9480 case $enable_python in
9484 if test "x$ac_cv_header_Python_h" != "xyes"; then
9485 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9489 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9490 AC_MSG_CHECKING([for correct python library version])
9491 AC_RUN_IFELSE([AC_LANG_SOURCE([[
9494 int main(int argc, char **argv) {
9495 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9498 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9501 dnl FIXME Check if the Python library can be linked with, too?
9506 PYTHON_VERSION_MAJOR=3
9507 PYTHON_VERSION_MINOR=8
9508 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.4
9509 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9510 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9512 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9513 BUILD_TYPE="$BUILD_TYPE PYTHON"
9514 if test "$OS" = LINUX -o "$OS" = WNT ; then
9515 BUILD_TYPE="$BUILD_TYPE LIBFFI"
9517 # Embedded Python dies without Home set
9518 if test "$HOME" = ""; then
9527 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9531 AC_SUBST(DISABLE_PYTHON)
9532 AC_SUBST(SYSTEM_PYTHON)
9533 AC_SUBST(PYTHON_CFLAGS)
9534 AC_SUBST(PYTHON_LIBS)
9535 AC_SUBST(PYTHON_VERSION)
9536 AC_SUBST(PYTHON_VERSION_MAJOR)
9537 AC_SUBST(PYTHON_VERSION_MINOR)
9543 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9544 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9545 ENABLE_MARIADBC=TRUE
9546 AC_MSG_RESULT([yes])
9547 BUILD_TYPE="$BUILD_TYPE MARIADBC"
9551 AC_SUBST(ENABLE_MARIADBC)
9552 AC_SUBST(MARIADBC_MAJOR)
9553 AC_SUBST(MARIADBC_MINOR)
9554 AC_SUBST(MARIADBC_MICRO)
9556 if test "$ENABLE_MARIADBC" = "TRUE"; then
9557 dnl ===================================================================
9558 dnl Check for system MariaDB
9559 dnl ===================================================================
9560 AC_MSG_CHECKING([which MariaDB to use])
9561 if test "$with_system_mariadb" = "yes"; then
9562 AC_MSG_RESULT([external])
9563 SYSTEM_MARIADB_CONNECTOR_C=TRUE
9564 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9565 if test -z "$MARIADBCONFIG"; then
9566 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9567 if test -z "$MARIADBCONFIG"; then
9568 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9569 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9572 AC_MSG_CHECKING([MariaDB version])
9573 MARIADB_VERSION=`$MARIADBCONFIG --version`
9574 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9575 if test "$MARIADB_MAJOR" -ge "5"; then
9578 AC_MSG_ERROR([too old, use 5.0.x or later])
9580 AC_MSG_CHECKING([for MariaDB Client library])
9581 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9582 if test "$COM_IS_CLANG" = TRUE; then
9583 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9585 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9586 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9587 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9589 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9590 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9591 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9592 | sed -e 's|/lib64/|/lib/|')
9594 FilterLibs "${MARIADB_LIBS}"
9595 MARIADB_LIBS="${filteredlibs}"
9596 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9597 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9598 if test "$enable_bundle_mariadb" = "yes"; then
9599 AC_MSG_RESULT([yes])
9600 BUNDLE_MARIADB_CONNECTOR_C=TRUE
9601 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9603 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9605 /g' | grep -E '(mysqlclient|mariadb)')
9606 if test "$_os" = "Darwin"; then
9607 LIBMARIADB=${LIBMARIADB}.dylib
9608 elif test "$_os" = "WINNT"; then
9609 LIBMARIADB=${LIBMARIADB}.dll
9611 LIBMARIADB=${LIBMARIADB}.so
9613 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9614 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9615 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9616 AC_MSG_RESULT([found.])
9617 PathFormat "$LIBMARIADB_PATH"
9618 LIBMARIADB_PATH="$formatted_path"
9620 AC_MSG_ERROR([not found.])
9624 BUNDLE_MARIADB_CONNECTOR_C=
9627 AC_MSG_RESULT([internal])
9628 SYSTEM_MARIADB_CONNECTOR_C=
9629 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9630 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9631 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9634 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9635 AC_SUBST(MARIADB_CFLAGS)
9636 AC_SUBST(MARIADB_LIBS)
9637 AC_SUBST(LIBMARIADB)
9638 AC_SUBST(LIBMARIADB_PATH)
9639 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9642 dnl ===================================================================
9643 dnl Check for system hsqldb
9644 dnl ===================================================================
9645 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9646 HSQLDB_USE_JDBC_4_1=
9647 AC_MSG_CHECKING([which hsqldb to use])
9648 if test "$with_system_hsqldb" = "yes"; then
9649 AC_MSG_RESULT([external])
9651 if test -z $HSQLDB_JAR; then
9652 HSQLDB_JAR=/usr/share/java/hsqldb.jar
9654 if ! test -f $HSQLDB_JAR; then
9655 AC_MSG_ERROR(hsqldb.jar not found.)
9657 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9661 my $file = "$ENV{'HSQLDB_JAR'}";
9662 my $zip = Archive::Zip->new( $file );
9663 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9664 if ( $mf =~ m/Specification-Version: 1.8.*/ )
9666 push @l, split(/\n/, $mf);
9667 foreach my $line (@l)
9669 if ($line =~ m/Specification-Version:/)
9671 ($t, $version) = split (/:/,$line);
9672 $version =~ s/^\s//;
9673 ($a, $b, $c, $d) = split (/\./,$version);
9674 if ($c == "0" && $d > "8")
9689 AC_MSG_RESULT([yes])
9691 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9694 AC_MSG_RESULT([internal])
9696 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9698 AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9699 javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9700 if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9701 AC_MSG_RESULT([yes])
9702 HSQLDB_USE_JDBC_4_1=TRUE
9708 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9709 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9712 AC_SUBST(SYSTEM_HSQLDB)
9713 AC_SUBST(HSQLDB_JAR)
9714 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9716 dnl ===================================================================
9717 dnl Check for PostgreSQL stuff
9718 dnl ===================================================================
9719 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9720 if test "x$enable_postgresql_sdbc" != "xno"; then
9721 AC_MSG_RESULT([yes])
9722 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9724 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9725 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9727 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9728 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9731 postgres_interface=""
9732 if test "$with_system_postgresql" = "yes"; then
9733 postgres_interface="external PostgreSQL"
9734 SYSTEM_POSTGRESQL=TRUE
9735 if test "$_os" = Darwin; then
9737 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9738 pg_supp_path="$P_SEP$d$pg_supp_path"
9741 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9742 if test -n "$PGCONFIG"; then
9743 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9744 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9746 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9747 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9748 POSTGRESQL_LIB=$POSTGRESQL_LIBS
9750 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9753 FilterLibs "${POSTGRESQL_LIB}"
9754 POSTGRESQL_LIB="${filteredlibs}"
9756 # if/when anything else than PostgreSQL uses Kerberos,
9757 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9762 # macOS has system MIT Kerberos 5 since 10.4
9763 if test "$with_krb5" != "no"; then
9766 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9767 # that the libraries where these functions are located on macOS will change, is it?
9768 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9769 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9772 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9773 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9774 KRB5_LIBS="$KRB5_LIBS $LIBS"
9777 if test "$with_gssapi" != "no"; then
9780 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9781 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9787 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9788 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9791 Linux|GNU|*BSD|DragonFly)
9792 if test "$with_krb5" != "no"; then
9795 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9796 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9799 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9800 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9801 KRB5_LIBS="$KRB5_LIBS $LIBS"
9804 if test "$with_gssapi" != "no"; then
9807 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9808 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9814 if test "$with_krb5" = "yes"; then
9817 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9818 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9821 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9822 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9823 KRB5_LIBS="$KRB5_LIBS $LIBS"
9826 if test "$with_gssapi" = "yes"; then
9829 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9830 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9836 if test -n "$with_libpq_path"; then
9837 SYSTEM_POSTGRESQL=TRUE
9838 postgres_interface="external libpq"
9839 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
9840 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
9843 postgres_interface="internal"
9845 POSTGRESQL_INC="%OVERRIDE_ME%"
9846 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
9850 AC_MSG_CHECKING([PostgreSQL C interface])
9851 AC_MSG_RESULT([$postgres_interface])
9853 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
9854 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
9856 save_CPPFLAGS=$CPPFLAGS
9858 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
9859 LIBS="${LIBS} ${POSTGRESQL_LIB}"
9860 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
9861 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
9862 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
9864 CPPFLAGS=$save_CPPFLAGS
9867 BUILD_POSTGRESQL_SDBC=TRUE
9872 AC_SUBST(WITH_GSSAPI)
9873 AC_SUBST(GSSAPI_LIBS)
9875 AC_SUBST(BUILD_POSTGRESQL_SDBC)
9876 AC_SUBST(SYSTEM_POSTGRESQL)
9877 AC_SUBST(POSTGRESQL_INC)
9878 AC_SUBST(POSTGRESQL_LIB)
9880 dnl ===================================================================
9881 dnl Check for Firebird stuff
9882 dnl ===================================================================
9883 ENABLE_FIREBIRD_SDBC=
9884 if test "$enable_firebird_sdbc" = "yes" ; then
9885 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
9887 dnl ===================================================================
9888 dnl Check for system Firebird
9889 dnl ===================================================================
9890 AC_MSG_CHECKING([which Firebird to use])
9891 if test "$with_system_firebird" = "yes"; then
9892 AC_MSG_RESULT([external])
9893 SYSTEM_FIREBIRD=TRUE
9894 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
9895 if test -z "$FIREBIRDCONFIG"; then
9896 AC_MSG_NOTICE([No fb_config -- using pkg-config])
9897 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
9898 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
9900 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
9902 AC_MSG_NOTICE([fb_config found])
9903 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
9904 AC_MSG_CHECKING([for Firebird Client library])
9905 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
9906 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
9907 FilterLibs "${FIREBIRD_LIBS}"
9908 FIREBIRD_LIBS="${filteredlibs}"
9910 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
9911 AC_MSG_CHECKING([Firebird version])
9912 if test -n "${FIREBIRD_VERSION}"; then
9913 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
9914 FIREBIRD_MINOR=`echo $FIREBIRD_VERSION | cut -d"." -f2`
9915 if test "$FIREBIRD_MAJOR" -eq "3" -a "$FIREBIRD_MINOR" -eq "0"; then
9918 AC_MSG_ERROR([Ensure firebird 3.0.x is installed])
9921 save_CFLAGS="${CFLAGS}"
9922 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
9923 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
9924 #if defined(FB_API_VER) && FB_API_VER == 30
9925 int fb_api_is_30(void) { return 0; }
9927 #error "Wrong Firebird API version"
9928 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
9929 CFLAGS="$save_CFLAGS"
9931 ENABLE_FIREBIRD_SDBC=TRUE
9932 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9933 elif test "$enable_database_connectivity" != yes; then
9934 AC_MSG_RESULT([none])
9935 elif test "$cross_compiling" = "yes"; then
9936 AC_MSG_RESULT([none])
9938 dnl Embedded Firebird has version 3.0
9939 AC_DEFINE(HAVE_FIREBIRD_30, 1)
9940 dnl We need libatomic_ops for any non X86/X64 system
9941 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
9942 dnl ===================================================================
9943 dnl Check for system libatomic_ops
9944 dnl ===================================================================
9945 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[ATOMIC_OPS],[atomic_ops >= 0.7.2])
9946 if test "$with_system_libatomic_ops" = "yes"; then
9947 SYSTEM_LIBATOMIC_OPS=TRUE
9948 AC_CHECK_HEADERS(atomic_ops.h, [],
9949 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
9951 SYSTEM_LIBATOMIC_OPS=
9952 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
9953 LIBATOMIC_OPS_LIBS="-latomic_ops"
9954 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
9958 AC_MSG_RESULT([internal])
9960 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
9961 FIREBIRD_LIBS="-lfbclient"
9963 if test "$with_system_libtommath" = "yes"; then
9964 SYSTEM_LIBTOMMATH=TRUE
9965 dnl check for tommath presence
9967 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
9968 AC_CHECK_LIB(tommath, mp_init, TOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
9972 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
9973 LIBTOMMATH_LIBS="-ltommath"
9974 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
9977 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
9978 ENABLE_FIREBIRD_SDBC=TRUE
9979 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9982 AC_SUBST(ENABLE_FIREBIRD_SDBC)
9983 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
9984 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
9985 AC_SUBST(LIBATOMIC_OPS_LIBS)
9986 AC_SUBST(SYSTEM_FIREBIRD)
9987 AC_SUBST(FIREBIRD_CFLAGS)
9988 AC_SUBST(FIREBIRD_LIBS)
9989 AC_SUBST([TOMMATH_CFLAGS])
9990 AC_SUBST([TOMMATH_LIBS])
9992 dnl ===================================================================
9993 dnl Check for system curl
9994 dnl ===================================================================
9995 AC_MSG_CHECKING([which libcurl to use])
9996 if test "$with_system_curl" = "auto"; then
9997 with_system_curl="$with_system_libs"
10000 if test "$with_system_curl" = "yes"; then
10001 AC_MSG_RESULT([external])
10004 # First try PKGCONFIG and then fall back
10005 PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
10007 if test -n "$CURL_PKG_ERRORS"; then
10008 AC_PATH_PROG(CURLCONFIG, curl-config)
10009 if test -z "$CURLCONFIG"; then
10010 AC_MSG_ERROR([curl development files not found])
10012 CURL_LIBS=`$CURLCONFIG --libs`
10013 FilterLibs "${CURL_LIBS}"
10014 CURL_LIBS="${filteredlibs}"
10015 CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
10016 curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
10018 AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
10019 case $curl_version in
10020 dnl brackets doubled below because Autoconf uses them as m4 quote characters,
10021 dnl so they need to be doubled to end up in the configure script
10022 7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
10023 AC_MSG_RESULT([yes])
10026 AC_MSG_ERROR([no, you have $curl_version])
10033 AC_MSG_RESULT([internal])
10035 BUILD_TYPE="$BUILD_TYPE CURL"
10038 AC_SUBST(SYSTEM_CURL)
10039 AC_SUBST(CURL_CFLAGS)
10040 AC_SUBST(CURL_LIBS)
10041 AC_SUBST(ENABLE_CURL)
10043 dnl ===================================================================
10044 dnl Check for system boost
10045 dnl ===================================================================
10046 AC_MSG_CHECKING([which boost to use])
10047 if test "$with_system_boost" = "yes"; then
10048 AC_MSG_RESULT([external])
10050 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10052 AX_BOOST_FILESYSTEM
10055 AC_LANG_PUSH([C++])
10056 save_CXXFLAGS=$CXXFLAGS
10057 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10058 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10059 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10060 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10061 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10062 CXXFLAGS=$save_CXXFLAGS
10064 # this is in m4/ax_boost_base.m4
10065 FilterLibs "${BOOST_LDFLAGS}"
10066 BOOST_LDFLAGS="${filteredlibs}"
10068 AC_MSG_RESULT([internal])
10069 BUILD_TYPE="$BUILD_TYPE BOOST"
10071 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10072 # use warning-suppressing wrapper headers
10073 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10075 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10078 AC_SUBST(SYSTEM_BOOST)
10080 dnl ===================================================================
10081 dnl Check for system mdds
10082 dnl ===================================================================
10083 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10085 dnl ===================================================================
10086 dnl Check for system glm
10087 dnl ===================================================================
10088 AC_MSG_CHECKING([which glm to use])
10089 if test "$with_system_glm" = "yes"; then
10090 AC_MSG_RESULT([external])
10092 AC_LANG_PUSH([C++])
10093 AC_CHECK_HEADER([glm/glm.hpp], [],
10094 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10097 AC_MSG_RESULT([internal])
10098 BUILD_TYPE="$BUILD_TYPE GLM"
10100 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10102 AC_SUBST([GLM_CFLAGS])
10103 AC_SUBST([SYSTEM_GLM])
10105 dnl ===================================================================
10106 dnl Check for system odbc
10107 dnl ===================================================================
10108 AC_MSG_CHECKING([which odbc headers to use])
10109 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
10110 AC_MSG_RESULT([external])
10111 SYSTEM_ODBC_HEADERS=TRUE
10113 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10114 save_CPPFLAGS=$CPPFLAGS
10116 PathFormat "$winsdktest"
10117 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"
10118 AC_CHECK_HEADER(sqlext.h, [],
10119 [AC_MSG_ERROR(odbc not found. install odbc)],
10120 [#include <windows.h>])
10121 CPPFLAGS=$save_CPPFLAGS
10123 AC_CHECK_HEADER(sqlext.h, [],
10124 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10126 elif test "$enable_database_connectivity" != yes; then
10127 AC_MSG_RESULT([none])
10129 AC_MSG_RESULT([internal])
10130 SYSTEM_ODBC_HEADERS=
10132 AC_SUBST(SYSTEM_ODBC_HEADERS)
10134 dnl ===================================================================
10135 dnl Enable LDAP support
10136 dnl ===================================================================
10138 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then
10139 AC_MSG_CHECKING([whether to enable LDAP support])
10140 if test "$enable_ldap" != "yes"; then
10141 AC_MSG_RESULT([no])
10145 AC_MSG_RESULT([yes])
10149 AC_SUBST(ENABLE_LDAP)
10151 dnl ===================================================================
10152 dnl Check for system openldap
10153 dnl ===================================================================
10155 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then
10156 AC_MSG_CHECKING([which openldap library to use])
10157 if test "$with_system_openldap" = "yes"; then
10158 AC_MSG_RESULT([external])
10159 SYSTEM_OPENLDAP=TRUE
10160 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10161 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10162 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10164 AC_MSG_RESULT([internal])
10166 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10169 AC_SUBST(SYSTEM_OPENLDAP)
10171 dnl ===================================================================
10172 dnl Check for system NSS
10173 dnl ===================================================================
10174 if test "$enable_fuzzers" != "yes"; then
10175 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10176 AC_DEFINE(HAVE_FEATURE_NSS)
10178 AC_DEFINE(ENABLE_NSS)
10179 elif test $_os != iOS ; then
10182 AC_SUBST(ENABLE_NSS)
10184 dnl ===================================================================
10185 dnl Check for TLS/SSL and cryptographic implementation to use
10186 dnl ===================================================================
10187 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10188 if test -n "$with_tls"; then
10191 AC_DEFINE(USE_TLS_OPENSSL)
10193 AC_MSG_RESULT([$TLS])
10195 if test "$enable_openssl" != "yes"; then
10196 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10199 # warn that OpenSSL has been selected but not all TLS code has this option
10200 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10201 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10204 AC_DEFINE(USE_TLS_NSS)
10206 AC_MSG_RESULT([$TLS])
10209 AC_MSG_RESULT([none])
10210 AC_MSG_WARN([Skipping TLS/SSL])
10214 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10216 nss - Mozilla's Network Security Services (NSS)
10221 # default to using NSS, it results in smaller oox lib
10222 AC_DEFINE(USE_TLS_NSS)
10224 AC_MSG_RESULT([$TLS])
10228 dnl ===================================================================
10229 dnl Check for system sane
10230 dnl ===================================================================
10231 AC_MSG_CHECKING([which sane header to use])
10232 if test "$with_system_sane" = "yes"; then
10233 AC_MSG_RESULT([external])
10234 AC_CHECK_HEADER(sane/sane.h, [],
10235 [AC_MSG_ERROR(sane not found. install sane)], [])
10237 AC_MSG_RESULT([internal])
10238 BUILD_TYPE="$BUILD_TYPE SANE"
10241 dnl ===================================================================
10242 dnl Check for system icu
10243 dnl ===================================================================
10250 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10251 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10252 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10253 AC_MSG_CHECKING([which icu to use])
10254 if test "$with_system_icu" = "yes"; then
10255 AC_MSG_RESULT([external])
10257 AC_LANG_PUSH([C++])
10258 AC_MSG_CHECKING([for unicode/rbbi.h])
10259 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10262 if test "$cross_compiling" != "yes"; then
10263 PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10264 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10265 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10266 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10269 if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10270 ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10271 ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10272 ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10273 AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10274 if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10275 AC_MSG_RESULT([yes])
10277 AC_MSG_RESULT([no])
10278 if test "$with_system_icu_for_build" != "force"; then
10279 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10280 You can use --with-system-icu-for-build=force to use it anyway.])
10285 if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10286 # using the system icu tools can lead to version confusion, use the
10287 # ones from the build environment when cross-compiling
10288 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10289 if test -z "$SYSTEM_GENBRK"; then
10290 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10292 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10293 if test -z "$SYSTEM_GENCCODE"; then
10294 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10296 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10297 if test -z "$SYSTEM_GENCMN"; then
10298 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10300 if test "$ICU_MAJOR" -ge "49"; then
10301 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10302 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10303 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10305 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10306 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10307 ICU_RECLASSIFIED_HEBREW_LETTER=
10311 if test "$cross_compiling" = "yes"; then
10312 if test "$ICU_MAJOR" -ge "50"; then
10313 AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10318 AC_MSG_RESULT([internal])
10320 BUILD_TYPE="$BUILD_TYPE ICU"
10321 # surprisingly set these only for "internal" (to be used by various other
10322 # external libs): the system icu-config is quite unhelpful and spits out
10323 # dozens of weird flags and also default path -I/usr/include
10324 ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10325 ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10327 if test "$ICU_MAJOR" -ge "59"; then
10328 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10329 # with -std=c++11 but not all external libraries can be built with that,
10330 # for those use a bit-compatible typedef uint16_t UChar; see
10331 # icu/source/common/unicode/umachine.h
10332 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10336 AC_SUBST(SYSTEM_ICU)
10337 AC_SUBST(SYSTEM_GENBRK)
10338 AC_SUBST(SYSTEM_GENCCODE)
10339 AC_SUBST(SYSTEM_GENCMN)
10340 AC_SUBST(ICU_MAJOR)
10341 AC_SUBST(ICU_MINOR)
10342 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10343 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10344 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10345 AC_SUBST(ICU_CFLAGS)
10347 AC_SUBST(ICU_UCHAR_TYPE)
10349 dnl ==================================================================
10351 dnl ==================================================================
10352 DEFAULT_CRASHDUMP_VALUE="true"
10353 AC_MSG_CHECKING([whether to enable breakpad])
10354 if test "$enable_breakpad" != yes; then
10355 AC_MSG_RESULT([no])
10357 AC_MSG_RESULT([yes])
10358 ENABLE_BREAKPAD="TRUE"
10359 AC_DEFINE(ENABLE_BREAKPAD)
10360 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10361 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10363 AC_MSG_CHECKING([for disable crash dump])
10364 if test "$enable_crashdump" = no; then
10365 DEFAULT_CRASHDUMP_VALUE="false"
10366 AC_MSG_RESULT([yes])
10368 AC_MSG_RESULT([no])
10371 AC_MSG_CHECKING([for crashreport config])
10372 if test "$with_symbol_config" = "no"; then
10373 BREAKPAD_SYMBOL_CONFIG="invalid"
10374 AC_MSG_RESULT([no])
10376 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10377 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10378 AC_MSG_RESULT([yes])
10380 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10382 AC_SUBST(ENABLE_BREAKPAD)
10383 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10385 dnl ==================================================================
10387 dnl ==================================================================
10388 AC_MSG_CHECKING([whether to enable fuzzers])
10389 if test "$enable_fuzzers" != yes; then
10390 AC_MSG_RESULT([no])
10392 AC_MSG_RESULT([yes])
10393 ENABLE_FUZZERS="TRUE"
10394 AC_DEFINE([ENABLE_FUZZERS],1)
10395 BUILD_TYPE="$BUILD_TYPE FUZZERS"
10397 AC_SUBST(ENABLE_FUZZERS)
10399 dnl ===================================================================
10401 dnl ===================================================================
10402 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
10403 if test "$with_system_orcus" != "yes"; then
10404 if test "$SYSTEM_BOOST" = "TRUE"; then
10405 # ===========================================================
10406 # Determine if we are going to need to link with Boost.System
10407 # ===========================================================
10408 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10409 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10410 dnl in documentation has no effect.
10411 AC_MSG_CHECKING([if we need to link with Boost.System])
10412 AC_LANG_PUSH([C++])
10413 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
10414 @%:@include <boost/version.hpp>
10416 #if BOOST_VERSION >= 105000
10417 # error yes, we need to link with Boost.System
10420 AC_MSG_RESULT([no])
10422 AC_MSG_RESULT([yes])
10428 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10429 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10430 AC_SUBST([BOOST_SYSTEM_LIB])
10431 AC_SUBST(SYSTEM_LIBORCUS)
10433 dnl ===================================================================
10435 dnl ===================================================================
10436 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10437 ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10438 ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10440 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10441 ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10442 ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10444 if test "$COM" = "MSC"; then # override the above
10445 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10446 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10449 if test "$with_system_harfbuzz" = "yes"; then
10450 if test "$with_system_graphite" = "no"; then
10451 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10453 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10455 save_CFLAGS="$CFLAGS"
10456 LIBS="$LIBS $HARFBUZZ_LIBS"
10457 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10458 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10460 CFLAGS="$save_CFLAGS"
10462 if test "$with_system_graphite" = "yes"; then
10463 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10467 AC_MSG_CHECKING([whether to use X11])
10468 dnl ***************************************
10469 dnl testing for X libraries and includes...
10470 dnl ***************************************
10471 if test "$USING_X11" = TRUE; then
10472 AC_DEFINE(HAVE_FEATURE_X11)
10474 AC_MSG_RESULT([$USING_X11])
10476 if test "$USING_X11" = TRUE; then
10479 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10481 if test -z "$x_includes"; then
10482 x_includes="default_x_includes"
10484 if test -z "$x_libraries"; then
10485 x_libraries="default_x_libraries"
10487 CFLAGS="$CFLAGS $X_CFLAGS"
10488 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10489 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10491 x_includes="no_x_includes"
10492 x_libraries="no_x_libraries"
10495 if test "$USING_X11" = TRUE; then
10496 dnl ===================================================================
10497 dnl Check for extension headers
10498 dnl ===================================================================
10499 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10500 [#include <X11/extensions/shape.h>])
10502 # vcl needs ICE and SM
10503 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10504 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10505 [AC_MSG_ERROR(ICE library not found)])
10506 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10507 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10508 [AC_MSG_ERROR(SM library not found)])
10511 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10512 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10513 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10516 dnl ===================================================================
10517 dnl Check for system Xrender
10518 dnl ===================================================================
10519 AC_MSG_CHECKING([whether to use Xrender])
10520 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10521 AC_MSG_RESULT([yes])
10522 PKG_CHECK_MODULES(XRENDER, xrender)
10523 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10524 FilterLibs "${XRENDER_LIBS}"
10525 XRENDER_LIBS="${filteredlibs}"
10526 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10527 [AC_MSG_ERROR(libXrender not found or functional)], [])
10528 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10529 [AC_MSG_ERROR(Xrender not found. install X)], [])
10531 AC_MSG_RESULT([no])
10533 AC_SUBST(XRENDER_CFLAGS)
10534 AC_SUBST(XRENDER_LIBS)
10536 dnl ===================================================================
10537 dnl Check for XRandr
10538 dnl ===================================================================
10539 AC_MSG_CHECKING([whether to enable RandR support])
10540 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10541 AC_MSG_RESULT([yes])
10542 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10543 if test "$ENABLE_RANDR" != "TRUE"; then
10544 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10545 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10547 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10548 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10549 XRANDR_LIBS="-lXrandr "
10550 ENABLE_RANDR="TRUE"
10552 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10553 FilterLibs "${XRANDR_LIBS}"
10554 XRANDR_LIBS="${filteredlibs}"
10557 AC_MSG_RESULT([no])
10559 AC_SUBST(XRANDR_CFLAGS)
10560 AC_SUBST(XRANDR_LIBS)
10561 AC_SUBST(ENABLE_RANDR)
10563 if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
10564 if test -z "$WITH_WEBDAV"; then
10568 if test $_os = iOS -o $_os = Android; then
10571 AC_MSG_CHECKING([for webdav library])
10572 case "$WITH_WEBDAV" in
10574 AC_MSG_RESULT([serf])
10575 # Check for system apr-util
10576 libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10577 ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10578 ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10579 if test "$COM" = "MSC"; then
10581 test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10582 APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10585 # Check for system serf
10586 libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"],
10587 ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"])
10588 if test "$COM" = "MSC"; then
10589 SERF_LIB_DIR="Release"
10590 test -n "${MSVC_USE_DEBUG_RUNTIME}" && SERF_LIB_DIR="Debug"
10591 SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/${SERF_LIB_DIR}/serf-1.lib"
10595 AC_MSG_RESULT([neon])
10596 # Check for system neon
10597 libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.1])
10598 if test "$with_system_neon" = "yes"; then
10599 NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10603 AC_SUBST(NEON_VERSION)
10606 AC_MSG_RESULT([none, disabled])
10610 AC_SUBST(WITH_WEBDAV)
10612 dnl ===================================================================
10613 dnl Check for disabling cve_tests
10614 dnl ===================================================================
10615 AC_MSG_CHECKING([whether to execute CVE tests])
10616 # If not explicitly enabled or disabled, default
10617 if test -z "$enable_cve_tests"; then
10620 # Default cves off for Windows with its wild and wonderful
10621 # variety of AV software kicking in and panicking
10622 enable_cve_tests=no
10626 enable_cve_tests=yes
10630 if test "$enable_cve_tests" = "no"; then
10631 AC_MSG_RESULT([no])
10632 DISABLE_CVE_TESTS=TRUE
10633 AC_SUBST(DISABLE_CVE_TESTS)
10635 AC_MSG_RESULT([yes])
10638 dnl ===================================================================
10639 dnl Check for enabling chart XShape tests
10640 dnl ===================================================================
10641 AC_MSG_CHECKING([whether to execute chart XShape tests])
10642 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10643 AC_MSG_RESULT([yes])
10644 ENABLE_CHART_TESTS=TRUE
10645 AC_SUBST(ENABLE_CHART_TESTS)
10647 AC_MSG_RESULT([no])
10650 dnl ===================================================================
10651 dnl Check for system openssl
10652 dnl ===================================================================
10654 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10655 if test "$enable_openssl" = "yes"; then
10656 AC_MSG_RESULT([no])
10657 if test "$_os" = Darwin ; then
10658 # OpenSSL is deprecated when building for 10.7 or later.
10660 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10661 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10663 with_system_openssl=no
10664 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10665 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10666 && test "$with_system_openssl" != "no"; then
10667 with_system_openssl=yes
10668 SYSTEM_OPENSSL=TRUE
10670 OPENSSL_LIBS="-lssl -lcrypto"
10672 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10674 if test "$with_system_openssl" = "yes"; then
10675 AC_MSG_CHECKING([whether openssl supports SHA512])
10677 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10678 SHA512_CTX context;
10679 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10683 AC_MSG_RESULT([yes])
10684 DISABLE_OPENSSL=TRUE
10686 # warn that although OpenSSL is disabled, system libraries may depend on it
10687 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10688 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10691 AC_SUBST([DISABLE_OPENSSL])
10693 if test "$enable_cipher_openssl_backend" = yes && test "$DISABLE_OPENSSL" = TRUE; then
10694 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10695 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10696 enable_cipher_openssl_backend=no
10698 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10701 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10702 ENABLE_CIPHER_OPENSSL_BACKEND=
10703 if test "$enable_cipher_openssl_backend" = yes; then
10704 AC_MSG_RESULT([yes])
10705 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10707 AC_MSG_RESULT([no])
10709 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10711 dnl ===================================================================
10712 dnl Check for building gnutls
10713 dnl ===================================================================
10714 AC_MSG_CHECKING([whether to use gnutls])
10715 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10716 AC_MSG_RESULT([yes])
10717 AM_PATH_LIBGCRYPT()
10718 PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10719 AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10720 available in the system to use as replacement.]]))
10721 FilterLibs "${LIBGCRYPT_LIBS}"
10722 LIBGCRYPT_LIBS="${filteredlibs}"
10724 AC_MSG_RESULT([no])
10727 AC_SUBST([LIBGCRYPT_CFLAGS])
10728 AC_SUBST([LIBGCRYPT_LIBS])
10730 dnl ===================================================================
10731 dnl Check for system redland
10732 dnl ===================================================================
10733 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10734 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10735 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10736 if test "$with_system_redland" = "yes"; then
10737 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10738 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10744 AC_SUBST(RAPTOR_MAJOR)
10745 AC_SUBST(RASQAL_MAJOR)
10746 AC_SUBST(REDLAND_MAJOR)
10748 dnl ===================================================================
10749 dnl Check for system hunspell
10750 dnl ===================================================================
10751 AC_MSG_CHECKING([which libhunspell to use])
10752 if test "$_os" = iOS; then
10753 AC_MSG_RESULT([none])
10754 elif test "$with_system_hunspell" = "yes"; then
10755 AC_MSG_RESULT([external])
10756 SYSTEM_HUNSPELL=TRUE
10757 AC_LANG_PUSH([C++])
10758 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10759 if test "$HUNSPELL_PC" != "TRUE"; then
10760 AC_CHECK_HEADER(hunspell.hxx, [],
10762 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10763 [AC_MSG_ERROR(hunspell headers not found.)], [])
10765 AC_CHECK_LIB([hunspell], [main], [:],
10766 [ AC_MSG_ERROR(hunspell library not found.) ], [])
10767 HUNSPELL_LIBS=-lhunspell
10770 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10771 FilterLibs "${HUNSPELL_LIBS}"
10772 HUNSPELL_LIBS="${filteredlibs}"
10774 AC_MSG_RESULT([internal])
10776 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10777 if test "$COM" = "MSC"; then
10778 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10780 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10782 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
10784 AC_SUBST(SYSTEM_HUNSPELL)
10785 AC_SUBST(HUNSPELL_CFLAGS)
10786 AC_SUBST(HUNSPELL_LIBS)
10788 dnl ===================================================================
10789 dnl Check for system qrcodegen
10790 dnl ===================================================================
10791 AC_MSG_CHECKING([whether to use libqrcodegen])
10792 if test "$enable_qrcodegen" = "no"; then
10793 AC_MSG_RESULT([no])
10797 AC_MSG_RESULT([yes])
10798 ENABLE_QRCODEGEN=TRUE
10799 AC_MSG_CHECKING([which libqrcodegen to use])
10800 if test "$with_system_qrcodegen" = "yes"; then
10801 AC_MSG_RESULT([external])
10802 SYSTEM_QRCODEGEN=TRUE
10803 AC_LANG_PUSH([C++])
10804 AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
10805 [AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
10806 AC_CHECK_LIB([qrcodegencpp], [main], [:],
10807 [ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
10808 QRCODEGEN_LIBS=-lqrcodegencpp
10810 QRCODEGEN_CFLAGS=$(printf '%s' "$QRCODEGEN_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10811 FilterLibs "${QRCODEGEN_LIBS}"
10812 QRCODEGEN_LIBS="${filteredlibs}"
10814 AC_MSG_RESULT([internal])
10816 BUILD_TYPE="$BUILD_TYPE QRCODEGEN"
10818 if test "$ENABLE_QRCODEGEN" = TRUE; then
10819 AC_DEFINE(ENABLE_QRCODEGEN)
10822 AC_SUBST(SYSTEM_QRCODEGEN)
10823 AC_SUBST(ENABLE_QRCODEGEN)
10824 AC_SUBST(QRCODEGEN_CFLAGS)
10825 AC_SUBST(QRCODEGEN_LIBS)
10827 dnl ===================================================================
10828 dnl Check for system box2d
10829 dnl ===================================================================
10830 AC_MSG_CHECKING([which box2d to use])
10831 if test "$with_system_box2d" = "yes"; then
10832 AC_MSG_RESULT([external])
10834 AC_LANG_PUSH([C++])
10835 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
10836 [BOX2D_H_FOUND='FALSE'])
10837 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
10839 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
10841 # fail this. there's no other alternative to check when we are here.
10842 AC_CHECK_HEADER([Box2D/Box2D.h], [],
10843 [AC_MSG_ERROR(box2d headers not found.)])
10845 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
10847 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
10848 [ AC_MSG_ERROR(box2d library not found.) ], [])
10849 BOX2D_LIBS=-l$_BOX2D_LIB
10851 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10852 FilterLibs "${BOX2D_LIBS}"
10853 BOX2D_LIBS="${filteredlibs}"
10855 AC_MSG_RESULT([internal])
10857 BUILD_TYPE="$BUILD_TYPE BOX2D"
10859 AC_SUBST(SYSTEM_BOX2D)
10860 AC_SUBST(BOX2D_CFLAGS)
10861 AC_SUBST(BOX2D_LIBS)
10863 dnl ===================================================================
10864 dnl Checking for altlinuxhyph
10865 dnl ===================================================================
10866 AC_MSG_CHECKING([which altlinuxhyph to use])
10867 if test "$with_system_altlinuxhyph" = "yes"; then
10868 AC_MSG_RESULT([external])
10870 AC_CHECK_HEADER(hyphen.h, [],
10871 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
10872 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
10873 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
10874 [#include <hyphen.h>])
10875 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
10876 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10877 if test -z "$HYPHEN_LIB"; then
10878 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
10879 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10881 if test -z "$HYPHEN_LIB"; then
10882 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
10883 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10886 AC_MSG_RESULT([internal])
10888 BUILD_TYPE="$BUILD_TYPE HYPHEN"
10889 if test "$COM" = "MSC"; then
10890 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
10892 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
10895 AC_SUBST(SYSTEM_HYPH)
10896 AC_SUBST(HYPHEN_LIB)
10898 dnl ===================================================================
10899 dnl Checking for mythes
10900 dnl ===================================================================
10901 AC_MSG_CHECKING([which mythes to use])
10902 if test "$_os" = iOS; then
10903 AC_MSG_RESULT([none])
10904 elif test "$with_system_mythes" = "yes"; then
10905 AC_MSG_RESULT([external])
10907 AC_LANG_PUSH([C++])
10908 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
10909 if test "$MYTHES_PKGCONFIG" = "no"; then
10910 AC_CHECK_HEADER(mythes.hxx, [],
10911 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
10912 AC_CHECK_LIB([mythes-1.2], [main], [:],
10913 [ MYTHES_FOUND=no], [])
10914 if test "$MYTHES_FOUND" = "no"; then
10915 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
10916 [ MYTHES_FOUND=no], [])
10918 if test "$MYTHES_FOUND" = "no"; then
10919 AC_MSG_ERROR([mythes library not found!.])
10923 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10924 FilterLibs "${MYTHES_LIBS}"
10925 MYTHES_LIBS="${filteredlibs}"
10927 AC_MSG_RESULT([internal])
10929 BUILD_TYPE="$BUILD_TYPE MYTHES"
10930 if test "$COM" = "MSC"; then
10931 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
10933 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
10936 AC_SUBST(SYSTEM_MYTHES)
10937 AC_SUBST(MYTHES_CFLAGS)
10938 AC_SUBST(MYTHES_LIBS)
10940 dnl ===================================================================
10941 dnl How should we build the linear programming solver ?
10942 dnl ===================================================================
10945 AC_MSG_CHECKING([whether to build with CoinMP])
10946 if test "$enable_coinmp" != "no"; then
10948 AC_MSG_RESULT([yes])
10949 if test "$with_system_coinmp" = "yes"; then
10951 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
10952 FilterLibs "${COINMP_LIBS}"
10953 COINMP_LIBS="${filteredlibs}"
10955 BUILD_TYPE="$BUILD_TYPE COINMP"
10958 AC_MSG_RESULT([no])
10960 AC_SUBST(ENABLE_COINMP)
10961 AC_SUBST(SYSTEM_COINMP)
10962 AC_SUBST(COINMP_CFLAGS)
10963 AC_SUBST(COINMP_LIBS)
10966 AC_MSG_CHECKING([whether to build with lpsolve])
10967 if test "$enable_lpsolve" != "no"; then
10968 ENABLE_LPSOLVE=TRUE
10969 AC_MSG_RESULT([yes])
10971 AC_MSG_RESULT([no])
10973 AC_SUBST(ENABLE_LPSOLVE)
10975 if test "$ENABLE_LPSOLVE" = TRUE; then
10976 AC_MSG_CHECKING([which lpsolve to use])
10977 if test "$with_system_lpsolve" = "yes"; then
10978 AC_MSG_RESULT([external])
10979 SYSTEM_LPSOLVE=TRUE
10980 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
10981 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
10983 # some systems need this. Like Ubuntu...
10984 AC_CHECK_LIB(m, floor)
10985 AC_CHECK_LIB(dl, dlopen)
10986 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
10987 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
10990 AC_MSG_RESULT([internal])
10992 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
10995 AC_SUBST(SYSTEM_LPSOLVE)
10997 dnl ===================================================================
10998 dnl Checking for libexttextcat
10999 dnl ===================================================================
11000 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11001 if test "$with_system_libexttextcat" = "yes"; then
11002 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11004 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11006 dnl ===================================================================
11007 dnl Checking for libnumbertext
11008 dnl ===================================================================
11009 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11010 if test "$with_system_libnumbertext" = "yes"; then
11011 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11012 SYSTEM_LIBNUMBERTEXT=YES
11014 SYSTEM_LIBNUMBERTEXT=
11015 AC_LANG_PUSH([C++])
11016 save_CPPFLAGS=$CPPFLAGS
11017 CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11018 AC_CHECK_HEADERS([codecvt regex])
11019 AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11020 [ LIBNUMBERTEXT_CFLAGS=''
11021 AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11022 Enable libnumbertext fallback (missing number to number name conversion).])
11024 CPPFLAGS=$save_CPPFLAGS
11027 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11028 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11029 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11031 dnl ***************************************
11032 dnl testing libc version for Linux...
11033 dnl ***************************************
11034 if test "$_os" = "Linux"; then
11035 AC_MSG_CHECKING([whether libc is >= 2.1.1])
11036 exec 6>/dev/null # no output
11037 AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
11038 exec 6>&1 # output on again
11039 if test "$HAVE_LIBC"; then
11040 AC_MSG_RESULT([yes])
11042 AC_MSG_ERROR([no, upgrade libc])
11046 dnl =========================================
11047 dnl Check for uuidgen
11048 dnl =========================================
11049 if test "$_os" = "WINNT"; then
11050 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11051 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11052 UUIDGEN=uuidgen.exe
11055 AC_PATH_PROG([UUIDGEN], [uuidgen])
11056 if test -z "$UUIDGEN"; then
11057 AC_MSG_WARN([uuid is needed for building installation sets])
11061 dnl ***************************************
11062 dnl Checking for bison and flex
11063 dnl ***************************************
11064 AC_PATH_PROG(BISON, bison)
11065 if test -z "$BISON"; then
11066 AC_MSG_ERROR([no bison found in \$PATH, install it])
11068 AC_MSG_CHECKING([the bison version])
11069 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11070 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11071 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11074 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]
11075 dnl typedef union YYSTYPE
11078 dnl while at least 3.4.1 is know to be good:
11079 if test "$COMPILER_PLUGINS" = TRUE; then
11080 if test "$_bison_longver" -lt 2004; then
11081 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11084 if test "$_bison_longver" -lt 2000; then
11085 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11091 AC_PATH_PROG(FLEX, flex)
11092 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11093 FLEX=`cygpath -m $FLEX`
11095 if test -z "$FLEX"; then
11096 AC_MSG_ERROR([no flex found in \$PATH, install it])
11098 AC_MSG_CHECKING([the flex version])
11099 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11100 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11101 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11105 dnl ***************************************
11106 dnl Checking for patch
11107 dnl ***************************************
11108 AC_PATH_PROG(PATCH, patch)
11109 if test -z "$PATCH"; then
11110 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11113 dnl On Solaris or macOS, check if --with-gnu-patch was used
11114 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11115 if test -z "$with_gnu_patch"; then
11118 if test -x "$with_gnu_patch"; then
11119 GNUPATCH=$with_gnu_patch
11121 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11125 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11126 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11127 AC_MSG_RESULT([yes])
11129 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11135 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11136 GNUPATCH=`cygpath -m $GNUPATCH`
11139 dnl We also need to check for --with-gnu-cp
11141 if test -z "$with_gnu_cp"; then
11142 # check the place where the good stuff is hidden on Solaris...
11143 if test -x /usr/gnu/bin/cp; then
11144 GNUCP=/usr/gnu/bin/cp
11146 AC_PATH_PROGS(GNUCP, gnucp cp)
11148 if test -z $GNUCP; then
11149 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11152 if test -x "$with_gnu_cp"; then
11155 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11159 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11160 GNUCP=`cygpath -m $GNUCP`
11163 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11164 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11165 AC_MSG_RESULT([yes])
11166 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11167 AC_MSG_RESULT([yes])
11169 case "$build_os" in
11170 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11173 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11176 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11185 dnl ***************************************
11186 dnl testing assembler path
11187 dnl ***************************************
11189 if test "$_os" = "WINNT"; then
11190 case "$WIN_HOST_ARCH" in
11191 x86) assembler=ml.exe ;;
11192 x64) assembler=ml64.exe ;;
11193 arm64) assembler=armasm64.exe ;;
11196 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11197 if test -f "$MSVC_HOST_PATH/$assembler"; then
11198 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11199 AC_MSG_RESULT([$ML_EXE])
11201 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11207 dnl ===================================================================
11208 dnl We need zip and unzip
11209 dnl ===================================================================
11210 AC_PATH_PROG(ZIP, zip)
11211 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11212 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11213 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],,)
11216 AC_PATH_PROG(UNZIP, unzip)
11217 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11219 dnl ===================================================================
11220 dnl Zip must be a specific type for different build types.
11221 dnl ===================================================================
11222 if test $build_os = cygwin; then
11223 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11224 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11228 dnl ===================================================================
11229 dnl We need touch with -h option support.
11230 dnl ===================================================================
11231 AC_PATH_PROG(TOUCH, touch)
11232 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11234 if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then
11235 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],,)
11238 dnl ===================================================================
11239 dnl Check for system epoxy
11240 dnl ===================================================================
11241 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11243 dnl ===================================================================
11244 dnl Set vcl option: coordinate device in double or sal_Int32
11245 dnl ===================================================================
11247 dnl disabled for now, we don't want subtle differences between OSs
11248 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11249 dnl if test "$_os" = "Darwin" -o $_os = iOS ; then
11250 dnl AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11251 dnl AC_MSG_RESULT([double])
11253 dnl AC_MSG_RESULT([sal_Int32])
11256 dnl ===================================================================
11257 dnl Test which vclplugs have to be built.
11258 dnl ===================================================================
11260 if test "$USING_X11" != TRUE; then
11265 if test "x$enable_gtk3" = "xyes"; then
11267 AC_DEFINE(ENABLE_GTK3)
11270 AC_SUBST(ENABLE_GTK3)
11272 ENABLE_GTK3_KDE5=""
11273 if test "x$enable_gtk3_kde5" = "xyes"; then
11274 ENABLE_GTK3_KDE5="TRUE"
11275 AC_DEFINE(ENABLE_GTK3_KDE5)
11278 AC_SUBST(ENABLE_GTK3_KDE5)
11281 if test "x$enable_qt5" = "xyes"; then
11283 AC_DEFINE(ENABLE_QT5)
11286 AC_SUBST(ENABLE_QT5)
11289 if test "x$enable_kf5" = "xyes"; then
11291 AC_DEFINE(ENABLE_KF5)
11294 AC_SUBST(ENABLE_KF5)
11298 if test "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11299 if test "$with_system_cairo" = no; then
11300 add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11302 : ${with_system_cairo:=yes}
11303 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)
11304 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11305 FilterLibs "${GTK3_LIBS}"
11306 GTK3_LIBS="${filteredlibs}"
11308 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11309 if test "$with_system_epoxy" != "yes"; then
11310 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11311 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11312 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11315 AC_SUBST(GTK3_LIBS)
11316 AC_SUBST(GTK3_CFLAGS)
11318 if test "$enable_introspection" = yes; then
11319 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11320 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11322 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11326 if test "$_os" = "WINNT"; then
11328 elif test "$_os" = "Darwin"; then
11330 elif test "$_os" = "iOS"; then
11334 build_vcl_plugins="$R"
11335 if test -z "$build_vcl_plugins"; then
11336 build_vcl_plugins="none"
11338 AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins])
11340 dnl ===================================================================
11341 dnl check for dbus support
11342 dnl ===================================================================
11346 DBUS_GLIB_CFLAGS=""
11350 if test "$enable_dbus" = "no"; then
11354 AC_MSG_CHECKING([whether to enable DBUS support])
11355 if test "$test_dbus" = "yes"; then
11357 AC_MSG_RESULT([yes])
11358 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11359 AC_DEFINE(ENABLE_DBUS)
11360 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11361 FilterLibs "${DBUS_LIBS}"
11362 DBUS_LIBS="${filteredlibs}"
11364 # Glib is needed for BluetoothServer
11365 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11366 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11368 DBUS_HAVE_GLIB="TRUE"
11369 AC_DEFINE(DBUS_HAVE_GLIB,1)
11371 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11374 AC_MSG_RESULT([no])
11377 AC_SUBST(ENABLE_DBUS)
11378 AC_SUBST(DBUS_CFLAGS)
11379 AC_SUBST(DBUS_LIBS)
11380 AC_SUBST(DBUS_GLIB_CFLAGS)
11381 AC_SUBST(DBUS_GLIB_LIBS)
11382 AC_SUBST(DBUS_HAVE_GLIB)
11384 AC_MSG_CHECKING([whether to enable Impress remote control])
11385 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11386 AC_MSG_RESULT([yes])
11387 ENABLE_SDREMOTE=TRUE
11388 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11390 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11391 # The Bluetooth code doesn't compile with macOS SDK 10.15
11392 if test "$enable_sdremote_bluetooth" = yes; then
11393 AC_MSG_ERROR([macOS SDK $with_macosx_sdk does not currently support --enable-sdremote-bluetooth])
11395 enable_sdremote_bluetooth=no
11397 # If not explicitly enabled or disabled, default
11398 if test -z "$enable_sdremote_bluetooth"; then
11401 # Default to yes for these
11402 enable_sdremote_bluetooth=yes
11406 enable_sdremote_bluetooth=no
11410 # $enable_sdremote_bluetooth is guaranteed non-empty now
11412 if test "$enable_sdremote_bluetooth" != "no"; then
11413 if test "$OS" = "LINUX"; then
11414 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11415 AC_MSG_RESULT([yes])
11416 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11417 dnl ===================================================================
11418 dnl Check for system bluez
11419 dnl ===================================================================
11420 AC_MSG_CHECKING([which Bluetooth header to use])
11421 if test "$with_system_bluez" = "yes"; then
11422 AC_MSG_RESULT([external])
11423 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11424 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11427 AC_MSG_RESULT([internal])
11431 AC_MSG_RESULT([no, dbus disabled])
11432 ENABLE_SDREMOTE_BLUETOOTH=
11436 AC_MSG_RESULT([yes])
11437 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11441 AC_MSG_RESULT([no])
11442 ENABLE_SDREMOTE_BLUETOOTH=
11448 AC_MSG_RESULT([no])
11450 AC_SUBST(ENABLE_SDREMOTE)
11451 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11452 AC_SUBST(SYSTEM_BLUEZ)
11454 dnl ===================================================================
11455 dnl Check whether to enable GIO support
11456 dnl ===================================================================
11457 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11458 AC_MSG_CHECKING([whether to enable GIO support])
11459 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11460 dnl Need at least 2.26 for the dbus support.
11461 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11462 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11463 if test "$ENABLE_GIO" = "TRUE"; then
11464 AC_DEFINE(ENABLE_GIO)
11465 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11466 FilterLibs "${GIO_LIBS}"
11467 GIO_LIBS="${filteredlibs}"
11470 AC_MSG_RESULT([no])
11473 AC_SUBST(ENABLE_GIO)
11474 AC_SUBST(GIO_CFLAGS)
11478 dnl ===================================================================
11480 SPLIT_APP_MODULES=""
11481 if test "$enable_split_app_modules" = "yes"; then
11482 SPLIT_APP_MODULES="TRUE"
11484 AC_SUBST(SPLIT_APP_MODULES)
11486 SPLIT_OPT_FEATURES=""
11487 if test "$enable_split_opt_features" = "yes"; then
11488 SPLIT_OPT_FEATURES="TRUE"
11490 AC_SUBST(SPLIT_OPT_FEATURES)
11492 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then
11493 if test "$enable_cairo_canvas" = yes; then
11494 AC_MSG_ERROR([The cairo canvas should not be used for this platform])
11496 enable_cairo_canvas=no
11497 elif test -z "$enable_cairo_canvas"; then
11498 enable_cairo_canvas=yes
11501 ENABLE_CAIRO_CANVAS=""
11502 if test "$enable_cairo_canvas" = "yes"; then
11504 ENABLE_CAIRO_CANVAS="TRUE"
11505 AC_DEFINE(ENABLE_CAIRO_CANVAS)
11507 AC_SUBST(ENABLE_CAIRO_CANVAS)
11509 dnl ===================================================================
11510 dnl Check whether the GStreamer libraries are available.
11511 dnl ===================================================================
11513 ENABLE_GSTREAMER_1_0=""
11515 if test "$build_gstreamer_1_0" = "yes"; then
11517 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11518 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11519 ENABLE_GSTREAMER_1_0="TRUE"
11520 AC_MSG_RESULT([yes])
11521 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11522 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11523 FilterLibs "${GSTREAMER_1_0_LIBS}"
11524 GSTREAMER_1_0_LIBS="${filteredlibs}"
11525 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11527 AC_MSG_RESULT([no])
11530 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11531 AC_SUBST(GSTREAMER_1_0_LIBS)
11532 AC_SUBST(ENABLE_GSTREAMER_1_0)
11534 dnl ===================================================================
11535 dnl Check whether to build the VLC avmedia backend
11536 dnl ===================================================================
11540 AC_MSG_CHECKING([whether to enable the VLC avmedia backend])
11541 if test "$enable_avmedia" = yes -a $_os != iOS -a $_os != Android -a "$enable_vlc" = yes; then
11543 AC_MSG_RESULT([yes])
11545 AC_MSG_RESULT([no])
11547 AC_SUBST(ENABLE_VLC)
11549 ENABLE_OPENGL_TRANSITIONS=
11550 ENABLE_OPENGL_CANVAS=
11551 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11553 elif test "$_os" = "Darwin"; then
11554 # We use frameworks on macOS, no need for detail checks
11555 ENABLE_OPENGL_TRANSITIONS=TRUE
11556 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11557 ENABLE_OPENGL_CANVAS=TRUE
11558 elif test $_os = WINNT; then
11559 ENABLE_OPENGL_TRANSITIONS=TRUE
11560 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11561 ENABLE_OPENGL_CANVAS=TRUE
11563 if test "$USING_X11" = TRUE; then
11564 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11565 ENABLE_OPENGL_TRANSITIONS=TRUE
11566 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11567 ENABLE_OPENGL_CANVAS=TRUE
11571 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11572 AC_SUBST(ENABLE_OPENGL_CANVAS)
11574 dnl =================================================
11575 dnl Check whether to build with OpenCL support.
11576 dnl =================================================
11578 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11579 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11580 # platform (optional at run-time, used through clew).
11581 BUILD_TYPE="$BUILD_TYPE OPENCL"
11582 AC_DEFINE(HAVE_FEATURE_OPENCL)
11585 dnl =================================================
11586 dnl Check whether to build with dconf support.
11587 dnl =================================================
11589 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11590 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11591 if test "$enable_dconf" = yes; then
11592 AC_MSG_ERROR([dconf not found])
11597 AC_MSG_CHECKING([whether to enable dconf])
11598 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11602 AC_MSG_RESULT([no])
11605 AC_DEFINE(ENABLE_DCONF)
11606 AC_MSG_RESULT([yes])
11608 AC_SUBST([DCONF_CFLAGS])
11609 AC_SUBST([DCONF_LIBS])
11610 AC_SUBST([ENABLE_DCONF])
11613 AC_MSG_CHECKING([whether to build the PDF import feature])
11615 if test $_os != iOS -a \( -z "$enable_pdfimport" -o "$enable_pdfimport" = yes \); then
11616 AC_MSG_RESULT([yes])
11617 ENABLE_PDFIMPORT=TRUE
11618 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11620 AC_MSG_RESULT([no])
11624 AC_MSG_CHECKING([whether to build PDFium])
11626 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11627 AC_MSG_RESULT([yes])
11629 AC_DEFINE(HAVE_FEATURE_PDFIUM)
11630 BUILD_TYPE="$BUILD_TYPE PDFIUM"
11632 AC_MSG_RESULT([no])
11634 AC_SUBST(ENABLE_PDFIUM)
11636 dnl ===================================================================
11637 dnl Check for poppler
11638 dnl ===================================================================
11640 AC_MSG_CHECKING([whether to build Poppler])
11641 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11642 AC_MSG_RESULT([yes])
11643 ENABLE_POPPLER=TRUE
11644 AC_DEFINE(HAVE_FEATURE_POPPLER)
11646 AC_MSG_RESULT([no])
11648 AC_SUBST(ENABLE_POPPLER)
11650 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11651 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11654 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11655 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11658 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11659 dnl ===================================================================
11660 dnl Check for system poppler
11661 dnl ===================================================================
11662 AC_MSG_CHECKING([which PDF import poppler to use])
11663 if test "$with_system_poppler" = "yes"; then
11664 AC_MSG_RESULT([external])
11665 SYSTEM_POPPLER=TRUE
11666 PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11667 AC_LANG_PUSH([C++])
11668 save_CXXFLAGS=$CXXFLAGS
11669 save_CPPFLAGS=$CPPFLAGS
11670 CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11671 CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11672 AC_CHECK_HEADER([cpp/poppler-version.h],
11673 [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11675 CXXFLAGS=$save_CXXFLAGS
11676 CPPFLAGS=$save_CPPFLAGS
11678 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11680 FilterLibs "${POPPLER_LIBS}"
11681 POPPLER_LIBS="${filteredlibs}"
11683 AC_MSG_RESULT([internal])
11685 BUILD_TYPE="$BUILD_TYPE POPPLER"
11686 AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11688 AC_DEFINE([ENABLE_PDFIMPORT],1)
11690 AC_SUBST(ENABLE_PDFIMPORT)
11691 AC_SUBST(SYSTEM_POPPLER)
11692 AC_SUBST(POPPLER_CFLAGS)
11693 AC_SUBST(POPPLER_LIBS)
11696 AC_MSG_CHECKING([whether to build Skia])
11698 if test "$enable_skia" != "no" -a "$build_skia" = "yes"; then
11699 if test "$enable_skia" = "debug"; then
11700 AC_MSG_RESULT([yes (debug)])
11701 ENABLE_SKIA_DEBUG=TRUE
11703 AC_MSG_RESULT([yes])
11707 AC_DEFINE(HAVE_FEATURE_SKIA)
11708 BUILD_TYPE="$BUILD_TYPE SKIA"
11710 AC_MSG_RESULT([no])
11712 AC_SUBST(ENABLE_SKIA)
11713 AC_SUBST(ENABLE_SKIA_DEBUG)
11715 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11716 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11717 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11718 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11719 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11720 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11721 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11722 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11723 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11725 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE -a ! \( "$_os" = "WINNT" -a "$CPUNAME" = "ARM64" \); then
11726 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11727 AC_MSG_CHECKING([for Clang])
11728 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
11730 if test "$_os" = "WINNT"; then
11731 AC_MSG_CHECKING([for clang-cl])
11732 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
11733 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
11734 dnl explicitly set -m32/-m64
11735 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
11736 LO_CLANG_CXX="$LO_CLANG_CC"
11737 AC_MSG_RESULT([$LO_CLANG_CC])
11739 AC_MSG_RESULT([no])
11742 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
11743 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
11746 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11747 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
11748 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
11749 if test "$clang2_ver" -lt 50002; then
11750 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
11755 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
11756 # Skia is the default on Windows, so hard-require Clang.
11757 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
11758 if test "$_os" = "WINNT"; then
11759 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
11761 AC_MSG_WARN([Clang compiler not found.])
11766 CXX="$LO_CLANG_CXX"
11767 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
11770 flag_sse41=-msse4.1
11771 flag_sse42=-msse4.2
11774 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
11778 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
11779 AC_LANG_PUSH([C++])
11780 save_CXXFLAGS=$CXXFLAGS
11781 CXXFLAGS="$CXXFLAGS $flag_sse2"
11782 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11783 #include <emmintrin.h>
11785 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11786 c = _mm_xor_si128 (a, b);
11790 [can_compile_sse2=yes],
11791 [can_compile_sse2=no])
11793 CXXFLAGS=$save_CXXFLAGS
11794 AC_MSG_RESULT([${can_compile_sse2}])
11795 if test "${can_compile_sse2}" = "yes" ; then
11796 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
11799 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
11800 AC_LANG_PUSH([C++])
11801 save_CXXFLAGS=$CXXFLAGS
11802 CXXFLAGS="$CXXFLAGS $flag_ssse3"
11803 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11804 #include <tmmintrin.h>
11806 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11807 c = _mm_maddubs_epi16 (a, b);
11811 [can_compile_ssse3=yes],
11812 [can_compile_ssse3=no])
11814 CXXFLAGS=$save_CXXFLAGS
11815 AC_MSG_RESULT([${can_compile_ssse3}])
11816 if test "${can_compile_ssse3}" = "yes" ; then
11817 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
11820 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
11821 AC_LANG_PUSH([C++])
11822 save_CXXFLAGS=$CXXFLAGS
11823 CXXFLAGS="$CXXFLAGS $flag_sse41"
11824 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11825 #include <smmintrin.h>
11827 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11828 c = _mm_cmpeq_epi64 (a, b);
11832 [can_compile_sse41=yes],
11833 [can_compile_sse41=no])
11835 CXXFLAGS=$save_CXXFLAGS
11836 AC_MSG_RESULT([${can_compile_sse41}])
11837 if test "${can_compile_sse41}" = "yes" ; then
11838 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
11841 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
11842 AC_LANG_PUSH([C++])
11843 save_CXXFLAGS=$CXXFLAGS
11844 CXXFLAGS="$CXXFLAGS $flag_sse42"
11845 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11846 #include <nmmintrin.h>
11848 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11849 c = _mm_cmpgt_epi64 (a, b);
11853 [can_compile_sse42=yes],
11854 [can_compile_sse42=no])
11856 CXXFLAGS=$save_CXXFLAGS
11857 AC_MSG_RESULT([${can_compile_sse42}])
11858 if test "${can_compile_sse42}" = "yes" ; then
11859 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
11862 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
11863 AC_LANG_PUSH([C++])
11864 save_CXXFLAGS=$CXXFLAGS
11865 CXXFLAGS="$CXXFLAGS $flag_avx"
11866 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11867 #include <immintrin.h>
11869 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
11870 c = _mm256_xor_ps(a, b);
11874 [can_compile_avx=yes],
11875 [can_compile_avx=no])
11877 CXXFLAGS=$save_CXXFLAGS
11878 AC_MSG_RESULT([${can_compile_avx}])
11879 if test "${can_compile_avx}" = "yes" ; then
11880 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
11883 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
11884 AC_LANG_PUSH([C++])
11885 save_CXXFLAGS=$CXXFLAGS
11886 CXXFLAGS="$CXXFLAGS $flag_avx2"
11887 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11888 #include <immintrin.h>
11890 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
11891 c = _mm256_maddubs_epi16(a, b);
11895 [can_compile_avx2=yes],
11896 [can_compile_avx2=no])
11898 CXXFLAGS=$save_CXXFLAGS
11899 AC_MSG_RESULT([${can_compile_avx2}])
11900 if test "${can_compile_avx2}" = "yes" ; then
11901 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
11904 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
11905 AC_LANG_PUSH([C++])
11906 save_CXXFLAGS=$CXXFLAGS
11907 CXXFLAGS="$CXXFLAGS $flag_avx512"
11908 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11909 #include <immintrin.h>
11911 __m512i a = _mm512_loadu_si512(0);
11915 [can_compile_avx512=yes],
11916 [can_compile_avx512=no])
11918 CXXFLAGS=$save_CXXFLAGS
11919 AC_MSG_RESULT([${can_compile_avx512}])
11920 if test "${can_compile_avx512}" = "yes" ; then
11921 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
11924 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
11925 AC_LANG_PUSH([C++])
11926 save_CXXFLAGS=$CXXFLAGS
11927 CXXFLAGS="$CXXFLAGS $flag_f16c"
11928 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11929 #include <immintrin.h>
11931 __m128i a = _mm_set1_epi32 (0);
11933 c = _mm_cvtph_ps(a);
11937 [can_compile_f16c=yes],
11938 [can_compile_f16c=no])
11940 CXXFLAGS=$save_CXXFLAGS
11941 AC_MSG_RESULT([${can_compile_f16c}])
11942 if test "${can_compile_f16c}" = "yes" ; then
11943 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
11946 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
11947 AC_LANG_PUSH([C++])
11948 save_CXXFLAGS=$CXXFLAGS
11949 CXXFLAGS="$CXXFLAGS $flag_fma"
11950 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11951 #include <immintrin.h>
11953 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
11954 d = _mm256_fmadd_ps(a, b, c);
11958 [can_compile_fma=yes],
11959 [can_compile_fma=no])
11961 CXXFLAGS=$save_CXXFLAGS
11962 AC_MSG_RESULT([${can_compile_fma}])
11963 if test "${can_compile_fma}" = "yes" ; then
11964 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
11971 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
11973 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11974 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
11978 save_CFLAGS=$CFLAGS
11979 CFLAGS="$CFLAGS --ccache-skip -O2"
11980 dnl an empty program will do, we're checking the compiler flags
11981 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
11982 [use_ccache=yes], [use_ccache=no])
11983 CFLAGS=$save_CFLAGS
11985 if test $use_ccache = yes; then
11986 AC_MSG_RESULT([yes])
11988 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
11989 AC_MSG_RESULT([no])
11993 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
11994 AC_LANG_PUSH([C++])
11996 CXX="$LO_CLANG_CXX"
11997 save_CXXFLAGS=$CXXFLAGS
11998 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
11999 dnl an empty program will do, we're checking the compiler flags
12000 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12001 [use_ccache=yes], [use_ccache=no])
12002 if test $use_ccache = yes; then
12003 AC_MSG_RESULT([yes])
12005 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12006 AC_MSG_RESULT([no])
12008 CXXFLAGS=$save_CXXFLAGS
12013 AC_SUBST(LO_CLANG_CC)
12014 AC_SUBST(LO_CLANG_CXX)
12015 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12016 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12017 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12018 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12019 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12020 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12021 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12022 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12023 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12024 AC_SUBST(CLANG_USE_LD)
12028 if test "$enable_gpgmepp" = no; then
12029 AC_MSG_CHECKING([whether to enable gpgmepp])
12030 AC_MSG_RESULT([no])
12031 elif test "$enable_mpl_subset" = "yes"; then
12032 AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12033 AC_MSG_RESULT([yes])
12034 elif test "$enable_fuzzers" = "yes"; then
12035 AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12036 AC_MSG_RESULT([yes])
12037 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12038 dnl ===================================================================
12039 dnl Check for system gpgme
12040 dnl ===================================================================
12041 AC_MSG_CHECKING([which gpgmepp to use])
12042 if test "$with_system_gpgmepp" = "yes"; then
12043 AC_MSG_RESULT([external])
12044 SYSTEM_GPGMEPP=TRUE
12046 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12047 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12048 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
12049 # progress_callback is the only func with plain C linkage
12050 # checking for it also filters out older, KDE-dependent libgpgmepp versions
12051 AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12052 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12053 AC_CHECK_HEADER(gpgme.h, [],
12054 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12056 AC_MSG_RESULT([internal])
12057 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12058 AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12060 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12061 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12062 if test "$_os" != "WINNT"; then
12063 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12064 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12067 ENABLE_GPGMEPP=TRUE
12068 AC_DEFINE([HAVE_FEATURE_GPGME])
12069 AC_PATH_PROG(GPG, gpg)
12070 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12071 # so let's exclude that manually for the moment
12072 if test -n "$GPG" -a "$_os" != "WINNT"; then
12073 # make sure we not only have a working gpgme, but a full working
12074 # gpg installation to run OpenPGP signature verification
12075 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12077 if test "$_os" = "Linux"; then
12079 AC_MSG_CHECKING([for /run/user/$uid])
12080 if test -d /run/user/$uid; then
12081 AC_MSG_RESULT([yes])
12082 AC_PATH_PROG(GPGCONF, gpgconf)
12084 # Older versions of gpgconf are not working as expected, since
12085 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12086 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12087 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12088 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12089 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12090 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12091 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12092 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12093 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12094 if $GPGCONF --dump-options > /dev/null ; then
12095 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12096 AC_MSG_RESULT([yes])
12097 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12098 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12100 AC_MSG_RESULT([no])
12103 AC_MSG_RESULT([no. missing or broken gpgconf?])
12106 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12109 AC_MSG_RESULT([no])
12113 AC_SUBST(ENABLE_GPGMEPP)
12114 AC_SUBST(SYSTEM_GPGMEPP)
12115 AC_SUBST(GPG_ERROR_CFLAGS)
12116 AC_SUBST(GPG_ERROR_LIBS)
12117 AC_SUBST(LIBASSUAN_CFLAGS)
12118 AC_SUBST(LIBASSUAN_LIBS)
12119 AC_SUBST(GPGMEPP_CFLAGS)
12120 AC_SUBST(GPGMEPP_LIBS)
12122 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12123 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12124 AC_MSG_RESULT([yes])
12125 ENABLE_MEDIAWIKI=TRUE
12126 BUILD_TYPE="$BUILD_TYPE XSLTML"
12127 if test "x$with_java" = "xno"; then
12128 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12131 AC_MSG_RESULT([no])
12133 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12135 AC_SUBST(ENABLE_MEDIAWIKI)
12137 AC_MSG_CHECKING([whether to build the Report Builder])
12138 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12139 AC_MSG_RESULT([yes])
12140 ENABLE_REPORTBUILDER=TRUE
12141 AC_MSG_CHECKING([which jfreereport libs to use])
12142 if test "$with_system_jfreereport" = "yes"; then
12143 SYSTEM_JFREEREPORT=TRUE
12144 AC_MSG_RESULT([external])
12145 if test -z $SAC_JAR; then
12146 SAC_JAR=/usr/share/java/sac.jar
12148 if ! test -f $SAC_JAR; then
12149 AC_MSG_ERROR(sac.jar not found.)
12152 if test -z $LIBXML_JAR; then
12153 if test -f /usr/share/java/libxml-1.0.0.jar; then
12154 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12155 elif test -f /usr/share/java/libxml.jar; then
12156 LIBXML_JAR=/usr/share/java/libxml.jar
12158 AC_MSG_ERROR(libxml.jar replacement not found.)
12160 elif ! test -f $LIBXML_JAR; then
12161 AC_MSG_ERROR(libxml.jar not found.)
12164 if test -z $FLUTE_JAR; then
12165 if test -f /usr/share/java/flute-1.3.0.jar; then
12166 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12167 elif test -f /usr/share/java/flute.jar; then
12168 FLUTE_JAR=/usr/share/java/flute.jar
12170 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12172 elif ! test -f $FLUTE_JAR; then
12173 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12176 if test -z $JFREEREPORT_JAR; then
12177 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12178 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12179 elif test -f /usr/share/java/flow-engine.jar; then
12180 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12182 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12184 elif ! test -f $JFREEREPORT_JAR; then
12185 AC_MSG_ERROR(jfreereport.jar not found.)
12188 if test -z $LIBLAYOUT_JAR; then
12189 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12190 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12191 elif test -f /usr/share/java/liblayout.jar; then
12192 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12194 AC_MSG_ERROR(liblayout.jar replacement not found.)
12196 elif ! test -f $LIBLAYOUT_JAR; then
12197 AC_MSG_ERROR(liblayout.jar not found.)
12200 if test -z $LIBLOADER_JAR; then
12201 if test -f /usr/share/java/libloader-1.0.0.jar; then
12202 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12203 elif test -f /usr/share/java/libloader.jar; then
12204 LIBLOADER_JAR=/usr/share/java/libloader.jar
12206 AC_MSG_ERROR(libloader.jar replacement not found.)
12208 elif ! test -f $LIBLOADER_JAR; then
12209 AC_MSG_ERROR(libloader.jar not found.)
12212 if test -z $LIBFORMULA_JAR; then
12213 if test -f /usr/share/java/libformula-0.2.0.jar; then
12214 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12215 elif test -f /usr/share/java/libformula.jar; then
12216 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12218 AC_MSG_ERROR(libformula.jar replacement not found.)
12220 elif ! test -f $LIBFORMULA_JAR; then
12221 AC_MSG_ERROR(libformula.jar not found.)
12224 if test -z $LIBREPOSITORY_JAR; then
12225 if test -f /usr/share/java/librepository-1.0.0.jar; then
12226 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12227 elif test -f /usr/share/java/librepository.jar; then
12228 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12230 AC_MSG_ERROR(librepository.jar replacement not found.)
12232 elif ! test -f $LIBREPOSITORY_JAR; then
12233 AC_MSG_ERROR(librepository.jar not found.)
12236 if test -z $LIBFONTS_JAR; then
12237 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12238 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12239 elif test -f /usr/share/java/libfonts.jar; then
12240 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12242 AC_MSG_ERROR(libfonts.jar replacement not found.)
12244 elif ! test -f $LIBFONTS_JAR; then
12245 AC_MSG_ERROR(libfonts.jar not found.)
12248 if test -z $LIBSERIALIZER_JAR; then
12249 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12250 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12251 elif test -f /usr/share/java/libserializer.jar; then
12252 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12254 AC_MSG_ERROR(libserializer.jar replacement not found.)
12256 elif ! test -f $LIBSERIALIZER_JAR; then
12257 AC_MSG_ERROR(libserializer.jar not found.)
12260 if test -z $LIBBASE_JAR; then
12261 if test -f /usr/share/java/libbase-1.0.0.jar; then
12262 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12263 elif test -f /usr/share/java/libbase.jar; then
12264 LIBBASE_JAR=/usr/share/java/libbase.jar
12266 AC_MSG_ERROR(libbase.jar replacement not found.)
12268 elif ! test -f $LIBBASE_JAR; then
12269 AC_MSG_ERROR(libbase.jar not found.)
12273 AC_MSG_RESULT([internal])
12274 SYSTEM_JFREEREPORT=
12275 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12279 AC_MSG_RESULT([no])
12280 ENABLE_REPORTBUILDER=
12281 SYSTEM_JFREEREPORT=
12283 AC_SUBST(ENABLE_REPORTBUILDER)
12284 AC_SUBST(SYSTEM_JFREEREPORT)
12286 AC_SUBST(LIBXML_JAR)
12287 AC_SUBST(FLUTE_JAR)
12288 AC_SUBST(JFREEREPORT_JAR)
12289 AC_SUBST(LIBBASE_JAR)
12290 AC_SUBST(LIBLAYOUT_JAR)
12291 AC_SUBST(LIBLOADER_JAR)
12292 AC_SUBST(LIBFORMULA_JAR)
12293 AC_SUBST(LIBREPOSITORY_JAR)
12294 AC_SUBST(LIBFONTS_JAR)
12295 AC_SUBST(LIBSERIALIZER_JAR)
12297 # this has to be here because both the Wiki Publisher and the SRB use
12299 COMMONS_LOGGING_VERSION=1.2
12300 if test "$ENABLE_REPORTBUILDER" = "TRUE"; then
12301 AC_MSG_CHECKING([which Apache commons-* libs to use])
12302 if test "$with_system_apache_commons" = "yes"; then
12303 SYSTEM_APACHE_COMMONS=TRUE
12304 AC_MSG_RESULT([external])
12305 if test -z $COMMONS_LOGGING_JAR; then
12306 if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then
12307 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar
12308 elif test -f /usr/share/java/commons-logging.jar; then
12309 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar
12311 AC_MSG_ERROR(commons-logging.jar replacement not found.)
12313 elif ! test -f $COMMONS_LOGGING_JAR; then
12314 AC_MSG_ERROR(commons-logging.jar not found.)
12317 AC_MSG_RESULT([internal])
12318 SYSTEM_APACHE_COMMONS=
12319 BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS"
12323 AC_SUBST(SYSTEM_APACHE_COMMONS)
12324 AC_SUBST(COMMONS_LOGGING_JAR)
12325 AC_SUBST(COMMONS_LOGGING_VERSION)
12327 # scripting provider for BeanShell?
12328 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12329 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12330 AC_MSG_RESULT([yes])
12331 ENABLE_SCRIPTING_BEANSHELL=TRUE
12333 dnl ===================================================================
12334 dnl Check for system beanshell
12335 dnl ===================================================================
12336 AC_MSG_CHECKING([which beanshell to use])
12337 if test "$with_system_beanshell" = "yes"; then
12338 AC_MSG_RESULT([external])
12340 if test -z $BSH_JAR; then
12341 BSH_JAR=/usr/share/java/bsh.jar
12343 if ! test -f $BSH_JAR; then
12344 AC_MSG_ERROR(bsh.jar not found.)
12347 AC_MSG_RESULT([internal])
12349 BUILD_TYPE="$BUILD_TYPE BSH"
12352 AC_MSG_RESULT([no])
12353 ENABLE_SCRIPTING_BEANSHELL=
12354 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12356 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12357 AC_SUBST(SYSTEM_BSH)
12360 # scripting provider for JavaScript?
12361 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12362 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12363 AC_MSG_RESULT([yes])
12364 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12366 dnl ===================================================================
12367 dnl Check for system rhino
12368 dnl ===================================================================
12369 AC_MSG_CHECKING([which rhino to use])
12370 if test "$with_system_rhino" = "yes"; then
12371 AC_MSG_RESULT([external])
12373 if test -z $RHINO_JAR; then
12374 RHINO_JAR=/usr/share/java/js.jar
12376 if ! test -f $RHINO_JAR; then
12377 AC_MSG_ERROR(js.jar not found.)
12380 AC_MSG_RESULT([internal])
12382 BUILD_TYPE="$BUILD_TYPE RHINO"
12386 AC_MSG_RESULT([no])
12387 ENABLE_SCRIPTING_JAVASCRIPT=
12388 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12390 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12391 AC_SUBST(SYSTEM_RHINO)
12392 AC_SUBST(RHINO_JAR)
12394 # This is only used in Qt5/KF5 checks to determine if /usr/lib64
12395 # paths should be added to library search path. So lets put all 64-bit
12398 case "$host_cpu" in
12399 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12400 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12401 supports_multilib="yes"
12408 dnl ===================================================================
12409 dnl QT5 Integration
12410 dnl ===================================================================
12416 QT5_GOBJECT_CFLAGS=""
12417 QT5_GOBJECT_LIBS=""
12418 QT5_HAVE_GOBJECT=""
12419 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12420 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12421 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12423 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12424 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12426 if test -n "$supports_multilib"; then
12427 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12430 qt5_test_include="QtWidgets/qapplication.h"
12431 qt5_test_library="libQt5Widgets.so"
12433 dnl Check for qmake5
12434 AC_PATH_PROGS( QMAKE5, [qmake-qt5 qmake], no, [$QT5DIR/bin:$PATH])
12435 if test "$QMAKE5" = "no"; then
12436 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12438 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12439 if test -z "$qmake5_test_ver"; then
12440 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12442 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12443 qt5_minimal_minor="6"
12444 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12445 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12447 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12451 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12452 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12454 AC_MSG_CHECKING([for Qt5 headers])
12456 for inc_dir in $qt5_incdirs; do
12457 if test -r "$inc_dir/$qt5_test_include"; then
12458 qt5_incdir="$inc_dir"
12462 AC_MSG_RESULT([$qt5_incdir])
12463 if test "x$qt5_incdir" = "xno"; then
12464 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12466 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12467 AC_LANG_PUSH([C++])
12468 save_CPPFLAGS=$CPPFLAGS
12469 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12470 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12471 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12472 CPPFLAGS=$save_CPPFLAGS
12475 AC_MSG_CHECKING([for Qt5 libraries])
12477 for lib_dir in $qt5_libdirs; do
12478 if test -r "$lib_dir/$qt5_test_library"; then
12479 qt5_libdir="$lib_dir"
12483 AC_MSG_RESULT([$qt5_libdir])
12484 if test "x$qt5_libdir" = "xno"; then
12485 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12488 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12489 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12490 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12492 if test "$USING_X11" = TRUE; then
12493 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12494 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12495 QT5_HAVE_XCB_ICCCM=1
12496 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12498 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)])
12499 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12501 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12502 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12504 AC_DEFINE(QT5_USING_X11)
12507 dnl Check for Meta Object Compiler
12509 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12510 if test "$MOC5" = "no"; then
12511 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
12512 the root of your Qt installation by exporting QT5DIR before running "configure".])
12515 if test "$build_gstreamer_1_0" = "yes"; then
12516 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12518 AC_DEFINE(QT5_HAVE_GOBJECT)
12520 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12524 AC_SUBST(QT5_CFLAGS)
12527 AC_SUBST(QT5_GOBJECT_CFLAGS)
12528 AC_SUBST(QT5_GOBJECT_LIBS)
12529 AC_SUBST(QT5_HAVE_GOBJECT)
12531 dnl ===================================================================
12532 dnl KF5 Integration
12533 dnl ===================================================================
12537 KF5_CONFIG="kf5-config"
12538 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12539 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12541 if test "$OS" = "HAIKU"; then
12542 haiku_arch="`echo $RTL_ARCH | tr X x`"
12543 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12544 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12547 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12548 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12549 if test -n "$supports_multilib"; then
12550 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12553 kf5_test_include="KF5/kcoreaddons_version.h"
12554 kf5_test_library="libKF5CoreAddons.so"
12555 kf5_libdirs="$qt5_libdir $kf5_libdirs"
12557 dnl kf5 KDE4 support compatibility installed
12558 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12559 if test "$KF5_CONFIG" != "no"; then
12560 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12561 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12564 dnl Check for KF5 headers
12565 AC_MSG_CHECKING([for KF5 headers])
12567 for kf5_check in $kf5_incdirs; do
12568 if test -r "$kf5_check/$kf5_test_include"; then
12569 kf5_incdir="$kf5_check/KF5"
12573 AC_MSG_RESULT([$kf5_incdir])
12574 if test "x$kf5_incdir" = "xno"; then
12575 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12578 dnl Check for KF5 libraries
12579 AC_MSG_CHECKING([for KF5 libraries])
12581 for kf5_check in $kf5_libdirs; do
12582 if test -r "$kf5_check/$kf5_test_library"; then
12583 kf5_libdir="$kf5_check"
12588 AC_MSG_RESULT([$kf5_libdir])
12589 if test "x$kf5_libdir" = "xno"; then
12590 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12593 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"
12594 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12595 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12597 if test "$USING_X11" = TRUE; then
12598 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
12601 AC_LANG_PUSH([C++])
12602 save_CXXFLAGS=$CXXFLAGS
12603 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
12604 AC_MSG_CHECKING([whether KDE is >= 5.0])
12605 AC_RUN_IFELSE([AC_LANG_SOURCE([[
12606 #include <kcoreaddons_version.h>
12608 int main(int argc, char **argv) {
12609 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
12612 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
12613 CXXFLAGS=$save_CXXFLAGS
12616 AC_SUBST(KF5_CFLAGS)
12619 dnl ===================================================================
12620 dnl Test whether to include Evolution 2 support
12621 dnl ===================================================================
12622 AC_MSG_CHECKING([whether to enable evolution 2 support])
12623 if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then
12624 AC_MSG_RESULT([yes])
12625 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
12626 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12627 FilterLibs "${GOBJECT_LIBS}"
12628 GOBJECT_LIBS="${filteredlibs}"
12629 ENABLE_EVOAB2="TRUE"
12632 AC_MSG_RESULT([no])
12634 AC_SUBST(ENABLE_EVOAB2)
12635 AC_SUBST(GOBJECT_CFLAGS)
12636 AC_SUBST(GOBJECT_LIBS)
12638 dnl ===================================================================
12639 dnl Test which themes to include
12640 dnl ===================================================================
12641 AC_MSG_CHECKING([which themes to include])
12642 # if none given use default subset of available themes
12643 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
12644 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"
12648 if test "x$with_theme" != "xno"; then
12649 for theme in $with_theme; do
12651 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" ;;
12652 default) real_theme=colibre ;;
12653 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
12655 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
12658 AC_MSG_RESULT([$WITH_THEMES])
12659 AC_SUBST([WITH_THEMES])
12660 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
12661 for theme in $with_theme; do
12663 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
12668 dnl ===================================================================
12669 dnl Test whether to integrate helppacks into the product's installer
12670 dnl ===================================================================
12671 AC_MSG_CHECKING([for helppack integration])
12672 if test "$with_helppack_integration" = "no"; then
12673 AC_MSG_RESULT([no integration])
12675 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
12676 AC_MSG_RESULT([integration])
12679 ###############################################################################
12680 # Extensions checking
12681 ###############################################################################
12682 AC_MSG_CHECKING([for extensions integration])
12683 if test "x$enable_extension_integration" != "xno"; then
12684 WITH_EXTENSION_INTEGRATION=TRUE
12685 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
12686 AC_MSG_RESULT([yes, use integration])
12688 WITH_EXTENSION_INTEGRATION=
12689 AC_MSG_RESULT([no, do not integrate])
12691 AC_SUBST(WITH_EXTENSION_INTEGRATION)
12693 dnl Should any extra extensions be included?
12694 dnl There are standalone tests for each of these below.
12695 WITH_EXTRA_EXTENSIONS=
12696 AC_SUBST([WITH_EXTRA_EXTENSIONS])
12698 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
12699 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
12700 if test "x$with_java" != "xno"; then
12701 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
12702 libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
12705 AC_MSG_CHECKING([whether to build opens___.ttf])
12706 if test "$enable_build_opensymbol" = "yes"; then
12707 AC_MSG_RESULT([yes])
12708 AC_PATH_PROG(FONTFORGE, fontforge)
12709 if test -z "$FONTFORGE"; then
12710 AC_MSG_ERROR([fontforge not installed])
12713 AC_MSG_RESULT([no])
12714 OPENSYMBOL_TTF=884ed41809687c3e168fc7c19b16585149ff058eca79acbf3ee784f6630704cc-opens___.ttf
12715 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
12717 AC_SUBST(OPENSYMBOL_TTF)
12718 AC_SUBST(FONTFORGE)
12720 dnl ===================================================================
12721 dnl Test whether to include fonts
12722 dnl ===================================================================
12723 AC_MSG_CHECKING([whether to include third-party fonts])
12724 if test "$with_fonts" != "no"; then
12725 AC_MSG_RESULT([yes])
12727 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
12728 AC_DEFINE(HAVE_MORE_FONTS)
12730 AC_MSG_RESULT([no])
12732 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
12734 AC_SUBST(WITH_FONTS)
12737 dnl ===================================================================
12738 dnl Test whether to enable online update service
12739 dnl ===================================================================
12740 AC_MSG_CHECKING([whether to enable online update])
12741 ENABLE_ONLINE_UPDATE=
12742 ENABLE_ONLINE_UPDATE_MAR=
12744 if test "$enable_online_update" = ""; then
12745 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12746 AC_MSG_RESULT([yes])
12747 ENABLE_ONLINE_UPDATE="TRUE"
12749 AC_MSG_RESULT([no])
12752 if test "$enable_online_update" = "mar"; then
12753 AC_MSG_RESULT([yes - MAR-based online update])
12754 ENABLE_ONLINE_UPDATE_MAR="TRUE"
12755 if test "$with_update_config" = ""; then
12756 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
12758 UPDATE_CONFIG="$with_update_config"
12759 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
12760 elif test "$enable_online_update" = "yes"; then
12761 AC_MSG_RESULT([yes])
12762 ENABLE_ONLINE_UPDATE="TRUE"
12764 AC_MSG_RESULT([no])
12767 AC_SUBST(ENABLE_ONLINE_UPDATE)
12768 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
12769 AC_SUBST(UPDATE_CONFIG)
12771 dnl ===================================================================
12772 dnl Test whether we need bzip2
12773 dnl ===================================================================
12775 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
12776 AC_MSG_CHECKING([whether to use system bzip2])
12777 if test "$with_system_bzip2" = yes; then
12779 AC_MSG_RESULT([yes])
12780 PKG_CHECK_MODULES(BZIP2, bzip2)
12781 FilterLibs "${BZIP2_LIBS}"
12782 BZIP2_LIBS="${filteredlibs}"
12784 AC_MSG_RESULT([no])
12785 BUILD_TYPE="$BUILD_TYPE BZIP2"
12788 AC_SUBST(SYSTEM_BZIP2)
12789 AC_SUBST(BZIP2_CFLAGS)
12790 AC_SUBST(BZIP2_LIBS)
12792 dnl ===================================================================
12793 dnl Test whether to enable extension update
12794 dnl ===================================================================
12795 AC_MSG_CHECKING([whether to enable extension update])
12796 ENABLE_EXTENSION_UPDATE=
12797 if test "x$enable_extension_update" = "xno"; then
12798 AC_MSG_RESULT([no])
12800 AC_MSG_RESULT([yes])
12801 ENABLE_EXTENSION_UPDATE="TRUE"
12802 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
12803 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
12805 AC_SUBST(ENABLE_EXTENSION_UPDATE)
12808 dnl ===================================================================
12809 dnl Test whether to create MSI with LIMITUI=1 (silent install)
12810 dnl ===================================================================
12811 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
12812 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
12813 AC_MSG_RESULT([no])
12816 AC_MSG_RESULT([yes])
12817 ENABLE_SILENT_MSI=TRUE
12818 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
12820 AC_SUBST(ENABLE_SILENT_MSI)
12822 AC_MSG_CHECKING([whether and how to use Xinerama])
12823 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
12824 if test "$x_libraries" = "default_x_libraries"; then
12825 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
12826 if test "x$XINERAMALIB" = x; then
12827 XINERAMALIB="/usr/lib"
12830 XINERAMALIB="$x_libraries"
12832 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
12833 # we have both versions, let the user decide but use the dynamic one
12836 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
12837 XINERAMA_LINK=dynamic
12839 XINERAMA_LINK=static
12841 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
12842 # we have only the dynamic version
12844 XINERAMA_LINK=dynamic
12845 elif test -e "$XINERAMALIB/libXinerama.a"; then
12847 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
12849 XINERAMA_LINK=static
12859 if test "$USE_XINERAMA" = "TRUE"; then
12860 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
12861 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
12862 [AC_MSG_ERROR(Xinerama header not found.)], [])
12863 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
12864 if test "x$XEXTLIB" = x; then
12865 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
12867 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
12868 if test "$_os" = "FreeBSD"; then
12869 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
12871 if test "$_os" = "Linux"; then
12872 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
12874 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
12875 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
12877 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
12882 AC_MSG_RESULT([no])
12884 AC_SUBST(USE_XINERAMA)
12885 AC_SUBST(XINERAMA_LINK)
12887 dnl ===================================================================
12888 dnl Test whether to build cairo or rely on the system version
12889 dnl ===================================================================
12891 if test "$USING_X11" = TRUE; then
12892 # Used in vcl/Library_vclplug_gen.mk
12896 if test "$test_cairo" = "yes"; then
12897 AC_MSG_CHECKING([whether to use the system cairo])
12899 : ${with_system_cairo:=$with_system_libs}
12900 if test "$with_system_cairo" = "yes"; then
12902 AC_MSG_RESULT([yes])
12904 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
12905 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12906 FilterLibs "${CAIRO_LIBS}"
12907 CAIRO_LIBS="${filteredlibs}"
12909 if test "$test_xrender" = "yes"; then
12910 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
12912 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
12913 #ifdef PictStandardA8
12917 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
12923 AC_MSG_RESULT([no])
12925 BUILD_TYPE="$BUILD_TYPE CAIRO"
12929 AC_SUBST(SYSTEM_CAIRO)
12930 AC_SUBST(CAIRO_CFLAGS)
12931 AC_SUBST(CAIRO_LIBS)
12933 dnl ===================================================================
12934 dnl Test whether to use avahi
12935 dnl ===================================================================
12936 if test "$_os" = "WINNT"; then
12937 # Windows uses bundled mDNSResponder
12938 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
12939 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
12940 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
12941 [ENABLE_AVAHI="TRUE"])
12942 AC_DEFINE(HAVE_FEATURE_AVAHI)
12943 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12944 FilterLibs "${AVAHI_LIBS}"
12945 AVAHI_LIBS="${filteredlibs}"
12948 AC_SUBST(ENABLE_AVAHI)
12949 AC_SUBST(AVAHI_CFLAGS)
12950 AC_SUBST(AVAHI_LIBS)
12952 dnl ===================================================================
12953 dnl Test whether to use liblangtag
12954 dnl ===================================================================
12956 AC_MSG_CHECKING([whether to use system liblangtag])
12957 if test "$with_system_liblangtag" = yes; then
12958 SYSTEM_LIBLANGTAG=TRUE
12959 AC_MSG_RESULT([yes])
12960 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
12961 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
12962 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
12963 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12964 FilterLibs "${LIBLANGTAG_LIBS}"
12965 LIBLANGTAG_LIBS="${filteredlibs}"
12968 AC_MSG_RESULT([no])
12969 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
12970 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
12971 if test "$COM" = "MSC"; then
12972 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
12974 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
12977 AC_SUBST(SYSTEM_LIBLANGTAG)
12978 AC_SUBST(LIBLANGTAG_CFLAGS)
12979 AC_SUBST(LIBLANGTAG_LIBS)
12981 dnl ===================================================================
12982 dnl Test whether to build libpng or rely on the system version
12983 dnl ===================================================================
12985 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
12987 dnl ===================================================================
12988 dnl Check for runtime JVM search path
12989 dnl ===================================================================
12990 if test "$ENABLE_JAVA" != ""; then
12991 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
12992 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
12993 AC_MSG_RESULT([yes])
12994 if ! test -d "$with_jvm_path"; then
12995 AC_MSG_ERROR(["$with_jvm_path" not a directory])
12997 if ! test -d "$with_jvm_path"jvm; then
12998 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13000 JVM_ONE_PATH_CHECK="$with_jvm_path"
13001 AC_SUBST(JVM_ONE_PATH_CHECK)
13003 AC_MSG_RESULT([no])
13007 dnl ===================================================================
13008 dnl Test for the presence of Ant and that it works
13009 dnl ===================================================================
13011 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13012 ANT_HOME=; export ANT_HOME
13013 WITH_ANT_HOME=; export WITH_ANT_HOME
13014 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13015 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13016 if test "$_os" = "WINNT"; then
13017 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13019 with_ant_home="$LODE_HOME/opt/ant"
13021 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13022 with_ant_home="$LODE_HOME/opt/ant"
13025 if test -z "$with_ant_home"; then
13026 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13028 if test "$_os" = "WINNT"; then
13029 # AC_PATH_PROGS needs unix path
13030 with_ant_home=`cygpath -u "$with_ant_home"`
13032 AbsolutePath "$with_ant_home"
13033 with_ant_home=$absolute_path
13034 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13035 WITH_ANT_HOME=$with_ant_home
13036 ANT_HOME=$with_ant_home
13039 if test -z "$ANT"; then
13040 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13042 # resolve relative or absolute symlink
13043 while test -h "$ANT"; do
13045 a_basename=`basename "$ANT"`
13046 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13047 cd "`dirname "$ANT"`"
13048 cd "`dirname "$a_script"`"
13049 ANT="`pwd`"/"`basename "$a_script"`"
13053 AC_MSG_CHECKING([if $ANT works])
13054 mkdir -p conftest.dir
13057 cat > conftest.java << EOF
13058 public class conftest {
13059 int testmethod(int a, int b) {
13065 cat > conftest.xml << EOF
13066 <project name="conftest" default="conftest">
13067 <target name="conftest">
13068 <javac srcdir="." includes="conftest.java">
13074 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13075 if test $? = 0 -a -f ./conftest.class; then
13076 AC_MSG_RESULT([Ant works])
13077 if test -z "$WITH_ANT_HOME"; then
13078 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13079 if test -z "$ANT_HOME"; then
13080 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13083 ANT_HOME="$WITH_ANT_HOME"
13086 echo "configure: Ant test failed" >&5
13087 cat conftest.java >&5
13088 cat conftest.xml >&5
13089 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13092 rm -fr conftest.dir
13094 if test -z "$ANT_HOME"; then
13095 ANT_HOME="NO_ANT_HOME"
13097 PathFormat "$ANT_HOME"
13098 ANT_HOME="$formatted_path"
13100 ANT="$formatted_path"
13103 dnl Checking for ant.jar
13104 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13105 AC_MSG_CHECKING([Ant lib directory])
13106 if test -f $ANT_HOME/lib/ant.jar; then
13107 ANT_LIB="$ANT_HOME/lib"
13109 if test -f $ANT_HOME/ant.jar; then
13110 ANT_LIB="$ANT_HOME"
13112 if test -f /usr/share/java/ant.jar; then
13113 ANT_LIB=/usr/share/java
13115 if test -f /usr/share/ant-core/lib/ant.jar; then
13116 ANT_LIB=/usr/share/ant-core/lib
13118 if test -f $ANT_HOME/lib/ant/ant.jar; then
13119 ANT_LIB="$ANT_HOME/lib/ant"
13121 if test -f /usr/share/lib/ant/ant.jar; then
13122 ANT_LIB=/usr/share/lib/ant
13124 AC_MSG_ERROR([Ant libraries not found!])
13131 PathFormat "$ANT_LIB"
13132 ANT_LIB="$formatted_path"
13133 AC_MSG_RESULT([Ant lib directory found.])
13137 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13139 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13140 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13141 ant_version_major=`echo $ant_version | cut -d. -f1`
13142 ant_version_minor=`echo $ant_version | cut -d. -f2`
13143 echo "configure: ant_version $ant_version " >&5
13144 echo "configure: ant_version_major $ant_version_major " >&5
13145 echo "configure: ant_version_minor $ant_version_minor " >&5
13146 if test "$ant_version_major" -ge "2"; then
13147 AC_MSG_RESULT([yes, $ant_version])
13148 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13149 AC_MSG_RESULT([yes, $ant_version])
13151 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13154 rm -f conftest* core core.* *.core
13162 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13163 AC_MSG_CHECKING([for JUnit 4])
13164 if test "$with_junit" = "yes"; then
13165 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13166 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13167 elif test -e /usr/share/java/junit4.jar; then
13168 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13170 if test -e /usr/share/lib/java/junit.jar; then
13171 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13173 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13177 OOO_JUNIT_JAR=$with_junit
13179 if test "$_os" = "WINNT"; then
13180 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13182 printf 'import org.junit.Before;' > conftest.java
13183 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13184 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13187 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13188 specify its pathname via --with-junit=..., or disable it via --without-junit])
13190 rm -f conftest.class conftest.java
13191 if test $OOO_JUNIT_JAR != ""; then
13192 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13195 AC_MSG_CHECKING([for included Hamcrest])
13196 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13197 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13198 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13200 AC_MSG_RESULT([Not included])
13201 AC_MSG_CHECKING([for standalone hamcrest jar.])
13202 if test "$with_hamcrest" = "yes"; then
13203 if test -e /usr/share/lib/java/hamcrest.jar; then
13204 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13205 elif test -e /usr/share/java/hamcrest/core.jar; then
13206 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13208 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13211 HAMCREST_JAR=$with_hamcrest
13213 if test "$_os" = "WINNT"; then
13214 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13216 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13217 AC_MSG_RESULT([$HAMCREST_JAR])
13219 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),
13220 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13223 rm -f conftest.class conftest.java
13225 AC_SUBST(OOO_JUNIT_JAR)
13226 AC_SUBST(HAMCREST_JAR)
13232 # check for wget and curl
13237 if test "$enable_fetch_external" != "no"; then
13239 CURL=`which curl 2>/dev/null`
13241 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13243 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13244 if test $? -eq 0; then
13250 if test -z "$WGET" -a -z "$CURL"; then
13251 AC_MSG_ERROR([neither wget nor curl found!])
13260 # check for sha256sum
13264 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13265 eval "$i -a 256 --version" > /dev/null 2>&1
13267 if test $ret -eq 0; then
13268 SHA256SUM="$i -a 256"
13273 if test -z "$SHA256SUM"; then
13274 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13275 eval "$i --version" > /dev/null 2>&1
13277 if test $ret -eq 0; then
13284 if test -z "$SHA256SUM"; then
13285 AC_MSG_ERROR([no sha256sum found!])
13288 AC_SUBST(SHA256SUM)
13290 dnl ===================================================================
13291 dnl Dealing with l10n options
13292 dnl ===================================================================
13293 AC_MSG_CHECKING([which languages to be built])
13294 # get list of all languages
13295 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13296 # the sed command does the following:
13297 # + if a line ends with a backslash, append the next line to it
13298 # + adds " on the beginning of the value (after =)
13299 # + adds " at the end of the value
13300 # + removes en-US; we want to put it on the beginning
13301 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13302 [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)]
13303 ALL_LANGS="en-US $completelangiso"
13304 # check the configured localizations
13305 WITH_LANG="$with_lang"
13307 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13308 # (Norwegian is "nb" and "nn".)
13309 if test "$WITH_LANG" = "no"; then
13313 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13314 AC_MSG_RESULT([en-US])
13316 AC_MSG_RESULT([$WITH_LANG])
13317 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13318 if test -z "$MSGFMT"; then
13319 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13320 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13321 elif test -x "/opt/lo/bin/msgfmt"; then
13322 MSGFMT="/opt/lo/bin/msgfmt"
13324 AC_CHECK_PROGS(MSGFMT, [msgfmt])
13325 if test -z "$MSGFMT"; then
13326 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13330 if test -z "$MSGUNIQ"; then
13331 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13332 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13333 elif test -x "/opt/lo/bin/msguniq"; then
13334 MSGUNIQ="/opt/lo/bin/msguniq"
13336 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13337 if test -z "$MSGUNIQ"; then
13338 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13345 # check that the list is valid
13346 for lang in $WITH_LANG; do
13347 test "$lang" = "ALL" && continue
13348 # need to check for the exact string, so add space before and after the list of all languages
13349 for vl in $ALL_LANGS; do
13350 if test "$vl" = "$lang"; then
13354 if test "$vl" != "$lang"; then
13355 # if you're reading this - you prolly quoted your languages remove the quotes ...
13356 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13359 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13360 echo $WITH_LANG | grep -q en-US
13361 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13363 # list with substituted ALL
13364 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13365 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13366 test "$WITH_LANG" = "en-US" && WITH_LANG=
13367 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13368 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13369 ALL_LANGS=`echo $ALL_LANGS qtz`
13371 AC_SUBST(ALL_LANGS)
13372 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13373 AC_SUBST(WITH_LANG)
13374 AC_SUBST(WITH_LANG_LIST)
13375 AC_SUBST(GIT_NEEDED_SUBMODULES)
13377 WITH_POOR_HELP_LOCALIZATIONS=
13378 if test -d "$SRC_ROOT/translations/source"; then
13379 for l in `ls -1 $SRC_ROOT/translations/source`; do
13380 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13381 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13385 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13387 if test -n "$with_locales"; then
13388 WITH_LOCALES="$with_locales"
13390 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13391 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13392 # config_host/config_locales.h.in
13393 for locale in $WITH_LOCALES; do
13396 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13400 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13403 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13408 AC_DEFINE(WITH_LOCALE_ALL)
13410 AC_SUBST(WITH_LOCALES)
13412 dnl git submodule update --reference
13413 dnl ===================================================================
13414 if test -n "${GIT_REFERENCE_SRC}"; then
13415 for repo in ${GIT_NEEDED_SUBMODULES}; do
13416 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13417 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13421 AC_SUBST(GIT_REFERENCE_SRC)
13423 dnl git submodules linked dirs
13424 dnl ===================================================================
13425 if test -n "${GIT_LINK_SRC}"; then
13426 for repo in ${GIT_NEEDED_SUBMODULES}; do
13427 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13428 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13432 AC_SUBST(GIT_LINK_SRC)
13435 dnl ===================================================================
13436 AC_MSG_CHECKING([for alternative branding images directory])
13437 # initialize mapped arrays
13438 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13439 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg about.svg"
13441 if test -z "$with_branding" -o "$with_branding" = "no"; then
13442 AC_MSG_RESULT([none])
13443 DEFAULT_BRAND_IMAGES="$brand_files"
13445 if ! test -d $with_branding ; then
13446 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13448 AC_MSG_RESULT([$with_branding])
13449 CUSTOM_BRAND_DIR="$with_branding"
13450 for lfile in $brand_files
13452 if ! test -f $with_branding/$lfile ; then
13453 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13454 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13456 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13459 check_for_progress="yes"
13462 AC_SUBST([BRAND_INTRO_IMAGES])
13463 AC_SUBST([CUSTOM_BRAND_DIR])
13464 AC_SUBST([CUSTOM_BRAND_IMAGES])
13465 AC_SUBST([DEFAULT_BRAND_IMAGES])
13468 AC_MSG_CHECKING([for 'intro' progress settings])
13472 PROGRESSFRAMECOLOR=
13474 PROGRESSTEXTBASELINE=
13476 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13477 source "$with_branding/progress.conf"
13478 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13480 AC_MSG_RESULT([none])
13483 AC_SUBST(PROGRESSBARCOLOR)
13484 AC_SUBST(PROGRESSSIZE)
13485 AC_SUBST(PROGRESSPOSITION)
13486 AC_SUBST(PROGRESSFRAMECOLOR)
13487 AC_SUBST(PROGRESSTEXTCOLOR)
13488 AC_SUBST(PROGRESSTEXTBASELINE)
13491 dnl ===================================================================
13492 dnl Custom build version
13493 dnl ===================================================================
13494 AC_MSG_CHECKING([for extra build ID])
13495 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13496 EXTRA_BUILDID="$with_extra_buildid"
13498 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13499 if test -n "$EXTRA_BUILDID" ; then
13500 AC_MSG_RESULT([$EXTRA_BUILDID])
13502 AC_MSG_RESULT([not set])
13504 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13507 AC_MSG_CHECKING([for vendor])
13508 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13509 OOO_VENDOR="$USERNAME"
13511 if test -z "$OOO_VENDOR"; then
13515 if test -z "$OOO_VENDOR"; then
13516 OOO_VENDOR="`id -u -n`"
13519 AC_MSG_RESULT([not set, using $OOO_VENDOR])
13521 OOO_VENDOR="$with_vendor"
13522 AC_MSG_RESULT([$OOO_VENDOR])
13524 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13525 AC_SUBST(OOO_VENDOR)
13527 if test "$_os" = "Android" ; then
13528 ANDROID_PACKAGE_NAME=
13529 AC_MSG_CHECKING([for Android package name])
13530 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13531 if test -n "$ENABLE_DEBUG"; then
13532 # Default to the package name that makes ndk-gdb happy.
13533 ANDROID_PACKAGE_NAME="org.libreoffice"
13535 ANDROID_PACKAGE_NAME="org.example.libreoffice"
13538 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13540 ANDROID_PACKAGE_NAME="$with_android_package_name"
13541 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13543 AC_SUBST(ANDROID_PACKAGE_NAME)
13546 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13547 if test "$with_compat_oowrappers" = "yes"; then
13548 WITH_COMPAT_OOWRAPPERS=TRUE
13551 WITH_COMPAT_OOWRAPPERS=
13554 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13556 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13557 AC_MSG_CHECKING([for install dirname])
13558 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13559 INSTALLDIRNAME="$with_install_dirname"
13561 AC_MSG_RESULT([$INSTALLDIRNAME])
13562 AC_SUBST(INSTALLDIRNAME)
13564 AC_MSG_CHECKING([for prefix])
13565 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13566 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13567 PREFIXDIR="$prefix"
13568 AC_MSG_RESULT([$PREFIXDIR])
13569 AC_SUBST(PREFIXDIR)
13571 LIBDIR=[$(eval echo $(eval echo $libdir))]
13574 DATADIR=[$(eval echo $(eval echo $datadir))]
13577 MANDIR=[$(eval echo $(eval echo $mandir))]
13580 DOCDIR=[$(eval echo $(eval echo $docdir))]
13583 BINDIR=[$(eval echo $(eval echo $bindir))]
13586 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
13587 AC_SUBST(INSTALLDIR)
13589 TESTINSTALLDIR="${BUILDDIR}/test-install"
13590 AC_SUBST(TESTINSTALLDIR)
13593 # ===================================================================
13594 # OAuth2 id and secrets
13595 # ===================================================================
13597 AC_MSG_CHECKING([for Google Drive client id and secret])
13598 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
13599 AC_MSG_RESULT([not set])
13600 GDRIVE_CLIENT_ID="\"\""
13601 GDRIVE_CLIENT_SECRET="\"\""
13603 AC_MSG_RESULT([set])
13604 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
13605 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
13607 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
13608 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
13610 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
13611 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
13612 AC_MSG_RESULT([not set])
13613 ALFRESCO_CLOUD_CLIENT_ID="\"\""
13614 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
13616 AC_MSG_RESULT([set])
13617 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
13618 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
13620 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
13621 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
13623 AC_MSG_CHECKING([for OneDrive client id and secret])
13624 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
13625 AC_MSG_RESULT([not set])
13626 ONEDRIVE_CLIENT_ID="\"\""
13627 ONEDRIVE_CLIENT_SECRET="\"\""
13629 AC_MSG_RESULT([set])
13630 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
13631 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
13633 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
13634 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
13637 dnl ===================================================================
13638 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
13639 dnl --enable-dependency-tracking configure option
13640 dnl ===================================================================
13641 AC_MSG_CHECKING([whether to enable dependency tracking])
13642 if test "$enable_dependency_tracking" = "no"; then
13644 AC_MSG_RESULT([no])
13646 AC_MSG_RESULT([yes])
13650 dnl ===================================================================
13651 dnl Number of CPUs to use during the build
13652 dnl ===================================================================
13653 AC_MSG_CHECKING([for number of processors to use])
13654 # plain --with-parallelism is just the default
13655 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
13656 if test "$with_parallelism" = "no"; then
13659 PARALLELISM=$with_parallelism
13662 if test "$enable_icecream" = "yes"; then
13667 Darwin|FreeBSD|NetBSD|OpenBSD)
13668 PARALLELISM=`sysctl -n hw.ncpu`
13672 PARALLELISM=`getconf _NPROCESSORS_ONLN`
13674 # what else than above does profit here *and* has /proc?
13676 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
13680 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
13681 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
13685 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
13686 if test -z "$with_parallelism"; then
13687 AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
13688 add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
13691 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."
13695 if test $PARALLELISM -eq 0; then
13696 AC_MSG_RESULT([explicit make -j option needed])
13698 AC_MSG_RESULT([$PARALLELISM])
13700 AC_SUBST(PARALLELISM)
13702 IWYU_PATH="$with_iwyu"
13703 AC_SUBST(IWYU_PATH)
13704 if test ! -z "$IWYU_PATH"; then
13705 if test ! -f "$IWYU_PATH"; then
13706 AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
13711 # Set up ILIB for MSVC build
13714 if test "$build_os" = "cygwin"; then
13716 if test -n "$JAVA_HOME"; then
13717 ILIB="$ILIB;$JAVA_HOME/lib"
13720 ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
13721 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
13722 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13723 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13724 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
13725 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13726 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13728 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
13729 ucrtlibpath_formatted=$formatted_path
13730 ILIB="$ILIB;$ucrtlibpath_formatted"
13731 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
13732 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
13733 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
13735 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
13738 if test "$cross_compiling" != "yes"; then
13739 ILIB_FOR_BUILD="$ILIB"
13743 AC_SUBST(ILIB_FOR_BUILD)
13745 # ===================================================================
13746 # Creating bigger shared library to link against
13747 # ===================================================================
13748 AC_MSG_CHECKING([whether to create huge library])
13751 if test $_os = iOS -o $_os = Android; then
13752 # Never any point in mergelibs for these as we build just static
13753 # libraries anyway...
13754 enable_mergelibs=no
13757 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
13758 if test $_os != Linux -a $_os != WINNT; then
13759 add_warning "--enable-mergelibs is not tested for this platform"
13762 AC_MSG_RESULT([yes])
13763 AC_DEFINE(ENABLE_MERGELIBS)
13765 AC_MSG_RESULT([no])
13767 AC_SUBST([MERGELIBS])
13769 dnl ===================================================================
13770 dnl icerun is a wrapper that stops us spawning tens of processes
13771 dnl locally - for tools that can't be executed on the compile cluster
13772 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
13773 dnl ===================================================================
13774 AC_MSG_CHECKING([whether to use icerun wrapper])
13776 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
13777 ICECREAM_RUN=icerun
13778 AC_MSG_RESULT([yes])
13780 AC_MSG_RESULT([no])
13782 AC_SUBST(ICECREAM_RUN)
13784 dnl ===================================================================
13785 dnl Setup the ICECC_VERSION for the build the same way it was set for
13786 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
13787 dnl ===================================================================
13788 x_ICECC_VERSION=[\#]
13789 if test -n "$ICECC_VERSION" ; then
13792 AC_SUBST(x_ICECC_VERSION)
13793 AC_SUBST(ICECC_VERSION)
13795 dnl ===================================================================
13797 AC_MSG_CHECKING([MPL subset])
13800 if test "$enable_mpl_subset" = "yes"; then
13802 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
13804 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
13807 if test "$warn_report" = "true"; then
13808 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
13810 if test "x$enable_postgresql_sdbc" != "xno"; then
13811 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
13813 if test "$enable_lotuswordpro" = "yes"; then
13814 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
13816 if test "$WITH_WEBDAV" = "neon"; then
13817 AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
13819 if test -n "$ENABLE_POPPLER"; then
13820 if test "x$SYSTEM_POPPLER" = "x"; then
13821 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
13824 # cf. m4/libo_check_extension.m4
13825 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
13826 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
13828 for theme in $WITH_THEMES; do
13830 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
13831 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
13836 ENABLE_OPENGL_TRANSITIONS=
13838 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
13839 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
13843 AC_DEFINE(MPL_HAVE_SUBSET)
13844 AC_MSG_RESULT([only])
13846 AC_MSG_RESULT([no restrictions])
13848 AC_SUBST(MPL_SUBSET)
13850 dnl ===================================================================
13852 AC_MSG_CHECKING([formula logger])
13853 ENABLE_FORMULA_LOGGER=
13855 if test "x$enable_formula_logger" = "xyes"; then
13856 AC_MSG_RESULT([yes])
13857 AC_DEFINE(ENABLE_FORMULA_LOGGER)
13858 ENABLE_FORMULA_LOGGER=TRUE
13859 elif test -n "$ENABLE_DBGUTIL" ; then
13860 AC_MSG_RESULT([yes])
13861 AC_DEFINE(ENABLE_FORMULA_LOGGER)
13862 ENABLE_FORMULA_LOGGER=TRUE
13864 AC_MSG_RESULT([no])
13867 AC_SUBST(ENABLE_FORMULA_LOGGER)
13869 dnl ===================================================================
13870 dnl Checking for active Antivirus software.
13871 dnl ===================================================================
13873 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
13874 AC_MSG_CHECKING([for active Antivirus software])
13875 ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
13876 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
13877 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
13878 AC_MSG_RESULT([found])
13879 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
13880 echo $EICAR_STRING > $SRC_ROOT/eicar
13881 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
13883 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13884 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13886 echo $EICAR_STRING > $BUILDDIR/eicar
13887 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
13889 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13890 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13892 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"
13894 AC_MSG_RESULT([not found])
13897 AC_MSG_RESULT([n/a])
13901 dnl ===================================================================
13902 dnl Setting up the environment.
13903 dnl ===================================================================
13904 AC_MSG_NOTICE([setting up the build environment variables...])
13908 if test "$build_os" = "cygwin"; then
13909 if test -d "$COMPATH/atlmfc/lib/spectre"; then
13910 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
13911 ATL_INCLUDE="$COMPATH/atlmfc/include"
13912 elif test -d "$COMPATH/atlmfc/lib"; then
13913 ATL_LIB="$COMPATH/atlmfc/lib"
13914 ATL_INCLUDE="$COMPATH/atlmfc/include"
13916 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
13917 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
13919 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
13920 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
13921 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
13923 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
13924 PathFormat "/usr/bin/find.exe"
13925 FIND="$formatted_path"
13926 PathFormat "/usr/bin/sort.exe"
13927 SORT="$formatted_path"
13928 PathFormat "/usr/bin/grep.exe"
13929 WIN_GREP="$formatted_path"
13930 PathFormat "/usr/bin/ls.exe"
13931 WIN_LS="$formatted_path"
13932 PathFormat "/usr/bin/touch.exe"
13933 WIN_TOUCH="$formatted_path"
13939 AC_SUBST(ATL_INCLUDE)
13945 AC_SUBST(WIN_TOUCH)
13947 AC_SUBST(BUILD_TYPE)
13952 PERL="$formatted_path"
13955 if test -n "$TMPDIR"; then
13956 TEMP_DIRECTORY="$TMPDIR"
13958 TEMP_DIRECTORY="/tmp"
13960 if test "$build_os" = "cygwin"; then
13961 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
13963 AC_SUBST(TEMP_DIRECTORY)
13965 # setup the PATH for the environment
13966 if test -n "$LO_PATH_FOR_BUILD"; then
13967 LO_PATH="$LO_PATH_FOR_BUILD"
13970 pathmunge "$MSVC_HOST_PATH" "before"
13978 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
13979 if test "$ENABLE_JAVA" != ""; then
13980 pathmunge "$JAVA_HOME/bin" "after"
13985 # Win32 make needs native paths
13986 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
13987 LO_PATH=`cygpath -p -m "$PATH"`
13989 if test "$WIN_BUILD_ARCH" = "x64"; then
13990 # needed for msi packaging
13991 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
13993 # .NET 4.6 and higher don't have bin directory
13994 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
13995 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
13997 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
13998 pathmunge "$CSC_PATH" "before"
13999 pathmunge "$MIDL_PATH" "before"
14000 pathmunge "$AL_PATH" "before"
14001 pathmunge "$MSVC_MULTI_PATH" "before"
14002 pathmunge "$MSVC_BUILD_PATH" "before"
14003 if test -n "$MSBUILD_PATH" ; then
14004 pathmunge "$MSBUILD_PATH" "before"
14006 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14007 if test "$ENABLE_JAVA" != ""; then
14008 if test -d "$JAVA_HOME/jre/bin/client"; then
14009 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14011 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14012 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14014 pathmunge "$JAVA_HOME/bin" "before"
14016 pathmunge "$MSVC_HOST_PATH" "before"
14020 pathmunge "/usr/css/bin" "before"
14021 if test "$ENABLE_JAVA" != ""; then
14022 pathmunge "$JAVA_HOME/bin" "after"
14030 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14031 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14032 x_LO_ELFCHECK_ALLOWLIST=
14034 x_LO_ELFCHECK_ALLOWLIST=[\#]
14036 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14037 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14041 # Generate a configuration sha256 we can use for deps
14042 if test -f config_host.mk; then
14043 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14045 if test -f config_host_lang.mk; then
14046 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14049 CFLAGS=$my_original_CFLAGS
14050 CXXFLAGS=$my_original_CXXFLAGS
14051 CPPFLAGS=$my_original_CPPFLAGS
14053 AC_CONFIG_LINKS([include:include])
14055 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14056 # BUILD platform configuration] - otherwise breaks cross building
14057 AC_CONFIG_FILES([config_host.mk
14058 config_host_lang.mk
14060 bin/bffvalidator.sh
14061 bin/odfvalidator.sh
14063 hardened_runtime.xcent
14064 instsetoo_native/util/openoffice.lst
14065 sysui/desktop/macosx/Info.plist])
14066 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14067 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14068 AC_CONFIG_HEADERS([config_host/config_clang.h])
14069 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14070 AC_CONFIG_HEADERS([config_host/config_eot.h])
14071 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14072 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14073 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14074 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14075 AC_CONFIG_HEADERS([config_host/config_features.h])
14076 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14077 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14078 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14079 AC_CONFIG_HEADERS([config_host/config_folders.h])
14080 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14081 AC_CONFIG_HEADERS([config_host/config_gio.h])
14082 AC_CONFIG_HEADERS([config_host/config_global.h])
14083 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14084 AC_CONFIG_HEADERS([config_host/config_java.h])
14085 AC_CONFIG_HEADERS([config_host/config_langs.h])
14086 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14087 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14088 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14089 AC_CONFIG_HEADERS([config_host/config_locales.h])
14090 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14091 AC_CONFIG_HEADERS([config_host/config_oox.h])
14092 AC_CONFIG_HEADERS([config_host/config_options.h])
14093 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14094 AC_CONFIG_HEADERS([config_host/config_qrcodegen.h])
14095 AC_CONFIG_HEADERS([config_host/config_skia.h])
14096 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14097 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14098 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14099 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14100 AC_CONFIG_HEADERS([config_host/config_version.h])
14101 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14102 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14103 AC_CONFIG_HEADERS([config_host/config_python.h])
14104 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14107 if test "$CROSS_COMPILING" = TRUE; then
14108 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14111 # touch the config timestamp file
14112 if test ! -f config_host.mk.stamp; then
14113 echo > config_host.mk.stamp
14114 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14115 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14117 echo > config_host.mk.stamp
14120 # touch the config lang timestamp file
14121 if test ! -f config_host_lang.mk.stamp; then
14122 echo > config_host_lang.mk.stamp
14123 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14124 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14126 echo > config_host_lang.mk.stamp
14130 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14131 -a "$build_os" = "cygwin"; then
14134 ****************************************************************************
14136 Your make version is known to be horribly slow, and hard to debug
14137 problems with. To get a reasonably functional make please do:
14139 to install a pre-compiled binary make for Win32
14141 mkdir -p /opt/lo/bin
14143 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14144 cp make-4.2.1-msvc.exe make
14147 to install from source:
14148 place yourself in a working directory of you choice.
14150 git clone git://git.savannah.gnu.org/make.git
14152 [go to Start menu, open "Visual Studio 2019", click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14153 set PATH=%PATH%;C:\Cygwin\bin
14154 [or Cygwin64, if that is what you have]
14155 cd path-to-make-repo-you-cloned-above
14156 build_w32.bat --without-guile
14158 should result in a WinRel/gnumake.exe.
14159 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14161 Then re-run autogen.sh
14163 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14164 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14167 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14168 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14174 ****************************************************************************
14179 To view some help, run:
14184 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14186 After the build has finished successfully, you can immediately run what you built using the command:
14189 if test $_os = Darwin; then
14190 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14192 echo instdir/program/soffice
14196 If you want to run the smoketest, run:
14202 if test -f warn; then
14207 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: