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.7.1],[],[],[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 libo_FUZZ_ARG_ENABLE(community-flavor,
1767 AS_HELP_STRING([--disable-community-flavor],
1768 [Disable the Community branding.]),
1771 AC_ARG_WITH(package-version,
1772 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1773 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1776 libo_FUZZ_ARG_ENABLE(readonly-installset,
1777 AS_HELP_STRING([--enable-readonly-installset],
1778 [Prevents any attempts by LibreOffice to write into its installation. That means
1779 at least that no "system-wide" extensions can be added. Partly experimental work in
1780 progress, probably not fully implemented. Always enabled for macOS.]),
1783 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1784 AS_HELP_STRING([--disable-mariadb-sdbc],
1785 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1788 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1789 AS_HELP_STRING([--disable-postgresql-sdbc],
1790 [Disable the build of the PostgreSQL-SDBC driver.])
1793 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1794 AS_HELP_STRING([--disable-lotuswordpro],
1795 [Disable the build of the Lotus Word Pro filter.]),
1796 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1798 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1799 AS_HELP_STRING([--disable-firebird-sdbc],
1800 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1801 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1803 AC_ARG_ENABLE(bogus-pkg-config,
1804 AS_HELP_STRING([--enable-bogus-pkg-config],
1805 [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.]),
1808 AC_ARG_ENABLE(openssl,
1809 AS_HELP_STRING([--disable-openssl],
1810 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1811 components will either use GNUTLS or NSS. Work in progress,
1812 use only if you are hacking on it.]),
1813 ,enable_openssl=yes)
1815 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1816 AS_HELP_STRING([--enable-cipher-openssl-backend],
1817 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1818 Requires --enable-openssl.]))
1820 AC_ARG_ENABLE(library-bin-tar,
1821 AS_HELP_STRING([--enable-library-bin-tar],
1822 [Enable the building and reused of tarball of binary build for some 'external' libraries.
1823 Some libraries can save their build result in a tarball
1824 stored in TARFILE_LOCATION. That binary tarball is
1825 uniquely identified by the source tarball,
1826 the content of the config_host.mk file and the content
1827 of the top-level directory in core for that library
1828 If this option is enabled, then if such a tarfile exist, it will be untarred
1829 instead of the source tarfile, and the build step will be skipped for that
1831 If a proper tarfile does not exist, then the normal source-based
1832 build is done for that library and a proper binary tarfile is created
1833 for the next time.]),
1836 AC_ARG_ENABLE(dconf,
1837 AS_HELP_STRING([--disable-dconf],
1838 [Disable the dconf configuration backend (enabled by default where
1841 libo_FUZZ_ARG_ENABLE(formula-logger,
1843 [--enable-formula-logger],
1844 [Enable formula logger for logging formula calculation flow in Calc.]
1849 AS_HELP_STRING([--disable-ldap],
1850 [Disable LDAP support.]),
1853 AC_ARG_ENABLE(opencl,
1854 AS_HELP_STRING([--disable-opencl],
1855 [Disable OpenCL support.]),
1858 dnl ===================================================================
1859 dnl Optional Packages (--with/without-)
1860 dnl ===================================================================
1862 AC_ARG_WITH(gcc-home,
1863 AS_HELP_STRING([--with-gcc-home],
1864 [Specify the location of gcc/g++ manually. This can be used in conjunction
1865 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1866 non-default path.]),
1869 AC_ARG_WITH(gnu-patch,
1870 AS_HELP_STRING([--with-gnu-patch],
1871 [Specify location of GNU patch on Solaris or FreeBSD.]),
1874 AC_ARG_WITH(build-platform-configure-options,
1875 AS_HELP_STRING([--with-build-platform-configure-options],
1876 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1880 AS_HELP_STRING([--with-gnu-cp],
1881 [Specify location of GNU cp on Solaris or FreeBSD.]),
1884 AC_ARG_WITH(external-tar,
1885 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1886 [Specify an absolute path of where to find (and store) tarfiles.]),
1887 TARFILE_LOCATION=$withval ,
1890 AC_ARG_WITH(referenced-git,
1891 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1892 [Specify another checkout directory to reference. This makes use of
1893 git submodule update --reference, and saves a lot of diskspace
1894 when having multiple trees side-by-side.]),
1895 GIT_REFERENCE_SRC=$withval ,
1898 AC_ARG_WITH(linked-git,
1899 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
1900 [Specify a directory where the repositories of submodules are located.
1901 This uses a method similar to git-new-workdir to get submodules.]),
1902 GIT_LINK_SRC=$withval ,
1905 AC_ARG_WITH(galleries,
1906 AS_HELP_STRING([--with-galleries],
1907 [Specify how galleries should be built. It is possible either to
1908 build these internally from source ("build"),
1909 or to disable them ("no")]),
1913 AS_HELP_STRING([--with-theme="theme1 theme2..."],
1914 [Choose which themes to include. By default those themes with an '*' are included.
1915 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
1916 *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *sukapura, *sukapura_svg.]),
1919 libo_FUZZ_ARG_WITH(helppack-integration,
1920 AS_HELP_STRING([--without-helppack-integration],
1921 [It will not integrate the helppacks to the installer
1922 of the product. Please use this switch to use the online help
1923 or separate help packages.]),
1926 libo_FUZZ_ARG_WITH(fonts,
1927 AS_HELP_STRING([--without-fonts],
1928 [LibreOffice includes some third-party fonts to provide a reliable basis for
1929 help content, templates, samples, etc. When these fonts are already
1930 known to be available on the system then you should use this option.]),
1934 AS_HELP_STRING([--with-epm],
1935 [Decides which epm to use. Default is to use the one from the system if
1936 one is built. When either this is not there or you say =internal epm
1940 AC_ARG_WITH(package-format,
1941 AS_HELP_STRING([--with-package-format],
1942 [Specify package format(s) for LibreOffice installation sets. The
1943 implicit --without-package-format leads to no installation sets being
1944 generated. Possible values: aix, archive, bsd, deb, dmg,
1945 installed, msi, pkg, and rpm.
1946 Example: --with-package-format='deb rpm']),
1950 AS_HELP_STRING([--with-tls],
1951 [Decides which TLS/SSL and cryptographic implementations to use for
1952 LibreOffice's code. Notice that this doesn't apply for depending
1953 libraries like "neon", for example. Default is to use NSS
1954 although OpenSSL is also possible. Notice that selecting NSS restricts
1955 the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
1956 restrict by now the usage of NSS in LO's code. Possible values:
1957 openssl, nss. Example: --with-tls="nss"]),
1960 AC_ARG_WITH(system-libs,
1961 AS_HELP_STRING([--with-system-libs],
1962 [Use libraries already on system -- enables all --with-system-* flags.]),
1965 AC_ARG_WITH(system-bzip2,
1966 AS_HELP_STRING([--with-system-bzip2],
1967 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
1968 [with_system_bzip2="$with_system_libs"])
1970 AC_ARG_WITH(system-headers,
1971 AS_HELP_STRING([--with-system-headers],
1972 [Use headers already on system -- enables all --with-system-* flags for
1973 external packages whose headers are the only entities used i.e.
1974 boost/odbc/sane-header(s).]),,
1975 [with_system_headers="$with_system_libs"])
1977 AC_ARG_WITH(system-jars,
1978 AS_HELP_STRING([--without-system-jars],
1979 [When building with --with-system-libs, also the needed jars are expected
1980 on the system. Use this to disable that]),,
1981 [with_system_jars="$with_system_libs"])
1983 AC_ARG_WITH(system-cairo,
1984 AS_HELP_STRING([--with-system-cairo],
1985 [Use cairo libraries already on system. Happens automatically for
1986 (implicit) --enable-gtk3.]))
1988 AC_ARG_WITH(system-epoxy,
1989 AS_HELP_STRING([--with-system-epoxy],
1990 [Use epoxy libraries already on system. Happens automatically for
1991 (implicit) --enable-gtk3.]),,
1992 [with_system_epoxy="$with_system_libs"])
1994 AC_ARG_WITH(myspell-dicts,
1995 AS_HELP_STRING([--with-myspell-dicts],
1996 [Adds myspell dictionaries to the LibreOffice installation set]),
1999 AC_ARG_WITH(system-dicts,
2000 AS_HELP_STRING([--without-system-dicts],
2001 [Do not use dictionaries from system paths.]),
2004 AC_ARG_WITH(external-dict-dir,
2005 AS_HELP_STRING([--with-external-dict-dir],
2006 [Specify external dictionary dir.]),
2009 AC_ARG_WITH(external-hyph-dir,
2010 AS_HELP_STRING([--with-external-hyph-dir],
2011 [Specify external hyphenation pattern dir.]),
2014 AC_ARG_WITH(external-thes-dir,
2015 AS_HELP_STRING([--with-external-thes-dir],
2016 [Specify external thesaurus dir.]),
2019 AC_ARG_WITH(system-zlib,
2020 AS_HELP_STRING([--with-system-zlib],
2021 [Use zlib already on system.]),,
2022 [with_system_zlib=auto])
2024 AC_ARG_WITH(system-jpeg,
2025 AS_HELP_STRING([--with-system-jpeg],
2026 [Use jpeg already on system.]),,
2027 [with_system_jpeg="$with_system_libs"])
2029 AC_ARG_WITH(system-clucene,
2030 AS_HELP_STRING([--with-system-clucene],
2031 [Use clucene already on system.]),,
2032 [with_system_clucene="$with_system_libs"])
2034 AC_ARG_WITH(system-expat,
2035 AS_HELP_STRING([--with-system-expat],
2036 [Use expat already on system.]),,
2037 [with_system_expat="$with_system_libs"])
2039 AC_ARG_WITH(system-libxml,
2040 AS_HELP_STRING([--with-system-libxml],
2041 [Use libxml/libxslt already on system.]),,
2042 [with_system_libxml=auto])
2044 AC_ARG_WITH(system-icu,
2045 AS_HELP_STRING([--with-system-icu],
2046 [Use icu already on system.]),,
2047 [with_system_icu="$with_system_libs"])
2049 AC_ARG_WITH(system-ucpp,
2050 AS_HELP_STRING([--with-system-ucpp],
2051 [Use ucpp already on system.]),,
2054 AC_ARG_WITH(system-openldap,
2055 AS_HELP_STRING([--with-system-openldap],
2056 [Use the OpenLDAP LDAP SDK already on system.]),,
2057 [with_system_openldap="$with_system_libs"])
2059 libo_FUZZ_ARG_ENABLE(poppler,
2060 AS_HELP_STRING([--disable-poppler],
2061 [Disable building Poppler.])
2064 AC_ARG_WITH(system-poppler,
2065 AS_HELP_STRING([--with-system-poppler],
2066 [Use system poppler (only needed for PDF import).]),,
2067 [with_system_poppler="$with_system_libs"])
2069 libo_FUZZ_ARG_ENABLE(gpgmepp,
2070 AS_HELP_STRING([--disable-gpgmepp],
2071 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2074 AC_ARG_WITH(system-gpgmepp,
2075 AS_HELP_STRING([--with-system-gpgmepp],
2076 [Use gpgmepp already on system]),,
2077 [with_system_gpgmepp="$with_system_libs"])
2079 AC_ARG_WITH(system-apache-commons,
2080 AS_HELP_STRING([--with-system-apache-commons],
2081 [Use Apache commons libraries already on system.]),,
2082 [with_system_apache_commons="$with_system_jars"])
2084 AC_ARG_WITH(system-mariadb,
2085 AS_HELP_STRING([--with-system-mariadb],
2086 [Use MariaDB/MySQL libraries already on system.]),,
2087 [with_system_mariadb="$with_system_libs"])
2089 AC_ARG_ENABLE(bundle-mariadb,
2090 AS_HELP_STRING([--enable-bundle-mariadb],
2091 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2094 AC_ARG_WITH(system-postgresql,
2095 AS_HELP_STRING([--with-system-postgresql],
2096 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2097 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2098 [with_system_postgresql="$with_system_libs"])
2100 AC_ARG_WITH(libpq-path,
2101 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2102 [Use this PostgreSQL C interface (libpq) installation for building
2103 the PostgreSQL-SDBC extension.]),
2106 AC_ARG_WITH(system-firebird,
2107 AS_HELP_STRING([--with-system-firebird],
2108 [Use Firebird libraries already on system, for building the Firebird-SDBC
2109 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2110 [with_system_firebird="$with_system_libs"])
2112 AC_ARG_WITH(system-libtommath,
2113 AS_HELP_STRING([--with-system-libtommath],
2114 [Use libtommath already on system]),,
2115 [with_system_libtommath="$with_system_libs"])
2117 AC_ARG_WITH(system-hsqldb,
2118 AS_HELP_STRING([--with-system-hsqldb],
2119 [Use hsqldb already on system.]))
2121 AC_ARG_WITH(hsqldb-jar,
2122 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2123 [Specify path to jarfile manually.]),
2124 HSQLDB_JAR=$withval)
2126 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2127 AS_HELP_STRING([--disable-scripting-beanshell],
2128 [Disable support for scripts in BeanShell.]),
2132 AC_ARG_WITH(system-beanshell,
2133 AS_HELP_STRING([--with-system-beanshell],
2134 [Use beanshell already on system.]),,
2135 [with_system_beanshell="$with_system_jars"])
2137 AC_ARG_WITH(beanshell-jar,
2138 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2139 [Specify path to jarfile manually.]),
2142 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2143 AS_HELP_STRING([--disable-scripting-javascript],
2144 [Disable support for scripts in JavaScript.]),
2148 AC_ARG_WITH(system-rhino,
2149 AS_HELP_STRING([--with-system-rhino],
2150 [Use rhino already on system.]),,)
2151 # [with_system_rhino="$with_system_jars"])
2152 # Above is not used as we have different debug interface
2153 # patched into internal rhino. This code needs to be fixed
2154 # before we can enable it by default.
2156 AC_ARG_WITH(rhino-jar,
2157 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2158 [Specify path to jarfile manually.]),
2161 AC_ARG_WITH(commons-logging-jar,
2162 AS_HELP_STRING([--with-commons-logging-jar=JARFILE],
2163 [Specify path to jarfile manually.]),
2164 COMMONS_LOGGING_JAR=$withval)
2166 AC_ARG_WITH(system-jfreereport,
2167 AS_HELP_STRING([--with-system-jfreereport],
2168 [Use JFreeReport already on system.]),,
2169 [with_system_jfreereport="$with_system_jars"])
2171 AC_ARG_WITH(sac-jar,
2172 AS_HELP_STRING([--with-sac-jar=JARFILE],
2173 [Specify path to jarfile manually.]),
2176 AC_ARG_WITH(libxml-jar,
2177 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2178 [Specify path to jarfile manually.]),
2179 LIBXML_JAR=$withval)
2181 AC_ARG_WITH(flute-jar,
2182 AS_HELP_STRING([--with-flute-jar=JARFILE],
2183 [Specify path to jarfile manually.]),
2186 AC_ARG_WITH(jfreereport-jar,
2187 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2188 [Specify path to jarfile manually.]),
2189 JFREEREPORT_JAR=$withval)
2191 AC_ARG_WITH(liblayout-jar,
2192 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2193 [Specify path to jarfile manually.]),
2194 LIBLAYOUT_JAR=$withval)
2196 AC_ARG_WITH(libloader-jar,
2197 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2198 [Specify path to jarfile manually.]),
2199 LIBLOADER_JAR=$withval)
2201 AC_ARG_WITH(libformula-jar,
2202 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2203 [Specify path to jarfile manually.]),
2204 LIBFORMULA_JAR=$withval)
2206 AC_ARG_WITH(librepository-jar,
2207 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2208 [Specify path to jarfile manually.]),
2209 LIBREPOSITORY_JAR=$withval)
2211 AC_ARG_WITH(libfonts-jar,
2212 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2213 [Specify path to jarfile manually.]),
2214 LIBFONTS_JAR=$withval)
2216 AC_ARG_WITH(libserializer-jar,
2217 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2218 [Specify path to jarfile manually.]),
2219 LIBSERIALIZER_JAR=$withval)
2221 AC_ARG_WITH(libbase-jar,
2222 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2223 [Specify path to jarfile manually.]),
2224 LIBBASE_JAR=$withval)
2226 AC_ARG_WITH(system-odbc,
2227 AS_HELP_STRING([--with-system-odbc],
2228 [Use the odbc headers already on system.]),,
2229 [with_system_odbc="auto"])
2231 AC_ARG_WITH(system-sane,
2232 AS_HELP_STRING([--with-system-sane],
2233 [Use sane.h already on system.]),,
2234 [with_system_sane="$with_system_headers"])
2236 AC_ARG_WITH(system-bluez,
2237 AS_HELP_STRING([--with-system-bluez],
2238 [Use bluetooth.h already on system.]),,
2239 [with_system_bluez="$with_system_headers"])
2241 AC_ARG_WITH(system-curl,
2242 AS_HELP_STRING([--with-system-curl],
2243 [Use curl already on system.]),,
2244 [with_system_curl=auto])
2246 AC_ARG_WITH(system-boost,
2247 AS_HELP_STRING([--with-system-boost],
2248 [Use boost already on system.]),,
2249 [with_system_boost="$with_system_headers"])
2251 AC_ARG_WITH(system-glm,
2252 AS_HELP_STRING([--with-system-glm],
2253 [Use glm already on system.]),,
2254 [with_system_glm="$with_system_headers"])
2256 AC_ARG_WITH(system-hunspell,
2257 AS_HELP_STRING([--with-system-hunspell],
2258 [Use libhunspell already on system.]),,
2259 [with_system_hunspell="$with_system_libs"])
2261 libo_FUZZ_ARG_ENABLE(qrcodegen,
2262 AS_HELP_STRING([--disable-qrcodegen],
2263 [Disable use of qrcodegen external library.]))
2265 AC_ARG_WITH(system-qrcodegen,
2266 AS_HELP_STRING([--with-system-qrcodegen],
2267 [Use libqrcodegen already on system.]),,
2268 [with_system_qrcodegen="$with_system_libs"])
2270 AC_ARG_WITH(system-box2d,
2271 AS_HELP_STRING([--with-system-box2d],
2272 [Use box2d already on system.]),,
2273 [with_system_box2d="$with_system_libs"])
2275 AC_ARG_WITH(system-mythes,
2276 AS_HELP_STRING([--with-system-mythes],
2277 [Use mythes already on system.]),,
2278 [with_system_mythes="$with_system_libs"])
2280 AC_ARG_WITH(system-altlinuxhyph,
2281 AS_HELP_STRING([--with-system-altlinuxhyph],
2282 [Use ALTLinuxhyph already on system.]),,
2283 [with_system_altlinuxhyph="$with_system_libs"])
2285 AC_ARG_WITH(system-lpsolve,
2286 AS_HELP_STRING([--with-system-lpsolve],
2287 [Use lpsolve already on system.]),,
2288 [with_system_lpsolve="$with_system_libs"])
2290 AC_ARG_WITH(system-coinmp,
2291 AS_HELP_STRING([--with-system-coinmp],
2292 [Use CoinMP already on system.]),,
2293 [with_system_coinmp="$with_system_libs"])
2295 AC_ARG_WITH(system-liblangtag,
2296 AS_HELP_STRING([--with-system-liblangtag],
2297 [Use liblangtag library already on system.]),,
2298 [with_system_liblangtag="$with_system_libs"])
2301 AS_HELP_STRING([--with-webdav],
2302 [Specify which library to use for webdav implementation.
2303 Possible values: "neon", "serf", "no". The default value is "neon".
2304 Example: --with-webdav="serf"]),
2305 WITH_WEBDAV=$withval,
2308 AC_ARG_WITH(linker-hash-style,
2309 AS_HELP_STRING([--with-linker-hash-style],
2310 [Use linker with --hash-style=<style> when linking shared objects.
2311 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2312 if supported on the build system, and "sysv" otherwise.]))
2314 AC_ARG_WITH(jdk-home,
2315 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2316 [If you have installed JDK 9 or later on your system please supply the
2317 path here. Note that this is not the location of the java command but the
2318 location of the entire distribution. In case of cross-compiling, this
2319 is the JDK of the host os. Use --with-build-platform-configure-options
2320 to point to a different build platform JDK.]),
2324 AS_HELP_STRING([--with-help],
2325 [Enable the build of help. There is a special parameter "common" that
2326 can be used to bundle only the common part, .e.g help-specific icons.
2327 This is useful when you build the helpcontent separately.])
2329 Usage: --with-help build the old local help
2330 --without-help no local help (default)
2331 --with-help=html build the new HTML local help
2332 --with-help=online build the new HTML online help
2336 AC_ARG_WITH(omindex,
2337 AS_HELP_STRING([--with-omindex],
2338 [Enable the support of xapian-omega index for online help.])
2340 Usage: --with-omindex=server prepare the pages for omindex
2341 but let xapian-omega be built in server.
2342 --with-omindex=noxap do not prepare online pages
2347 libo_FUZZ_ARG_WITH(java,
2348 AS_HELP_STRING([--with-java=<java command>],
2349 [Specify the name of the Java interpreter command. Typically "java"
2350 which is the default.
2352 To build without support for Java components, applets, accessibility
2353 or the XML filters written in Java, use --without-java or --with-java=no.]),
2354 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2355 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2358 AC_ARG_WITH(jvm-path,
2359 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2360 [Use a specific JVM search path at runtime.
2361 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2364 AC_ARG_WITH(ant-home,
2365 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2366 [If you have installed Apache Ant on your system, please supply the path here.
2367 Note that this is not the location of the Ant binary but the location
2368 of the entire distribution.]),
2371 AC_ARG_WITH(symbol-config,
2372 AS_HELP_STRING([--with-symbol-config],
2373 [Configuration for the crashreport symbol upload]),
2375 [with_symbol_config=no])
2377 AC_ARG_WITH(export-validation,
2378 AS_HELP_STRING([--without-export-validation],
2379 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2380 ,with_export_validation=auto)
2382 AC_ARG_WITH(bffvalidator,
2383 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2384 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2385 Requires installed Microsoft Office Binary File Format Validator.
2386 Note: export-validation (--with-export-validation) is required to be turned on.
2387 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2388 ,with_bffvalidator=no)
2390 libo_FUZZ_ARG_WITH(junit,
2391 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2392 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2393 --without-junit disables those tests. Not relevant in the --without-java case.]),
2396 AC_ARG_WITH(hamcrest,
2397 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2398 [Specifies the hamcrest jar file to use for JUnit-based tests.
2399 --without-junit disables those tests. Not relevant in the --without-java case.]),
2402 AC_ARG_WITH(perl-home,
2403 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2404 [If you have installed Perl 5 Distribution, on your system, please
2405 supply the path here. Note that this is not the location of the Perl
2406 binary but the location of the entire distribution.]),
2409 libo_FUZZ_ARG_WITH(doxygen,
2411 [--with-doxygen=<absolute path to doxygen executable>],
2412 [Specifies the doxygen executable to use when generating ODK C/C++
2413 documentation. --without-doxygen disables generation of ODK C/C++
2414 documentation. Not relevant in the --disable-odk case.]),
2417 AC_ARG_WITH(visual-studio,
2418 AS_HELP_STRING([--with-visual-studio=<2019>],
2419 [Specify which Visual Studio version to use in case several are
2420 installed. Currently only 2019 (default) is supported.]),
2423 AC_ARG_WITH(windows-sdk,
2424 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2425 [Specify which Windows SDK, or "Windows Kit", version to use
2426 in case the one that came with the selected Visual Studio
2427 is not what you want for some reason. Note that not all compiler/SDK
2428 combinations are supported. The intent is that this option should not
2433 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2434 [Use this option to build LibreOffice with additional UI language support.
2435 English (US) is always included by default.
2436 Separate multiple languages with space.
2437 For all languages, use --with-lang=ALL.]),
2440 AC_ARG_WITH(locales,
2441 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2442 [Use this option to limit the locale information built in.
2443 Separate multiple locales with space.
2444 Very experimental and might well break stuff.
2445 Just a desperate measure to shrink code and data size.
2446 By default all the locales available is included.
2447 This option is completely unrelated to --with-lang.])
2449 Affects also our character encoding conversion
2450 tables for encodings mainly targeted for a
2451 particular locale, like EUC-CN and EUC-TW for
2452 zh, ISO-2022-JP for ja.
2454 Affects also our add-on break iterator data for
2457 For the default, all locales, don't use this switch at all.
2458 Specifying just the language part of a locale means all matching
2459 locales will be included.
2463 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2464 libo_FUZZ_ARG_WITH(krb5,
2465 AS_HELP_STRING([--with-krb5],
2466 [Enable MIT Kerberos 5 support in modules that support it.
2467 By default automatically enabled on platforms
2468 where a good system Kerberos 5 is available.]),
2471 libo_FUZZ_ARG_WITH(gssapi,
2472 AS_HELP_STRING([--with-gssapi],
2473 [Enable GSSAPI support in modules that support it.
2474 By default automatically enabled on platforms
2475 where a good system GSSAPI is available.]),
2479 AS_HELP_STRING([--with-iwyu],
2480 [Use given IWYU binary path to check unneeded includes instead of building.
2481 Use only if you are hacking on it.]),
2484 libo_FUZZ_ARG_WITH(lxml,
2485 AS_HELP_STRING([--without-lxml],
2486 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2487 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2488 report widget classes and ids.]),
2491 libo_FUZZ_ARG_WITH(latest-c++,
2492 AS_HELP_STRING([--with-latest-c++],
2493 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2494 published standard.]),,
2495 [with_latest_c__=no])
2497 dnl ===================================================================
2499 dnl ===================================================================
2501 AC_ARG_WITH(branding,
2502 AS_HELP_STRING([--with-branding=/path/to/images],
2503 [Use given path to retrieve branding images set.])
2505 Search for intro.png about.svg and logo.svg.
2506 If any is missing, default ones will be used instead.
2508 Search also progress.conf for progress
2509 settings on intro screen :
2511 PROGRESSBARCOLOR="255,255,255" Set color of
2512 progress bar. Comma separated RGB decimal values.
2513 PROGRESSSIZE="407,6" Set size of progress bar.
2514 Comma separated decimal values (width, height).
2515 PROGRESSPOSITION="61,317" Set position of progress
2516 bar from left,top. Comma separated decimal values.
2517 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2518 bar frame. Comma separated RGB decimal values.
2519 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2520 bar text. Comma separated RGB decimal values.
2521 PROGRESSTEXTBASELINE="287" Set vertical position of
2522 progress bar text from top. Decimal value.
2524 Default values will be used if not found.
2529 AC_ARG_WITH(extra-buildid,
2530 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2531 [Show addition build identification in about dialog.]),
2536 AS_HELP_STRING([--with-vendor="John the Builder"],
2537 [Set vendor of the build.]),
2540 AC_ARG_WITH(android-package-name,
2541 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2542 [Set Android package name of the build.]),
2545 AC_ARG_WITH(compat-oowrappers,
2546 AS_HELP_STRING([--with-compat-oowrappers],
2547 [Install oo* wrappers in parallel with
2548 lo* ones to keep backward compatibility.
2549 Has effect only with make distro-pack-install]),
2552 AC_ARG_WITH(os-version,
2553 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2554 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2557 AC_ARG_WITH(mingw-cross-compiler,
2558 AS_HELP_STRING([--with-mingw-cross-compiler=<mingw32-g++ command>],
2559 [Specify the MinGW cross-compiler to use.
2560 When building on the ODK on Unix and building unowinreg.dll,
2561 specify the MinGW C++ cross-compiler.]),
2564 AC_ARG_WITH(idlc-cpp,
2565 AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2566 [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2569 AC_ARG_WITH(parallelism,
2570 AS_HELP_STRING([--with-parallelism],
2571 [Number of jobs to run simultaneously during build. Parallel builds can
2572 save a lot of time on multi-cpu machines. Defaults to the number of
2573 CPUs on the machine, unless you configure --enable-icecream - then to
2577 AC_ARG_WITH(all-tarballs,
2578 AS_HELP_STRING([--with-all-tarballs],
2579 [Download all external tarballs unconditionally]))
2581 AC_ARG_WITH(gdrive-client-id,
2582 AS_HELP_STRING([--with-gdrive-client-id],
2583 [Provides the client id of the application for OAuth2 authentication
2584 on Google Drive. If either this or --with-gdrive-client-secret is
2585 empty, the feature will be disabled]),
2588 AC_ARG_WITH(gdrive-client-secret,
2589 AS_HELP_STRING([--with-gdrive-client-secret],
2590 [Provides the client secret of the application for OAuth2
2591 authentication on Google Drive. If either this or
2592 --with-gdrive-client-id is empty, the feature will be disabled]),
2595 AC_ARG_WITH(alfresco-cloud-client-id,
2596 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2597 [Provides the client id of the application for OAuth2 authentication
2598 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2599 empty, the feature will be disabled]),
2602 AC_ARG_WITH(alfresco-cloud-client-secret,
2603 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2604 [Provides the client secret of the application for OAuth2
2605 authentication on Alfresco Cloud. If either this or
2606 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2609 AC_ARG_WITH(onedrive-client-id,
2610 AS_HELP_STRING([--with-onedrive-client-id],
2611 [Provides the client id of the application for OAuth2 authentication
2612 on OneDrive. If either this or --with-onedrive-client-secret is
2613 empty, the feature will be disabled]),
2616 AC_ARG_WITH(onedrive-client-secret,
2617 AS_HELP_STRING([--with-onedrive-client-secret],
2618 [Provides the client secret of the application for OAuth2
2619 authentication on OneDrive. If either this or
2620 --with-onedrive-client-id is empty, the feature will be disabled]),
2622 dnl ===================================================================
2623 dnl Do we want to use pre-build binary tarball for recompile
2624 dnl ===================================================================
2626 if test "$enable_library_bin_tar" = "yes" ; then
2627 USE_LIBRARY_BIN_TAR=TRUE
2629 USE_LIBRARY_BIN_TAR=
2631 AC_SUBST(USE_LIBRARY_BIN_TAR)
2633 dnl ===================================================================
2634 dnl Test whether build target is Release Build
2635 dnl ===================================================================
2636 AC_MSG_CHECKING([whether build target is Release Build])
2637 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2639 ENABLE_RELEASE_BUILD=
2640 GET_TASK_ALLOW_ENTITLEMENT='
2641 <!-- We want to be able to debug a hardened process when not building for release -->
2642 <key>com.apple.security.get-task-allow</key>
2645 AC_MSG_RESULT([yes])
2646 ENABLE_RELEASE_BUILD=TRUE
2647 GET_TASK_ALLOW_ENTITLEMENT=''
2649 AC_SUBST(ENABLE_RELEASE_BUILD)
2650 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2652 AC_MSG_CHECKING([whether to build a Community flavor])
2653 if test -z "$enable_community_flavor" -o "$enable_community_flavor" == "yes"; then
2654 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2655 AC_MSG_RESULT([yes])
2660 dnl ===================================================================
2661 dnl Test whether to sign Windows Build
2662 dnl ===================================================================
2663 AC_MSG_CHECKING([whether to sign windows build])
2664 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2665 AC_MSG_RESULT([yes])
2666 WINDOWS_BUILD_SIGNING="TRUE"
2669 WINDOWS_BUILD_SIGNING="FALSE"
2671 AC_SUBST(WINDOWS_BUILD_SIGNING)
2673 dnl ===================================================================
2674 dnl MacOSX build and runtime environment options
2675 dnl ===================================================================
2677 AC_ARG_WITH(macosx-sdk,
2678 AS_HELP_STRING([--with-macosx-sdk=<version>],
2679 [Prefer a specific SDK for building.])
2681 If the requested SDK is not available, a search for the oldest one will be done.
2682 With current Xcode versions, only the latest SDK is included, so this option is
2683 not terribly useful. It works fine to build with a new SDK and run the result
2686 e. g.: --with-macosx-sdk=10.10
2688 there are 3 options to control the MacOSX build:
2689 --with-macosx-sdk (referred as 'sdk' below)
2690 --with-macosx-version-min-required (referred as 'min' below)
2691 --with-macosx-version-max-allowed (referred as 'max' below)
2693 the connection between these value and the default they take is as follow:
2694 ( ? means not specified on the command line, s means the SDK version found,
2695 constraint: 8 <= x <= y <= z)
2697 ==========================================
2698 command line || config result
2699 ==========================================
2700 min | max | sdk || min | max | sdk |
2701 ? | ? | ? || 10.10 | 10.s | 10.s |
2702 ? | ? | 10.x || 10.10 | 10.x | 10.x |
2703 ? | 10.x | ? || 10.10 | 10.s | 10.s |
2704 ? | 10.x | 10.y || 10.10 | 10.x | 10.y |
2705 10.x | ? | ? || 10.x | 10.s | 10.s |
2706 10.x | ? | 10.y || 10.x | 10.y | 10.y |
2707 10.x | 10.y | ? || 10.x | 10.y | 10.y |
2708 10.x | 10.y | 10.z || 10.x | 10.y | 10.z |
2711 see: http://developer.apple.com/library/mac/#technotes/tn2064/_index.html
2712 for a detailed technical explanation of these variables
2714 Note: MACOSX_DEPLOYMENT_TARGET will be set to the value of 'min'.
2718 AC_ARG_WITH(macosx-version-min-required,
2719 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2720 [set the minimum OS version needed to run the built LibreOffice])
2722 e. g.: --with-macosx-version-min-required=10.10
2723 see --with-macosx-sdk for more info
2727 AC_ARG_WITH(macosx-version-max-allowed,
2728 AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2729 [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2731 e. g.: --with-macosx-version-max-allowed=10.10
2732 see --with-macosx-sdk for more info
2737 dnl ===================================================================
2738 dnl options for stuff used during cross-compilation build
2739 dnl Not quite superseded by --with-build-platform-configure-options.
2740 dnl TODO: check, if the "force" option is still needed anywhere.
2741 dnl ===================================================================
2743 AC_ARG_WITH(system-icu-for-build,
2744 AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2745 [Use icu already on system for build tools (cross-compilation only).]))
2748 dnl ===================================================================
2749 dnl Check for incompatible options set by fuzzing, and reset those
2750 dnl automatically to working combinations
2751 dnl ===================================================================
2753 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2754 "$enable_dbus" != "$enable_avahi"; then
2755 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2756 enable_avahi=$enable_dbus
2761 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2762 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2766 add_lopath_before ()
2771 for dir in $LO_PATH ; do
2772 if test "$dir" != "$1" ; then
2773 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2776 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2779 dnl ===================================================================
2780 dnl check for required programs (grep, awk, sed, bash)
2781 dnl ===================================================================
2786 if test -n "$1"; then
2787 if test "$build_os" = "cygwin"; then
2788 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2790 new_path=`cygpath -sm "$formatted_path"`
2793 new_path=`cygpath -u "$formatted_path"`
2798 if test "$2" = "after"; then
2799 add_lopath_after "$new_path"
2801 add_lopath_before "$new_path"
2807 AC_PATH_PROG( AWK, $AWK)
2808 if test -z "$AWK"; then
2809 AC_MSG_ERROR([install awk to run this script])
2812 AC_PATH_PROG(BASH, bash)
2813 if test -z "$BASH"; then
2814 AC_MSG_ERROR([bash not found in \$PATH])
2818 AC_MSG_CHECKING([for GNU or BSD tar])
2819 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2820 $a --version 2> /dev/null | egrep "GNU|bsdtar" 2>&1 > /dev/null
2821 if test $? -eq 0; then
2826 AC_MSG_RESULT($GNUTAR)
2827 if test -z "$GNUTAR"; then
2828 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2832 AC_MSG_CHECKING([for tar's option to strip components])
2833 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2834 if test $? -eq 0; then
2835 STRIP_COMPONENTS="--strip-components"
2837 $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2838 if test $? -eq 0; then
2839 STRIP_COMPONENTS="--strip-path"
2841 STRIP_COMPONENTS="unsupported"
2844 AC_MSG_RESULT($STRIP_COMPONENTS)
2845 if test x$STRIP_COMPONENTS = xunsupported; then
2846 AC_MSG_ERROR([you need a tar that is able to strip components.])
2848 AC_SUBST(STRIP_COMPONENTS)
2850 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2851 dnl desktop OSes from "mobile" ones.
2853 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2854 dnl In other words, that when building for an OS that is not a
2855 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2857 dnl Note the direction of the implication; there is no assumption that
2858 dnl cross-compiling would imply a non-desktop OS.
2860 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
2861 BUILD_TYPE="$BUILD_TYPE DESKTOP"
2862 AC_DEFINE(HAVE_FEATURE_DESKTOP)
2863 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2866 # Whether to build "avmedia" functionality or not.
2868 if test -z "$enable_avmedia"; then
2872 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2873 if test "$enable_avmedia" = yes; then
2874 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2876 USE_AVMEDIA_DUMMY='TRUE'
2878 AC_SUBST(USE_AVMEDIA_DUMMY)
2880 # Decide whether to build database connectivity stuff (including
2881 # Base) or not. We probably don't want to on non-desktop OSes.
2882 if test -z "$enable_database_connectivity"; then
2883 # --disable-database-connectivity is unfinished work in progress
2884 # and the iOS test app doesn't link if we actually try to use it.
2885 # if test $_os != iOS -a $_os != Android; then
2886 if test $_os != iOS; then
2887 enable_database_connectivity=yes
2891 if test "$enable_database_connectivity" = yes; then
2892 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2893 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2896 if test -z "$enable_extensions"; then
2897 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
2898 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
2899 enable_extensions=yes
2903 if test "$enable_extensions" = yes; then
2904 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2905 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2908 if test -z "$enable_scripting"; then
2909 # Disable scripting for iOS unless specifically overridden
2910 # with --enable-scripting.
2911 if test $_os != iOS; then
2912 enable_scripting=yes
2916 DISABLE_SCRIPTING=''
2917 if test "$enable_scripting" = yes; then
2918 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2919 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2921 DISABLE_SCRIPTING='TRUE'
2922 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2925 if test $_os = iOS -o $_os = Android; then
2926 # Disable dynamic_loading always for iOS and Android
2927 enable_dynamic_loading=no
2928 elif test -z "$enable_dynamic_loading"; then
2929 # Otherwise enable it unless specifically disabled
2930 enable_dynamic_loading=yes
2933 DISABLE_DYNLOADING=''
2934 if test "$enable_dynamic_loading" = yes; then
2935 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
2937 DISABLE_DYNLOADING='TRUE'
2939 AC_SUBST(DISABLE_DYNLOADING)
2941 # remember SYSBASE value
2944 dnl ===================================================================
2945 dnl Sort out various gallery compilation options
2946 dnl ===================================================================
2947 AC_MSG_CHECKING([how to build and package galleries])
2948 if test -n "${with_galleries}"; then
2949 if test "$with_galleries" = "build"; then
2950 WITH_GALLERY_BUILD=TRUE
2951 AC_MSG_RESULT([build from source images internally])
2952 elif test "$with_galleries" = "no"; then
2954 AC_MSG_RESULT([disable non-internal gallery build])
2956 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
2959 if test $_os != iOS -a $_os != Android; then
2960 WITH_GALLERY_BUILD=TRUE
2961 AC_MSG_RESULT([internal src images for desktop])
2964 AC_MSG_RESULT([disable src image build])
2967 AC_SUBST(WITH_GALLERY_BUILD)
2969 dnl ===================================================================
2970 dnl Checks if ccache is available
2971 dnl ===================================================================
2973 if test "$_os" = "WINNT"; then
2974 # on windows/VC build do not use ccache
2976 elif test "$enable_ccache" = "no"; then
2978 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
2979 case "%$CC%$CXX%" in
2980 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
2981 # assume that's good then
2982 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
2983 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
2984 CCACHE_DEPEND_MODE=1
2987 AC_PATH_PROG([CCACHE],[ccache],[not found])
2988 if test "$CCACHE" = "not found"; then
2991 CCACHE_DEPEND_MODE=1
2992 # Need to check for ccache version: otherwise prevents
2993 # caching of the results (like "-x objective-c++" for Mac)
2994 if test $_os = Darwin -o $_os = iOS; then
2995 # Check ccache version
2996 AC_MSG_CHECKING([whether version of ccache is suitable])
2997 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
2998 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
2999 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3000 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3002 AC_MSG_RESULT([no, $CCACHE_VERSION])
3013 if test "$enable_ccache" = "nodepend"; then
3014 CCACHE_DEPEND_MODE=""
3016 AC_SUBST(CCACHE_DEPEND_MODE)
3018 if test "$CCACHE" != ""; then
3019 ccache_size_msg=$([ccache -s | tail -n 1 | sed 's/^[^0-9]*//' | sed -e 's/\.[0-9]*//'])
3020 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3021 if test "$ccache_size" = ""; then
3022 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3023 if test "$ccache_size" = ""; then
3026 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3027 if test $ccache_size -lt 1024; then
3029 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3030 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3032 # warn that ccache may be too small for debug build
3033 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3034 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3037 if test $ccache_size -lt 5; then
3038 #warn that ccache may be too small for debug build
3039 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3040 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3045 dnl ===================================================================
3046 dnl Checks for C compiler,
3047 dnl The check for the C++ compiler is later on.
3048 dnl ===================================================================
3049 if test "$_os" != "WINNT"; then
3051 AC_MSG_CHECKING([gcc home])
3052 if test -z "$with_gcc_home"; then
3053 if test "$enable_icecream" = "yes"; then
3054 if test -d "/usr/lib/icecc/bin"; then
3055 GCC_HOME="/usr/lib/icecc/"
3056 elif test -d "/usr/libexec/icecc/bin"; then
3057 GCC_HOME="/usr/libexec/icecc/"
3058 elif test -d "/opt/icecream/bin"; then
3059 GCC_HOME="/opt/icecream/"
3061 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3065 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3066 GCC_HOME_SET="false"
3069 GCC_HOME="$with_gcc_home"
3071 AC_MSG_RESULT($GCC_HOME)
3074 if test "$GCC_HOME_SET" = "true"; then
3075 if test -z "$CC"; then
3076 CC="$GCC_HOME/bin/gcc"
3079 if test -z "$CXX"; then
3080 CXX="$GCC_HOME/bin/g++"
3086 COMPATH=`dirname "$CC"`
3087 if test "$COMPATH" = "."; then
3088 AC_PATH_PROGS(COMPATH, $CC)
3089 dnl double square bracket to get single because of M4 quote...
3090 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3092 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3094 dnl ===================================================================
3096 dnl ===================================================================
3097 AC_MSG_CHECKING([whether to build with Java support])
3098 if test "$with_java" != "no"; then
3099 if test "$DISABLE_SCRIPTING" = TRUE; then
3100 AC_MSG_RESULT([no, overridden by --disable-scripting])
3104 AC_MSG_RESULT([yes])
3106 AC_DEFINE(HAVE_FEATURE_JAVA)
3113 AC_SUBST(ENABLE_JAVA)
3115 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3117 dnl ENABLE_JAVA="" indicate no Java support at all
3119 dnl ===================================================================
3120 dnl Check macOS SDK and compiler
3121 dnl ===================================================================
3123 if test $_os = Darwin; then
3125 # If no --with-macosx-sdk option is given, look for one
3127 # The intent is that for "most" Mac-based developers, a suitable
3128 # SDK will be found automatically without any configure options.
3130 # For developers with a current Xcode, the lowest-numbered SDK
3131 # higher than or equal to the minimum required should be found.
3133 AC_MSG_CHECKING([what macOS SDK to use])
3134 for _macosx_sdk in ${with_macosx_sdk-11.3 11.1 11.0 10.15 10.14 10.13}; do
3135 MACOSX_SDK_PATH=`xcrun --sdk macosx${_macosx_sdk} --show-sdk-path 2> /dev/null`
3136 if test -d "$MACOSX_SDK_PATH"; then
3137 with_macosx_sdk="${_macosx_sdk}"
3140 MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${_macosx_sdk}.sdk"
3141 if test -d "$MACOSX_SDK_PATH"; then
3142 with_macosx_sdk="${_macosx_sdk}"
3147 if test ! -d "$MACOSX_SDK_PATH"; then
3148 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3151 AC_MSG_RESULT([SDK $with_macosx_sdk at $MACOSX_SDK_PATH])
3153 case $with_macosx_sdk in
3155 MACOSX_SDK_VERSION=101300
3158 MACOSX_SDK_VERSION=101400
3161 MACOSX_SDK_VERSION=101500
3164 MACOSX_SDK_VERSION=110000
3167 MACOSX_SDK_VERSION=110100
3170 MACOSX_SDK_VERSION=110300
3173 AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value, supported values are 10.13--11.3])
3177 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3178 AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value for Apple Silicon])
3181 if test "$with_macosx_version_min_required" = "" ; then
3182 if test "$host_cpu" = x86_64; then
3183 with_macosx_version_min_required="10.10";
3185 with_macosx_version_min_required="11.0";
3189 if test "$with_macosx_version_max_allowed" = "" ; then
3190 with_macosx_version_max_allowed="$with_macosx_sdk"
3193 # export this so that "xcrun" invocations later return matching values
3194 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3195 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3196 export DEVELOPER_DIR
3197 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3198 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3200 AC_MSG_CHECKING([whether Xcode is new enough])
3201 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3202 my_xcode_ver2=${my_xcode_ver1#Xcode }
3203 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3204 if test "$my_xcode_ver3" -ge 1103; then
3205 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3207 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 11.3])
3210 case "$with_macosx_version_min_required" in
3212 MAC_OS_X_VERSION_MIN_REQUIRED="101000"
3215 MAC_OS_X_VERSION_MIN_REQUIRED="101100"
3218 MAC_OS_X_VERSION_MIN_REQUIRED="101200"
3221 MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3224 MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3227 MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3230 MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3233 MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3236 MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3239 MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3242 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.10--11.3])
3246 LIBTOOL=/usr/bin/libtool
3247 INSTALL_NAME_TOOL=install_name_tool
3248 if test -z "$save_CC"; then
3249 stdlib=-stdlib=libc++
3251 AC_MSG_CHECKING([what C compiler to use])
3252 CC="`xcrun -find clang`"
3253 CC_BASE=`first_arg_basename "$CC"`
3254 if test "$host_cpu" = x86_64; then
3255 CC+=" -target x86_64-apple-macos"
3257 CC+=" -target arm64-apple-macos"
3259 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3260 AC_MSG_RESULT([$CC])
3262 AC_MSG_CHECKING([what C++ compiler to use])
3263 CXX="`xcrun -find clang++`"
3264 CXX_BASE=`first_arg_basename "$CXX"`
3265 if test "$host_cpu" = x86_64; then
3266 CXX+=" -target x86_64-apple-macos"
3268 CXX+=" -target arm64-apple-macos"
3270 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3271 AC_MSG_RESULT([$CXX])
3273 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3276 STRIP=`xcrun -find strip`
3277 LIBTOOL=`xcrun -find libtool`
3278 RANLIB=`xcrun -find ranlib`
3281 case "$with_macosx_version_max_allowed" in
3283 MAC_OS_X_VERSION_MAX_ALLOWED="101000"
3286 MAC_OS_X_VERSION_MAX_ALLOWED="101100"
3289 MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3292 MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3295 MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3298 MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3301 MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3304 MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3307 MAC_OS_X_VERSION_MAX_ALLOWED="110300"
3310 AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.10--11.3])
3314 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3315 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3316 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])
3321 AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3322 if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3323 AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3327 AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3328 AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3330 AC_MSG_CHECKING([whether to do code signing])
3332 if test "$enable_macosx_code_signing" = yes; then
3333 # By default use the first suitable certificate (?).
3335 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3336 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3337 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3338 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3339 # "Developer ID Application" one.
3341 identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3342 if test -n "$identity"; then
3343 MACOSX_CODESIGNING_IDENTITY=$identity
3344 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3345 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3347 AC_MSG_ERROR([cannot determine identity to use])
3349 elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3350 MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3351 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3352 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3357 AC_MSG_CHECKING([whether to create a Mac App Store package])
3359 if test -n "$enable_macosx_package_signing" -a -z "$MACOSX_CODESIGNING_IDENTITY"; then
3360 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3361 elif test "$enable_macosx_package_signing" = yes; then
3362 # By default use the first suitable certificate.
3363 # It should be a "3rd Party Mac Developer Installer" one
3365 identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3366 if test -n "$identity"; then
3367 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3368 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3369 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3371 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3373 elif test -n "$enable_macosx_package_signing"; then
3374 MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3375 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3376 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3381 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3382 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3385 AC_MSG_CHECKING([whether to sandbox the application])
3387 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3388 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3389 elif test "$enable_macosx_sandbox" = yes; then
3390 ENABLE_MACOSX_SANDBOX=TRUE
3391 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3392 AC_MSG_RESULT([yes])
3397 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3398 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3399 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3401 AC_SUBST(MACOSX_SDK_PATH)
3402 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3403 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3404 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3405 AC_SUBST(INSTALL_NAME_TOOL)
3406 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3407 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3408 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3409 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3410 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3412 dnl ===================================================================
3413 dnl Check iOS SDK and compiler
3414 dnl ===================================================================
3416 if test $_os = iOS; then
3417 AC_MSG_CHECKING([what iOS SDK to use])
3418 current_sdk_ver=14.5
3419 older_sdk_vers="14.4 14.3 14.2 14.1 14.0 13.7"
3420 if test "$enable_ios_simulator" = "yes"; then
3421 platform=iPhoneSimulator
3422 versionmin=-mios-simulator-version-min=12.2
3425 versionmin=-miphoneos-version-min=12.2
3427 xcode_developer=`xcode-select -print-path`
3429 for sdkver in $current_sdk_ver $older_sdk_vers; do
3430 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3437 if test -z "$sysroot"; then
3438 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3441 AC_MSG_RESULT($sysroot)
3443 stdlib="-stdlib=libc++"
3445 AC_MSG_CHECKING([what C compiler to use])
3446 CC="`xcrun -find clang`"
3447 CC_BASE=`first_arg_basename "$CC"`
3448 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3449 AC_MSG_RESULT([$CC])
3451 AC_MSG_CHECKING([what C++ compiler to use])
3452 CXX="`xcrun -find clang++`"
3453 CXX_BASE=`first_arg_basename "$CXX"`
3454 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3455 AC_MSG_RESULT([$CXX])
3457 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3460 STRIP=`xcrun -find strip`
3461 LIBTOOL=`xcrun -find libtool`
3462 RANLIB=`xcrun -find ranlib`
3465 AC_MSG_CHECKING([whether to treat the installation as read-only])
3467 if test $_os = Darwin; then
3468 enable_readonly_installset=yes
3469 elif test "$enable_extensions" != yes; then
3470 enable_readonly_installset=yes
3472 if test "$enable_readonly_installset" = yes; then
3473 AC_MSG_RESULT([yes])
3474 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3479 dnl ===================================================================
3480 dnl Structure of install set
3481 dnl ===================================================================
3483 if test $_os = Darwin; then
3484 LIBO_BIN_FOLDER=MacOS
3485 LIBO_ETC_FOLDER=Resources
3486 LIBO_LIBEXEC_FOLDER=MacOS
3487 LIBO_LIB_FOLDER=Frameworks
3488 LIBO_LIB_PYUNO_FOLDER=Resources
3489 LIBO_SHARE_FOLDER=Resources
3490 LIBO_SHARE_HELP_FOLDER=Resources/help
3491 LIBO_SHARE_JAVA_FOLDER=Resources/java
3492 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3493 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3494 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3495 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3496 LIBO_URE_BIN_FOLDER=MacOS
3497 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3498 LIBO_URE_LIB_FOLDER=Frameworks
3499 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3500 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3501 elif test $_os = WINNT; then
3502 LIBO_BIN_FOLDER=program
3503 LIBO_ETC_FOLDER=program
3504 LIBO_LIBEXEC_FOLDER=program
3505 LIBO_LIB_FOLDER=program
3506 LIBO_LIB_PYUNO_FOLDER=program
3507 LIBO_SHARE_FOLDER=share
3508 LIBO_SHARE_HELP_FOLDER=help
3509 LIBO_SHARE_JAVA_FOLDER=program/classes
3510 LIBO_SHARE_PRESETS_FOLDER=presets
3511 LIBO_SHARE_READMES_FOLDER=readmes
3512 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3513 LIBO_SHARE_SHELL_FOLDER=program/shell
3514 LIBO_URE_BIN_FOLDER=program
3515 LIBO_URE_ETC_FOLDER=program
3516 LIBO_URE_LIB_FOLDER=program
3517 LIBO_URE_MISC_FOLDER=program
3518 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3520 LIBO_BIN_FOLDER=program
3521 LIBO_ETC_FOLDER=program
3522 LIBO_LIBEXEC_FOLDER=program
3523 LIBO_LIB_FOLDER=program
3524 LIBO_LIB_PYUNO_FOLDER=program
3525 LIBO_SHARE_FOLDER=share
3526 LIBO_SHARE_HELP_FOLDER=help
3527 LIBO_SHARE_JAVA_FOLDER=program/classes
3528 LIBO_SHARE_PRESETS_FOLDER=presets
3529 LIBO_SHARE_READMES_FOLDER=readmes
3530 if test "$enable_fuzzers" != yes; then
3531 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3533 LIBO_SHARE_RESOURCE_FOLDER=resource
3535 LIBO_SHARE_SHELL_FOLDER=program/shell
3536 LIBO_URE_BIN_FOLDER=program
3537 LIBO_URE_ETC_FOLDER=program
3538 LIBO_URE_LIB_FOLDER=program
3539 LIBO_URE_MISC_FOLDER=program
3540 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3542 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3543 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3544 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3545 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3546 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3547 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3548 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3549 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3550 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3551 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3552 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3553 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3554 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3555 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3556 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3557 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3559 # Not all of them needed in config_host.mk, add more if need arises
3560 AC_SUBST(LIBO_BIN_FOLDER)
3561 AC_SUBST(LIBO_ETC_FOLDER)
3562 AC_SUBST(LIBO_LIB_FOLDER)
3563 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3564 AC_SUBST(LIBO_SHARE_FOLDER)
3565 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3566 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3567 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3568 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3569 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3570 AC_SUBST(LIBO_URE_BIN_FOLDER)
3571 AC_SUBST(LIBO_URE_ETC_FOLDER)
3572 AC_SUBST(LIBO_URE_LIB_FOLDER)
3573 AC_SUBST(LIBO_URE_MISC_FOLDER)
3574 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3576 dnl ===================================================================
3577 dnl Windows specific tests and stuff
3578 dnl ===================================================================
3582 # Return value: $regvalue
3585 if test "$build_os" = "wsl"; then
3586 regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3590 local _regentry="/proc/registry${1}/${2}"
3591 if test -f "$_regentry"; then
3592 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3593 # Registry keys read via /proc/registry* are always \0 terminated!
3594 local _regvalue=$(tr -d '\0' < "$_regentry")
3595 if test $? -eq 0; then
3601 # Get a value from the 32-bit side of the Registry
3604 reg_get_value "32" "$1"
3607 # Get a value from the 64-bit side of the Registry
3610 reg_get_value "64" "$1"
3619 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3628 PLATFORMID=windows_x86_64
3630 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3632 WIN_MULTI_ARCH="x86"
3638 PLATFORMID=windows_x86
3641 WIN_OTHER_ARCH="x64"
3646 PLATFORMID=windows_arm64
3648 SCPDEFS="$SCPDEFS -DWINDOWS_ARM64"
3649 WIN_HOST_ARCH="arm64"
3654 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3658 case "$build_cpu" in
3659 x86_64) WIN_BUILD_ARCH="x64" ;;
3660 i*86) WIN_BUILD_ARCH="x86" ;;
3661 aarch64) WIN_BUILD_ARCH="arm64" ;;
3663 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3667 SCPDEFS="$SCPDEFS -D_MSC_VER"
3671 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3672 # other-arch won't, but wouldn't break the build (x64 on x86).
3673 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3674 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3678 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3679 # To allow building Windows multi-arch releases without cross-tooling
3680 if test -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH"; then
3681 cross_compiling="yes"
3684 if test "$cross_compiling" = "yes"; then
3685 export CROSS_COMPILING=TRUE
3688 BUILD_TYPE="$BUILD_TYPE NATIVE"
3690 AC_SUBST(CROSS_COMPILING)
3692 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3693 # NOTE: must _not_ be used for bundled external libraries!
3695 if test "$GCC" = "yes"; then
3696 AC_MSG_CHECKING( for -isystem )
3698 CFLAGS="$CFLAGS -Werror"
3699 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3701 if test -n "$ISYSTEM"; then
3707 if test -z "$ISYSTEM"; then
3708 # fall back to using -I
3713 dnl ===================================================================
3714 dnl Check which Visual Studio compiler is used
3715 dnl ===================================================================
3717 map_vs_year_to_version()
3719 # Return value: $vsversion
3727 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3731 vs_versions_to_check()
3733 # Args: $1 (optional) : versions to check, in the order of preference
3734 # Return value: $vsversions
3738 if test -n "$1"; then
3739 map_vs_year_to_version "$1"
3740 vsversions=$vsversion
3742 # We accept only 2019
3747 win_get_env_from_vsvars32bat()
3749 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3750 # Also seems to be located in another directory under the same name: vsvars32.bat
3751 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3752 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3753 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3754 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3756 if test "$build_os" = "wsl"; then
3757 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3759 chmod +x $WRAPPERBATCHFILEPATH
3760 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3762 rm -f $WRAPPERBATCHFILEPATH
3763 printf '%s' "$result"
3768 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3769 if test -n "$regvalue"; then
3770 PathFormat "$regvalue"
3771 UCRTSDKDIR=$formatted_path_unix
3772 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3773 UCRTVERSION=$regvalue
3775 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3779 if test -z "$UCRTSDKDIR"; then
3780 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3781 ide_env_file="${ide_env_dir}VsDevCmd.bat"
3782 if test -f "$ide_env_file"; then
3783 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3784 UCRTSDKDIR=$formatted_path
3785 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3786 dnl Hack needed at least by tml:
3787 if test "$UCRTVERSION" = 10.0.15063.0 \
3788 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3789 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3791 UCRTVERSION=10.0.14393.0
3794 AC_MSG_ERROR([No UCRT found])
3801 # Find Visual C++ 2019
3802 # Args: $1 (optional) : The VS version year
3803 # Return values: $vctest, $vcyear, $vcnum, $vcnumwithdot, $vcbuildnumber
3805 unset vctest vcnum vcnumwithdot vcbuildnumber
3807 vs_versions_to_check "$1"
3808 if test "$build_os" = wsl; then
3809 vswhere="$PROGRAMFILESX86"
3811 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3813 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3814 PathFormat "$vswhere"
3815 vswhere=$formatted_path_unix
3816 for ver in $vsversions; do
3817 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3818 # Fall back to all MS products (this includes VC++ Build Tools)
3819 if ! test -n "$vswhereoutput"; then
3820 AC_MSG_CHECKING([VC++ Build Tools and similar])
3821 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3823 if test -n "$vswhereoutput"; then
3824 PathFormat "$vswhereoutput"
3825 vctest=$formatted_path_unix
3830 if test -n "$vctest"; then
3831 vcnumwithdot="$ver.0"
3832 case "$vcnumwithdot" in
3838 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3845 AC_MSG_CHECKING([$1 compiler])
3847 CL_EXE_PATH="$2/cl.exe"
3849 if test ! -f "$CL_EXE_PATH"; then
3850 if test "$1" = "multi-arch"; then
3851 AC_MSG_WARN([no compiler (cl.exe) in $2])
3854 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3858 dnl ===========================================================
3859 dnl Check for the corresponding mspdb*.dll
3860 dnl ===========================================================
3862 # MSVC 15.0 has libraries from 14.0?
3865 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
3866 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
3869 # The compiles has to find its shared libraries
3871 TEMP_PATH=`cygpath -d "$2"`
3872 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3874 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
3875 AC_MSG_ERROR([no compiler (cl.exe) in $2])
3880 AC_MSG_RESULT([$CL_EXE_PATH])
3886 if test "$_os" = "WINNT"; then
3887 AC_MSG_CHECKING([Visual C++])
3888 find_msvc "$with_visual_studio"
3889 if test -z "$vctest"; then
3890 if test -n "$with_visual_studio"; then
3891 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3893 AC_MSG_ERROR([no Visual Studio 2019 installation found])
3898 VC_PRODUCT_DIR="$vctest/VC"
3899 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
3901 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
3902 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
3903 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
3904 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
3905 if test $? -ne 0; then
3911 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
3912 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
3913 test_cl_exe "build" "$MSVC_BUILD_PATH"
3916 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
3917 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
3918 test_cl_exe "host" "$MSVC_HOST_PATH"
3920 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
3923 AC_MSG_CHECKING([for short pathname of VC product directory])
3924 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
3925 AC_MSG_RESULT([$VC_PRODUCT_DIR])
3930 AC_MSG_CHECKING([for UCRT location])
3932 # find_ucrt errors out if it doesn't find it
3933 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
3934 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
3935 ucrtincpath_formatted=$formatted_path
3936 # SOLARINC is used for external modules and must be set too.
3937 # And no, it's not sufficient to set SOLARINC only, as configure
3938 # itself doesn't honour it.
3939 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
3940 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
3941 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
3942 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
3944 AC_SUBST(UCRTSDKDIR)
3945 AC_SUBST(UCRTVERSION)
3947 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
3948 # Find the proper version of MSBuild.exe to use based on the VS version
3949 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
3950 if test -n "$regvalue" ; then
3951 AC_MSG_RESULT([found: $regvalue])
3952 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3954 if test "$vcnumwithdot" = "16.0"; then
3955 if test "$WIN_BUILD_ARCH" != "x64"; then
3956 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
3958 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
3961 if test "$WIN_BUILD_ARCH" != "x64"; then
3962 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin"
3964 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64"
3967 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3968 AC_MSG_RESULT([$regvalue])
3971 # Find the version of devenv.exe
3972 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
3973 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
3974 DEVENV_unix=$(cygpath -u "$DEVENV")
3975 if test ! -e "$DEVENV_unix"; then
3976 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
3979 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
3980 dnl needed when building CLR code:
3981 if test -z "$MSVC_CXX"; then
3982 # This gives us a posix path with 8.3 filename restrictions
3983 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
3986 if test -z "$CC"; then
3988 CC_BASE=`first_arg_basename "$CC"`
3990 if test -z "$CXX"; then
3992 CXX_BASE=`first_arg_basename "$CXX"`
3995 if test -n "$CC"; then
3996 # Remove /cl.exe from CC case insensitive
3997 AC_MSG_NOTICE([found Visual C++ $vcyear])
3999 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4000 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4002 PathFormat "$COMPATH"
4003 COMPATH=`win_short_path_for_make "$formatted_path"`
4007 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4008 # are always "better", we list them in reverse chronological order.
4012 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4016 # The expectation is that --with-windows-sdk should not need to be used
4017 if test -n "$with_windows_sdk"; then
4018 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4019 *" "$with_windows_sdk" "*)
4020 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4023 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4028 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4033 AC_MSG_ERROR([Visual C++ not found after all, huh])
4036 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.4])
4037 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4038 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4039 // between Visual Studio versions and _MSC_VER:
4043 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4045 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4046 # version of the Explorer extension (and maybe other small
4047 # bits, too) needed when installing a 32-bit LibreOffice on a
4048 # 64-bit OS. The 64-bit Explorer extension is a feature that
4049 # has been present since long in OOo. Don't confuse it with
4050 # building LibreOffice itself as 64-bit code.
4055 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4056 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4057 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4058 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4061 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4062 AC_MSG_RESULT([found])
4064 AC_MSG_RESULT([not found])
4065 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4067 elif test "$WIN_HOST_ARCH" = "x64"; then
4072 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4073 AC_SUBST(CXX_X64_BINARY)
4075 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4076 # needed to support TWAIN scan on both 32- and 64-bit systems
4078 case "$WIN_HOST_ARCH" in
4080 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4081 if test -n "$CXX_X86_BINARY"; then
4083 AC_MSG_RESULT([preset])
4084 elif test -n "$WIN_MULTI_ARCH"; then
4086 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4087 CXX_X86_BINARY+=" /arch:SSE"
4088 AC_MSG_RESULT([found])
4090 AC_MSG_RESULT([not found])
4091 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4096 CXX_X86_BINARY=$MSVC_CXX
4100 AC_SUBST(CXX_X86_BINARY)
4109 UNOWINREG_DLL="185d60944ea767075d27247c3162b3bc-unowinreg.dll"
4110 AC_SUBST(UNOWINREG_DLL)
4113 AC_MSG_CHECKING([whether the compiler is actually Clang])
4114 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4120 [AC_MSG_RESULT([yes])
4122 [AC_MSG_RESULT([no])])
4123 AC_SUBST(COM_IS_CLANG)
4127 if test "$COM_IS_CLANG" = TRUE; then
4128 AC_MSG_CHECKING([whether Clang is new enough])
4129 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4130 #if !defined __apple_build_version__
4134 [my_apple_clang=yes],[my_apple_clang=])
4135 if test "$my_apple_clang" = yes; then
4136 AC_MSG_RESULT([assumed yes (Apple Clang)])
4138 if test "$_os" = WINNT; then
4139 dnl In which case, assume clang-cl:
4141 dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
4149 CC_PLAIN="$CC_PLAIN $i"
4156 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
4157 CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
4158 CLANGVER=`echo $clang_version \
4159 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4160 if test "$CLANGVER" -ge 50002; then
4161 AC_MSG_RESULT([yes ($clang_version)])
4163 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
4165 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4166 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4170 SHOWINCLUDES_PREFIX=
4171 if test "$_os" = WINNT; then
4172 dnl We need to guess the prefix of the -showIncludes output, it can be
4174 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4175 echo "#include <stdlib.h>" > conftest.c
4176 SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4177 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4178 rm -f conftest.c conftest.obj
4179 if test -z "$SHOWINCLUDES_PREFIX"; then
4180 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4182 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4185 AC_SUBST(SHOWINCLUDES_PREFIX)
4188 # prefix C with ccache if needed
4190 if test "$CCACHE" != ""; then
4191 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4195 CFLAGS="$CFLAGS --ccache-skip -O2"
4196 dnl an empty program will do, we're checking the compiler flags
4197 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4198 [use_ccache=yes], [use_ccache=no])
4200 if test $use_ccache = yes; then
4201 AC_MSG_RESULT([yes])
4204 CC_BASE="ccache $CC_BASE"
4210 # ===================================================================
4211 # check various GCC options that Clang does not support now but maybe
4212 # will somewhen in the future, check them even for GCC, so that the
4214 # ===================================================================
4217 if test "$GCC" = "yes"; then
4218 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4220 CFLAGS="$CFLAGS -Werror -ggdb2"
4221 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4223 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4224 AC_MSG_RESULT([yes])
4229 if test "$host_cpu" = "m68k"; then
4230 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4232 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4233 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4235 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4236 AC_MSG_RESULT([yes])
4242 AC_SUBST(HAVE_GCC_GGDB2)
4244 dnl ===================================================================
4245 dnl Test the gcc version
4246 dnl ===================================================================
4247 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4248 AC_MSG_CHECKING([the GCC version])
4249 _gcc_version=`$CC -dumpversion`
4250 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4251 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4252 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4254 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4256 if test "$gcc_full_version" -lt 70000; then
4257 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4260 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4261 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4262 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4263 # (which reports itself as GCC 4.2.1).
4266 AC_SUBST(GCC_VERSION)
4268 dnl Set the ENABLE_DBGUTIL variable
4269 dnl ===================================================================
4270 AC_MSG_CHECKING([whether to build with additional debug utilities])
4271 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4272 ENABLE_DBGUTIL="TRUE"
4273 # this is an extra var so it can have different default on different MSVC
4274 # versions (in case there are version specific problems with it)
4275 MSVC_USE_DEBUG_RUNTIME="TRUE"
4277 AC_MSG_RESULT([yes])
4278 # cppunit and graphite expose STL in public headers
4279 if test "$with_system_cppunit" = "yes"; then
4280 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4282 with_system_cppunit=no
4284 if test "$with_system_graphite" = "yes"; then
4285 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4287 with_system_graphite=no
4289 if test "$with_system_orcus" = "yes"; then
4290 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4292 with_system_orcus=no
4294 if test "$with_system_libcmis" = "yes"; then
4295 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4297 with_system_libcmis=no
4299 if test "$with_system_hunspell" = "yes"; then
4300 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4302 with_system_hunspell=no
4304 if test "$with_system_gpgmepp" = "yes"; then
4305 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4307 with_system_gpgmepp=no
4309 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4310 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4311 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4312 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4313 # of those two is using the system variant:
4314 if test "$with_system_libnumbertext" = "yes"; then
4315 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4317 with_system_libnumbertext=no
4319 if test "$with_system_libwps" = "yes"; then
4320 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4322 with_system_libwps=no
4326 MSVC_USE_DEBUG_RUNTIME=""
4329 AC_SUBST(ENABLE_DBGUTIL)
4330 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4332 dnl Set the ENABLE_DEBUG variable.
4333 dnl ===================================================================
4334 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4335 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4337 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4338 if test -z "$libo_fuzzed_enable_debug"; then
4339 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4341 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4346 AC_MSG_CHECKING([whether to do a debug build])
4347 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4349 if test -n "$ENABLE_DBGUTIL" ; then
4350 AC_MSG_RESULT([yes (dbgutil)])
4352 AC_MSG_RESULT([yes])
4358 AC_SUBST(ENABLE_DEBUG)
4360 dnl ===================================================================
4361 dnl Select the linker to use (gold/lld/ld.bfd).
4362 dnl This is done only after compiler checks (need to know if Clang is
4363 dnl used, for different defaults) and after checking if a debug build
4364 dnl is wanted (non-debug builds get the default linker if not explicitly
4365 dnl specified otherwise).
4366 dnl All checks for linker features/options should come after this.
4367 dnl ===================================================================
4370 use_ld=-fuse-ld=${1%%:*}
4372 if test "$use_ld_path" != "$1"; then
4373 use_ld="$use_ld --ld-path=$use_ld_path"
4375 use_ld_fail_if_error=$2
4377 AC_MSG_CHECKING([for $use_ld linker support])
4378 use_ld_ldflags_save="$LDFLAGS"
4379 LDFLAGS="$LDFLAGS $use_ld"
4380 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4383 printf ("hello world\n");
4384 ])], USE_LD=$use_ld, [])
4385 if test -n "$USE_LD"; then
4386 AC_MSG_RESULT( yes )
4389 if test -n "$use_ld_fail_if_error"; then
4395 if test -n "$use_ld_ok"; then
4396 dnl keep the value of LDFLAGS
4399 LDFLAGS="$use_ld_ldflags_save"
4403 if test "$enable_ld" != "no"; then
4404 if test "$GCC" = "yes"; then
4405 if test -n "$enable_ld"; then
4406 check_use_ld "$enable_ld" fail_if_error
4407 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4408 dnl non-debug builds default to the default linker
4410 elif test -n "$COM_IS_CLANG"; then
4412 if test $? -ne 0; then
4416 # For gcc first try gold, new versions also support lld.
4418 if test $? -ne 0; then
4422 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4424 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4425 if test -z "$ld_used"; then
4428 AC_MSG_CHECKING([for linker that is used])
4429 AC_MSG_RESULT([$ld_used])
4430 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4431 if echo "$ld_used" | grep -q "^GNU ld"; then
4432 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4433 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4437 if test "$enable_ld" = "yes"; then
4438 AC_MSG_ERROR([--enable-ld not supported])
4444 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4445 if test "$GCC" = "yes"; then
4446 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4447 bsymbolic_functions_ldflags_save=$LDFLAGS
4448 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4449 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4452 printf ("hello world\n");
4453 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4454 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4455 AC_MSG_RESULT( found )
4457 AC_MSG_RESULT( not found )
4459 LDFLAGS=$bsymbolic_functions_ldflags_save
4461 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4464 if test "$GCC" = "yes"; then
4465 for flag in "--gc-sections" "-dead_strip"; do
4466 AC_MSG_CHECKING([for $flag linker support])
4467 ldflags_save=$LDFLAGS
4468 LDFLAGS="$LDFLAGS -Wl,$flag"
4469 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4472 printf ("hello world\n");
4474 LD_GC_SECTIONS="-Wl,$flag"
4475 AC_MSG_RESULT( found )
4477 AC_MSG_RESULT( not found )
4479 LDFLAGS=$ldflags_save
4480 if test -n "$LD_GC_SECTIONS"; then
4485 AC_SUBST(LD_GC_SECTIONS)
4488 if test "$enable_split_debug" != no; then
4489 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4490 if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4491 AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4493 CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4494 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4496 if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4497 AC_MSG_RESULT([yes])
4499 if test "$enable_split_debug" = yes; then
4506 if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4507 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4508 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4511 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4513 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4514 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4516 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4517 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4519 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4520 AC_MSG_RESULT([yes])
4524 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4527 if test "$enable_gdb_index" != "no"; then
4528 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4529 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -o -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4530 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4532 CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4534 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4535 if test "$have_ggnu_pubnames" != "TRUE"; then
4536 if test "$enable_gdb_index" = "yes"; then
4537 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4542 AC_MSG_RESULT( yes )
4543 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4544 ldflags_save=$LDFLAGS
4545 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4546 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4549 printf ("hello world\n");
4550 ])], ENABLE_GDB_INDEX=TRUE, [])
4551 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4552 AC_MSG_RESULT( yes )
4554 if test "$enable_gdb_index" = "yes"; then
4560 LDFLAGS=$ldflags_save
4564 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4565 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4566 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4569 AC_SUBST(ENABLE_GDB_INDEX)
4571 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4574 if test "$enable_sal_log" = yes; then
4577 AC_SUBST(ENABLE_SAL_LOG)
4579 dnl Check for enable symbols option
4580 dnl ===================================================================
4581 AC_MSG_CHECKING([whether to generate debug information])
4582 if test -z "$enable_symbols"; then
4583 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4589 if test "$enable_symbols" = yes; then
4590 ENABLE_SYMBOLS_FOR=all
4591 AC_MSG_RESULT([yes])
4592 elif test "$enable_symbols" = no; then
4596 # Selective debuginfo.
4597 ENABLE_SYMBOLS_FOR="$enable_symbols"
4598 AC_MSG_RESULT([for "$enable_symbols"])
4600 AC_SUBST(ENABLE_SYMBOLS_FOR)
4602 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4603 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4604 AC_MSG_CHECKING([whether enough memory is available for linking])
4605 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4606 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4607 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4608 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4610 AC_MSG_RESULT([yes])
4615 ENABLE_OPTIMIZED_DEBUG=
4616 AC_MSG_CHECKING([whether to compile with optimization flags])
4617 if test -z "$enable_optimized"; then
4618 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4621 enable_optimized=yes
4624 if test "$enable_optimized" = yes; then
4625 ENABLE_OPTIMIZED=TRUE
4626 AC_MSG_RESULT([yes])
4627 elif test "$enable_optimized" = debug; then
4628 ENABLE_OPTIMIZED_DEBUG=TRUE
4629 AC_MSG_RESULT([yes (debug)])
4631 if test "$GCC" = "yes"; then
4632 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4634 CFLAGS="$CFLAGS -Werror -Og"
4635 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4637 if test "$HAVE_GCC_OG" = "TRUE"; then
4638 AC_MSG_RESULT([yes])
4643 if test -z "$HAVE_GCC_OG"; then
4644 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4649 AC_SUBST(ENABLE_OPTIMIZED)
4650 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4653 # determine CPUNAME, OS, ...
4654 # The USING_X11 flag tells whether the host os uses X by default. Can be overridden with the --without-x option.
4665 PLATFORMID=aix_powerpc
4682 if test "$enable_ios_simulator" = "yes"; then
4687 PLATFORMID=macosx_arm64
4691 if test "$enable_ios_simulator" = "yes"; then
4696 PLATFORMID=macosx_x86_64
4699 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4713 if test "$enable_ios_simulator" = "yes"; then
4714 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4718 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4723 PLATFORMID=ios_arm64
4737 PLATFORMID=dragonfly_x86
4742 PLATFORMID=dragonfly_x86_64
4745 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4760 PLATFORMID=freebsd_aarch64
4766 PLATFORMID=freebsd_x86
4771 PLATFORMID=freebsd_x86_64
4776 PLATFORMID=freebsd_powerpc64
4781 PLATFORMID=freebsd_powerpc
4784 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4801 PLATFORMID=haiku_x86
4806 PLATFORMID=haiku_x86_64
4809 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4826 PLATFORMID=kfreebsd_x86
4831 PLATFORMID=kfreebsd_x86_64
4834 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4850 PLATFORMID=linux_aarch64
4856 PLATFORMID=linux_alpha
4862 PLATFORMID=linux_arm_eabi
4866 PLATFORMID=linux_arm_oabi
4874 PLATFORMID=linux_hppa
4879 PLATFORMID=linux_x86
4884 PLATFORMID=linux_ia64
4890 PLATFORMID=linux_mips_eb
4895 EPM_FLAGS="-a mips64"
4896 PLATFORMID=linux_mips64_eb
4901 EPM_FLAGS="-a mips64el"
4902 PLATFORMID=linux_mips64_el
4907 EPM_FLAGS="-a mipsel"
4908 PLATFORMID=linux_mips_el
4913 PLATFORMID=linux_m68k
4918 PLATFORMID=linux_powerpc
4923 PLATFORMID=linux_powerpc64
4927 RTL_ARCH=PowerPC_64_LE
4928 PLATFORMID=linux_powerpc64_le
4933 PLATFORMID=linux_sparc
4938 PLATFORMID=linux_sparc64
4943 PLATFORMID=linux_s390
4948 PLATFORMID=linux_s390x
4953 PLATFORMID=linux_x86_64
4956 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4973 PLATFORMID=android_arm_eabi
4978 PLATFORMID=android_aarch64
4983 PLATFORMID=android_x86
4988 PLATFORMID=android_x86_64
4991 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5007 PLATFORMID=netbsd_x86
5012 PLATFORMID=netbsd_powerpc
5017 PLATFORMID=netbsd_sparc
5022 PLATFORMID=netbsd_x86_64
5025 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5041 PLATFORMID=openbsd_x86
5046 PLATFORMID=openbsd_x86_64
5049 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5052 SOLARINC="$SOLARINC -I/usr/local/include"
5066 PLATFORMID=solaris_x86
5071 PLATFORMID=solaris_sparc
5076 PLATFORMID=solaris_sparc64
5079 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5082 SOLARINC="$SOLARINC -I/usr/local/include"
5086 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5090 if test "$with_x" = "no"; then
5091 AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
5095 if test "$enable_gui" = "no"; then
5096 if test "$USING_X11" != TRUE; then
5097 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5101 AC_DEFINE(HAVE_FEATURE_UI,0)
5104 AC_SUBST(DISABLE_GUI)
5106 WORKDIR="${BUILDDIR}/workdir"
5107 INSTDIR="${BUILDDIR}/instdir"
5108 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5109 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5110 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
5118 AC_SUBST([INSTROOT])
5119 AC_SUBST([INSTROOTBASE])
5123 AC_SUBST(PLATFORMID)
5124 AC_SUBST(WINDOWS_X64)
5125 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5127 dnl ===================================================================
5128 dnl Test which package format to use
5129 dnl ===================================================================
5130 AC_MSG_CHECKING([which package format to use])
5131 if test -n "$with_package_format" -a "$with_package_format" != no; then
5132 for i in $with_package_format; do
5134 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5137 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5138 aix - AIX software distribution
5139 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5140 deb - Debian software distribution
5141 pkg - Solaris software distribution
5142 rpm - RedHat software distribution
5144 LibreOffice additionally supports:
5145 archive - .tar.gz or .zip
5147 installed - installation tree
5153 # fakeroot is needed to ensure correct file ownerships/permissions
5154 # inside deb packages and tar archives created on Linux and Solaris.
5155 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5156 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5157 if test "$FAKEROOT" = "no"; then
5159 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5162 PKGFORMAT="$with_package_format"
5163 AC_MSG_RESULT([$PKGFORMAT])
5166 AC_MSG_RESULT([none])
5170 dnl ===================================================================
5171 dnl Set up a different compiler to produce tools to run on the build
5172 dnl machine when doing cross-compilation
5173 dnl ===================================================================
5175 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5176 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5177 if test "$cross_compiling" = "yes"; then
5178 AC_MSG_CHECKING([for BUILD platform configuration])
5180 rm -rf CONF-FOR-BUILD config_build.mk
5181 mkdir CONF-FOR-BUILD
5182 # Here must be listed all files needed when running the configure script. In particular, also
5183 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5184 # keep them in the same order as there.
5185 (cd $SRC_ROOT && tar cf - \
5187 bin/get_config_variables \
5188 solenv/bin/getcompver.awk \
5189 solenv/inc/langlist.mk \
5192 config_host_lang.mk.in \
5194 bin/bffvalidator.sh.in \
5195 bin/odfvalidator.sh.in \
5196 bin/officeotron.sh.in \
5197 hardened_runtime.xcent.in \
5198 instsetoo_native/util/openoffice.lst.in \
5200 sysui/desktop/macosx/Info.plist.in) \
5201 | (cd CONF-FOR-BUILD && tar xf -)
5202 cp configure CONF-FOR-BUILD
5203 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5205 unset COM USING_X11 OS CPUNAME
5206 unset CC CXX SYSBASE CFLAGS
5207 unset AR NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5208 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5209 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC PKG_CONFIG_LIBDIR
5210 if test -n "$CC_FOR_BUILD"; then
5211 export CC="$CC_FOR_BUILD"
5212 CC_BASE=`first_arg_basename "$CC"`
5214 if test -n "$CXX_FOR_BUILD"; then
5215 export CXX="$CXX_FOR_BUILD"
5216 CXX_BASE=`first_arg_basename "$CXX"`
5218 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5222 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5223 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5224 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5225 if test -n "$ENABLE_JAVA"; then
5227 iOS) sub_conf_opts="$sub_conf_opts --without-java" ;; # force it off, like it used to be
5229 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5230 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5233 if test -z "$with_jdk_home"; then
5234 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.])
5239 sub_conf_opts="$sub_conf_opts --without-java"
5241 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5242 test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
5243 sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options"
5245 # Don't bother having configure look for stuff not needed for the build platform anyway
5247 --build="$build_alias" \
5249 --disable-firebird-sdbc \
5251 --disable-gstreamer-1-0 \
5253 --disable-mariadb-sdbc \
5254 --disable-online-update \
5256 --disable-pdfimport \
5257 --disable-postgresql-sdbc \
5259 --enable-icecream="$enable_icecream" \
5262 --with-parallelism="$with_parallelism" \
5263 --with-theme="$with_theme" \
5264 --with-tls=openssl \
5267 2>&1 | sed -e 's/^/ /'
5268 test -f ./config_host.mk 2>/dev/null || exit
5270 # filter permitted build targets
5271 PERMITTED_BUILD_TARGETS="
5300 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5301 # newlined lists, to use grep as a filter
5302 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5303 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5304 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5305 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5307 cp config_host.mk ../config_build.mk
5308 cp config_host_lang.mk ../config_build_lang.mk
5309 mv config.log ../config.Build.log
5310 mkdir -p ../config_build
5311 mv config_host/*.h ../config_build
5313 # all these will get a _FOR_BUILD postfix
5314 DIRECT_FOR_BUILD_SETTINGS="
5324 LIBO_URE_MISC_FOLDER
5330 # these overwrite host config with build config
5331 OVERWRITING_SETTINGS="
5336 JAVA_CLASSPATH_NOT_SET
5344 # these need some special handling
5345 EXTRA_HANDLED_SETTINGS="
5352 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5356 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5357 echo "$line" >>build-config
5359 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5361 VV=`eval "echo $VV"`
5362 if test -n "$VV"; then
5363 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5364 echo "$line" >>build-config
5368 for V in $OVERWRITING_SETTINGS; do
5370 VV=`eval "echo $VV"`
5371 if test -n "$VV"; then
5372 line=${V}='${'${V}:-$VV'}'
5373 echo "$line" >>build-config
5377 for V in INSTDIR INSTROOT WORKDIR; do
5379 VV=`eval "echo $VV"`
5380 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5381 if test -n "$VV"; then
5382 line="${V}_FOR_BUILD='$VV'"
5383 echo "$line" >>build-config
5388 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([Running configure script for BUILD system failed, see CONF-FOR-BUILD/config.log])
5389 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])
5390 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5391 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5393 eval `cat CONF-FOR-BUILD/build-config`
5395 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5397 rm -rf CONF-FOR-BUILD
5401 CXX_FOR_BUILD="$CXX"
5402 INSTDIR_FOR_BUILD="$INSTDIR"
5403 INSTROOT_FOR_BUILD="$INSTROOT"
5404 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5405 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5406 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5407 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5408 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5409 WORKDIR_FOR_BUILD="$WORKDIR"
5411 AC_SUBST(OS_FOR_BUILD)
5412 AC_SUBST(INSTDIR_FOR_BUILD)
5413 AC_SUBST(INSTROOT_FOR_BUILD)
5414 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5415 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5416 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5417 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5418 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5419 AC_SUBST(WORKDIR_FOR_BUILD)
5420 AC_SUBST(CC_FOR_BUILD)
5421 AC_SUBST(CXX_FOR_BUILD)
5423 dnl ===================================================================
5424 dnl Check for syslog header
5425 dnl ===================================================================
5426 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5428 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5429 dnl ===================================================================
5430 AC_MSG_CHECKING([whether to turn warnings to errors])
5431 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5432 ENABLE_WERROR="TRUE"
5433 PYTHONWARNINGS="error"
5434 AC_MSG_RESULT([yes])
5436 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5437 ENABLE_WERROR="TRUE"
5438 PYTHONWARNINGS="error"
5439 AC_MSG_RESULT([yes])
5444 AC_SUBST(ENABLE_WERROR)
5445 AC_SUBST(PYTHONWARNINGS)
5447 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5448 dnl ===================================================================
5449 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5450 if test -z "$enable_assert_always_abort"; then
5451 if test "$ENABLE_DEBUG" = TRUE; then
5452 enable_assert_always_abort=yes
5454 enable_assert_always_abort=no
5457 if test "$enable_assert_always_abort" = "yes"; then
5458 ASSERT_ALWAYS_ABORT="TRUE"
5459 AC_MSG_RESULT([yes])
5461 ASSERT_ALWAYS_ABORT="FALSE"
5464 AC_SUBST(ASSERT_ALWAYS_ABORT)
5466 # Determine whether to use ooenv for the instdir installation
5467 # ===================================================================
5468 if test $_os != "WINNT" -a $_os != "Darwin"; then
5469 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5470 if test "$enable_ooenv" = "no"; then
5474 AC_MSG_RESULT([yes])
5477 AC_SUBST(ENABLE_OOENV)
5479 if test "$USING_X11" != TRUE; then
5480 # be sure to do not mess with unneeded stuff
5485 build_gstreamer_1_0=no
5489 enable_cairo_canvas=no
5492 if test "$OS" = "HAIKU"; then
5493 enable_cairo_canvas=yes
5497 if test "$test_kf5" = "yes" -a "$enable_kde5" = "yes"; then
5498 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!])
5499 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!"
5503 if test "$test_kf5" = "yes"; then
5507 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5508 if test "$enable_qt5" = "no"; then
5509 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5515 dnl ===================================================================
5516 dnl check for cups support
5517 dnl ===================================================================
5520 if test "$enable_cups" = "no"; then
5524 AC_MSG_CHECKING([whether to enable CUPS support])
5525 if test "$test_cups" = "yes"; then
5527 AC_MSG_RESULT([yes])
5529 AC_MSG_CHECKING([whether cups support is present])
5530 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5531 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5532 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5533 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5540 AC_SUBST(ENABLE_CUPS)
5543 if test "$test_fontconfig" = "yes"; then
5544 PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5545 SYSTEM_FONTCONFIG=TRUE
5546 FilterLibs "${FONTCONFIG_LIBS}"
5547 FONTCONFIG_LIBS="${filteredlibs}"
5549 AC_SUBST(FONTCONFIG_CFLAGS)
5550 AC_SUBST(FONTCONFIG_LIBS)
5551 AC_SUBST([SYSTEM_FONTCONFIG])
5553 dnl whether to find & fetch external tarballs?
5554 dnl ===================================================================
5555 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5556 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5557 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5559 TARFILE_LOCATION="$LODE_HOME/ext_tar"
5562 if test -z "$TARFILE_LOCATION"; then
5563 if test -d "$SRC_ROOT/src" ; then
5564 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5565 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5567 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5569 AbsolutePath "$TARFILE_LOCATION"
5570 PathFormat "${absolute_path}"
5571 TARFILE_LOCATION="${formatted_path}"
5573 AC_SUBST(TARFILE_LOCATION)
5575 AC_MSG_CHECKING([whether we want to fetch tarballs])
5576 if test "$enable_fetch_external" != "no"; then
5577 if test "$with_all_tarballs" = "yes"; then
5578 AC_MSG_RESULT([yes, all of them])
5579 DO_FETCH_TARBALLS="ALL"
5581 AC_MSG_RESULT([yes, if we use them])
5582 DO_FETCH_TARBALLS="TRUE"
5588 AC_SUBST(DO_FETCH_TARBALLS)
5590 AC_MSG_CHECKING([whether to build help])
5591 if test -n "$with_help" -a "$with_help" != "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_help" in
5596 ENABLE_HTMLHELP=TRUE
5597 SCPDEFS="$SCPDEFS -DWITH_HELP"
5598 AC_MSG_RESULT([HTML])
5601 ENABLE_HTMLHELP=TRUE
5603 AC_MSG_RESULT([HTML])
5606 SCPDEFS="$SCPDEFS -DWITH_HELP"
5607 AC_MSG_RESULT([yes])
5610 AC_MSG_ERROR([Unknown --with-help=$with_help])
5616 AC_SUBST([ENABLE_HTMLHELP])
5617 AC_SUBST([HELP_ONLINE])
5619 AC_MSG_CHECKING([whether to enable xapian-omega support for help])
5620 if test -n "$with_omindex" -a "$with_omindex" != "no" -a $_os != iOS -a $_os != Android; then
5621 BUILD_TYPE="$BUILD_TYPE HELP"
5622 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5623 case "$with_omindex" in
5625 ENABLE_HTMLHELP=TRUE
5627 HELP_OMINDEX_PAGE=TRUE
5628 AC_MSG_RESULT([SERVER])
5631 ENABLE_HTMLHELP=TRUE
5633 HELP_OMINDEX_PAGE=FALSE
5634 AC_MSG_RESULT([NOXAP])
5637 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5641 HELP_OMINDEX_PAGE=FALSE
5644 AC_SUBST([ENABLE_HTMLHELP])
5645 AC_SUBST([HELP_OMINDEX_PAGE])
5646 AC_SUBST([HELP_ONLINE])
5649 dnl Test whether to include MySpell dictionaries
5650 dnl ===================================================================
5651 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5652 if test "$with_myspell_dicts" = "yes"; then
5653 AC_MSG_RESULT([yes])
5654 WITH_MYSPELL_DICTS=TRUE
5655 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5656 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5661 AC_SUBST(WITH_MYSPELL_DICTS)
5663 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5664 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5665 if test "$with_system_dicts" = yes; then
5666 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5668 with_system_dicts=no
5671 AC_MSG_CHECKING([whether to use dicts from external paths])
5672 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5673 AC_MSG_RESULT([yes])
5675 AC_MSG_CHECKING([for spelling dictionary directory])
5676 if test -n "$with_external_dict_dir"; then
5677 DICT_SYSTEM_DIR=file://$with_external_dict_dir
5679 DICT_SYSTEM_DIR=file:///usr/share/hunspell
5680 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5681 DICT_SYSTEM_DIR=file:///usr/share/myspell
5684 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5685 AC_MSG_CHECKING([for hyphenation patterns directory])
5686 if test -n "$with_external_hyph_dir"; then
5687 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5689 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5691 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5692 AC_MSG_CHECKING([for thesaurus directory])
5693 if test -n "$with_external_thes_dir"; then
5694 THES_SYSTEM_DIR=file://$with_external_thes_dir
5696 THES_SYSTEM_DIR=file:///usr/share/mythes
5698 AC_MSG_RESULT([$THES_SYSTEM_DIR])
5703 AC_SUBST(SYSTEM_DICTS)
5704 AC_SUBST(DICT_SYSTEM_DIR)
5705 AC_SUBST(HYPH_SYSTEM_DIR)
5706 AC_SUBST(THES_SYSTEM_DIR)
5708 dnl ===================================================================
5709 dnl Precompiled headers.
5711 AC_MSG_CHECKING([whether to enable pch feature])
5712 if test -z "$enable_pch"; then
5713 if test "$_os" = "WINNT"; then
5714 # Enabled by default on Windows.
5720 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5721 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5723 if test "$enable_pch" = "system"; then
5725 AC_MSG_RESULT([yes (system headers)])
5726 elif test "$enable_pch" = "base"; then
5728 AC_MSG_RESULT([yes (system and base headers)])
5729 elif test "$enable_pch" = "normal"; then
5731 AC_MSG_RESULT([yes (normal)])
5732 elif test "$enable_pch" = "full"; then
5734 AC_MSG_RESULT([yes (full)])
5735 elif test "$enable_pch" = "yes"; then
5736 # Pick a suitable default.
5737 if test "$GCC" = "yes"; then
5738 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5739 # while making the PCHs larger and rebuilds more likely.
5741 AC_MSG_RESULT([yes (system and base headers)])
5743 # With MSVC the highest level makes a significant difference,
5744 # and it was the default when there used to be no PCH levels.
5746 AC_MSG_RESULT([yes (full)])
5748 elif test "$enable_pch" = "no"; then
5751 AC_MSG_ERROR([Unknown value for --enable-pch])
5753 AC_SUBST(ENABLE_PCH)
5754 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5755 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5756 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5757 if test "$CCACHE_BIN" != "not found"; then
5758 AC_MSG_CHECKING([ccache version])
5759 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5760 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5761 AC_MSG_RESULT([$CCACHE_VERSION])
5762 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5763 if test "$CCACHE_NUMVER" -gt "030701"; then
5764 AC_MSG_RESULT([yes])
5766 AC_MSG_RESULT([no (not newer than 3.7.1)])
5772 PCH_INSTANTIATE_TEMPLATES=
5773 if test -n "$ENABLE_PCH"; then
5774 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
5776 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
5777 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
5779 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
5785 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
5787 BUILDING_PCH_WITH_OBJ=
5788 if test -n "$ENABLE_PCH"; then
5789 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
5791 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
5792 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
5794 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5800 AC_SUBST(BUILDING_PCH_WITH_OBJ)
5804 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5805 AC_MSG_CHECKING([whether $CC supports -fpch-codegen])
5807 CFLAGS="$CFLAGS -Werror -fpch-codegen"
5808 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
5810 PCH_CODEGEN="-fpch-codegen"
5811 PCH_NO_CODEGEN="-fno-pch-codegen"
5814 if test -n "$PCH_CODEGEN"; then
5820 AC_SUBST(PCH_CODEGEN)
5821 AC_SUBST(PCH_NO_CODEGEN)
5823 if test -n "$BUILDING_PCH_WITH_OBJ"; then
5824 AC_MSG_CHECKING([whether $CC supports -fpch-debuginfo])
5826 CFLAGS="$CFLAGS -Werror -fpch-debuginfo"
5827 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="-fpch-debuginfo" ],[])
5829 if test -n "$PCH_DEBUGINFO"; then
5835 AC_SUBST(PCH_DEBUGINFO)
5839 AC_MSG_CHECKING([the GNU Make version])
5840 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5841 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5842 if test "$_make_longver" -ge "038200"; then
5843 AC_MSG_RESULT([$GNUMAKE $_make_version])
5845 elif test "$_make_longver" -ge "038100"; then
5846 if test "$build_os" = "cygwin"; then
5847 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5849 AC_MSG_RESULT([$GNUMAKE $_make_version])
5851 dnl ===================================================================
5852 dnl Search all the common names for sha1sum
5853 dnl ===================================================================
5854 AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5855 if test -z "$SHA1SUM"; then
5856 AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5857 elif test "$SHA1SUM" = "openssl"; then
5858 SHA1SUM="openssl sha1"
5860 AC_MSG_CHECKING([for GNU Make bug 20033])
5861 TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
5862 $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
5863 A := \$(wildcard *.a)
5867 <TAB>@echo survived bug20033.
5871 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
5884 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
5885 <TAB>\$(call d1,\$(CHECKSUM)),\
5886 <TAB>\$(call d2,\$(CHECKSUM)))
5888 if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
5889 no_parallelism_make="YES"
5890 AC_MSG_RESULT([yes, disable parallelism])
5892 AC_MSG_RESULT([no, keep parallelism enabled])
5894 rm -rf $TESTGMAKEBUG20033
5896 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
5899 # find if gnumake support file function
5900 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
5901 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
5902 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5903 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
5905 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
5906 \$(file >test.txt,Success )
5913 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
5914 if test -f $TESTGMAKEFILEFUNC/test.txt; then
5915 HAVE_GNUMAKE_FILE_FUNC=TRUE
5916 AC_MSG_RESULT([yes])
5920 rm -rf $TESTGMAKEFILEFUNC
5921 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
5923 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
5925 if test "$_make_ver_check" = ""; then
5929 HAVE_LD_HASH_STYLE=FALSE
5930 WITH_LINKER_HASH_STYLE=
5931 AC_MSG_CHECKING([for --hash-style gcc linker support])
5932 if test "$GCC" = "yes"; then
5933 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
5934 hash_styles="gnu sysv"
5935 elif test "$with_linker_hash_style" = "no"; then
5938 hash_styles="$with_linker_hash_style"
5941 for hash_style in $hash_styles; do
5942 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
5943 hash_style_ldflags_save=$LDFLAGS
5944 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
5946 AC_RUN_IFELSE([AC_LANG_PROGRAM(
5953 HAVE_LD_HASH_STYLE=TRUE
5954 WITH_LINKER_HASH_STYLE=$hash_style
5956 [HAVE_LD_HASH_STYLE=FALSE],
5957 [HAVE_LD_HASH_STYLE=FALSE])
5958 LDFLAGS=$hash_style_ldflags_save
5961 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
5962 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
5966 LDFLAGS=$hash_style_ldflags_save
5970 AC_SUBST(HAVE_LD_HASH_STYLE)
5971 AC_SUBST(WITH_LINKER_HASH_STYLE)
5973 dnl ===================================================================
5974 dnl Check whether there's a Perl version available.
5975 dnl ===================================================================
5976 if test -z "$with_perl_home"; then
5977 AC_PATH_PROG(PERL, perl)
5979 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
5980 _perl_path="$with_perl_home/bin/perl"
5981 if test -x "$_perl_path"; then
5984 AC_MSG_ERROR([$_perl_path not found])
5988 dnl ===================================================================
5989 dnl Testing for Perl version 5 or greater.
5990 dnl $] is the Perl version variable, it is returned as an integer
5991 dnl ===================================================================
5992 if test "$PERL"; then
5993 AC_MSG_CHECKING([the Perl version])
5994 ${PERL} -e "exit($]);"
5996 if test "$_perl_version" -lt 5; then
5997 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
5999 AC_MSG_RESULT([Perl $_perl_version])
6001 AC_MSG_ERROR([Perl not found, install Perl 5])
6004 dnl ===================================================================
6005 dnl Testing for required Perl modules
6006 dnl ===================================================================
6008 AC_MSG_CHECKING([for required Perl modules])
6009 perl_use_string="use Cwd ; use Digest::MD5"
6010 if test "$_os" = "WINNT"; then
6011 if test -n "$PKGFORMAT"; then
6012 for i in $PKGFORMAT; do
6015 # for getting fonts versions to use in MSI
6016 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6022 if test "$with_system_hsqldb" = "yes"; then
6023 perl_use_string="$perl_use_string ; use Archive::Zip"
6025 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6026 # OpenSSL needs that to build
6027 perl_use_string="$perl_use_string ; use FindBin"
6029 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6030 AC_MSG_RESULT([all modules found])
6032 AC_MSG_RESULT([failed to find some modules])
6033 # Find out which modules are missing.
6034 for i in $perl_use_string; do
6035 if test "$i" != "use" -a "$i" != ";"; then
6036 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6037 missing_perl_modules="$missing_perl_modules $i"
6042 The missing Perl modules are: $missing_perl_modules
6043 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6046 dnl ===================================================================
6047 dnl Check for pkg-config
6048 dnl ===================================================================
6049 if test "$_os" != "WINNT"; then
6053 if test "$_os" != "WINNT"; then
6055 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6056 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6057 # explicitly. Or put /path/to/compiler in PATH yourself.
6059 # Use wrappers for LTO
6060 if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
6061 AC_CHECK_TOOL(AR,gcc-ar)
6062 AC_CHECK_TOOL(NM,gcc-nm)
6063 AC_CHECK_TOOL(RANLIB,gcc-ranlib)
6065 AC_CHECK_TOOL(AR,ar)
6066 AC_CHECK_TOOL(NM,nm)
6067 AC_CHECK_TOOL(RANLIB,ranlib)
6069 AC_CHECK_TOOL(OBJDUMP,objdump)
6070 AC_CHECK_TOOL(READELF,readelf)
6071 AC_CHECK_TOOL(STRIP,strip)
6072 if test "$_os" = "WINNT"; then
6073 AC_CHECK_TOOL(DLLTOOL,dlltool)
6074 AC_CHECK_TOOL(WINDRES,windres)
6081 AC_SUBST(PKG_CONFIG)
6087 dnl ===================================================================
6088 dnl pkg-config checks on macOS
6089 dnl ===================================================================
6091 if test $_os = Darwin; then
6092 AC_MSG_CHECKING([for bogus pkg-config])
6093 if test -n "$PKG_CONFIG"; then
6094 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6095 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6097 if test "$enable_bogus_pkg_config" = "yes"; then
6098 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6100 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.])
6104 AC_MSG_RESULT([no, good])
6110 # Return value: $csctest
6114 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6115 if test -n "$regvalue"; then
6123 # Return value: $altest
6127 # We need this check to detect 4.6.1 or above.
6128 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6129 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6130 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6136 for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6137 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6138 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6149 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6150 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6151 if test -n "$regvalue"; then
6158 find_winsdk_version()
6160 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6161 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6163 unset winsdktest winsdkbinsubdir winsdklibsubdir
6167 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6168 if test -n "$regvalue"; then
6169 winsdktest=$regvalue
6170 winsdklibsubdir=win8
6175 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6176 if test -n "$regvalue"; then
6177 winsdktest=$regvalue
6178 winsdklibsubdir=winv6.3
6183 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6184 if test -n "$regvalue"; then
6185 winsdktest=$regvalue
6186 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6187 if test -n "$regvalue"; then
6188 winsdkbinsubdir="$regvalue".0
6189 winsdklibsubdir=$winsdkbinsubdir
6190 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6191 local tmppath_unix=$(cygpath -u "$tmppath")
6192 # test exist the SDK path
6193 if test -d "$tmppath_unix"; then
6194 # when path is convertible to a short path then path is okay
6195 cygpath -d "$tmppath" >/dev/null 2>&1
6196 if test $? -ne 0; then
6197 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6200 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6211 # Return value: From find_winsdk_version
6215 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6216 find_winsdk_version $ver
6217 if test -n "$winsdktest"; then
6225 # Return value: $msmdir
6227 AC_MSG_CHECKING([for MSVC merge modules directory])
6228 local my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm
6233 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
6236 for f in $my_msm_files; do
6237 echo "$as_me:$LINENO: searching for $f" >&5
6241 for ver in 14.0 15.0; do
6242 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir
6243 if test -n "$regvalue"; then
6244 for f in ${my_msm_files}; do
6245 if test -e "$regvalue/${f}"; then
6252 dnl Is the following fallback really necessary, or was it added in response
6253 dnl to never having started Visual Studio on a given machine, so the
6254 dnl registry keys checked above had presumably not yet been created?
6255 dnl Anyway, if it really is necessary, it might be worthwhile to extend it
6256 dnl to also check %CommonProgramFiles(X86)% (typically expanding to
6257 dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles%
6258 dnl expanding to "C:\Program Files\Common Files"), which would need
6259 dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to
6260 dnl obtain its value from cygwin:
6261 if test -z "$msmdir"; then
6262 my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/"
6263 for f in ${my_msm_files}; do
6264 if test -e "$my_msm_dir/${f}"; then
6270 dnl Starting from MSVC 15.0, merge modules are located in different directory
6273 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6274 echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5
6275 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6276 for f in ${my_msm_files}; do
6277 if test -e "$my_msm_dir/${f}"; then
6286 if test -n "$msmdir"; then
6287 msmdir=`cygpath -m "$msmdir"`
6288 AC_MSG_RESULT([$msmdir])
6290 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6291 AC_MSG_FAILURE([not found])
6293 AC_MSG_WARN([not found (check config.log)])
6294 add_warning "MSM none of ${my_msm_files} found"
6299 find_msvc_x64_dlls()
6301 # Return value: $msvcdllpath, $msvcdlls
6303 AC_MSG_CHECKING([for MSVC x64 DLL path])
6304 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6307 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6308 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5
6309 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then
6310 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"
6313 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5
6314 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then
6315 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"
6321 AC_MSG_RESULT([$msvcdllpath])
6322 AC_MSG_CHECKING([for MSVC x64 DLLs])
6323 msvcdlls="msvcp140.dll vcruntime140.dll"
6324 for dll in $msvcdlls; do
6325 if ! test -f "$msvcdllpath/$dll"; then
6326 AC_MSG_FAILURE([missing $dll])
6329 AC_MSG_RESULT([found all ($msvcdlls)])
6332 dnl =========================================
6333 dnl Check for the Windows SDK.
6334 dnl =========================================
6335 if test "$_os" = "WINNT"; then
6336 AC_MSG_CHECKING([for Windows SDK])
6337 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6339 WINDOWS_SDK_HOME=$winsdktest
6341 # normalize if found
6342 if test -n "$WINDOWS_SDK_HOME"; then
6343 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6344 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6347 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6350 if test -n "$WINDOWS_SDK_HOME"; then
6351 # Remove a possible trailing backslash
6352 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6354 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6355 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6356 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6357 have_windows_sdk_headers=yes
6358 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6359 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6360 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6361 have_windows_sdk_headers=yes
6362 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6363 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6364 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6365 have_windows_sdk_headers=yes
6367 have_windows_sdk_headers=no
6370 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6371 have_windows_sdk_libs=yes
6372 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6373 have_windows_sdk_libs=yes
6375 have_windows_sdk_libs=no
6378 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6379 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6380 the Windows SDK are installed.])
6384 if test -z "$WINDOWS_SDK_HOME"; then
6385 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6386 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6387 WINDOWS_SDK_VERSION=80
6388 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6389 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6390 WINDOWS_SDK_VERSION=81
6391 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6392 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6393 WINDOWS_SDK_VERSION=10
6394 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6396 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6398 PathFormat "$WINDOWS_SDK_HOME"
6399 WINDOWS_SDK_HOME="$formatted_path"
6400 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6401 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6402 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6403 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6404 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6405 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6406 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6410 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6411 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6412 dnl but not in v8.0), so allow this to be overridden with a
6413 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6414 dnl and configuration error if no WiLangId.vbs is found would arguably be
6415 dnl better, but I do not know under which conditions exactly it is needed by
6417 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6418 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6419 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6420 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6421 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6422 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6424 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6425 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6426 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6428 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6429 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6430 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6433 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6434 if test -n "$with_package_format" -a "$with_package_format" != no; then
6435 for i in "$with_package_format"; do
6436 if test "$i" = "msi"; then
6437 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6438 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6445 AC_SUBST(WINDOWS_SDK_HOME)
6446 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6447 AC_SUBST(WINDOWS_SDK_VERSION)
6448 AC_SUBST(WINDOWS_SDK_WILANGID)
6450 if test "$build_os" = "cygwin"; then
6451 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6452 dnl dir, it also determines that dir's path w/o an arch segment if any,
6453 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6454 AC_MSG_CHECKING([for midl.exe])
6457 if test -n "$winsdkbinsubdir" \
6458 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6460 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6461 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6462 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6463 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6464 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6465 elif test -f "$winsdktest/Bin/midl.exe"; then
6466 MIDL_PATH=$winsdktest/Bin
6467 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6469 if test ! -f "$MIDL_PATH/midl.exe"; then
6470 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6472 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6475 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6476 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6478 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6479 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6480 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6481 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6482 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6483 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6484 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6485 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6486 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6487 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6488 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6489 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6491 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6495 AC_MSG_CHECKING([for csc.exe])
6497 if test -f "$csctest/csc.exe"; then
6500 if test ! -f "$CSC_PATH/csc.exe"; then
6501 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6503 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6506 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6509 AC_MSG_CHECKING([for al.exe])
6511 if test -n "$winsdkbinsubdir" \
6512 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6514 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6515 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6516 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6517 elif test -f "$winsdktest/Bin/al.exe"; then
6518 AL_PATH="$winsdktest/Bin"
6521 if test -z "$AL_PATH"; then
6523 if test -f "$altest/bin/al.exe"; then
6524 AL_PATH="$altest/bin"
6525 elif test -f "$altest/al.exe"; then
6529 if test ! -f "$AL_PATH/al.exe"; then
6530 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6532 AC_MSG_RESULT([$AL_PATH/al.exe])
6535 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6537 dnl Check mscoree.lib / .NET Framework dir
6538 AC_MSG_CHECKING(.NET Framework)
6540 PathFormat "$frametest"
6541 frametest="$formatted_path"
6542 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6543 DOTNET_FRAMEWORK_HOME="$frametest"
6546 if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6547 DOTNET_FRAMEWORK_HOME="$winsdktest"
6550 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
6551 AC_MSG_ERROR([mscoree.lib not found])
6553 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6555 PathFormat "$MIDL_PATH"
6556 MIDL_PATH="$formatted_path"
6558 PathFormat "$AL_PATH"
6559 AL_PATH="$formatted_path"
6561 PathFormat "$DOTNET_FRAMEWORK_HOME"
6562 DOTNET_FRAMEWORK_HOME="$formatted_path"
6564 PathFormat "$CSC_PATH"
6565 CSC_PATH="$formatted_path"
6568 dnl ===================================================================
6569 dnl Testing for C++ compiler and version...
6570 dnl ===================================================================
6572 if test "$_os" != "WINNT"; then
6573 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6574 save_CXXFLAGS=$CXXFLAGS
6576 CXXFLAGS=$save_CXXFLAGS
6577 if test -z "$CXX_BASE"; then
6578 CXX_BASE=`first_arg_basename "$CXX"`
6582 dnl check for GNU C++ compiler version
6583 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6584 AC_MSG_CHECKING([the GNU C++ compiler version])
6586 _gpp_version=`$CXX -dumpversion`
6587 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6589 if test "$_gpp_majmin" -lt "700"; then
6590 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6592 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6595 dnl see https://code.google.com/p/android/issues/detail?id=41770
6599 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6600 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6601 #include <bits/c++config.h>]],[[
6602 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6603 && !defined(_GLIBCXX__PTHREADS) \
6604 && !defined(_GLIBCXX_HAS_GTHREADS)
6607 ]])],[AC_MSG_RESULT([yes])
6608 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6610 if test $glibcxx_threads = yes; then
6611 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6614 AC_SUBST(BOOST_CXXFLAGS)
6617 # prefx CXX with ccache if needed
6619 if test "$CCACHE" != ""; then
6620 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6622 save_CXXFLAGS=$CXXFLAGS
6623 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6624 dnl an empty program will do, we're checking the compiler flags
6625 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6626 [use_ccache=yes], [use_ccache=no])
6627 if test $use_ccache = yes; then
6628 AC_MSG_RESULT([yes])
6631 CXX_BASE="ccache $CXX_BASE"
6634 CXXFLAGS=$save_CXXFLAGS
6638 dnl ===================================================================
6639 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6640 dnl ===================================================================
6642 if test "$_os" != "WINNT"; then
6645 dnl Check whether there's a C pre-processor.
6650 dnl ===================================================================
6651 dnl Find integral type sizes and alignments
6652 dnl ===================================================================
6654 if test "$_os" != "WINNT"; then
6656 AC_CHECK_SIZEOF(long)
6657 AC_CHECK_SIZEOF(short)
6658 AC_CHECK_SIZEOF(int)
6659 AC_CHECK_SIZEOF(long long)
6660 AC_CHECK_SIZEOF(double)
6661 AC_CHECK_SIZEOF(void*)
6663 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6664 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6665 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6666 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6667 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6669 dnl Allow build without AC_CHECK_ALIGNOF, grrr
6670 m4_pattern_allow([AC_CHECK_ALIGNOF])
6671 m4_ifdef([AC_CHECK_ALIGNOF],
6673 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6674 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6675 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6676 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6679 case "$_os-$host_cpu" in
6681 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6682 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6683 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6684 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6687 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6688 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6689 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6690 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6693 if test -z "$ac_cv_alignof_short" -o \
6694 -z "$ac_cv_alignof_int" -o \
6695 -z "$ac_cv_alignof_long" -o \
6696 -z "$ac_cv_alignof_double"; then
6697 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.])
6703 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6704 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6705 if test $ac_cv_sizeof_long -eq 8; then
6706 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6707 elif test $ac_cv_sizeof_double -eq 8; then
6708 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6710 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6713 dnl Check for large file support
6715 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6716 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6718 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6719 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6723 SAL_TYPES_SIZEOFSHORT=2
6724 SAL_TYPES_SIZEOFINT=4
6725 SAL_TYPES_SIZEOFLONG=4
6726 SAL_TYPES_SIZEOFLONGLONG=8
6727 if test $WIN_HOST_BITS -eq 32; then
6728 SAL_TYPES_SIZEOFPOINTER=4
6730 SAL_TYPES_SIZEOFPOINTER=8
6732 SAL_TYPES_ALIGNMENT2=2
6733 SAL_TYPES_ALIGNMENT4=4
6734 SAL_TYPES_ALIGNMENT8=8
6737 AC_SUBST(LFS_CFLAGS)
6739 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6740 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6741 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6742 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6743 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6744 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6745 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6746 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6748 dnl ===================================================================
6749 dnl Check whether to enable runtime optimizations
6750 dnl ===================================================================
6751 ENABLE_RUNTIME_OPTIMIZATIONS=
6752 AC_MSG_CHECKING([whether to enable runtime optimizations])
6753 if test -z "$enable_runtime_optimizations"; then
6757 enable_runtime_optimizations=no
6763 if test "$enable_runtime_optimizations" != no; then
6764 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6765 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6766 AC_MSG_RESULT([yes])
6770 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6772 dnl ===================================================================
6773 dnl Check if valgrind headers are available
6774 dnl ===================================================================
6776 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6777 prev_cppflags=$CPPFLAGS
6778 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6779 # or where does it come from?
6780 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6781 AC_CHECK_HEADER([valgrind/valgrind.h],
6782 [ENABLE_VALGRIND=TRUE])
6783 CPPFLAGS=$prev_cppflags
6785 AC_SUBST([ENABLE_VALGRIND])
6786 if test -z "$ENABLE_VALGRIND"; then
6787 if test "$with_valgrind" = yes; then
6788 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6792 AC_SUBST([VALGRIND_CFLAGS])
6795 dnl ===================================================================
6796 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6797 dnl ===================================================================
6799 # We need at least the sys/sdt.h include header.
6800 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6801 if test "$SDT_H_FOUND" = "TRUE"; then
6802 # Found sys/sdt.h header, now make sure the c++ compiler works.
6803 # Old g++ versions had problems with probes in constructors/destructors.
6804 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6806 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6807 #include <sys/sdt.h>
6815 ProbeClass(int& v, const char *n) : ref(v), name(n)
6817 DTRACE_PROBE2(_test_, cons, name, ref);
6820 void method(int min)
6822 DTRACE_PROBE3(_test_, meth, name, ref, min);
6828 DTRACE_PROBE2(_test_, dest, name, ref);
6833 DTRACE_PROBE1(_test_, call, i);
6834 ProbeClass inst = ProbeClass(i, "call");
6836 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6837 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6840 AC_CONFIG_HEADERS([config_host/config_probes.h])
6842 dnl ===================================================================
6844 dnl ===================================================================
6845 HAVE_GCC_STACK_CLASH_PROTECTION=
6846 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6847 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6849 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
6851 [AC_LANG_PROGRAM(, [[return 0;]])],
6852 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6853 [AC_MSG_RESULT([no])])
6856 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6858 CFLAGS="$CFLAGS -Werror -mno-avx"
6859 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6861 if test "$HAVE_GCC_AVX" = "TRUE"; then
6862 AC_MSG_RESULT([yes])
6867 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6868 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6870 if (__sync_add_and_fetch(&v, 1) != 1 ||
6871 __sync_sub_and_fetch(&v, 1) != 0)
6873 __sync_synchronize();
6874 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6878 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6879 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6880 AC_MSG_RESULT([yes])
6881 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
6886 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
6888 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6891 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
6893 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
6894 AC_MSG_RESULT([yes])
6895 ], [AC_MSG_RESULT([no])])
6898 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
6900 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6903 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
6905 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
6906 AC_MSG_RESULT([yes])
6907 ], [AC_MSG_RESULT([no])])
6910 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
6912 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6914 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
6916 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
6917 AC_MSG_RESULT([yes])
6918 ], [AC_MSG_RESULT([no])])
6921 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
6923 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6926 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
6928 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
6929 AC_MSG_RESULT([yes])
6930 ], [AC_MSG_RESULT([no])])
6933 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
6935 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6938 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
6940 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
6941 AC_MSG_RESULT([yes])
6942 ], [AC_MSG_RESULT([no])])
6945 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
6947 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6949 void * f() { return __cxxabiv1::__cxa_get_globals(); }
6951 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
6952 AC_MSG_RESULT([yes])
6953 ], [AC_MSG_RESULT([no])])
6956 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
6958 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6960 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
6962 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
6963 AC_MSG_RESULT([yes])
6964 ], [AC_MSG_RESULT([no])])
6967 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
6969 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6971 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
6973 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
6974 AC_MSG_RESULT([yes])
6975 ], [AC_MSG_RESULT([no])])
6978 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
6980 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6983 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
6985 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
6986 AC_MSG_RESULT([yes])
6987 ], [AC_MSG_RESULT([no])])
6990 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
6992 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6995 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
6997 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
6998 AC_MSG_RESULT([yes])
6999 ], [AC_MSG_RESULT([no])])
7003 AC_SUBST(HAVE_GCC_AVX)
7004 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7005 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7007 dnl ===================================================================
7008 dnl Identify the C++ library
7009 dnl ===================================================================
7011 AC_MSG_CHECKING([what the C++ library is])
7013 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7019 [CPP_LIBRARY=GLIBCXX
7020 cpp_library_name="GNU libstdc++"
7022 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7024 #ifndef _LIBCPP_VERSION
7029 cpp_library_name="LLVM libc++"
7030 AC_DEFINE([HAVE_LIBCXX])
7032 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7039 cpp_library_name="Microsoft"
7041 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7042 AC_MSG_RESULT([$cpp_library_name])
7045 dnl ===================================================================
7047 dnl ===================================================================
7048 AC_PATH_PROG(GPERF, gperf)
7049 if test -z "$GPERF"; then
7050 AC_MSG_ERROR([gperf not found but needed. Install it.])
7052 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7053 GPERF=`cygpath -m $GPERF`
7055 AC_MSG_CHECKING([whether gperf is new enough])
7056 my_gperf_ver1=$($GPERF --version | head -n 1)
7057 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7058 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7059 if test "$my_gperf_ver3" -ge 301; then
7060 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7062 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7066 dnl ===================================================================
7067 dnl Check for system libcmis
7068 dnl ===================================================================
7069 # libcmis requires curl and we can't build curl for iOS
7070 if test $_os != iOS; then
7071 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
7076 AC_SUBST(ENABLE_LIBCMIS)
7078 dnl ===================================================================
7080 dnl ===================================================================
7082 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7084 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7085 if test "$with_latest_c__" = yes; then
7086 CXXFLAGS_CXX11=-std:c++latest
7088 CXXFLAGS_CXX11=-std:c++17
7090 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -Zc:__cplusplus"
7091 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7092 my_flags='-std=c++17 -std=c++1z'
7093 if test "$with_latest_c__" = yes; then
7094 my_flags="-std=c++20 -std=c++2a $my_flags"
7096 for flag in $my_flags; do
7097 if test "$COM" = MSC; then
7098 flag="-Xclang $flag"
7100 save_CXXFLAGS=$CXXFLAGS
7101 CXXFLAGS="$CXXFLAGS $flag -Werror"
7102 if test "$SYSTEM_LIBCMIS" = TRUE; then
7103 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7106 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7107 #include <algorithm>
7108 #include <functional>
7111 #if defined SYSTEM_LIBCMIS
7112 // See ucb/source/ucp/cmis/auth_provider.hxx:
7113 #if !defined __clang__
7114 #pragma GCC diagnostic push
7115 #pragma GCC diagnostic ignored "-Wdeprecated"
7116 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7118 #include <libcmis/libcmis.hxx>
7119 #if !defined __clang__
7120 #pragma GCC diagnostic pop
7124 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7125 std::sort(v.begin(), v.end(), fn);
7127 ]])],[CXXFLAGS_CXX11=$flag])
7129 CXXFLAGS=$save_CXXFLAGS
7130 if test -n "$CXXFLAGS_CXX11"; then
7135 if test -n "$CXXFLAGS_CXX11"; then
7136 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7140 AC_SUBST(CXXFLAGS_CXX11)
7142 if test "$GCC" = "yes"; then
7143 save_CXXFLAGS=$CXXFLAGS
7144 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7146 CXXFLAGS=$save_CXXFLAGS
7147 AC_SUBST(ATOMIC_LIB)
7150 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
7151 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
7152 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
7153 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
7154 dnl again towards 4.7.2:
7155 if test $CPP_LIBRARY = GLIBCXX; then
7156 AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
7158 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7160 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
7161 // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
7162 // GCC 4.7.0: 20120322
7163 // GCC 4.7.1: 20120614
7164 // and using a range check is not possible as the mapping between
7165 // __GLIBCXX__ values and GCC versions is not monotonic
7170 ]])], [AC_MSG_RESULT(no, ok)],
7171 [AC_MSG_ERROR(yes)])
7175 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7176 save_CXXFLAGS=$CXXFLAGS
7177 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7180 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7183 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7199 a thinga[]={{0,0}, {1,1}};
7200 b thingb[]={{0,0}, {1,1}};
7201 size_t i = sizeof(sal_n_array_size(thinga));
7202 size_t j = sizeof(sal_n_array_size(thingb));
7203 return !(i != 0 && j != 0);
7205 ], [ AC_MSG_RESULT(yes) ],
7206 [ AC_MSG_ERROR(no)])
7208 CXXFLAGS=$save_CXXFLAGS
7210 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7211 if test "$GCC" = yes; then
7212 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7214 save_CXXFLAGS=$CXXFLAGS
7215 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7216 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7217 CXXFLAGS=$save_CXXFLAGS
7219 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7220 AC_MSG_RESULT([yes])
7225 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7227 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
7228 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
7229 dnl from consteval constructor initializing const variable":
7231 save_CXXFLAGS=$CXXFLAGS
7232 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7233 AC_RUN_IFELSE([AC_LANG_PROGRAM([
7235 consteval S() { i = 1; }
7240 return (s.i == 1) ? 0 : 1;
7242 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
7243 AC_MSG_RESULT([yes])
7244 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
7245 CXXFLAGS=$save_CXXFLAGS
7248 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7250 save_CXXFLAGS=$CXXFLAGS
7251 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7252 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7253 #include <algorithm>
7254 #include <initializer_list>
7256 template<typename T> class S {
7260 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7262 constinit S<int> s{3, 2, 1};
7264 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7265 AC_MSG_RESULT([yes])
7266 ], [AC_MSG_RESULT([no])])
7267 CXXFLAGS=$save_CXXFLAGS
7270 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7272 save_CXXFLAGS=$CXXFLAGS
7273 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7274 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7276 #include <type_traits>
7277 // Don't check size_type directly, as it was called index_type before P1872R0:
7278 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7280 AC_DEFINE([HAVE_CPP_SPAN],[1])
7281 AC_MSG_RESULT([yes])
7282 ], [AC_MSG_RESULT([no])])
7283 CXXFLAGS=$save_CXXFLAGS
7286 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7288 save_CXXFLAGS=$CXXFLAGS
7289 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7290 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7291 struct S1 { S1(S1 &&); };
7293 S1 f(S2 s) { return s; }
7295 AC_DEFINE([HAVE_P1155R3],[1])
7296 AC_MSG_RESULT([yes])
7297 ], [AC_MSG_RESULT([no])])
7298 CXXFLAGS=$save_CXXFLAGS
7301 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7302 dnl which is included in -Wextra anyway):
7303 HAVE_WDEPRECATED_COPY_DTOR=
7304 if test "$GCC" = yes; then
7305 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7307 save_CXXFLAGS=$CXXFLAGS
7308 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7309 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7310 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7311 AC_MSG_RESULT([yes])
7312 ], [AC_MSG_RESULT([no])])
7313 CXXFLAGS=$save_CXXFLAGS
7316 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7318 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7319 dnl uninitialized warning for code like
7322 dnl boost::optional<OString> * g(bool b) {
7323 dnl boost::optional<OString> o;
7325 dnl return new boost::optional<OString>(o);
7328 dnl (as is e.g. present, in a slightly more elaborate form, in
7329 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7330 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7331 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7332 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7333 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7335 save_CXXFLAGS=$CXXFLAGS
7336 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7337 if test "$ENABLE_OPTIMIZED" = TRUE; then
7338 CXXFLAGS="$CXXFLAGS -O2"
7340 CXXFLAGS="$CXXFLAGS -O0"
7342 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7351 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7352 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7358 char stg[sizeof (S1)];
7366 ]])], [AC_MSG_RESULT([no])], [
7367 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7368 AC_MSG_RESULT([yes])
7370 CXXFLAGS=$save_CXXFLAGS
7373 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7375 dnl ===================================================================
7376 dnl CPU Intrinsics support - SSE, AVX
7377 dnl ===================================================================
7379 CXXFLAGS_INTRINSICS_SSE2=
7380 CXXFLAGS_INTRINSICS_SSSE3=
7381 CXXFLAGS_INTRINSICS_SSE41=
7382 CXXFLAGS_INTRINSICS_SSE42=
7383 CXXFLAGS_INTRINSICS_AVX=
7384 CXXFLAGS_INTRINSICS_AVX2=
7385 CXXFLAGS_INTRINSICS_AVX512=
7386 CXXFLAGS_INTRINSICS_F16C=
7387 CXXFLAGS_INTRINSICS_FMA=
7389 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7390 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7397 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7401 # https://docs.microsoft.com/en-us/cpp/build/reference/arch-x86
7402 # MSVC seems to differentiate only between SSE and SSE2, where in fact
7403 # SSE2 seems to be SSE2+.
7404 # Even if -arch:SSE2 is the default, set it explicitly, so that the variable
7405 # is not empty (and can be tested in gbuild).
7406 flag_sse2=-arch:SSE2
7407 flag_ssse3=-arch:SSE2
7408 flag_sse41=-arch:SSE2
7409 flag_sse42=-arch:SSE2
7411 flag_avx2=-arch:AVX2
7412 flag_avx512=-arch:AVX512
7413 # These are part of -arch:AVX2
7414 flag_f16c=-arch:AVX2
7418 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7420 save_CXXFLAGS=$CXXFLAGS
7421 CXXFLAGS="$CXXFLAGS $flag_sse2"
7422 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7423 #include <emmintrin.h>
7425 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7426 c = _mm_xor_si128 (a, b);
7430 [can_compile_sse2=yes],
7431 [can_compile_sse2=no])
7433 CXXFLAGS=$save_CXXFLAGS
7434 AC_MSG_RESULT([${can_compile_sse2}])
7435 if test "${can_compile_sse2}" = "yes" ; then
7436 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7439 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7441 save_CXXFLAGS=$CXXFLAGS
7442 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7443 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7444 #include <tmmintrin.h>
7446 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7447 c = _mm_maddubs_epi16 (a, b);
7451 [can_compile_ssse3=yes],
7452 [can_compile_ssse3=no])
7454 CXXFLAGS=$save_CXXFLAGS
7455 AC_MSG_RESULT([${can_compile_ssse3}])
7456 if test "${can_compile_ssse3}" = "yes" ; then
7457 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7460 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7462 save_CXXFLAGS=$CXXFLAGS
7463 CXXFLAGS="$CXXFLAGS $flag_sse41"
7464 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7465 #include <smmintrin.h>
7467 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7468 c = _mm_cmpeq_epi64 (a, b);
7472 [can_compile_sse41=yes],
7473 [can_compile_sse41=no])
7475 CXXFLAGS=$save_CXXFLAGS
7476 AC_MSG_RESULT([${can_compile_sse41}])
7477 if test "${can_compile_sse41}" = "yes" ; then
7478 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7481 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7483 save_CXXFLAGS=$CXXFLAGS
7484 CXXFLAGS="$CXXFLAGS $flag_sse42"
7485 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7486 #include <nmmintrin.h>
7488 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7489 c = _mm_cmpgt_epi64 (a, b);
7493 [can_compile_sse42=yes],
7494 [can_compile_sse42=no])
7496 CXXFLAGS=$save_CXXFLAGS
7497 AC_MSG_RESULT([${can_compile_sse42}])
7498 if test "${can_compile_sse42}" = "yes" ; then
7499 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7502 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7504 save_CXXFLAGS=$CXXFLAGS
7505 CXXFLAGS="$CXXFLAGS $flag_avx"
7506 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7507 #include <immintrin.h>
7509 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7510 c = _mm256_xor_ps(a, b);
7514 [can_compile_avx=yes],
7515 [can_compile_avx=no])
7517 CXXFLAGS=$save_CXXFLAGS
7518 AC_MSG_RESULT([${can_compile_avx}])
7519 if test "${can_compile_avx}" = "yes" ; then
7520 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7523 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7525 save_CXXFLAGS=$CXXFLAGS
7526 CXXFLAGS="$CXXFLAGS $flag_avx2"
7527 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7528 #include <immintrin.h>
7530 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7531 c = _mm256_maddubs_epi16(a, b);
7535 [can_compile_avx2=yes],
7536 [can_compile_avx2=no])
7538 CXXFLAGS=$save_CXXFLAGS
7539 AC_MSG_RESULT([${can_compile_avx2}])
7540 if test "${can_compile_avx2}" = "yes" ; then
7541 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7544 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7546 save_CXXFLAGS=$CXXFLAGS
7547 CXXFLAGS="$CXXFLAGS $flag_avx512"
7548 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7549 #include <immintrin.h>
7551 __m512i a = _mm512_loadu_si512(0);
7555 [can_compile_avx512=yes],
7556 [can_compile_avx512=no])
7558 CXXFLAGS=$save_CXXFLAGS
7559 AC_MSG_RESULT([${can_compile_avx512}])
7560 if test "${can_compile_avx512}" = "yes" ; then
7561 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
7564 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
7566 save_CXXFLAGS=$CXXFLAGS
7567 CXXFLAGS="$CXXFLAGS $flag_f16c"
7568 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7569 #include <immintrin.h>
7571 __m128i a = _mm_set1_epi32 (0);
7573 c = _mm_cvtph_ps(a);
7577 [can_compile_f16c=yes],
7578 [can_compile_f16c=no])
7580 CXXFLAGS=$save_CXXFLAGS
7581 AC_MSG_RESULT([${can_compile_f16c}])
7582 if test "${can_compile_f16c}" = "yes" ; then
7583 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
7586 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
7588 save_CXXFLAGS=$CXXFLAGS
7589 CXXFLAGS="$CXXFLAGS $flag_fma"
7590 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7591 #include <immintrin.h>
7593 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
7594 d = _mm256_fmadd_ps(a, b, c);
7598 [can_compile_fma=yes],
7599 [can_compile_fma=no])
7601 CXXFLAGS=$save_CXXFLAGS
7602 AC_MSG_RESULT([${can_compile_fma}])
7603 if test "${can_compile_fma}" = "yes" ; then
7604 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
7607 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
7608 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
7609 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
7610 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
7611 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
7612 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
7613 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
7614 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
7615 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
7617 dnl ===================================================================
7618 dnl system stl sanity tests
7619 dnl ===================================================================
7620 if test "$_os" != "WINNT"; then
7624 save_CPPFLAGS="$CPPFLAGS"
7625 if test -n "$MACOSX_SDK_PATH"; then
7626 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7629 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7631 if test "$CPP_LIBRARY" = GLIBCXX; then
7632 dnl gcc#19664, gcc#22482, rhbz#162935
7633 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7634 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7635 AC_MSG_RESULT([$stlvisok])
7636 if test "$stlvisok" = "no"; then
7637 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7641 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7642 # when we don't make any dynamic libraries?
7643 if test "$DISABLE_DYNLOADING" = ""; then
7644 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7645 cat > conftestlib1.cc <<_ACEOF
7646 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7647 struct S2: S1<int> { virtual ~S2(); };
7650 cat > conftestlib2.cc <<_ACEOF
7651 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7652 struct S2: S1<int> { virtual ~S2(); };
7653 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7655 gccvisinlineshiddenok=yes
7656 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7657 gccvisinlineshiddenok=no
7659 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7660 dnl known to not work with -z defs (unsetting which makes the test
7662 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7663 if test "$COM_IS_CLANG" = TRUE; then
7664 for i in $CXX $CXXFLAGS; do
7667 my_linkflagsnoundefs=
7673 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7674 gccvisinlineshiddenok=no
7679 AC_MSG_RESULT([$gccvisinlineshiddenok])
7680 if test "$gccvisinlineshiddenok" = "no"; then
7681 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7685 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7686 cat >visibility.cxx <<_ACEOF
7687 #pragma GCC visibility push(hidden)
7688 struct __attribute__ ((visibility ("default"))) TestStruct {
7691 __attribute__ ((visibility ("default"))) void TestFunc() {
7695 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7700 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7703 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7715 rm -f visibility.s visibility.cxx
7717 AC_MSG_RESULT([$gccvisbroken])
7718 if test "$gccvisbroken" = "yes"; then
7719 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7722 CPPFLAGS="$save_CPPFLAGS"
7727 dnl ===================================================================
7729 dnl ===================================================================
7731 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7732 if test "$GCC" = "yes"; then
7733 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7735 save_CXXFLAGS=$CXXFLAGS
7736 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7737 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7738 CXXFLAGS=$save_CXXFLAGS
7740 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7741 AC_MSG_RESULT([yes])
7746 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7748 dnl ===================================================================
7749 dnl Compiler plugins
7750 dnl ===================================================================
7753 # currently only Clang
7755 if test "$COM_IS_CLANG" != "TRUE"; then
7756 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7757 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7758 enable_compiler_plugins=no
7762 COMPILER_PLUGINS_COM_IS_CLANG=
7763 if test "$COM_IS_CLANG" = "TRUE"; then
7764 if test -n "$enable_compiler_plugins"; then
7765 compiler_plugins="$enable_compiler_plugins"
7766 elif test -n "$ENABLE_DBGUTIL"; then
7767 compiler_plugins=test
7771 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7772 if test "$CLANGVER" -lt 50002; then
7773 if test "$compiler_plugins" = yes; then
7774 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7780 if test "$compiler_plugins" != "no"; then
7781 dnl The prefix where Clang resides, override to where Clang resides if
7782 dnl using a source build:
7783 if test -z "$CLANGDIR"; then
7784 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | head -n 1)))))
7786 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7787 if test -z "$COMPILER_PLUGINS_CXX"; then
7788 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7790 clangbindir=$CLANGDIR/bin
7791 if test "$build_os" = "cygwin"; then
7792 clangbindir=$(cygpath -u "$clangbindir")
7794 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
7795 if test -n "$LLVM_CONFIG"; then
7796 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
7797 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
7798 if test -z "$CLANGLIBDIR"; then
7799 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
7801 # Try if clang is built from source (in which case its includes are not together with llvm includes).
7802 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
7803 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
7804 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
7805 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
7807 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
7808 clangobjdir=$($LLVM_CONFIG --obj-root)
7809 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
7810 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
7813 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
7817 save_CPPFLAGS=$CPPFLAGS
7818 save_CXXFLAGS=$CXXFLAGS
7819 save_LDFLAGS=$LDFLAGS
7821 CXX=$COMPILER_PLUGINS_CXX
7822 CXXCPP="$COMPILER_PLUGINS_CXX -E"
7823 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7824 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7825 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
7826 [COMPILER_PLUGINS=TRUE],
7828 if test "$compiler_plugins" = "yes"; then
7829 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
7831 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
7832 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
7835 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
7836 dnl comment in compilerplugins/Makefile-clang.mk:
7837 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
7839 AC_MSG_CHECKING([for clang libraries to use])
7840 if test -z "$CLANGTOOLLIBS"; then
7841 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
7842 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
7844 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7845 [[ clang::FullSourceLoc().dump(); ]])
7846 ],[CLANGTOOLLIBS="$LIBS"],[])
7848 if test -z "$CLANGTOOLLIBS"; then
7849 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
7851 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7852 [[ clang::FullSourceLoc().dump(); ]])
7853 ],[CLANGTOOLLIBS="$LIBS"],[])
7855 AC_MSG_RESULT([$CLANGTOOLLIBS])
7856 if test -z "$CLANGTOOLLIBS"; then
7857 if test "$compiler_plugins" = "yes"; then
7858 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
7860 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
7861 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
7865 if test -n "$COMPILER_PLUGINS"; then
7866 if test -z "$CLANGSYSINCLUDE"; then
7867 if test -n "$LLVM_CONFIG"; then
7868 # Path to the clang system headers (no idea if there's a better way to get it).
7869 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
7876 CPPFLAGS=$save_CPPFLAGS
7877 CXXFLAGS=$save_CXXFLAGS
7878 LDFLAGS=$save_LDFLAGS
7882 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
7883 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7889 [AC_MSG_RESULT([yes])
7890 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
7891 [AC_MSG_RESULT([no])])
7892 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7895 if test "$enable_compiler_plugins" = "yes"; then
7896 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
7899 COMPILER_PLUGINS_ANALYZER_PCH=
7900 if test "$enable_compiler_plugins_analyzer_pch" != no; then
7901 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
7903 AC_SUBST(COMPILER_PLUGINS)
7904 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
7905 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
7906 AC_SUBST(COMPILER_PLUGINS_CXX)
7907 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
7908 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
7909 AC_SUBST(COMPILER_PLUGINS_DEBUG)
7910 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
7912 AC_SUBST(CLANGLIBDIR)
7913 AC_SUBST(CLANGTOOLLIBS)
7914 AC_SUBST(CLANGSYSINCLUDE)
7916 # Plugin to help linker.
7917 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
7918 # This makes --enable-lto build with clang work.
7921 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
7922 AC_SUBST(HAVE_POSIX_FALLOCATE)
7924 JITC_PROCESSOR_TYPE=""
7925 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
7926 # IBMs JDK needs this...
7927 JITC_PROCESSOR_TYPE=6
7928 export JITC_PROCESSOR_TYPE
7930 AC_SUBST([JITC_PROCESSOR_TYPE])
7932 # Misc Windows Stuff
7933 AC_ARG_WITH(ucrt-dir,
7934 AS_HELP_STRING([--with-ucrt-dir],
7935 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
7936 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
7937 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
7938 Windows6.1-KB2999226-x64.msu
7939 Windows6.1-KB2999226-x86.msu
7940 Windows8.1-KB2999226-x64.msu
7941 Windows8.1-KB2999226-x86.msu
7942 Windows8-RT-KB2999226-x64.msu
7943 Windows8-RT-KB2999226-x86.msu
7944 A zip archive including those files is available from Microsoft site:
7945 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
7948 UCRT_REDISTDIR="$with_ucrt_dir"
7949 if test $_os = "WINNT"; then
7951 for i in $PKGFORMAT; do
7952 if test "$i" = msi; then
7957 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
7958 MSVC_DLLS="$msvcdlls"
7959 test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
7960 # MSVC 15.3 changed it to VC141
7961 if echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
7962 SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
7963 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
7964 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
7966 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
7969 if test "$UCRT_REDISTDIR" = "no"; then
7970 dnl explicitly disabled
7973 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
7974 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
7975 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
7976 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
7977 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
7978 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
7980 if test -n "$PKGFORMAT"; then
7981 for i in $PKGFORMAT; do
7984 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
7985 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
7994 AC_SUBST(UCRT_REDISTDIR)
7995 AC_SUBST(MSVC_DLL_PATH)
7999 dnl ===================================================================
8001 dnl ===================================================================
8002 if test "$ENABLE_JAVA" != ""; then
8004 # Windows-specific tests
8005 if test "$build_os" = "cygwin"; then
8006 if test -z "$with_jdk_home"; then
8007 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8008 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8009 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8010 if test -n "$regvalue"; then
8012 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8013 reg_jdk_home=$regvalue
8016 if test -f "$reg_jdk_home/lib/jvm.lib" -a -f "$reg_jdk_home/bin/java.exe"; then
8017 with_jdk_home="$reg_jdk_home"
8018 howfound="found automatically"
8020 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option pointing to a $WIN_HOST_BITS-bit JDK >= 9])
8023 test "$build_os" = "cygwin" && with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8024 howfound="you passed"
8028 # 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.
8029 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8030 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8031 with_jdk_home=`/usr/libexec/java_home`
8034 JAVA_HOME=; export JAVA_HOME
8035 if test -z "$with_jdk_home"; then
8036 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8038 _java_path="$with_jdk_home/bin/$with_java"
8039 dnl Check if there is a Java interpreter at all.
8040 if test -x "$_java_path"; then
8041 JAVAINTERPRETER=$_java_path
8043 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8047 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8048 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8049 dnl loaded by java to run JunitTests:
8050 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8051 shortjdkhome=`cygpath -d "$with_jdk_home"`
8052 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
8053 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8054 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8055 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
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])
8060 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8061 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8063 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8064 elif test "$cross_compiling" != "yes"; then
8066 AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8067 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8068 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8069 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8072 *) # assumption: everything else 32-bit
8073 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8074 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8075 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8082 dnl ===================================================================
8084 dnl ===================================================================
8086 # Whether all the complexity here actually is needed any more or not, no idea.
8088 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8090 AC_MSG_CHECKING([the installed JDK])
8091 if test -n "$JAVAINTERPRETER"; then
8092 dnl java -version sends output to stderr!
8093 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8094 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8095 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8096 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8097 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8098 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8099 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8100 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8104 dnl Sun JDK specific tests
8105 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8106 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8108 if test "$_jdk_ver" -lt 10900; then
8109 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8111 if test "$_jdk_ver" -gt 10900; then
8112 JAVA_CLASSPATH_NOT_SET=TRUE
8115 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8116 if test "$_os" = "WINNT"; then
8117 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8119 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8121 # set to limit VM usage for JunitTests
8123 # set to limit VM usage for javac
8124 JAVACFLAGS=-J-Xmx128M
8127 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8130 if test -z "$ENABLE_JAVA"; then
8134 elif test "$cross_compiling" = "yes"; then
8135 # Just assume compatibility of build and host JDK
8137 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8141 dnl ===================================================================
8142 dnl Checks for javac
8143 dnl ===================================================================
8144 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8145 javacompiler="javac"
8146 : ${JAVA_SOURCE_VER=8}
8147 : ${JAVA_TARGET_VER=8}
8148 if test -z "$with_jdk_home"; then
8149 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8151 _javac_path="$with_jdk_home/bin/$javacompiler"
8152 dnl Check if there is a Java compiler at all.
8153 if test -x "$_javac_path"; then
8154 JAVACOMPILER=$_javac_path
8157 if test -z "$JAVACOMPILER"; then
8158 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8160 if test "$build_os" = "cygwin"; then
8161 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8162 JAVACOMPILER="${JAVACOMPILER}.exe"
8164 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8168 dnl ===================================================================
8169 dnl Checks for javadoc
8170 dnl ===================================================================
8171 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8172 if test -z "$with_jdk_home"; then
8173 AC_PATH_PROG(JAVADOC, javadoc)
8175 _javadoc_path="$with_jdk_home/bin/javadoc"
8176 dnl Check if there is a javadoc at all.
8177 if test -x "$_javadoc_path"; then
8178 JAVADOC=$_javadoc_path
8180 AC_PATH_PROG(JAVADOC, javadoc)
8183 if test -z "$JAVADOC"; then
8184 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8186 if test "$build_os" = "cygwin"; then
8187 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8188 JAVADOC="${JAVADOC}.exe"
8190 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8193 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8194 JAVADOCISGJDOC="yes"
8198 AC_SUBST(JAVADOCISGJDOC)
8200 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8201 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8202 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8203 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8204 # try to recover first by looking whether we have an alternative
8205 # system as in Debian or newer SuSEs where following /usr/bin/javac
8206 # over /etc/alternatives/javac leads to the right bindir where we
8207 # just need to strip a bit away to get a valid JAVA_HOME
8208 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8209 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8210 # maybe only one level of symlink (e.g. on Mac)
8211 JAVA_HOME=$(readlink $JAVACOMPILER)
8212 if test "$(dirname $JAVA_HOME)" = "."; then
8213 # we've got no path to trim back
8218 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8219 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8220 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8221 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8223 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8224 if test "$JAVA_HOME" != "/usr"; then
8225 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8226 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8227 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8228 dnl Tiger already returns a JDK path...
8229 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8231 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8232 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8233 dnl that checks which version to run
8234 if test -f "$JAVA_HOME"; then
8235 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8240 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8242 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8243 if test -z "$JAVA_HOME"; then
8244 if test "x$with_jdk_home" = "x"; then
8245 cat > findhome.java <<_ACEOF
8246 [import java.io.File;
8250 public static void main(String args[])
8252 String jrelocation = System.getProperty("java.home");
8253 File jre = new File(jrelocation);
8254 System.out.println(jre.getParent());
8258 AC_MSG_CHECKING([if javac works])
8259 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8260 AC_TRY_EVAL(javac_cmd)
8261 if test $? = 0 -a -f ./findhome.class; then
8262 AC_MSG_RESULT([javac works])
8264 echo "configure: javac test failed" >&5
8265 cat findhome.java >&5
8266 AC_MSG_ERROR([javac does not work - java projects will not build!])
8268 AC_MSG_CHECKING([if gij knows its java.home])
8269 JAVA_HOME=`$JAVAINTERPRETER findhome`
8270 if test $? = 0 -a "$JAVA_HOME" != ""; then
8271 AC_MSG_RESULT([$JAVA_HOME])
8273 echo "configure: java test failed" >&5
8274 cat findhome.java >&5
8275 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8277 # clean-up after ourselves
8278 rm -f ./findhome.java ./findhome.class
8280 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8284 # now check if $JAVA_HOME is really valid
8285 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8286 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8287 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8288 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8289 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8290 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8291 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8292 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8295 PathFormat "$JAVA_HOME"
8296 JAVA_HOME="$formatted_path"
8299 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8302 AC_MSG_CHECKING([for JAWT lib])
8303 if test "$_os" = WINNT; then
8304 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8309 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8310 JAVA_ARCH=$my_java_arch
8325 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8326 JAVA_ARCH=$my_java_arch
8329 my_java_arch=sparcv9
8335 my_java_arch=$host_cpu
8338 # This is where JDK9 puts the library
8339 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8340 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8342 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8344 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8346 AC_MSG_RESULT([$JAWTLIB])
8350 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8354 JAVAINC="-I$JAVA_HOME/include"
8355 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8356 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8360 JAVAINC="-I$JAVA_HOME/include/win32"
8361 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8365 if test -d "$JAVA_HOME/include/darwin"; then
8366 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8368 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8373 JAVAINC="-I$JAVA_HOME/include"
8374 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8378 JAVAINC="-I$JAVA_HOME/include"
8379 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8380 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8381 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8382 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8386 JAVAINC="-I$JAVA_HOME/include"
8387 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8388 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8392 JAVAINC="-I$JAVA_HOME/include"
8393 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8394 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8398 JAVAINC="-I$JAVA_HOME/include"
8399 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8400 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8404 JAVAINC="-I$JAVA_HOME/include"
8405 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8406 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8410 JAVAINC="-I$JAVA_HOME/include"
8411 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8412 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8416 SOLARINC="$SOLARINC $JAVAINC"
8418 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8419 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8420 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8424 AC_SUBST(JAVACFLAGS)
8425 AC_SUBST(JAVACOMPILER)
8426 AC_SUBST(JAVAINTERPRETER)
8427 AC_SUBST(JAVAIFLAGS)
8428 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8429 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8431 AC_SUBST(JAVA_HOME_FOR_BUILD)
8433 AC_SUBST(JDK_FOR_BUILD)
8434 AC_SUBST(JAVA_SOURCE_VER)
8435 AC_SUBST(JAVA_TARGET_VER)
8438 dnl ===================================================================
8439 dnl Export file validation
8440 dnl ===================================================================
8441 AC_MSG_CHECKING([whether to enable export file validation])
8442 if test "$with_export_validation" != "no"; then
8443 if test -z "$ENABLE_JAVA"; then
8444 if test "$with_export_validation" = "yes"; then
8445 AC_MSG_ERROR([requested, but Java is disabled])
8447 AC_MSG_RESULT([no, as Java is disabled])
8449 elif ! test -d "${SRC_ROOT}/schema"; then
8450 if test "$with_export_validation" = "yes"; then
8451 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8453 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8456 AC_MSG_RESULT([yes])
8457 AC_DEFINE(HAVE_EXPORT_VALIDATION)
8459 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8460 if test -z "$ODFVALIDATOR"; then
8461 # remember to download the ODF toolkit with validator later
8462 AC_MSG_NOTICE([no odfvalidator found, will download it])
8463 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8464 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8466 # and fetch name of odfvalidator jar name from download.lst
8467 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8468 AC_SUBST(ODFVALIDATOR_JAR)
8470 if test -z "$ODFVALIDATOR_JAR"; then
8471 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8474 if test "$build_os" = "cygwin"; then
8475 # In case of Cygwin it will be executed from Windows,
8476 # so we need to run bash and absolute path to validator
8477 # so instead of "odfvalidator" it will be
8478 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8479 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8481 ODFVALIDATOR="sh $ODFVALIDATOR"
8483 AC_SUBST(ODFVALIDATOR)
8486 AC_PATH_PROGS(OFFICEOTRON, officeotron)
8487 if test -z "$OFFICEOTRON"; then
8488 # remember to download the officeotron with validator later
8489 AC_MSG_NOTICE([no officeotron found, will download it])
8490 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8491 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8493 # and fetch name of officeotron jar name from download.lst
8494 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8495 AC_SUBST(OFFICEOTRON_JAR)
8497 if test -z "$OFFICEOTRON_JAR"; then
8498 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8501 # check version of existing officeotron
8502 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8503 if test 0"$OFFICEOTRON_VER" -lt 704; then
8504 AC_MSG_ERROR([officeotron too old])
8507 if test "$build_os" = "cygwin"; then
8508 # In case of Cygwin it will be executed from Windows,
8509 # so we need to run bash and absolute path to validator
8510 # so instead of "odfvalidator" it will be
8511 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8512 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8514 OFFICEOTRON="sh $OFFICEOTRON"
8517 AC_SUBST(OFFICEOTRON)
8522 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8523 if test "$with_bffvalidator" != "no"; then
8524 AC_DEFINE(HAVE_BFFVALIDATOR)
8526 if test "$with_export_validation" = "no"; then
8527 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
8530 if test "$with_bffvalidator" = "yes"; then
8531 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
8533 BFFVALIDATOR="$with_bffvalidator"
8536 if test "$build_os" = "cygwin"; then
8537 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
8538 AC_MSG_RESULT($BFFVALIDATOR)
8540 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8542 elif test -n "$BFFVALIDATOR"; then
8543 # We are not in Cygwin but need to run Windows binary with wine
8544 AC_PATH_PROGS(WINE, wine)
8546 # so swap in a shell wrapper that converts paths transparently
8547 BFFVALIDATOR_EXE="$BFFVALIDATOR"
8548 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
8549 AC_SUBST(BFFVALIDATOR_EXE)
8550 AC_MSG_RESULT($BFFVALIDATOR)
8552 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
8554 AC_SUBST(BFFVALIDATOR)
8559 dnl ===================================================================
8560 dnl Check for C preprocessor to use
8561 dnl ===================================================================
8562 AC_MSG_CHECKING([which C preprocessor to use in idlc])
8563 if test -n "$with_idlc_cpp"; then
8564 AC_MSG_RESULT([$with_idlc_cpp])
8565 AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
8567 AC_MSG_RESULT([ucpp])
8568 AC_MSG_CHECKING([which ucpp tp use])
8569 if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
8570 AC_MSG_RESULT([external])
8571 AC_PATH_PROG(SYSTEM_UCPP, ucpp)
8573 AC_MSG_RESULT([internal])
8574 BUILD_TYPE="$BUILD_TYPE UCPP"
8577 AC_SUBST(SYSTEM_UCPP)
8579 dnl ===================================================================
8580 dnl Check for epm (not needed for Windows)
8581 dnl ===================================================================
8582 AC_MSG_CHECKING([whether to enable EPM for packing])
8583 if test "$enable_epm" = "yes"; then
8584 AC_MSG_RESULT([yes])
8585 if test "$_os" != "WINNT"; then
8586 if test $_os = Darwin; then
8588 elif test -n "$with_epm"; then
8591 AC_PATH_PROG(EPM, epm, no)
8593 if test "$EPM" = "no" -o "$EPM" = "internal"; then
8594 AC_MSG_NOTICE([EPM will be built.])
8595 BUILD_TYPE="$BUILD_TYPE EPM"
8596 EPM=${WORKDIR}/UnpackedTarball/epm/epm
8598 # Gentoo has some epm which is something different...
8599 AC_MSG_CHECKING([whether the found epm is the right epm])
8600 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8601 AC_MSG_RESULT([yes])
8603 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8605 AC_MSG_CHECKING([epm version])
8606 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8607 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8608 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8609 AC_MSG_RESULT([OK, >= 3.7])
8611 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8612 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8617 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8618 AC_MSG_CHECKING([for rpm])
8619 for a in "$RPM" rpmbuild rpm; do
8620 $a --usage >/dev/null 2> /dev/null
8621 if test $? -eq 0; then
8625 $a --version >/dev/null 2> /dev/null
8626 if test $? -eq 0; then
8632 if test -z "$RPM"; then
8633 AC_MSG_ERROR([not found])
8634 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8635 RPM_PATH=`which $RPM`
8636 AC_MSG_RESULT([$RPM_PATH])
8637 SCPDEFS="$SCPDEFS -DWITH_RPM"
8639 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8642 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8643 AC_PATH_PROG(DPKG, dpkg, no)
8644 if test "$DPKG" = "no"; then
8645 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8648 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8649 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8650 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8651 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8652 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8653 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8654 AC_MSG_RESULT([yes])
8657 if echo "$PKGFORMAT" | $GREP -q rpm; then
8659 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8660 add_warning "the rpms will need to be installed with --nodeps"
8664 AC_MSG_WARN([the ${_pt}s will not be relocatable])
8665 add_warning "the ${_pt}s will not be relocatable"
8666 AC_MSG_WARN([if you want to make sure installation without --nodeps and
8667 relocation will work, you need to patch your epm with the
8668 patch in epm/epm-3.7.patch or build with
8669 --with-epm=internal which will build a suitable epm])
8674 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8675 AC_PATH_PROG(PKGMK, pkgmk, no)
8676 if test "$PKGMK" = "no"; then
8677 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8684 for i in $PKGFORMAT; do
8686 aix | bsd | deb | pkg | rpm | native | portable)
8688 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8698 if test "$enable_lotuswordpro" = "yes"; then
8701 AC_SUBST(ENABLE_LWP)
8703 dnl ===================================================================
8704 dnl Check for building ODK
8705 dnl ===================================================================
8706 if test "$enable_odk" = no; then
8709 if test "$with_doxygen" = no; then
8710 AC_MSG_CHECKING([for doxygen])
8714 if test "$with_doxygen" = yes; then
8715 AC_PATH_PROG([DOXYGEN], [doxygen])
8716 if test -z "$DOXYGEN"; then
8717 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8719 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8720 if ! dot -V 2>/dev/null; then
8721 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8725 AC_MSG_CHECKING([for doxygen])
8726 DOXYGEN=$with_doxygen
8727 AC_MSG_RESULT([$DOXYGEN])
8729 if test -n "$DOXYGEN"; then
8730 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8731 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8732 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8733 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8740 AC_MSG_CHECKING([whether to build the ODK])
8741 if test "$enable_odk" = "" -o "$enable_odk" != "no"; then
8742 AC_MSG_RESULT([yes])
8744 if test "$with_java" != "no"; then
8745 AC_MSG_CHECKING([whether to build unowinreg.dll])
8746 if test "$_os" = "WINNT" -a "$enable_build_unowinreg" = ""; then
8747 # build on Win by default
8748 enable_build_unowinreg=yes
8750 if test "$enable_build_unowinreg" = "" -o "$enable_build_unowinreg" = "no"; then
8754 AC_MSG_RESULT([yes])
8755 BUILD_UNOWINREG=TRUE
8757 if test "$_os" != "WINNT" -a "$BUILD_UNOWINREG" = "TRUE"; then
8758 if test -z "$with_mingw_cross_compiler"; then
8760 AC_CHECK_PROGS(MINGWCXX,i386-mingw32msvc-g++ i586-pc-mingw32-g++ i686-pc-mingw32-g++ i686-w64-mingw32-g++,false)
8761 elif test -x "$with_mingw_cross_compiler"; then
8762 MINGWCXX="$with_mingw_cross_compiler"
8764 AC_CHECK_TOOL(MINGWCXX, "$with_mingw_cross_compiler", false)
8767 if test "$MINGWCXX" = "false"; then
8768 AC_MSG_ERROR([MinGW32 C++ cross-compiler not found.])
8771 mingwstrip_test="`echo $MINGWCXX | $SED -e s/g++/strip/`"
8772 if test -x "$mingwstrip_test"; then
8773 MINGWSTRIP="$mingwstrip_test"
8775 AC_CHECK_TOOL(MINGWSTRIP, "$mingwstrip_test", false)
8778 if test "$MINGWSTRIP" = "false"; then
8779 AC_MSG_ERROR(MinGW32 binutils not found.)
8783 BUILD_TYPE="$BUILD_TYPE ODK"
8788 AC_SUBST(BUILD_UNOWINREG)
8790 AC_SUBST(MINGWSTRIP)
8792 dnl ===================================================================
8793 dnl Check for system zlib
8794 dnl ===================================================================
8795 if test "$with_system_zlib" = "auto"; then
8798 with_system_zlib="$with_system_libs"
8801 if test "$enable_fuzzers" != "yes"; then
8802 with_system_zlib=yes
8810 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8811 dnl and has no pkg-config for it at least on some tinderboxes,
8812 dnl so leaving that out for now
8813 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8814 AC_MSG_CHECKING([which zlib to use])
8815 if test "$with_system_zlib" = "yes"; then
8816 AC_MSG_RESULT([external])
8818 AC_CHECK_HEADER(zlib.h, [],
8819 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8820 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8821 [AC_MSG_ERROR(zlib not found or functional)], [])
8823 AC_MSG_RESULT([internal])
8825 BUILD_TYPE="$BUILD_TYPE ZLIB"
8826 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
8827 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
8829 AC_SUBST(ZLIB_CFLAGS)
8831 AC_SUBST(SYSTEM_ZLIB)
8833 dnl ===================================================================
8834 dnl Check for system jpeg
8835 dnl ===================================================================
8836 AC_MSG_CHECKING([which libjpeg to use])
8837 if test "$with_system_jpeg" = "yes"; then
8838 AC_MSG_RESULT([external])
8840 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
8841 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
8842 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
8843 [AC_MSG_ERROR(jpeg library not found or functional)], [])
8846 AC_MSG_RESULT([internal, libjpeg-turbo])
8847 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
8848 LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo"
8849 if test "$COM" = "MSC"; then
8850 LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib"
8852 LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg"
8856 x86_64 | amd64 | i*86 | x86 | ia32)
8857 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
8858 if test -z "$NASM" -a "$build_os" = "cygwin"; then
8859 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
8860 NASM="$LODE_HOME/opt/bin/nasm"
8861 elif test -x "/opt/lo/bin/nasm"; then
8862 NASM="/opt/lo/bin/nasm"
8866 if test -n "$NASM"; then
8867 AC_MSG_CHECKING([for object file format of host system])
8869 cygwin* | mingw* | pw32* | wsl*)
8879 msdosdjgpp* | go32*)
8882 os2-emx*) # not tested
8883 objfmt='MSOMF' # obj
8885 linux*coff* | linux*oldld*)
8901 kfreebsd* | freebsd* | netbsd* | openbsd*)
8902 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
8915 solaris* | sunos* | sysv* | sco*)
8925 darwin* | rhapsody* | nextstep* | openstep* | macos*)
8940 AC_MSG_RESULT([$objfmt])
8941 if test "$objfmt" = 'ELF ?'; then
8943 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
8946 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
8948 MSOMF) NAFLAGS='-fobj -DOBJ32';;
8949 Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
8950 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
8951 COFF) NAFLAGS='-fcoff -DCOFF';;
8952 a.out) NAFLAGS='-faout -DAOUT';;
8953 BSD-a.out) NAFLAGS='-faoutb -DAOUT';;
8954 ELF) NAFLAGS='-felf -DELF';;
8955 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__';;
8956 RDF) NAFLAGS='-frdf -DRDF';;
8957 Mach-O) NAFLAGS='-fmacho -DMACHO';;
8958 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
8960 AC_MSG_RESULT([$NAFLAGS])
8962 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
8963 cat > conftest.asm << EOF
8964 [%line __oline__ "configure"
8972 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
8973 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
8976 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
8977 cat conftest.asm >&AS_MESSAGE_LOG_FD
8980 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
8986 if test -z "$NASM"; then
8988 ****************************************************************************
8989 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
8993 if test "$build_os" = "cygwin"; then
8995 install a pre-compiled binary for Win32
8997 mkdir -p /opt/lo/bin
8999 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9002 or get and install one from http://www.nasm.us/
9004 Then re-run autogen.sh
9006 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9007 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9012 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9016 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9017 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9024 AC_SUBST(LIBJPEG_CFLAGS)
9025 AC_SUBST(LIBJPEG_LIBS)
9026 AC_SUBST(SYSTEM_LIBJPEG)
9028 dnl ===================================================================
9029 dnl Check for system clucene
9030 dnl ===================================================================
9031 dnl we should rather be using
9032 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
9033 dnl but the contribs-lib check seems tricky
9034 AC_MSG_CHECKING([which clucene to use])
9035 if test "$with_system_clucene" = "yes"; then
9036 AC_MSG_RESULT([external])
9038 PKG_CHECK_MODULES(CLUCENE, libclucene-core)
9039 CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
9040 FilterLibs "${CLUCENE_LIBS}"
9041 CLUCENE_LIBS="${filteredlibs}"
9043 save_CXXFLAGS=$CXXFLAGS
9044 save_CPPFLAGS=$CPPFLAGS
9045 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9046 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9047 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9048 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9049 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9050 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9051 CXXFLAGS=$save_CXXFLAGS
9052 CPPFLAGS=$save_CPPFLAGS
9055 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9057 AC_MSG_RESULT([internal])
9059 BUILD_TYPE="$BUILD_TYPE CLUCENE"
9061 AC_SUBST(SYSTEM_CLUCENE)
9062 AC_SUBST(CLUCENE_CFLAGS)
9063 AC_SUBST(CLUCENE_LIBS)
9065 dnl ===================================================================
9066 dnl Check for system expat
9067 dnl ===================================================================
9068 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9070 dnl ===================================================================
9071 dnl Check for system xmlsec
9072 dnl ===================================================================
9073 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9075 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9076 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
9078 AC_DEFINE([ENABLE_EOT])
9079 AC_MSG_RESULT([yes])
9081 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9086 AC_SUBST([ENABLE_EOT])
9088 dnl ===================================================================
9089 dnl Check for DLP libs
9090 dnl ===================================================================
9091 AS_IF([test "$COM" = "MSC"],
9092 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9093 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9095 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
9097 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9099 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9101 AS_IF([test "$COM" = "MSC"],
9102 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9103 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9105 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
9107 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9109 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9110 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9112 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9114 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9116 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9118 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
9119 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.17])
9121 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9122 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
9124 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9126 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9127 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9129 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9131 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9133 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9135 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9137 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9138 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9140 dnl ===================================================================
9141 dnl Check for system lcms2
9142 dnl ===================================================================
9143 if test "$with_system_lcms2" != "yes"; then
9146 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
9147 if test "$GCC" = "yes"; then
9148 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9150 if test "$COM" = "MSC"; then # override the above
9151 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9154 dnl ===================================================================
9155 dnl Check for system cppunit
9156 dnl ===================================================================
9157 if test "$_os" != "Android" ; then
9158 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9161 dnl ===================================================================
9162 dnl Check whether freetype is available
9163 dnl ===================================================================
9164 if test "$test_freetype" = "yes"; then
9165 AC_MSG_CHECKING([whether freetype is available])
9166 # FreeType has 3 different kinds of versions
9167 # * release, like 2.4.10
9168 # * libtool, like 13.0.7 (this what pkg-config returns)
9170 # FreeType's docs/VERSION.DLL provides a table mapping between the three
9173 PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
9174 FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9175 FilterLibs "${FREETYPE_LIBS}"
9176 FREETYPE_LIBS="${filteredlibs}"
9177 SYSTEM_FREETYPE=TRUE
9179 FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9180 if test "x$ac_config_site_64bit_host" = xYES; then
9181 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9183 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9186 AC_SUBST(FREETYPE_CFLAGS)
9187 AC_SUBST(FREETYPE_LIBS)
9188 AC_SUBST([SYSTEM_FREETYPE])
9190 # ===================================================================
9191 # Check for system libxslt
9192 # to prevent incompatibilities between internal libxml2 and external libxslt,
9193 # or vice versa, use with_system_libxml here
9194 # ===================================================================
9195 if test "$with_system_libxml" = "auto"; then
9198 with_system_libxml="$with_system_libs"
9201 if test "$enable_fuzzers" != "yes"; then
9202 with_system_libxml=yes
9204 with_system_libxml=no
9210 AC_MSG_CHECKING([which libxslt to use])
9211 if test "$with_system_libxml" = "yes"; then
9212 AC_MSG_RESULT([external])
9214 if test "$_os" = "Darwin"; then
9215 dnl make sure to use SDK path
9216 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9217 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9219 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9220 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9222 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9223 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9224 FilterLibs "${LIBXSLT_LIBS}"
9225 LIBXSLT_LIBS="${filteredlibs}"
9226 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9227 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9228 FilterLibs "${LIBEXSLT_LIBS}"
9229 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9232 dnl Check for xsltproc
9233 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9234 if test "$XSLTPROC" = "no"; then
9235 AC_MSG_ERROR([xsltproc is required])
9238 AC_MSG_RESULT([internal])
9240 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9242 AC_SUBST(SYSTEM_LIBXSLT)
9243 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9244 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9246 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9248 AC_SUBST(LIBEXSLT_CFLAGS)
9249 AC_SUBST(LIBEXSLT_LIBS)
9250 AC_SUBST(LIBXSLT_CFLAGS)
9251 AC_SUBST(LIBXSLT_LIBS)
9254 # ===================================================================
9255 # Check for system libxml
9256 # ===================================================================
9257 AC_MSG_CHECKING([which libxml to use])
9258 if test "$with_system_libxml" = "yes"; then
9259 AC_MSG_RESULT([external])
9261 if test "$_os" = "Darwin"; then
9262 dnl make sure to use SDK path
9263 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9265 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9266 elif test $_os = iOS; then
9267 dnl make sure to use SDK path
9268 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9269 LIBXML_CFLAGS="-I$usr/include/libxml2"
9270 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9272 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9273 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9274 FilterLibs "${LIBXML_LIBS}"
9275 LIBXML_LIBS="${filteredlibs}"
9278 dnl Check for xmllint
9279 AC_PATH_PROG(XMLLINT, xmllint, no)
9280 if test "$XMLLINT" = "no"; then
9281 AC_MSG_ERROR([xmllint is required])
9284 AC_MSG_RESULT([internal])
9286 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9287 if test "$COM" = "MSC"; then
9288 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9290 if test "$COM" = "MSC"; then
9291 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9293 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9294 if test "$_os" = Android; then
9295 LIBXML_LIBS="$LIBXML_LIBS -lm"
9298 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9300 AC_SUBST(SYSTEM_LIBXML)
9301 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9302 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9304 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9305 AC_SUBST(LIBXML_CFLAGS)
9306 AC_SUBST(LIBXML_LIBS)
9309 # =====================================================================
9310 # Checking for a Python interpreter with version >= 3.3.
9311 # Optionally user can pass an option to configure, i. e.
9312 # ./configure PYTHON=/usr/bin/python
9313 # =====================================================================
9314 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal; then
9315 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9316 enable_python=internal
9318 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9319 if test -n "$PYTHON"; then
9320 PYTHON_FOR_BUILD=$PYTHON
9322 # This allows a lack of system python with no error, we use internal one in that case.
9323 AM_PATH_PYTHON([3.3],, [:])
9324 # Clean PYTHON_VERSION checked below if cross-compiling
9326 if test "$PYTHON" != ":"; then
9327 PYTHON_FOR_BUILD=$PYTHON
9331 AC_SUBST(PYTHON_FOR_BUILD)
9333 # Checks for Python to use for Pyuno
9334 AC_MSG_CHECKING([which Python to use for Pyuno])
9335 case "$enable_python" in
9337 if test -z $PYTHON_FOR_BUILD; then
9338 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9339 # requirement from the choice whether to include Python stuff in the installer, but why
9341 AC_MSG_ERROR([Python is required at build time.])
9344 AC_MSG_RESULT([none])
9347 if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
9348 AC_MSG_RESULT([no, overridden by --disable-scripting])
9350 elif test $build_os = cygwin; then
9351 dnl When building on Windows we don't attempt to use any installed
9352 dnl "system" Python.
9353 AC_MSG_RESULT([fully internal])
9354 enable_python=internal
9355 elif test "$cross_compiling" = yes; then
9356 AC_MSG_RESULT([system])
9357 enable_python=system
9359 # Unset variables set by the above AM_PATH_PYTHON so that
9360 # we actually do check anew.
9362 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
9363 AM_PATH_PYTHON([3.3],, [:])
9364 AC_MSG_CHECKING([which Python to use for Pyuno])
9365 if test "$PYTHON" = ":"; then
9366 if test -z "$PYTHON_FOR_BUILD"; then
9367 AC_MSG_RESULT([fully internal])
9369 AC_MSG_RESULT([internal])
9371 enable_python=internal
9373 AC_MSG_RESULT([system])
9374 enable_python=system
9379 AC_MSG_RESULT([internal])
9382 AC_MSG_RESULT([fully internal])
9383 enable_python=internal
9386 AC_MSG_RESULT([system])
9387 if test "$_os" = Darwin; then
9388 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9392 AC_MSG_ERROR([Incorrect --enable-python option])
9396 if test $enable_python != no; then
9397 BUILD_TYPE="$BUILD_TYPE PYUNO"
9400 if test $enable_python = system; then
9401 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9402 # Fallback: Accept these in the environment, or as set above
9405 elif test "$cross_compiling" != yes; then
9406 # Unset variables set by the above AM_PATH_PYTHON so that
9407 # we actually do check anew.
9408 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
9409 # This causes an error if no python command is found
9410 AM_PATH_PYTHON([3.3])
9411 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9412 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9413 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9414 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9415 if test -z "$PKG_CONFIG"; then
9416 PYTHON_CFLAGS="-I$python_include"
9417 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9418 elif $PKG_CONFIG --exists python-$python_version-embed; then
9419 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9420 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9421 elif $PKG_CONFIG --exists python-$python_version; then
9422 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9423 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9425 PYTHON_CFLAGS="-I$python_include"
9426 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9428 FilterLibs "${PYTHON_LIBS}"
9429 PYTHON_LIBS="${filteredlibs}"
9431 dnl How to find out the cross-compilation Python installation path?
9432 AC_MSG_CHECKING([for python version])
9433 AS_IF([test -n "$PYTHON_VERSION"],
9434 [AC_MSG_RESULT([$PYTHON_VERSION])],
9435 [AC_MSG_RESULT([not found])
9436 AC_MSG_ERROR([no usable python found])])
9437 test -n "$PYTHON_CFLAGS" && break
9440 dnl Check if the headers really work
9441 save_CPPFLAGS="$CPPFLAGS"
9442 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9443 AC_CHECK_HEADER(Python.h)
9444 CPPFLAGS="$save_CPPFLAGS"
9446 # let the PYTHON_FOR_BUILD match the same python installation that
9447 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9448 # better for PythonTests.
9449 PYTHON_FOR_BUILD=$PYTHON
9452 if test "$with_lxml" != no; then
9453 if test -z "$PYTHON_FOR_BUILD"; then
9456 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9459 if test "$cross_compiling" != yes ; then
9460 BUILD_TYPE="$BUILD_TYPE LXML"
9465 AC_MSG_CHECKING([for python lxml])
9466 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9467 AC_MSG_RESULT([yes])
9471 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9474 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9475 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9476 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9478 BUILD_TYPE="$BUILD_TYPE LXML"
9479 AC_MSG_RESULT([no, using internal lxml])
9482 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9490 dnl By now enable_python should be "system", "internal" or "no"
9491 case $enable_python in
9495 if test "x$ac_cv_header_Python_h" != "xyes"; then
9496 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9500 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9501 AC_MSG_CHECKING([for correct python library version])
9502 AC_RUN_IFELSE([AC_LANG_SOURCE([[
9505 int main(int argc, char **argv) {
9506 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9509 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9512 dnl FIXME Check if the Python library can be linked with, too?
9517 PYTHON_VERSION_MAJOR=3
9518 PYTHON_VERSION_MINOR=8
9519 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.8
9520 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9521 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9523 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9524 BUILD_TYPE="$BUILD_TYPE PYTHON"
9525 if test "$OS" = LINUX -o "$OS" = WNT ; then
9526 BUILD_TYPE="$BUILD_TYPE LIBFFI"
9528 # Embedded Python dies without Home set
9529 if test "$HOME" = ""; then
9538 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9542 AC_SUBST(DISABLE_PYTHON)
9543 AC_SUBST(SYSTEM_PYTHON)
9544 AC_SUBST(PYTHON_CFLAGS)
9545 AC_SUBST(PYTHON_LIBS)
9546 AC_SUBST(PYTHON_VERSION)
9547 AC_SUBST(PYTHON_VERSION_MAJOR)
9548 AC_SUBST(PYTHON_VERSION_MINOR)
9554 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
9555 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
9556 ENABLE_MARIADBC=TRUE
9557 AC_MSG_RESULT([yes])
9558 BUILD_TYPE="$BUILD_TYPE MARIADBC"
9562 AC_SUBST(ENABLE_MARIADBC)
9563 AC_SUBST(MARIADBC_MAJOR)
9564 AC_SUBST(MARIADBC_MINOR)
9565 AC_SUBST(MARIADBC_MICRO)
9567 if test "$ENABLE_MARIADBC" = "TRUE"; then
9568 dnl ===================================================================
9569 dnl Check for system MariaDB
9570 dnl ===================================================================
9571 AC_MSG_CHECKING([which MariaDB to use])
9572 if test "$with_system_mariadb" = "yes"; then
9573 AC_MSG_RESULT([external])
9574 SYSTEM_MARIADB_CONNECTOR_C=TRUE
9575 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9576 if test -z "$MARIADBCONFIG"; then
9577 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9578 if test -z "$MARIADBCONFIG"; then
9579 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9580 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9583 AC_MSG_CHECKING([MariaDB version])
9584 MARIADB_VERSION=`$MARIADBCONFIG --version`
9585 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9586 if test "$MARIADB_MAJOR" -ge "5"; then
9589 AC_MSG_ERROR([too old, use 5.0.x or later])
9591 AC_MSG_CHECKING([for MariaDB Client library])
9592 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9593 if test "$COM_IS_CLANG" = TRUE; then
9594 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9596 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9597 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9598 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9600 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9601 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9602 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9603 | sed -e 's|/lib64/|/lib/|')
9605 FilterLibs "${MARIADB_LIBS}"
9606 MARIADB_LIBS="${filteredlibs}"
9607 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9608 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9609 if test "$enable_bundle_mariadb" = "yes"; then
9610 AC_MSG_RESULT([yes])
9611 BUNDLE_MARIADB_CONNECTOR_C=TRUE
9612 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9614 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9616 /g' | grep -E '(mysqlclient|mariadb)')
9617 if test "$_os" = "Darwin"; then
9618 LIBMARIADB=${LIBMARIADB}.dylib
9619 elif test "$_os" = "WINNT"; then
9620 LIBMARIADB=${LIBMARIADB}.dll
9622 LIBMARIADB=${LIBMARIADB}.so
9624 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9625 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9626 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9627 AC_MSG_RESULT([found.])
9628 PathFormat "$LIBMARIADB_PATH"
9629 LIBMARIADB_PATH="$formatted_path"
9631 AC_MSG_ERROR([not found.])
9635 BUNDLE_MARIADB_CONNECTOR_C=
9638 AC_MSG_RESULT([internal])
9639 SYSTEM_MARIADB_CONNECTOR_C=
9640 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9641 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9642 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9645 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9646 AC_SUBST(MARIADB_CFLAGS)
9647 AC_SUBST(MARIADB_LIBS)
9648 AC_SUBST(LIBMARIADB)
9649 AC_SUBST(LIBMARIADB_PATH)
9650 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9653 dnl ===================================================================
9654 dnl Check for system hsqldb
9655 dnl ===================================================================
9656 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
9657 HSQLDB_USE_JDBC_4_1=
9658 AC_MSG_CHECKING([which hsqldb to use])
9659 if test "$with_system_hsqldb" = "yes"; then
9660 AC_MSG_RESULT([external])
9662 if test -z $HSQLDB_JAR; then
9663 HSQLDB_JAR=/usr/share/java/hsqldb.jar
9665 if ! test -f $HSQLDB_JAR; then
9666 AC_MSG_ERROR(hsqldb.jar not found.)
9668 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9672 my $file = "$ENV{'HSQLDB_JAR'}";
9673 my $zip = Archive::Zip->new( $file );
9674 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9675 if ( $mf =~ m/Specification-Version: 1.8.*/ )
9677 push @l, split(/\n/, $mf);
9678 foreach my $line (@l)
9680 if ($line =~ m/Specification-Version:/)
9682 ($t, $version) = split (/:/,$line);
9683 $version =~ s/^\s//;
9684 ($a, $b, $c, $d) = split (/\./,$version);
9685 if ($c == "0" && $d > "8")
9700 AC_MSG_RESULT([yes])
9702 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9705 AC_MSG_RESULT([internal])
9707 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9709 AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9710 javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9711 if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9712 AC_MSG_RESULT([yes])
9713 HSQLDB_USE_JDBC_4_1=TRUE
9719 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
9720 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9723 AC_SUBST(SYSTEM_HSQLDB)
9724 AC_SUBST(HSQLDB_JAR)
9725 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9727 dnl ===================================================================
9728 dnl Check for PostgreSQL stuff
9729 dnl ===================================================================
9730 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9731 if test "x$enable_postgresql_sdbc" != "xno"; then
9732 AC_MSG_RESULT([yes])
9733 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9735 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9736 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9738 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9739 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9742 postgres_interface=""
9743 if test "$with_system_postgresql" = "yes"; then
9744 postgres_interface="external PostgreSQL"
9745 SYSTEM_POSTGRESQL=TRUE
9746 if test "$_os" = Darwin; then
9748 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9749 pg_supp_path="$P_SEP$d$pg_supp_path"
9752 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9753 if test -n "$PGCONFIG"; then
9754 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9755 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9757 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9758 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9759 POSTGRESQL_LIB=$POSTGRESQL_LIBS
9761 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9764 FilterLibs "${POSTGRESQL_LIB}"
9765 POSTGRESQL_LIB="${filteredlibs}"
9767 # if/when anything else than PostgreSQL uses Kerberos,
9768 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9773 # macOS has system MIT Kerberos 5 since 10.4
9774 if test "$with_krb5" != "no"; then
9777 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9778 # that the libraries where these functions are located on macOS will change, is it?
9779 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9780 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9783 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9784 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9785 KRB5_LIBS="$KRB5_LIBS $LIBS"
9788 if test "$with_gssapi" != "no"; then
9791 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9792 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9798 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9799 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9802 Linux|GNU|*BSD|DragonFly)
9803 if test "$with_krb5" != "no"; then
9806 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9807 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9810 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9811 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9812 KRB5_LIBS="$KRB5_LIBS $LIBS"
9815 if test "$with_gssapi" != "no"; then
9818 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9819 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9825 if test "$with_krb5" = "yes"; then
9828 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9829 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9832 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9833 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9834 KRB5_LIBS="$KRB5_LIBS $LIBS"
9837 if test "$with_gssapi" = "yes"; then
9840 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9841 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9847 if test -n "$with_libpq_path"; then
9848 SYSTEM_POSTGRESQL=TRUE
9849 postgres_interface="external libpq"
9850 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
9851 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
9854 postgres_interface="internal"
9856 POSTGRESQL_INC="%OVERRIDE_ME%"
9857 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
9861 AC_MSG_CHECKING([PostgreSQL C interface])
9862 AC_MSG_RESULT([$postgres_interface])
9864 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
9865 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
9867 save_CPPFLAGS=$CPPFLAGS
9869 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
9870 LIBS="${LIBS} ${POSTGRESQL_LIB}"
9871 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
9872 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
9873 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
9875 CPPFLAGS=$save_CPPFLAGS
9878 BUILD_POSTGRESQL_SDBC=TRUE
9883 AC_SUBST(WITH_GSSAPI)
9884 AC_SUBST(GSSAPI_LIBS)
9886 AC_SUBST(BUILD_POSTGRESQL_SDBC)
9887 AC_SUBST(SYSTEM_POSTGRESQL)
9888 AC_SUBST(POSTGRESQL_INC)
9889 AC_SUBST(POSTGRESQL_LIB)
9891 dnl ===================================================================
9892 dnl Check for Firebird stuff
9893 dnl ===================================================================
9894 ENABLE_FIREBIRD_SDBC=
9895 if test "$enable_firebird_sdbc" = "yes" ; then
9896 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
9898 dnl ===================================================================
9899 dnl Check for system Firebird
9900 dnl ===================================================================
9901 AC_MSG_CHECKING([which Firebird to use])
9902 if test "$with_system_firebird" = "yes"; then
9903 AC_MSG_RESULT([external])
9904 SYSTEM_FIREBIRD=TRUE
9905 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
9906 if test -z "$FIREBIRDCONFIG"; then
9907 AC_MSG_NOTICE([No fb_config -- using pkg-config])
9908 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
9909 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
9911 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
9913 AC_MSG_NOTICE([fb_config found])
9914 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
9915 AC_MSG_CHECKING([for Firebird Client library])
9916 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
9917 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
9918 FilterLibs "${FIREBIRD_LIBS}"
9919 FIREBIRD_LIBS="${filteredlibs}"
9921 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
9922 AC_MSG_CHECKING([Firebird version])
9923 if test -n "${FIREBIRD_VERSION}"; then
9924 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
9925 if test "$FIREBIRD_MAJOR" -ge "3"; then
9928 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
9931 save_CFLAGS="${CFLAGS}"
9932 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
9933 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
9934 #if defined(FB_API_VER) && FB_API_VER == 30
9935 int fb_api_is_30(void) { return 0; }
9937 #error "Wrong Firebird API version"
9938 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
9939 CFLAGS="$save_CFLAGS"
9941 ENABLE_FIREBIRD_SDBC=TRUE
9942 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9943 elif test "$enable_database_connectivity" != yes; then
9944 AC_MSG_RESULT([none])
9945 elif test "$cross_compiling" = "yes"; then
9946 AC_MSG_RESULT([none])
9948 dnl Embedded Firebird has version 3.0
9949 dnl We need libatomic_ops for any non X86/X64 system
9950 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
9951 dnl ===================================================================
9952 dnl Check for system libatomic_ops
9953 dnl ===================================================================
9954 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
9955 if test "$with_system_libatomic_ops" = "yes"; then
9956 SYSTEM_LIBATOMIC_OPS=TRUE
9957 AC_CHECK_HEADERS(atomic_ops.h, [],
9958 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
9960 SYSTEM_LIBATOMIC_OPS=
9961 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
9962 LIBATOMIC_OPS_LIBS="-latomic_ops"
9963 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
9967 AC_MSG_RESULT([internal])
9969 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
9970 FIREBIRD_LIBS="-lfbclient"
9972 if test "$with_system_libtommath" = "yes"; then
9973 SYSTEM_LIBTOMMATH=TRUE
9974 dnl check for tommath presence
9976 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
9977 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
9981 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
9982 LIBTOMMATH_LIBS="-ltommath"
9983 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
9986 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
9987 ENABLE_FIREBIRD_SDBC=TRUE
9988 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9991 AC_SUBST(ENABLE_FIREBIRD_SDBC)
9992 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
9993 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
9994 AC_SUBST(LIBATOMIC_OPS_LIBS)
9995 AC_SUBST(SYSTEM_FIREBIRD)
9996 AC_SUBST(FIREBIRD_CFLAGS)
9997 AC_SUBST(FIREBIRD_LIBS)
9998 AC_SUBST(SYSTEM_LIBTOMMATH)
9999 AC_SUBST(LIBTOMMATH_CFLAGS)
10000 AC_SUBST(LIBTOMMATH_LIBS)
10002 dnl ===================================================================
10003 dnl Check for system curl
10004 dnl ===================================================================
10005 AC_MSG_CHECKING([which libcurl to use])
10006 if test "$with_system_curl" = "auto"; then
10007 with_system_curl="$with_system_libs"
10010 if test "$with_system_curl" = "yes"; then
10011 AC_MSG_RESULT([external])
10014 # First try PKGCONFIG and then fall back
10015 PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
10017 if test -n "$CURL_PKG_ERRORS"; then
10018 AC_PATH_PROG(CURLCONFIG, curl-config)
10019 if test -z "$CURLCONFIG"; then
10020 AC_MSG_ERROR([curl development files not found])
10022 CURL_LIBS=`$CURLCONFIG --libs`
10023 FilterLibs "${CURL_LIBS}"
10024 CURL_LIBS="${filteredlibs}"
10025 CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
10026 curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
10028 AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
10029 case $curl_version in
10030 dnl brackets doubled below because Autoconf uses them as m4 quote characters,
10031 dnl so they need to be doubled to end up in the configure script
10032 7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
10033 AC_MSG_RESULT([yes])
10036 AC_MSG_ERROR([no, you have $curl_version])
10043 AC_MSG_RESULT([internal])
10045 BUILD_TYPE="$BUILD_TYPE CURL"
10048 AC_SUBST(SYSTEM_CURL)
10049 AC_SUBST(CURL_CFLAGS)
10050 AC_SUBST(CURL_LIBS)
10051 AC_SUBST(ENABLE_CURL)
10053 dnl ===================================================================
10054 dnl Check for system boost
10055 dnl ===================================================================
10056 AC_MSG_CHECKING([which boost to use])
10057 if test "$with_system_boost" = "yes"; then
10058 AC_MSG_RESULT([external])
10060 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10062 AX_BOOST_FILESYSTEM
10065 AC_LANG_PUSH([C++])
10066 save_CXXFLAGS=$CXXFLAGS
10067 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10068 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10069 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10070 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10071 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10072 CXXFLAGS=$save_CXXFLAGS
10074 # this is in m4/ax_boost_base.m4
10075 FilterLibs "${BOOST_LDFLAGS}"
10076 BOOST_LDFLAGS="${filteredlibs}"
10078 AC_MSG_RESULT([internal])
10079 BUILD_TYPE="$BUILD_TYPE BOOST"
10081 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10082 # use warning-suppressing wrapper headers
10083 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10085 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10088 AC_SUBST(SYSTEM_BOOST)
10090 dnl ===================================================================
10091 dnl Check for system mdds
10092 dnl ===================================================================
10093 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
10095 dnl ===================================================================
10096 dnl Check for system glm
10097 dnl ===================================================================
10098 AC_MSG_CHECKING([which glm to use])
10099 if test "$with_system_glm" = "yes"; then
10100 AC_MSG_RESULT([external])
10102 AC_LANG_PUSH([C++])
10103 AC_CHECK_HEADER([glm/glm.hpp], [],
10104 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10107 AC_MSG_RESULT([internal])
10108 BUILD_TYPE="$BUILD_TYPE GLM"
10110 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10112 AC_SUBST([GLM_CFLAGS])
10113 AC_SUBST([SYSTEM_GLM])
10115 dnl ===================================================================
10116 dnl Check for system odbc
10117 dnl ===================================================================
10118 AC_MSG_CHECKING([which odbc headers to use])
10119 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
10120 AC_MSG_RESULT([external])
10121 SYSTEM_ODBC_HEADERS=TRUE
10123 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10124 save_CPPFLAGS=$CPPFLAGS
10126 PathFormat "$winsdktest"
10127 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"
10128 AC_CHECK_HEADER(sqlext.h, [],
10129 [AC_MSG_ERROR(odbc not found. install odbc)],
10130 [#include <windows.h>])
10131 CPPFLAGS=$save_CPPFLAGS
10133 AC_CHECK_HEADER(sqlext.h, [],
10134 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10136 elif test "$enable_database_connectivity" != yes; then
10137 AC_MSG_RESULT([none])
10139 AC_MSG_RESULT([internal])
10140 SYSTEM_ODBC_HEADERS=
10142 AC_SUBST(SYSTEM_ODBC_HEADERS)
10144 dnl ===================================================================
10145 dnl Enable LDAP support
10146 dnl ===================================================================
10148 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then
10149 AC_MSG_CHECKING([whether to enable LDAP support])
10150 if test "$enable_ldap" != "yes"; then
10151 AC_MSG_RESULT([no])
10155 AC_MSG_RESULT([yes])
10159 AC_SUBST(ENABLE_LDAP)
10161 dnl ===================================================================
10162 dnl Check for system openldap
10163 dnl ===================================================================
10165 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then
10166 AC_MSG_CHECKING([which openldap library to use])
10167 if test "$with_system_openldap" = "yes"; then
10168 AC_MSG_RESULT([external])
10169 SYSTEM_OPENLDAP=TRUE
10170 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10171 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10172 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10174 AC_MSG_RESULT([internal])
10176 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10179 AC_SUBST(SYSTEM_OPENLDAP)
10181 dnl ===================================================================
10182 dnl Check for system NSS
10183 dnl ===================================================================
10184 if test "$enable_fuzzers" != "yes"; then
10185 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
10186 AC_DEFINE(HAVE_FEATURE_NSS)
10188 AC_DEFINE(ENABLE_NSS)
10189 elif test $_os != iOS ; then
10192 AC_SUBST(ENABLE_NSS)
10194 dnl ===================================================================
10195 dnl Check for TLS/SSL and cryptographic implementation to use
10196 dnl ===================================================================
10197 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10198 if test -n "$with_tls"; then
10201 AC_DEFINE(USE_TLS_OPENSSL)
10203 AC_MSG_RESULT([$TLS])
10205 if test "$enable_openssl" != "yes"; then
10206 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10209 # warn that OpenSSL has been selected but not all TLS code has this option
10210 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
10211 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
10214 AC_DEFINE(USE_TLS_NSS)
10216 AC_MSG_RESULT([$TLS])
10219 AC_MSG_RESULT([none])
10220 AC_MSG_WARN([Skipping TLS/SSL])
10224 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10226 nss - Mozilla's Network Security Services (NSS)
10231 # default to using NSS, it results in smaller oox lib
10232 AC_DEFINE(USE_TLS_NSS)
10234 AC_MSG_RESULT([$TLS])
10238 dnl ===================================================================
10239 dnl Check for system sane
10240 dnl ===================================================================
10241 AC_MSG_CHECKING([which sane header to use])
10242 if test "$with_system_sane" = "yes"; then
10243 AC_MSG_RESULT([external])
10244 AC_CHECK_HEADER(sane/sane.h, [],
10245 [AC_MSG_ERROR(sane not found. install sane)], [])
10247 AC_MSG_RESULT([internal])
10248 BUILD_TYPE="$BUILD_TYPE SANE"
10251 dnl ===================================================================
10252 dnl Check for system icu
10253 dnl ===================================================================
10260 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10261 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10262 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10263 AC_MSG_CHECKING([which icu to use])
10264 if test "$with_system_icu" = "yes"; then
10265 AC_MSG_RESULT([external])
10267 AC_LANG_PUSH([C++])
10268 AC_MSG_CHECKING([for unicode/rbbi.h])
10269 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10272 if test "$cross_compiling" != "yes"; then
10273 PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
10274 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10275 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10276 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10279 if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
10280 ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10281 ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
10282 ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
10283 AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
10284 if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
10285 AC_MSG_RESULT([yes])
10287 AC_MSG_RESULT([no])
10288 if test "$with_system_icu_for_build" != "force"; then
10289 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
10290 You can use --with-system-icu-for-build=force to use it anyway.])
10295 if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
10296 # using the system icu tools can lead to version confusion, use the
10297 # ones from the build environment when cross-compiling
10298 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10299 if test -z "$SYSTEM_GENBRK"; then
10300 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10302 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10303 if test -z "$SYSTEM_GENCCODE"; then
10304 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10306 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10307 if test -z "$SYSTEM_GENCMN"; then
10308 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10310 if test "$ICU_MAJOR" -ge "49"; then
10311 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10312 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10313 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10315 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10316 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10317 ICU_RECLASSIFIED_HEBREW_LETTER=
10321 if test "$cross_compiling" = "yes"; then
10322 if test "$ICU_MAJOR" -ge "50"; then
10323 AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10328 AC_MSG_RESULT([internal])
10330 BUILD_TYPE="$BUILD_TYPE ICU"
10331 # surprisingly set these only for "internal" (to be used by various other
10332 # external libs): the system icu-config is quite unhelpful and spits out
10333 # dozens of weird flags and also default path -I/usr/include
10334 ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10335 ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10337 if test "$ICU_MAJOR" -ge "59"; then
10338 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10339 # with -std=c++11 but not all external libraries can be built with that,
10340 # for those use a bit-compatible typedef uint16_t UChar; see
10341 # icu/source/common/unicode/umachine.h
10342 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10346 AC_SUBST(SYSTEM_ICU)
10347 AC_SUBST(SYSTEM_GENBRK)
10348 AC_SUBST(SYSTEM_GENCCODE)
10349 AC_SUBST(SYSTEM_GENCMN)
10350 AC_SUBST(ICU_MAJOR)
10351 AC_SUBST(ICU_MINOR)
10352 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10353 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10354 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10355 AC_SUBST(ICU_CFLAGS)
10357 AC_SUBST(ICU_UCHAR_TYPE)
10359 dnl ==================================================================
10361 dnl ==================================================================
10362 DEFAULT_CRASHDUMP_VALUE="true"
10363 AC_MSG_CHECKING([whether to enable breakpad])
10364 if test "$enable_breakpad" != yes; then
10365 AC_MSG_RESULT([no])
10367 AC_MSG_RESULT([yes])
10368 ENABLE_BREAKPAD="TRUE"
10369 AC_DEFINE(ENABLE_BREAKPAD)
10370 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10371 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10373 AC_MSG_CHECKING([for disable crash dump])
10374 if test "$enable_crashdump" = no; then
10375 DEFAULT_CRASHDUMP_VALUE="false"
10376 AC_MSG_RESULT([yes])
10378 AC_MSG_RESULT([no])
10381 AC_MSG_CHECKING([for crashreport config])
10382 if test "$with_symbol_config" = "no"; then
10383 BREAKPAD_SYMBOL_CONFIG="invalid"
10384 AC_MSG_RESULT([no])
10386 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10387 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10388 AC_MSG_RESULT([yes])
10390 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10392 AC_SUBST(ENABLE_BREAKPAD)
10393 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10395 dnl ==================================================================
10397 dnl ==================================================================
10398 AC_MSG_CHECKING([whether to enable fuzzers])
10399 if test "$enable_fuzzers" != yes; then
10400 AC_MSG_RESULT([no])
10402 AC_MSG_RESULT([yes])
10403 ENABLE_FUZZERS="TRUE"
10404 AC_DEFINE([ENABLE_FUZZERS],1)
10405 BUILD_TYPE="$BUILD_TYPE FUZZERS"
10407 AC_SUBST(ENABLE_FUZZERS)
10409 dnl ===================================================================
10411 dnl ===================================================================
10412 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.16 >= 0.16.0])
10413 if test "$with_system_orcus" != "yes"; then
10414 if test "$SYSTEM_BOOST" = "TRUE"; then
10415 # ===========================================================
10416 # Determine if we are going to need to link with Boost.System
10417 # ===========================================================
10418 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10419 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10420 dnl in documentation has no effect.
10421 AC_MSG_CHECKING([if we need to link with Boost.System])
10422 AC_LANG_PUSH([C++])
10423 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
10424 @%:@include <boost/version.hpp>
10426 #if BOOST_VERSION >= 105000
10427 # error yes, we need to link with Boost.System
10430 AC_MSG_RESULT([no])
10432 AC_MSG_RESULT([yes])
10438 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10439 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10440 AC_SUBST([BOOST_SYSTEM_LIB])
10441 AC_SUBST(SYSTEM_LIBORCUS)
10443 dnl ===================================================================
10445 dnl ===================================================================
10446 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
10447 ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
10448 ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
10450 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
10451 ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
10452 ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
10454 if test "$COM" = "MSC"; then # override the above
10455 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10456 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10459 if test "$with_system_harfbuzz" = "yes"; then
10460 if test "$with_system_graphite" = "no"; then
10461 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10463 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10465 save_CFLAGS="$CFLAGS"
10466 LIBS="$LIBS $HARFBUZZ_LIBS"
10467 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10468 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10470 CFLAGS="$save_CFLAGS"
10472 if test "$with_system_graphite" = "yes"; then
10473 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10477 AC_MSG_CHECKING([whether to use X11])
10478 dnl ***************************************
10479 dnl testing for X libraries and includes...
10480 dnl ***************************************
10481 if test "$USING_X11" = TRUE; then
10482 AC_DEFINE(HAVE_FEATURE_X11)
10484 AC_MSG_RESULT([$USING_X11])
10486 if test "$USING_X11" = TRUE; then
10489 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10491 if test -z "$x_includes"; then
10492 x_includes="default_x_includes"
10494 if test -z "$x_libraries"; then
10495 x_libraries="default_x_libraries"
10497 CFLAGS="$CFLAGS $X_CFLAGS"
10498 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10499 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10501 x_includes="no_x_includes"
10502 x_libraries="no_x_libraries"
10505 if test "$USING_X11" = TRUE; then
10506 dnl ===================================================================
10507 dnl Check for extension headers
10508 dnl ===================================================================
10509 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10510 [#include <X11/extensions/shape.h>])
10512 # vcl needs ICE and SM
10513 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10514 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10515 [AC_MSG_ERROR(ICE library not found)])
10516 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10517 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10518 [AC_MSG_ERROR(SM library not found)])
10521 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10522 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10523 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10526 dnl ===================================================================
10527 dnl Check for system Xrender
10528 dnl ===================================================================
10529 AC_MSG_CHECKING([whether to use Xrender])
10530 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10531 AC_MSG_RESULT([yes])
10532 PKG_CHECK_MODULES(XRENDER, xrender)
10533 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10534 FilterLibs "${XRENDER_LIBS}"
10535 XRENDER_LIBS="${filteredlibs}"
10536 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10537 [AC_MSG_ERROR(libXrender not found or functional)], [])
10538 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10539 [AC_MSG_ERROR(Xrender not found. install X)], [])
10541 AC_MSG_RESULT([no])
10543 AC_SUBST(XRENDER_CFLAGS)
10544 AC_SUBST(XRENDER_LIBS)
10546 dnl ===================================================================
10547 dnl Check for XRandr
10548 dnl ===================================================================
10549 AC_MSG_CHECKING([whether to enable RandR support])
10550 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10551 AC_MSG_RESULT([yes])
10552 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10553 if test "$ENABLE_RANDR" != "TRUE"; then
10554 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10555 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10557 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10558 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10559 XRANDR_LIBS="-lXrandr "
10560 ENABLE_RANDR="TRUE"
10562 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10563 FilterLibs "${XRANDR_LIBS}"
10564 XRANDR_LIBS="${filteredlibs}"
10567 AC_MSG_RESULT([no])
10569 AC_SUBST(XRANDR_CFLAGS)
10570 AC_SUBST(XRANDR_LIBS)
10571 AC_SUBST(ENABLE_RANDR)
10573 if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
10574 if test -z "$WITH_WEBDAV"; then
10578 if test $_os = iOS -o $_os = Android; then
10581 AC_MSG_CHECKING([for webdav library])
10582 case "$WITH_WEBDAV" in
10584 AC_MSG_RESULT([serf])
10585 # Check for system apr-util
10586 libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10587 ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10588 ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10589 if test "$COM" = "MSC"; then
10591 test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10592 APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10595 # Check for system serf
10596 libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"],
10597 ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"])
10598 if test "$COM" = "MSC"; then
10599 SERF_LIB_DIR="Release"
10600 test -n "${MSVC_USE_DEBUG_RUNTIME}" && SERF_LIB_DIR="Debug"
10601 SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/${SERF_LIB_DIR}/serf-1.lib"
10605 AC_MSG_RESULT([neon])
10606 # Check for system neon
10607 libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.31.2])
10608 if test "$with_system_neon" = "yes"; then
10609 NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10613 AC_SUBST(NEON_VERSION)
10616 AC_MSG_RESULT([none, disabled])
10620 AC_SUBST(WITH_WEBDAV)
10622 dnl ===================================================================
10623 dnl Check for disabling cve_tests
10624 dnl ===================================================================
10625 AC_MSG_CHECKING([whether to execute CVE tests])
10626 # If not explicitly enabled or disabled, default
10627 if test -z "$enable_cve_tests"; then
10630 # Default cves off for Windows with its wild and wonderful
10631 # variety of AV software kicking in and panicking
10632 enable_cve_tests=no
10636 enable_cve_tests=yes
10640 if test "$enable_cve_tests" = "no"; then
10641 AC_MSG_RESULT([no])
10642 DISABLE_CVE_TESTS=TRUE
10643 AC_SUBST(DISABLE_CVE_TESTS)
10645 AC_MSG_RESULT([yes])
10648 dnl ===================================================================
10649 dnl Check for enabling chart XShape tests
10650 dnl ===================================================================
10651 AC_MSG_CHECKING([whether to execute chart XShape tests])
10652 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10653 AC_MSG_RESULT([yes])
10654 ENABLE_CHART_TESTS=TRUE
10655 AC_SUBST(ENABLE_CHART_TESTS)
10657 AC_MSG_RESULT([no])
10660 dnl ===================================================================
10661 dnl Check for system openssl
10662 dnl ===================================================================
10664 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10665 if test "$enable_openssl" = "yes"; then
10666 AC_MSG_RESULT([no])
10667 if test "$_os" = Darwin ; then
10668 # OpenSSL is deprecated when building for 10.7 or later.
10670 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10671 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10673 with_system_openssl=no
10674 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10675 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10676 && test "$with_system_openssl" != "no"; then
10677 with_system_openssl=yes
10678 SYSTEM_OPENSSL=TRUE
10680 OPENSSL_LIBS="-lssl -lcrypto"
10682 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10684 if test "$with_system_openssl" = "yes"; then
10685 AC_MSG_CHECKING([whether openssl supports SHA512])
10687 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10688 SHA512_CTX context;
10689 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10693 AC_MSG_RESULT([yes])
10694 DISABLE_OPENSSL=TRUE
10696 # warn that although OpenSSL is disabled, system libraries may depend on it
10697 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10698 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10701 AC_SUBST([DISABLE_OPENSSL])
10703 if test "$enable_cipher_openssl_backend" = yes && test "$DISABLE_OPENSSL" = TRUE; then
10704 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10705 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10706 enable_cipher_openssl_backend=no
10708 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10711 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10712 ENABLE_CIPHER_OPENSSL_BACKEND=
10713 if test "$enable_cipher_openssl_backend" = yes; then
10714 AC_MSG_RESULT([yes])
10715 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10717 AC_MSG_RESULT([no])
10719 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10721 dnl ===================================================================
10722 dnl Check for building gnutls
10723 dnl ===================================================================
10724 AC_MSG_CHECKING([whether to use gnutls])
10725 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10726 AC_MSG_RESULT([yes])
10727 AM_PATH_LIBGCRYPT()
10728 PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10729 AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10730 available in the system to use as replacement.]]))
10731 FilterLibs "${LIBGCRYPT_LIBS}"
10732 LIBGCRYPT_LIBS="${filteredlibs}"
10734 AC_MSG_RESULT([no])
10737 AC_SUBST([LIBGCRYPT_CFLAGS])
10738 AC_SUBST([LIBGCRYPT_LIBS])
10740 dnl ===================================================================
10741 dnl Check for system redland
10742 dnl ===================================================================
10743 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10744 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10745 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10746 if test "$with_system_redland" = "yes"; then
10747 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10748 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10754 AC_SUBST(RAPTOR_MAJOR)
10755 AC_SUBST(RASQAL_MAJOR)
10756 AC_SUBST(REDLAND_MAJOR)
10758 dnl ===================================================================
10759 dnl Check for system hunspell
10760 dnl ===================================================================
10761 AC_MSG_CHECKING([which libhunspell to use])
10762 if test "$_os" = iOS; then
10763 AC_MSG_RESULT([none])
10764 elif test "$with_system_hunspell" = "yes"; then
10765 AC_MSG_RESULT([external])
10766 SYSTEM_HUNSPELL=TRUE
10767 AC_LANG_PUSH([C++])
10768 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10769 if test "$HUNSPELL_PC" != "TRUE"; then
10770 AC_CHECK_HEADER(hunspell.hxx, [],
10772 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10773 [AC_MSG_ERROR(hunspell headers not found.)], [])
10775 AC_CHECK_LIB([hunspell], [main], [:],
10776 [ AC_MSG_ERROR(hunspell library not found.) ], [])
10777 HUNSPELL_LIBS=-lhunspell
10780 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10781 FilterLibs "${HUNSPELL_LIBS}"
10782 HUNSPELL_LIBS="${filteredlibs}"
10784 AC_MSG_RESULT([internal])
10786 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10787 if test "$COM" = "MSC"; then
10788 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10790 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10792 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
10794 AC_SUBST(SYSTEM_HUNSPELL)
10795 AC_SUBST(HUNSPELL_CFLAGS)
10796 AC_SUBST(HUNSPELL_LIBS)
10798 dnl ===================================================================
10799 dnl Check for system qrcodegen
10800 dnl ===================================================================
10801 AC_MSG_CHECKING([whether to use libqrcodegen])
10802 if test "$enable_qrcodegen" = "no"; then
10803 AC_MSG_RESULT([no])
10807 AC_MSG_RESULT([yes])
10808 ENABLE_QRCODEGEN=TRUE
10809 AC_MSG_CHECKING([which libqrcodegen to use])
10810 if test "$with_system_qrcodegen" = "yes"; then
10811 AC_MSG_RESULT([external])
10812 SYSTEM_QRCODEGEN=TRUE
10813 AC_LANG_PUSH([C++])
10814 AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
10815 [AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
10816 AC_CHECK_LIB([qrcodegencpp], [main], [:],
10817 [ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
10818 QRCODEGEN_LIBS=-lqrcodegencpp
10820 QRCODEGEN_CFLAGS=$(printf '%s' "$QRCODEGEN_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10821 FilterLibs "${QRCODEGEN_LIBS}"
10822 QRCODEGEN_LIBS="${filteredlibs}"
10824 AC_MSG_RESULT([internal])
10826 BUILD_TYPE="$BUILD_TYPE QRCODEGEN"
10828 if test "$ENABLE_QRCODEGEN" = TRUE; then
10829 AC_DEFINE(ENABLE_QRCODEGEN)
10832 AC_SUBST(SYSTEM_QRCODEGEN)
10833 AC_SUBST(ENABLE_QRCODEGEN)
10834 AC_SUBST(QRCODEGEN_CFLAGS)
10835 AC_SUBST(QRCODEGEN_LIBS)
10837 dnl ===================================================================
10838 dnl Check for system box2d
10839 dnl ===================================================================
10840 AC_MSG_CHECKING([which box2d to use])
10841 if test "$with_system_box2d" = "yes"; then
10842 AC_MSG_RESULT([external])
10844 AC_LANG_PUSH([C++])
10845 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
10846 [BOX2D_H_FOUND='FALSE'])
10847 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
10849 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
10851 # fail this. there's no other alternative to check when we are here.
10852 AC_CHECK_HEADER([Box2D/Box2D.h], [],
10853 [AC_MSG_ERROR(box2d headers not found.)])
10855 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
10857 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
10858 [ AC_MSG_ERROR(box2d library not found.) ], [])
10859 BOX2D_LIBS=-l$_BOX2D_LIB
10861 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10862 FilterLibs "${BOX2D_LIBS}"
10863 BOX2D_LIBS="${filteredlibs}"
10865 AC_MSG_RESULT([internal])
10867 BUILD_TYPE="$BUILD_TYPE BOX2D"
10869 AC_SUBST(SYSTEM_BOX2D)
10870 AC_SUBST(BOX2D_CFLAGS)
10871 AC_SUBST(BOX2D_LIBS)
10873 dnl ===================================================================
10874 dnl Checking for altlinuxhyph
10875 dnl ===================================================================
10876 AC_MSG_CHECKING([which altlinuxhyph to use])
10877 if test "$with_system_altlinuxhyph" = "yes"; then
10878 AC_MSG_RESULT([external])
10880 AC_CHECK_HEADER(hyphen.h, [],
10881 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
10882 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
10883 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
10884 [#include <hyphen.h>])
10885 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
10886 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10887 if test -z "$HYPHEN_LIB"; then
10888 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
10889 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10891 if test -z "$HYPHEN_LIB"; then
10892 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
10893 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10896 AC_MSG_RESULT([internal])
10898 BUILD_TYPE="$BUILD_TYPE HYPHEN"
10899 if test "$COM" = "MSC"; then
10900 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
10902 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
10905 AC_SUBST(SYSTEM_HYPH)
10906 AC_SUBST(HYPHEN_LIB)
10908 dnl ===================================================================
10909 dnl Checking for mythes
10910 dnl ===================================================================
10911 AC_MSG_CHECKING([which mythes to use])
10912 if test "$_os" = iOS; then
10913 AC_MSG_RESULT([none])
10914 elif test "$with_system_mythes" = "yes"; then
10915 AC_MSG_RESULT([external])
10917 AC_LANG_PUSH([C++])
10918 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
10919 if test "$MYTHES_PKGCONFIG" = "no"; then
10920 AC_CHECK_HEADER(mythes.hxx, [],
10921 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
10922 AC_CHECK_LIB([mythes-1.2], [main], [:],
10923 [ MYTHES_FOUND=no], [])
10924 if test "$MYTHES_FOUND" = "no"; then
10925 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
10926 [ MYTHES_FOUND=no], [])
10928 if test "$MYTHES_FOUND" = "no"; then
10929 AC_MSG_ERROR([mythes library not found!.])
10933 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10934 FilterLibs "${MYTHES_LIBS}"
10935 MYTHES_LIBS="${filteredlibs}"
10937 AC_MSG_RESULT([internal])
10939 BUILD_TYPE="$BUILD_TYPE MYTHES"
10940 if test "$COM" = "MSC"; then
10941 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
10943 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
10946 AC_SUBST(SYSTEM_MYTHES)
10947 AC_SUBST(MYTHES_CFLAGS)
10948 AC_SUBST(MYTHES_LIBS)
10950 dnl ===================================================================
10951 dnl How should we build the linear programming solver ?
10952 dnl ===================================================================
10955 AC_MSG_CHECKING([whether to build with CoinMP])
10956 if test "$enable_coinmp" != "no"; then
10958 AC_MSG_RESULT([yes])
10959 if test "$with_system_coinmp" = "yes"; then
10961 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
10962 FilterLibs "${COINMP_LIBS}"
10963 COINMP_LIBS="${filteredlibs}"
10965 BUILD_TYPE="$BUILD_TYPE COINMP"
10968 AC_MSG_RESULT([no])
10970 AC_SUBST(ENABLE_COINMP)
10971 AC_SUBST(SYSTEM_COINMP)
10972 AC_SUBST(COINMP_CFLAGS)
10973 AC_SUBST(COINMP_LIBS)
10976 AC_MSG_CHECKING([whether to build with lpsolve])
10977 if test "$enable_lpsolve" != "no"; then
10978 ENABLE_LPSOLVE=TRUE
10979 AC_MSG_RESULT([yes])
10981 AC_MSG_RESULT([no])
10983 AC_SUBST(ENABLE_LPSOLVE)
10985 if test "$ENABLE_LPSOLVE" = TRUE; then
10986 AC_MSG_CHECKING([which lpsolve to use])
10987 if test "$with_system_lpsolve" = "yes"; then
10988 AC_MSG_RESULT([external])
10989 SYSTEM_LPSOLVE=TRUE
10990 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
10991 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
10993 # some systems need this. Like Ubuntu...
10994 AC_CHECK_LIB(m, floor)
10995 AC_CHECK_LIB(dl, dlopen)
10996 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
10997 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11000 AC_MSG_RESULT([internal])
11002 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11005 AC_SUBST(SYSTEM_LPSOLVE)
11007 dnl ===================================================================
11008 dnl Checking for libexttextcat
11009 dnl ===================================================================
11010 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11011 if test "$with_system_libexttextcat" = "yes"; then
11012 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11014 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11016 dnl ===================================================================
11017 dnl Checking for libnumbertext
11018 dnl ===================================================================
11019 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11020 if test "$with_system_libnumbertext" = "yes"; then
11021 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11022 SYSTEM_LIBNUMBERTEXT=YES
11024 SYSTEM_LIBNUMBERTEXT=
11025 AC_LANG_PUSH([C++])
11026 save_CPPFLAGS=$CPPFLAGS
11027 CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
11028 AC_CHECK_HEADERS([codecvt regex])
11029 AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
11030 [ LIBNUMBERTEXT_CFLAGS=''
11031 AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
11032 Enable libnumbertext fallback (missing number to number name conversion).])
11034 CPPFLAGS=$save_CPPFLAGS
11037 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11038 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11039 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
11041 dnl ***************************************
11042 dnl testing libc version for Linux...
11043 dnl ***************************************
11044 if test "$_os" = "Linux"; then
11045 AC_MSG_CHECKING([whether libc is >= 2.1.1])
11046 exec 6>/dev/null # no output
11047 AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
11048 exec 6>&1 # output on again
11049 if test "$HAVE_LIBC"; then
11050 AC_MSG_RESULT([yes])
11052 AC_MSG_ERROR([no, upgrade libc])
11056 dnl =========================================
11057 dnl Check for uuidgen
11058 dnl =========================================
11059 if test "$_os" = "WINNT"; then
11060 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11061 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11062 UUIDGEN=uuidgen.exe
11065 AC_PATH_PROG([UUIDGEN], [uuidgen])
11066 if test -z "$UUIDGEN"; then
11067 AC_MSG_WARN([uuid is needed for building installation sets])
11071 dnl ***************************************
11072 dnl Checking for bison and flex
11073 dnl ***************************************
11074 AC_PATH_PROG(BISON, bison)
11075 if test -z "$BISON"; then
11076 AC_MSG_ERROR([no bison found in \$PATH, install it])
11078 AC_MSG_CHECKING([the bison version])
11079 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11080 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11081 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11084 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]
11085 dnl typedef union YYSTYPE
11088 dnl while at least 3.4.1 is know to be good:
11089 if test "$COMPILER_PLUGINS" = TRUE; then
11090 if test "$_bison_longver" -lt 2004; then
11091 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11094 if test "$_bison_longver" -lt 2000; then
11095 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11101 AC_PATH_PROG(FLEX, flex)
11102 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11103 FLEX=`cygpath -m $FLEX`
11105 if test -z "$FLEX"; then
11106 AC_MSG_ERROR([no flex found in \$PATH, install it])
11108 AC_MSG_CHECKING([the flex version])
11109 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11110 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11111 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11115 dnl ***************************************
11116 dnl Checking for patch
11117 dnl ***************************************
11118 AC_PATH_PROG(PATCH, patch)
11119 if test -z "$PATCH"; then
11120 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11123 dnl On Solaris or macOS, check if --with-gnu-patch was used
11124 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11125 if test -z "$with_gnu_patch"; then
11128 if test -x "$with_gnu_patch"; then
11129 GNUPATCH=$with_gnu_patch
11131 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11135 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11136 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11137 AC_MSG_RESULT([yes])
11139 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11145 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11146 GNUPATCH=`cygpath -m $GNUPATCH`
11149 dnl We also need to check for --with-gnu-cp
11151 if test -z "$with_gnu_cp"; then
11152 # check the place where the good stuff is hidden on Solaris...
11153 if test -x /usr/gnu/bin/cp; then
11154 GNUCP=/usr/gnu/bin/cp
11156 AC_PATH_PROGS(GNUCP, gnucp cp)
11158 if test -z $GNUCP; then
11159 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11162 if test -x "$with_gnu_cp"; then
11165 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11169 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11170 GNUCP=`cygpath -m $GNUCP`
11173 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11174 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11175 AC_MSG_RESULT([yes])
11176 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11177 AC_MSG_RESULT([yes])
11179 case "$build_os" in
11180 darwin*|macos*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11183 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11186 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11195 dnl ***************************************
11196 dnl testing assembler path
11197 dnl ***************************************
11199 if test "$_os" = "WINNT"; then
11200 case "$WIN_HOST_ARCH" in
11201 x86) assembler=ml.exe ;;
11202 x64) assembler=ml64.exe ;;
11203 arm64) assembler=armasm64.exe ;;
11206 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11207 if test -f "$MSVC_HOST_PATH/$assembler"; then
11208 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11209 AC_MSG_RESULT([$ML_EXE])
11211 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11217 dnl ===================================================================
11218 dnl We need zip and unzip
11219 dnl ===================================================================
11220 AC_PATH_PROG(ZIP, zip)
11221 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11222 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11223 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],,)
11226 AC_PATH_PROG(UNZIP, unzip)
11227 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11229 dnl ===================================================================
11230 dnl Zip must be a specific type for different build types.
11231 dnl ===================================================================
11232 if test $build_os = cygwin; then
11233 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11234 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11238 dnl ===================================================================
11239 dnl We need touch with -h option support.
11240 dnl ===================================================================
11241 AC_PATH_PROG(TOUCH, touch)
11242 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11244 if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then
11245 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],,)
11248 dnl ===================================================================
11249 dnl Check for system epoxy
11250 dnl ===================================================================
11251 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
11253 dnl ===================================================================
11254 dnl Set vcl option: coordinate device in double or sal_Int32
11255 dnl ===================================================================
11257 dnl disabled for now, we don't want subtle differences between OSs
11258 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11259 dnl if test "$_os" = "Darwin" -o $_os = iOS ; then
11260 dnl AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11261 dnl AC_MSG_RESULT([double])
11263 dnl AC_MSG_RESULT([sal_Int32])
11266 dnl ===================================================================
11267 dnl Test which vclplugs have to be built.
11268 dnl ===================================================================
11270 if test "$USING_X11" != TRUE; then
11275 if test "x$enable_gtk3" = "xyes"; then
11277 AC_DEFINE(ENABLE_GTK3)
11280 AC_SUBST(ENABLE_GTK3)
11282 ENABLE_GTK3_KDE5=""
11283 if test "x$enable_gtk3_kde5" = "xyes"; then
11284 ENABLE_GTK3_KDE5="TRUE"
11285 AC_DEFINE(ENABLE_GTK3_KDE5)
11288 AC_SUBST(ENABLE_GTK3_KDE5)
11291 if test "x$enable_qt5" = "xyes"; then
11293 AC_DEFINE(ENABLE_QT5)
11296 AC_SUBST(ENABLE_QT5)
11299 if test "x$enable_kf5" = "xyes"; then
11301 AC_DEFINE(ENABLE_KF5)
11304 AC_SUBST(ENABLE_KF5)
11308 if test "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11309 if test "$with_system_cairo" = no; then
11310 add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11312 : ${with_system_cairo:=yes}
11313 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)
11314 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11315 FilterLibs "${GTK3_LIBS}"
11316 GTK3_LIBS="${filteredlibs}"
11318 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11319 if test "$with_system_epoxy" != "yes"; then
11320 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11321 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11322 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11325 AC_SUBST(GTK3_LIBS)
11326 AC_SUBST(GTK3_CFLAGS)
11328 if test "$enable_introspection" = yes; then
11329 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11330 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11332 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11336 if test "$_os" = "WINNT"; then
11338 elif test "$_os" = "Darwin"; then
11340 elif test "$_os" = "iOS"; then
11344 build_vcl_plugins="$R"
11345 if test -z "$build_vcl_plugins"; then
11346 build_vcl_plugins="none"
11348 AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins])
11350 dnl ===================================================================
11351 dnl check for dbus support
11352 dnl ===================================================================
11356 DBUS_GLIB_CFLAGS=""
11360 if test "$enable_dbus" = "no"; then
11364 AC_MSG_CHECKING([whether to enable DBUS support])
11365 if test "$test_dbus" = "yes"; then
11367 AC_MSG_RESULT([yes])
11368 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11369 AC_DEFINE(ENABLE_DBUS)
11370 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11371 FilterLibs "${DBUS_LIBS}"
11372 DBUS_LIBS="${filteredlibs}"
11374 # Glib is needed for BluetoothServer
11375 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11376 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11378 DBUS_HAVE_GLIB="TRUE"
11379 AC_DEFINE(DBUS_HAVE_GLIB,1)
11381 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11384 AC_MSG_RESULT([no])
11387 AC_SUBST(ENABLE_DBUS)
11388 AC_SUBST(DBUS_CFLAGS)
11389 AC_SUBST(DBUS_LIBS)
11390 AC_SUBST(DBUS_GLIB_CFLAGS)
11391 AC_SUBST(DBUS_GLIB_LIBS)
11392 AC_SUBST(DBUS_HAVE_GLIB)
11394 AC_MSG_CHECKING([whether to enable Impress remote control])
11395 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11396 AC_MSG_RESULT([yes])
11397 ENABLE_SDREMOTE=TRUE
11398 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11400 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11401 # The Bluetooth code doesn't compile with macOS SDK 10.15
11402 if test "$enable_sdremote_bluetooth" = yes; then
11403 AC_MSG_ERROR([macOS SDK $with_macosx_sdk does not currently support --enable-sdremote-bluetooth])
11405 enable_sdremote_bluetooth=no
11407 # If not explicitly enabled or disabled, default
11408 if test -z "$enable_sdremote_bluetooth"; then
11411 # Default to yes for these
11412 enable_sdremote_bluetooth=yes
11416 enable_sdremote_bluetooth=no
11420 # $enable_sdremote_bluetooth is guaranteed non-empty now
11422 if test "$enable_sdremote_bluetooth" != "no"; then
11423 if test "$OS" = "LINUX"; then
11424 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11425 AC_MSG_RESULT([yes])
11426 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11427 dnl ===================================================================
11428 dnl Check for system bluez
11429 dnl ===================================================================
11430 AC_MSG_CHECKING([which Bluetooth header to use])
11431 if test "$with_system_bluez" = "yes"; then
11432 AC_MSG_RESULT([external])
11433 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11434 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11437 AC_MSG_RESULT([internal])
11441 AC_MSG_RESULT([no, dbus disabled])
11442 ENABLE_SDREMOTE_BLUETOOTH=
11446 AC_MSG_RESULT([yes])
11447 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11451 AC_MSG_RESULT([no])
11452 ENABLE_SDREMOTE_BLUETOOTH=
11458 AC_MSG_RESULT([no])
11460 AC_SUBST(ENABLE_SDREMOTE)
11461 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11462 AC_SUBST(SYSTEM_BLUEZ)
11464 dnl ===================================================================
11465 dnl Check whether to enable GIO support
11466 dnl ===================================================================
11467 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11468 AC_MSG_CHECKING([whether to enable GIO support])
11469 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11470 dnl Need at least 2.26 for the dbus support.
11471 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11472 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11473 if test "$ENABLE_GIO" = "TRUE"; then
11474 AC_DEFINE(ENABLE_GIO)
11475 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11476 FilterLibs "${GIO_LIBS}"
11477 GIO_LIBS="${filteredlibs}"
11480 AC_MSG_RESULT([no])
11483 AC_SUBST(ENABLE_GIO)
11484 AC_SUBST(GIO_CFLAGS)
11488 dnl ===================================================================
11490 SPLIT_APP_MODULES=""
11491 if test "$enable_split_app_modules" = "yes"; then
11492 SPLIT_APP_MODULES="TRUE"
11494 AC_SUBST(SPLIT_APP_MODULES)
11496 SPLIT_OPT_FEATURES=""
11497 if test "$enable_split_opt_features" = "yes"; then
11498 SPLIT_OPT_FEATURES="TRUE"
11500 AC_SUBST(SPLIT_OPT_FEATURES)
11502 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then
11503 if test "$enable_cairo_canvas" = yes; then
11504 AC_MSG_ERROR([The cairo canvas should not be used for this platform])
11506 enable_cairo_canvas=no
11507 elif test -z "$enable_cairo_canvas"; then
11508 enable_cairo_canvas=yes
11511 ENABLE_CAIRO_CANVAS=""
11512 if test "$enable_cairo_canvas" = "yes"; then
11514 ENABLE_CAIRO_CANVAS="TRUE"
11515 AC_DEFINE(ENABLE_CAIRO_CANVAS)
11517 AC_SUBST(ENABLE_CAIRO_CANVAS)
11519 dnl ===================================================================
11520 dnl Check whether the GStreamer libraries are available.
11521 dnl ===================================================================
11523 ENABLE_GSTREAMER_1_0=""
11525 if test "$build_gstreamer_1_0" = "yes"; then
11527 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11528 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11529 ENABLE_GSTREAMER_1_0="TRUE"
11530 AC_MSG_RESULT([yes])
11531 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11532 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11533 FilterLibs "${GSTREAMER_1_0_LIBS}"
11534 GSTREAMER_1_0_LIBS="${filteredlibs}"
11535 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11537 AC_MSG_RESULT([no])
11540 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11541 AC_SUBST(GSTREAMER_1_0_LIBS)
11542 AC_SUBST(ENABLE_GSTREAMER_1_0)
11544 dnl ===================================================================
11545 dnl Check whether to build the VLC avmedia backend
11546 dnl ===================================================================
11550 AC_MSG_CHECKING([whether to enable the VLC avmedia backend])
11551 if test "$enable_avmedia" = yes -a $_os != iOS -a $_os != Android -a "$enable_vlc" = yes; then
11553 AC_MSG_RESULT([yes])
11555 AC_MSG_RESULT([no])
11557 AC_SUBST(ENABLE_VLC)
11559 ENABLE_OPENGL_TRANSITIONS=
11560 ENABLE_OPENGL_CANVAS=
11561 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11563 elif test "$_os" = "Darwin"; then
11564 # We use frameworks on macOS, no need for detail checks
11565 ENABLE_OPENGL_TRANSITIONS=TRUE
11566 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11567 ENABLE_OPENGL_CANVAS=TRUE
11568 elif test $_os = WINNT; then
11569 ENABLE_OPENGL_TRANSITIONS=TRUE
11570 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11571 ENABLE_OPENGL_CANVAS=TRUE
11573 if test "$USING_X11" = TRUE; then
11574 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11575 ENABLE_OPENGL_TRANSITIONS=TRUE
11576 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11577 ENABLE_OPENGL_CANVAS=TRUE
11581 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11582 AC_SUBST(ENABLE_OPENGL_CANVAS)
11584 dnl =================================================
11585 dnl Check whether to build with OpenCL support.
11586 dnl =================================================
11588 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11589 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11590 # platform (optional at run-time, used through clew).
11591 BUILD_TYPE="$BUILD_TYPE OPENCL"
11592 AC_DEFINE(HAVE_FEATURE_OPENCL)
11595 dnl =================================================
11596 dnl Check whether to build with dconf support.
11597 dnl =================================================
11599 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11600 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11601 if test "$enable_dconf" = yes; then
11602 AC_MSG_ERROR([dconf not found])
11607 AC_MSG_CHECKING([whether to enable dconf])
11608 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11612 AC_MSG_RESULT([no])
11615 AC_DEFINE(ENABLE_DCONF)
11616 AC_MSG_RESULT([yes])
11618 AC_SUBST([DCONF_CFLAGS])
11619 AC_SUBST([DCONF_LIBS])
11620 AC_SUBST([ENABLE_DCONF])
11623 AC_MSG_CHECKING([whether to build the PDF import feature])
11625 if test $_os != iOS -a \( -z "$enable_pdfimport" -o "$enable_pdfimport" = yes \); then
11626 AC_MSG_RESULT([yes])
11627 ENABLE_PDFIMPORT=TRUE
11628 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11630 AC_MSG_RESULT([no])
11634 AC_MSG_CHECKING([whether to build PDFium])
11636 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11637 AC_MSG_RESULT([yes])
11639 AC_DEFINE(HAVE_FEATURE_PDFIUM)
11640 BUILD_TYPE="$BUILD_TYPE PDFIUM"
11642 AC_MSG_RESULT([no])
11644 AC_SUBST(ENABLE_PDFIUM)
11646 dnl ===================================================================
11647 dnl Check for poppler
11648 dnl ===================================================================
11650 AC_MSG_CHECKING([whether to build Poppler])
11651 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
11652 AC_MSG_RESULT([yes])
11653 ENABLE_POPPLER=TRUE
11654 AC_DEFINE(HAVE_FEATURE_POPPLER)
11656 AC_MSG_RESULT([no])
11658 AC_SUBST(ENABLE_POPPLER)
11660 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11661 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11664 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11665 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11668 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11669 dnl ===================================================================
11670 dnl Check for system poppler
11671 dnl ===================================================================
11672 AC_MSG_CHECKING([which PDF import poppler to use])
11673 if test "$with_system_poppler" = "yes"; then
11674 AC_MSG_RESULT([external])
11675 SYSTEM_POPPLER=TRUE
11676 PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11677 AC_LANG_PUSH([C++])
11678 save_CXXFLAGS=$CXXFLAGS
11679 save_CPPFLAGS=$CPPFLAGS
11680 CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11681 CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11682 AC_CHECK_HEADER([cpp/poppler-version.h],
11683 [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11685 CXXFLAGS=$save_CXXFLAGS
11686 CPPFLAGS=$save_CPPFLAGS
11688 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11690 FilterLibs "${POPPLER_LIBS}"
11691 POPPLER_LIBS="${filteredlibs}"
11693 AC_MSG_RESULT([internal])
11695 BUILD_TYPE="$BUILD_TYPE POPPLER"
11696 AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11698 AC_DEFINE([ENABLE_PDFIMPORT],1)
11700 AC_SUBST(ENABLE_PDFIMPORT)
11701 AC_SUBST(SYSTEM_POPPLER)
11702 AC_SUBST(POPPLER_CFLAGS)
11703 AC_SUBST(POPPLER_LIBS)
11706 AC_MSG_CHECKING([whether to build Skia])
11708 if test "$enable_skia" != "no" -a "$build_skia" = "yes"; then
11709 if test "$enable_skia" = "debug"; then
11710 AC_MSG_RESULT([yes (debug)])
11711 ENABLE_SKIA_DEBUG=TRUE
11713 AC_MSG_RESULT([yes])
11717 AC_DEFINE(HAVE_FEATURE_SKIA)
11718 BUILD_TYPE="$BUILD_TYPE SKIA"
11720 AC_MSG_RESULT([no])
11722 AC_SUBST(ENABLE_SKIA)
11723 AC_SUBST(ENABLE_SKIA_DEBUG)
11725 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
11726 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
11727 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
11728 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
11729 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
11730 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
11731 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
11732 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
11733 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
11734 HAVE_LO_CLANG_DLLEXPORTINLINES=
11736 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE -a ! \( "$_os" = "WINNT" -a "$CPUNAME" = "ARM64" \); then
11737 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11738 AC_MSG_CHECKING([for Clang])
11739 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
11741 if test "$_os" = "WINNT"; then
11742 AC_MSG_CHECKING([for clang-cl])
11743 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
11744 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
11745 dnl explicitly set -m32/-m64
11746 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
11747 LO_CLANG_CXX="$LO_CLANG_CC"
11748 AC_MSG_RESULT([$LO_CLANG_CC])
11750 AC_MSG_RESULT([no])
11753 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
11754 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
11757 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
11758 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
11759 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
11760 if test "$clang2_ver" -lt 50002; then
11761 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
11766 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
11768 CXX="$LO_CLANG_CXX"
11769 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
11770 AC_LANG_PUSH([C++])
11771 save_CXXFLAGS=$CXXFLAGS
11772 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
11773 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
11774 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
11775 AC_MSG_RESULT([yes])
11776 ], [AC_MSG_RESULT([no])])
11777 CXXFLAGS=$save_CXXFLAGS
11780 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
11781 AC_MSG_ERROR([Clang compiler does not support -Zc:dllexportInlines-. The Skia library needs to be built using a newer Clang version, or use --disable-skia.])
11784 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
11785 # Skia is the default on Windows, so hard-require Clang.
11786 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
11787 if test "$_os" = "WINNT"; then
11788 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang.])
11790 AC_MSG_WARN([Clang compiler not found.])
11795 CXX="$LO_CLANG_CXX"
11796 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
11799 flag_sse41=-msse4.1
11800 flag_sse42=-msse4.2
11803 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
11807 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
11808 AC_LANG_PUSH([C++])
11809 save_CXXFLAGS=$CXXFLAGS
11810 CXXFLAGS="$CXXFLAGS $flag_sse2"
11811 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11812 #include <emmintrin.h>
11814 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11815 c = _mm_xor_si128 (a, b);
11819 [can_compile_sse2=yes],
11820 [can_compile_sse2=no])
11822 CXXFLAGS=$save_CXXFLAGS
11823 AC_MSG_RESULT([${can_compile_sse2}])
11824 if test "${can_compile_sse2}" = "yes" ; then
11825 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
11828 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
11829 AC_LANG_PUSH([C++])
11830 save_CXXFLAGS=$CXXFLAGS
11831 CXXFLAGS="$CXXFLAGS $flag_ssse3"
11832 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11833 #include <tmmintrin.h>
11835 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11836 c = _mm_maddubs_epi16 (a, b);
11840 [can_compile_ssse3=yes],
11841 [can_compile_ssse3=no])
11843 CXXFLAGS=$save_CXXFLAGS
11844 AC_MSG_RESULT([${can_compile_ssse3}])
11845 if test "${can_compile_ssse3}" = "yes" ; then
11846 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
11849 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
11850 AC_LANG_PUSH([C++])
11851 save_CXXFLAGS=$CXXFLAGS
11852 CXXFLAGS="$CXXFLAGS $flag_sse41"
11853 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11854 #include <smmintrin.h>
11856 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11857 c = _mm_cmpeq_epi64 (a, b);
11861 [can_compile_sse41=yes],
11862 [can_compile_sse41=no])
11864 CXXFLAGS=$save_CXXFLAGS
11865 AC_MSG_RESULT([${can_compile_sse41}])
11866 if test "${can_compile_sse41}" = "yes" ; then
11867 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
11870 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
11871 AC_LANG_PUSH([C++])
11872 save_CXXFLAGS=$CXXFLAGS
11873 CXXFLAGS="$CXXFLAGS $flag_sse42"
11874 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11875 #include <nmmintrin.h>
11877 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
11878 c = _mm_cmpgt_epi64 (a, b);
11882 [can_compile_sse42=yes],
11883 [can_compile_sse42=no])
11885 CXXFLAGS=$save_CXXFLAGS
11886 AC_MSG_RESULT([${can_compile_sse42}])
11887 if test "${can_compile_sse42}" = "yes" ; then
11888 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
11891 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
11892 AC_LANG_PUSH([C++])
11893 save_CXXFLAGS=$CXXFLAGS
11894 CXXFLAGS="$CXXFLAGS $flag_avx"
11895 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11896 #include <immintrin.h>
11898 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
11899 c = _mm256_xor_ps(a, b);
11903 [can_compile_avx=yes],
11904 [can_compile_avx=no])
11906 CXXFLAGS=$save_CXXFLAGS
11907 AC_MSG_RESULT([${can_compile_avx}])
11908 if test "${can_compile_avx}" = "yes" ; then
11909 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
11912 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
11913 AC_LANG_PUSH([C++])
11914 save_CXXFLAGS=$CXXFLAGS
11915 CXXFLAGS="$CXXFLAGS $flag_avx2"
11916 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11917 #include <immintrin.h>
11919 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
11920 c = _mm256_maddubs_epi16(a, b);
11924 [can_compile_avx2=yes],
11925 [can_compile_avx2=no])
11927 CXXFLAGS=$save_CXXFLAGS
11928 AC_MSG_RESULT([${can_compile_avx2}])
11929 if test "${can_compile_avx2}" = "yes" ; then
11930 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
11933 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
11934 AC_LANG_PUSH([C++])
11935 save_CXXFLAGS=$CXXFLAGS
11936 CXXFLAGS="$CXXFLAGS $flag_avx512"
11937 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11938 #include <immintrin.h>
11940 __m512i a = _mm512_loadu_si512(0);
11944 [can_compile_avx512=yes],
11945 [can_compile_avx512=no])
11947 CXXFLAGS=$save_CXXFLAGS
11948 AC_MSG_RESULT([${can_compile_avx512}])
11949 if test "${can_compile_avx512}" = "yes" ; then
11950 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
11953 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
11954 AC_LANG_PUSH([C++])
11955 save_CXXFLAGS=$CXXFLAGS
11956 CXXFLAGS="$CXXFLAGS $flag_f16c"
11957 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11958 #include <immintrin.h>
11960 __m128i a = _mm_set1_epi32 (0);
11962 c = _mm_cvtph_ps(a);
11966 [can_compile_f16c=yes],
11967 [can_compile_f16c=no])
11969 CXXFLAGS=$save_CXXFLAGS
11970 AC_MSG_RESULT([${can_compile_f16c}])
11971 if test "${can_compile_f16c}" = "yes" ; then
11972 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
11975 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
11976 AC_LANG_PUSH([C++])
11977 save_CXXFLAGS=$CXXFLAGS
11978 CXXFLAGS="$CXXFLAGS $flag_fma"
11979 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
11980 #include <immintrin.h>
11982 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
11983 d = _mm256_fmadd_ps(a, b, c);
11987 [can_compile_fma=yes],
11988 [can_compile_fma=no])
11990 CXXFLAGS=$save_CXXFLAGS
11991 AC_MSG_RESULT([${can_compile_fma}])
11992 if test "${can_compile_fma}" = "yes" ; then
11993 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12000 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12002 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12003 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12007 save_CFLAGS=$CFLAGS
12008 CFLAGS="$CFLAGS --ccache-skip -O2"
12009 dnl an empty program will do, we're checking the compiler flags
12010 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12011 [use_ccache=yes], [use_ccache=no])
12012 CFLAGS=$save_CFLAGS
12014 if test $use_ccache = yes; then
12015 AC_MSG_RESULT([yes])
12017 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12018 AC_MSG_RESULT([no])
12022 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12023 AC_LANG_PUSH([C++])
12025 CXX="$LO_CLANG_CXX"
12026 save_CXXFLAGS=$CXXFLAGS
12027 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
12028 dnl an empty program will do, we're checking the compiler flags
12029 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12030 [use_ccache=yes], [use_ccache=no])
12031 if test $use_ccache = yes; then
12032 AC_MSG_RESULT([yes])
12034 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12035 AC_MSG_RESULT([no])
12037 CXXFLAGS=$save_CXXFLAGS
12042 AC_SUBST(LO_CLANG_CC)
12043 AC_SUBST(LO_CLANG_CXX)
12044 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12045 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12046 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12047 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12048 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12049 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12050 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12051 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12052 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12053 AC_SUBST(CLANG_USE_LD)
12054 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12058 if test "$enable_gpgmepp" = no; then
12059 AC_MSG_CHECKING([whether to enable gpgmepp])
12060 AC_MSG_RESULT([no])
12061 elif test "$enable_mpl_subset" = "yes"; then
12062 AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
12063 AC_MSG_RESULT([yes])
12064 elif test "$enable_fuzzers" = "yes"; then
12065 AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
12066 AC_MSG_RESULT([yes])
12067 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
12068 dnl ===================================================================
12069 dnl Check for system gpgme
12070 dnl ===================================================================
12071 AC_MSG_CHECKING([which gpgmepp to use])
12072 if test "$with_system_gpgmepp" = "yes"; then
12073 AC_MSG_RESULT([external])
12074 SYSTEM_GPGMEPP=TRUE
12076 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12077 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12078 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
12079 # progress_callback is the only func with plain C linkage
12080 # checking for it also filters out older, KDE-dependent libgpgmepp versions
12081 AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12082 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12083 AC_CHECK_HEADER(gpgme.h, [],
12084 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12086 AC_MSG_RESULT([internal])
12087 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12088 AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
12090 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12091 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12092 if test "$_os" != "WINNT"; then
12093 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12094 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12097 ENABLE_GPGMEPP=TRUE
12098 AC_DEFINE([HAVE_FEATURE_GPGME])
12099 AC_PATH_PROG(GPG, gpg)
12100 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12101 # so let's exclude that manually for the moment
12102 if test -n "$GPG" -a "$_os" != "WINNT"; then
12103 # make sure we not only have a working gpgme, but a full working
12104 # gpg installation to run OpenPGP signature verification
12105 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12107 if test "$_os" = "Linux"; then
12109 AC_MSG_CHECKING([for /run/user/$uid])
12110 if test -d /run/user/$uid; then
12111 AC_MSG_RESULT([yes])
12112 AC_PATH_PROG(GPGCONF, gpgconf)
12114 # Older versions of gpgconf are not working as expected, since
12115 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12116 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12117 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12118 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12119 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12120 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12121 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12122 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12123 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12124 if $GPGCONF --dump-options > /dev/null ; then
12125 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12126 AC_MSG_RESULT([yes])
12127 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12128 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12130 AC_MSG_RESULT([no])
12133 AC_MSG_RESULT([no. missing or broken gpgconf?])
12136 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12139 AC_MSG_RESULT([no])
12143 AC_SUBST(ENABLE_GPGMEPP)
12144 AC_SUBST(SYSTEM_GPGMEPP)
12145 AC_SUBST(GPG_ERROR_CFLAGS)
12146 AC_SUBST(GPG_ERROR_LIBS)
12147 AC_SUBST(LIBASSUAN_CFLAGS)
12148 AC_SUBST(LIBASSUAN_LIBS)
12149 AC_SUBST(GPGMEPP_CFLAGS)
12150 AC_SUBST(GPGMEPP_LIBS)
12152 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12153 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12154 AC_MSG_RESULT([yes])
12155 ENABLE_MEDIAWIKI=TRUE
12156 BUILD_TYPE="$BUILD_TYPE XSLTML"
12157 if test "x$with_java" = "xno"; then
12158 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12161 AC_MSG_RESULT([no])
12163 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12165 AC_SUBST(ENABLE_MEDIAWIKI)
12167 AC_MSG_CHECKING([whether to build the Report Builder])
12168 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12169 AC_MSG_RESULT([yes])
12170 ENABLE_REPORTBUILDER=TRUE
12171 AC_MSG_CHECKING([which jfreereport libs to use])
12172 if test "$with_system_jfreereport" = "yes"; then
12173 SYSTEM_JFREEREPORT=TRUE
12174 AC_MSG_RESULT([external])
12175 if test -z $SAC_JAR; then
12176 SAC_JAR=/usr/share/java/sac.jar
12178 if ! test -f $SAC_JAR; then
12179 AC_MSG_ERROR(sac.jar not found.)
12182 if test -z $LIBXML_JAR; then
12183 if test -f /usr/share/java/libxml-1.0.0.jar; then
12184 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12185 elif test -f /usr/share/java/libxml.jar; then
12186 LIBXML_JAR=/usr/share/java/libxml.jar
12188 AC_MSG_ERROR(libxml.jar replacement not found.)
12190 elif ! test -f $LIBXML_JAR; then
12191 AC_MSG_ERROR(libxml.jar not found.)
12194 if test -z $FLUTE_JAR; then
12195 if test -f /usr/share/java/flute-1.3.0.jar; then
12196 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12197 elif test -f /usr/share/java/flute.jar; then
12198 FLUTE_JAR=/usr/share/java/flute.jar
12200 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12202 elif ! test -f $FLUTE_JAR; then
12203 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12206 if test -z $JFREEREPORT_JAR; then
12207 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12208 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12209 elif test -f /usr/share/java/flow-engine.jar; then
12210 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12212 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12214 elif ! test -f $JFREEREPORT_JAR; then
12215 AC_MSG_ERROR(jfreereport.jar not found.)
12218 if test -z $LIBLAYOUT_JAR; then
12219 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12220 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12221 elif test -f /usr/share/java/liblayout.jar; then
12222 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12224 AC_MSG_ERROR(liblayout.jar replacement not found.)
12226 elif ! test -f $LIBLAYOUT_JAR; then
12227 AC_MSG_ERROR(liblayout.jar not found.)
12230 if test -z $LIBLOADER_JAR; then
12231 if test -f /usr/share/java/libloader-1.0.0.jar; then
12232 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12233 elif test -f /usr/share/java/libloader.jar; then
12234 LIBLOADER_JAR=/usr/share/java/libloader.jar
12236 AC_MSG_ERROR(libloader.jar replacement not found.)
12238 elif ! test -f $LIBLOADER_JAR; then
12239 AC_MSG_ERROR(libloader.jar not found.)
12242 if test -z $LIBFORMULA_JAR; then
12243 if test -f /usr/share/java/libformula-0.2.0.jar; then
12244 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12245 elif test -f /usr/share/java/libformula.jar; then
12246 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12248 AC_MSG_ERROR(libformula.jar replacement not found.)
12250 elif ! test -f $LIBFORMULA_JAR; then
12251 AC_MSG_ERROR(libformula.jar not found.)
12254 if test -z $LIBREPOSITORY_JAR; then
12255 if test -f /usr/share/java/librepository-1.0.0.jar; then
12256 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12257 elif test -f /usr/share/java/librepository.jar; then
12258 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12260 AC_MSG_ERROR(librepository.jar replacement not found.)
12262 elif ! test -f $LIBREPOSITORY_JAR; then
12263 AC_MSG_ERROR(librepository.jar not found.)
12266 if test -z $LIBFONTS_JAR; then
12267 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12268 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12269 elif test -f /usr/share/java/libfonts.jar; then
12270 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12272 AC_MSG_ERROR(libfonts.jar replacement not found.)
12274 elif ! test -f $LIBFONTS_JAR; then
12275 AC_MSG_ERROR(libfonts.jar not found.)
12278 if test -z $LIBSERIALIZER_JAR; then
12279 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12280 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12281 elif test -f /usr/share/java/libserializer.jar; then
12282 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12284 AC_MSG_ERROR(libserializer.jar replacement not found.)
12286 elif ! test -f $LIBSERIALIZER_JAR; then
12287 AC_MSG_ERROR(libserializer.jar not found.)
12290 if test -z $LIBBASE_JAR; then
12291 if test -f /usr/share/java/libbase-1.0.0.jar; then
12292 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12293 elif test -f /usr/share/java/libbase.jar; then
12294 LIBBASE_JAR=/usr/share/java/libbase.jar
12296 AC_MSG_ERROR(libbase.jar replacement not found.)
12298 elif ! test -f $LIBBASE_JAR; then
12299 AC_MSG_ERROR(libbase.jar not found.)
12303 AC_MSG_RESULT([internal])
12304 SYSTEM_JFREEREPORT=
12305 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12309 AC_MSG_RESULT([no])
12310 ENABLE_REPORTBUILDER=
12311 SYSTEM_JFREEREPORT=
12313 AC_SUBST(ENABLE_REPORTBUILDER)
12314 AC_SUBST(SYSTEM_JFREEREPORT)
12316 AC_SUBST(LIBXML_JAR)
12317 AC_SUBST(FLUTE_JAR)
12318 AC_SUBST(JFREEREPORT_JAR)
12319 AC_SUBST(LIBBASE_JAR)
12320 AC_SUBST(LIBLAYOUT_JAR)
12321 AC_SUBST(LIBLOADER_JAR)
12322 AC_SUBST(LIBFORMULA_JAR)
12323 AC_SUBST(LIBREPOSITORY_JAR)
12324 AC_SUBST(LIBFONTS_JAR)
12325 AC_SUBST(LIBSERIALIZER_JAR)
12327 # this has to be here because both the Wiki Publisher and the SRB use
12329 COMMONS_LOGGING_VERSION=1.2
12330 if test "$ENABLE_REPORTBUILDER" = "TRUE"; then
12331 AC_MSG_CHECKING([which Apache commons-* libs to use])
12332 if test "$with_system_apache_commons" = "yes"; then
12333 SYSTEM_APACHE_COMMONS=TRUE
12334 AC_MSG_RESULT([external])
12335 if test -z $COMMONS_LOGGING_JAR; then
12336 if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then
12337 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar
12338 elif test -f /usr/share/java/commons-logging.jar; then
12339 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar
12341 AC_MSG_ERROR(commons-logging.jar replacement not found.)
12343 elif ! test -f $COMMONS_LOGGING_JAR; then
12344 AC_MSG_ERROR(commons-logging.jar not found.)
12347 AC_MSG_RESULT([internal])
12348 SYSTEM_APACHE_COMMONS=
12349 BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS"
12353 AC_SUBST(SYSTEM_APACHE_COMMONS)
12354 AC_SUBST(COMMONS_LOGGING_JAR)
12355 AC_SUBST(COMMONS_LOGGING_VERSION)
12357 # scripting provider for BeanShell?
12358 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12359 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12360 AC_MSG_RESULT([yes])
12361 ENABLE_SCRIPTING_BEANSHELL=TRUE
12363 dnl ===================================================================
12364 dnl Check for system beanshell
12365 dnl ===================================================================
12366 AC_MSG_CHECKING([which beanshell to use])
12367 if test "$with_system_beanshell" = "yes"; then
12368 AC_MSG_RESULT([external])
12370 if test -z $BSH_JAR; then
12371 BSH_JAR=/usr/share/java/bsh.jar
12373 if ! test -f $BSH_JAR; then
12374 AC_MSG_ERROR(bsh.jar not found.)
12377 AC_MSG_RESULT([internal])
12379 BUILD_TYPE="$BUILD_TYPE BSH"
12382 AC_MSG_RESULT([no])
12383 ENABLE_SCRIPTING_BEANSHELL=
12384 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12386 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12387 AC_SUBST(SYSTEM_BSH)
12390 # scripting provider for JavaScript?
12391 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12392 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12393 AC_MSG_RESULT([yes])
12394 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12396 dnl ===================================================================
12397 dnl Check for system rhino
12398 dnl ===================================================================
12399 AC_MSG_CHECKING([which rhino to use])
12400 if test "$with_system_rhino" = "yes"; then
12401 AC_MSG_RESULT([external])
12403 if test -z $RHINO_JAR; then
12404 RHINO_JAR=/usr/share/java/js.jar
12406 if ! test -f $RHINO_JAR; then
12407 AC_MSG_ERROR(js.jar not found.)
12410 AC_MSG_RESULT([internal])
12412 BUILD_TYPE="$BUILD_TYPE RHINO"
12416 AC_MSG_RESULT([no])
12417 ENABLE_SCRIPTING_JAVASCRIPT=
12418 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12420 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12421 AC_SUBST(SYSTEM_RHINO)
12422 AC_SUBST(RHINO_JAR)
12424 # This is only used in Qt5/KF5 checks to determine if /usr/lib64
12425 # paths should be added to library search path. So lets put all 64-bit
12428 case "$host_cpu" in
12429 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12430 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12431 supports_multilib="yes"
12438 dnl ===================================================================
12439 dnl QT5 Integration
12440 dnl ===================================================================
12446 QT5_GOBJECT_CFLAGS=""
12447 QT5_GOBJECT_LIBS=""
12448 QT5_HAVE_GOBJECT=""
12449 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12450 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12451 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12453 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12454 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12456 if test -n "$supports_multilib"; then
12457 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12460 qt5_test_include="QtWidgets/qapplication.h"
12461 qt5_test_library="libQt5Widgets.so"
12463 dnl Check for qmake5
12464 AC_PATH_PROGS( QMAKE5, [qmake-qt5 qmake], no, [$QT5DIR/bin:$PATH])
12465 if test "$QMAKE5" = "no"; then
12466 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12468 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12469 if test -z "$qmake5_test_ver"; then
12470 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12472 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12473 qt5_minimal_minor="6"
12474 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12475 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12477 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12481 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12482 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12484 AC_MSG_CHECKING([for Qt5 headers])
12486 for inc_dir in $qt5_incdirs; do
12487 if test -r "$inc_dir/$qt5_test_include"; then
12488 qt5_incdir="$inc_dir"
12492 AC_MSG_RESULT([$qt5_incdir])
12493 if test "x$qt5_incdir" = "xno"; then
12494 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12496 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12497 AC_LANG_PUSH([C++])
12498 save_CPPFLAGS=$CPPFLAGS
12499 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12500 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12501 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12502 CPPFLAGS=$save_CPPFLAGS
12505 AC_MSG_CHECKING([for Qt5 libraries])
12507 for lib_dir in $qt5_libdirs; do
12508 if test -r "$lib_dir/$qt5_test_library"; then
12509 qt5_libdir="$lib_dir"
12513 AC_MSG_RESULT([$qt5_libdir])
12514 if test "x$qt5_libdir" = "xno"; then
12515 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12518 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12519 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12520 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12522 if test "$USING_X11" = TRUE; then
12523 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12524 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12525 QT5_HAVE_XCB_ICCCM=1
12526 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12528 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)])
12529 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12531 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12532 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12534 AC_DEFINE(QT5_USING_X11)
12537 dnl Check for Meta Object Compiler
12539 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12540 if test "$MOC5" = "no"; then
12541 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
12542 the root of your Qt installation by exporting QT5DIR before running "configure".])
12545 if test "$build_gstreamer_1_0" = "yes"; then
12546 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12548 AC_DEFINE(QT5_HAVE_GOBJECT)
12550 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12554 AC_SUBST(QT5_CFLAGS)
12557 AC_SUBST(QT5_GOBJECT_CFLAGS)
12558 AC_SUBST(QT5_GOBJECT_LIBS)
12559 AC_SUBST(QT5_HAVE_GOBJECT)
12561 dnl ===================================================================
12562 dnl KF5 Integration
12563 dnl ===================================================================
12567 KF5_CONFIG="kf5-config"
12568 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12569 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12571 if test "$OS" = "HAIKU"; then
12572 haiku_arch="`echo $RTL_ARCH | tr X x`"
12573 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
12574 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
12577 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
12578 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
12579 if test -n "$supports_multilib"; then
12580 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
12583 kf5_test_include="KF5/kcoreaddons_version.h"
12584 kf5_test_library="libKF5CoreAddons.so"
12585 kf5_libdirs="$qt5_libdir $kf5_libdirs"
12587 dnl kf5 KDE4 support compatibility installed
12588 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
12589 if test "$KF5_CONFIG" != "no"; then
12590 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
12591 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
12594 dnl Check for KF5 headers
12595 AC_MSG_CHECKING([for KF5 headers])
12597 for kf5_check in $kf5_incdirs; do
12598 if test -r "$kf5_check/$kf5_test_include"; then
12599 kf5_incdir="$kf5_check/KF5"
12603 AC_MSG_RESULT([$kf5_incdir])
12604 if test "x$kf5_incdir" = "xno"; then
12605 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12608 dnl Check for KF5 libraries
12609 AC_MSG_CHECKING([for KF5 libraries])
12611 for kf5_check in $kf5_libdirs; do
12612 if test -r "$kf5_check/$kf5_test_library"; then
12613 kf5_libdir="$kf5_check"
12618 AC_MSG_RESULT([$kf5_libdir])
12619 if test "x$kf5_libdir" = "xno"; then
12620 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
12623 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"
12624 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12625 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12627 if test "$USING_X11" = TRUE; then
12628 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
12631 AC_LANG_PUSH([C++])
12632 save_CXXFLAGS=$CXXFLAGS
12633 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
12634 AC_MSG_CHECKING([whether KDE is >= 5.0])
12635 AC_RUN_IFELSE([AC_LANG_SOURCE([[
12636 #include <kcoreaddons_version.h>
12638 int main(int argc, char **argv) {
12639 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
12642 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
12643 CXXFLAGS=$save_CXXFLAGS
12646 AC_SUBST(KF5_CFLAGS)
12649 dnl ===================================================================
12650 dnl Test whether to include Evolution 2 support
12651 dnl ===================================================================
12652 AC_MSG_CHECKING([whether to enable evolution 2 support])
12653 if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then
12654 AC_MSG_RESULT([yes])
12655 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
12656 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12657 FilterLibs "${GOBJECT_LIBS}"
12658 GOBJECT_LIBS="${filteredlibs}"
12659 ENABLE_EVOAB2="TRUE"
12662 AC_MSG_RESULT([no])
12664 AC_SUBST(ENABLE_EVOAB2)
12665 AC_SUBST(GOBJECT_CFLAGS)
12666 AC_SUBST(GOBJECT_LIBS)
12668 dnl ===================================================================
12669 dnl Test which themes to include
12670 dnl ===================================================================
12671 AC_MSG_CHECKING([which themes to include])
12672 # if none given use default subset of available themes
12673 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
12674 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"
12678 if test "x$with_theme" != "xno"; then
12679 for theme in $with_theme; do
12681 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" ;;
12682 default) real_theme=colibre ;;
12683 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
12685 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
12688 AC_MSG_RESULT([$WITH_THEMES])
12689 AC_SUBST([WITH_THEMES])
12690 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
12691 for theme in $with_theme; do
12693 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
12698 dnl ===================================================================
12699 dnl Test whether to integrate helppacks into the product's installer
12700 dnl ===================================================================
12701 AC_MSG_CHECKING([for helppack integration])
12702 if test "$with_helppack_integration" = "no"; then
12703 AC_MSG_RESULT([no integration])
12705 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
12706 AC_MSG_RESULT([integration])
12709 ###############################################################################
12710 # Extensions checking
12711 ###############################################################################
12712 AC_MSG_CHECKING([for extensions integration])
12713 if test "x$enable_extension_integration" != "xno"; then
12714 WITH_EXTENSION_INTEGRATION=TRUE
12715 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
12716 AC_MSG_RESULT([yes, use integration])
12718 WITH_EXTENSION_INTEGRATION=
12719 AC_MSG_RESULT([no, do not integrate])
12721 AC_SUBST(WITH_EXTENSION_INTEGRATION)
12723 dnl Should any extra extensions be included?
12724 dnl There are standalone tests for each of these below.
12725 WITH_EXTRA_EXTENSIONS=
12726 AC_SUBST([WITH_EXTRA_EXTENSIONS])
12728 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
12729 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
12730 if test "x$with_java" != "xno"; then
12731 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
12732 libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
12735 AC_MSG_CHECKING([whether to build opens___.ttf])
12736 if test "$enable_build_opensymbol" = "yes"; then
12737 AC_MSG_RESULT([yes])
12738 AC_PATH_PROG(FONTFORGE, fontforge)
12739 if test -z "$FONTFORGE"; then
12740 AC_MSG_ERROR([fontforge not installed])
12743 AC_MSG_RESULT([no])
12744 OPENSYMBOL_TTF=f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
12745 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
12747 AC_SUBST(OPENSYMBOL_TTF)
12748 AC_SUBST(FONTFORGE)
12750 dnl ===================================================================
12751 dnl Test whether to include fonts
12752 dnl ===================================================================
12753 AC_MSG_CHECKING([whether to include third-party fonts])
12754 if test "$with_fonts" != "no"; then
12755 AC_MSG_RESULT([yes])
12757 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
12758 AC_DEFINE(HAVE_MORE_FONTS)
12760 AC_MSG_RESULT([no])
12762 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
12764 AC_SUBST(WITH_FONTS)
12767 dnl ===================================================================
12768 dnl Test whether to enable online update service
12769 dnl ===================================================================
12770 AC_MSG_CHECKING([whether to enable online update])
12771 ENABLE_ONLINE_UPDATE=
12772 ENABLE_ONLINE_UPDATE_MAR=
12774 if test "$enable_online_update" = ""; then
12775 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12776 AC_MSG_RESULT([yes])
12777 ENABLE_ONLINE_UPDATE="TRUE"
12779 AC_MSG_RESULT([no])
12782 if test "$enable_online_update" = "mar"; then
12783 AC_MSG_RESULT([yes - MAR-based online update])
12784 ENABLE_ONLINE_UPDATE_MAR="TRUE"
12785 if test "$with_update_config" = ""; then
12786 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
12788 UPDATE_CONFIG="$with_update_config"
12789 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
12790 elif test "$enable_online_update" = "yes"; then
12791 AC_MSG_RESULT([yes])
12792 ENABLE_ONLINE_UPDATE="TRUE"
12794 AC_MSG_RESULT([no])
12797 AC_SUBST(ENABLE_ONLINE_UPDATE)
12798 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
12799 AC_SUBST(UPDATE_CONFIG)
12801 dnl ===================================================================
12802 dnl Test whether we need bzip2
12803 dnl ===================================================================
12805 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
12806 AC_MSG_CHECKING([whether to use system bzip2])
12807 if test "$with_system_bzip2" = yes; then
12809 AC_MSG_RESULT([yes])
12810 PKG_CHECK_MODULES(BZIP2, bzip2)
12811 FilterLibs "${BZIP2_LIBS}"
12812 BZIP2_LIBS="${filteredlibs}"
12814 AC_MSG_RESULT([no])
12815 BUILD_TYPE="$BUILD_TYPE BZIP2"
12818 AC_SUBST(SYSTEM_BZIP2)
12819 AC_SUBST(BZIP2_CFLAGS)
12820 AC_SUBST(BZIP2_LIBS)
12822 dnl ===================================================================
12823 dnl Test whether to enable extension update
12824 dnl ===================================================================
12825 AC_MSG_CHECKING([whether to enable extension update])
12826 ENABLE_EXTENSION_UPDATE=
12827 if test "x$enable_extension_update" = "xno"; then
12828 AC_MSG_RESULT([no])
12830 AC_MSG_RESULT([yes])
12831 ENABLE_EXTENSION_UPDATE="TRUE"
12832 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
12833 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
12835 AC_SUBST(ENABLE_EXTENSION_UPDATE)
12838 dnl ===================================================================
12839 dnl Test whether to create MSI with LIMITUI=1 (silent install)
12840 dnl ===================================================================
12841 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
12842 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
12843 AC_MSG_RESULT([no])
12846 AC_MSG_RESULT([yes])
12847 ENABLE_SILENT_MSI=TRUE
12848 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
12850 AC_SUBST(ENABLE_SILENT_MSI)
12852 AC_MSG_CHECKING([whether and how to use Xinerama])
12853 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
12854 if test "$x_libraries" = "default_x_libraries"; then
12855 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
12856 if test "x$XINERAMALIB" = x; then
12857 XINERAMALIB="/usr/lib"
12860 XINERAMALIB="$x_libraries"
12862 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
12863 # we have both versions, let the user decide but use the dynamic one
12866 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
12867 XINERAMA_LINK=dynamic
12869 XINERAMA_LINK=static
12871 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
12872 # we have only the dynamic version
12874 XINERAMA_LINK=dynamic
12875 elif test -e "$XINERAMALIB/libXinerama.a"; then
12877 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
12879 XINERAMA_LINK=static
12889 if test "$USE_XINERAMA" = "TRUE"; then
12890 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
12891 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
12892 [AC_MSG_ERROR(Xinerama header not found.)], [])
12893 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
12894 if test "x$XEXTLIB" = x; then
12895 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
12897 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
12898 if test "$_os" = "FreeBSD"; then
12899 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
12901 if test "$_os" = "Linux"; then
12902 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
12904 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
12905 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
12907 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
12912 AC_MSG_RESULT([no])
12914 AC_SUBST(USE_XINERAMA)
12915 AC_SUBST(XINERAMA_LINK)
12917 dnl ===================================================================
12918 dnl Test whether to build cairo or rely on the system version
12919 dnl ===================================================================
12921 if test "$USING_X11" = TRUE; then
12922 # Used in vcl/Library_vclplug_gen.mk
12926 if test "$test_cairo" = "yes"; then
12927 AC_MSG_CHECKING([whether to use the system cairo])
12929 : ${with_system_cairo:=$with_system_libs}
12930 if test "$with_system_cairo" = "yes"; then
12932 AC_MSG_RESULT([yes])
12934 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
12935 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12936 FilterLibs "${CAIRO_LIBS}"
12937 CAIRO_LIBS="${filteredlibs}"
12939 if test "$test_xrender" = "yes"; then
12940 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
12942 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
12943 #ifdef PictStandardA8
12947 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
12953 AC_MSG_RESULT([no])
12955 BUILD_TYPE="$BUILD_TYPE CAIRO"
12959 AC_SUBST(SYSTEM_CAIRO)
12960 AC_SUBST(CAIRO_CFLAGS)
12961 AC_SUBST(CAIRO_LIBS)
12963 dnl ===================================================================
12964 dnl Test whether to use avahi
12965 dnl ===================================================================
12966 if test "$_os" = "WINNT"; then
12967 # Windows uses bundled mDNSResponder
12968 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
12969 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
12970 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
12971 [ENABLE_AVAHI="TRUE"])
12972 AC_DEFINE(HAVE_FEATURE_AVAHI)
12973 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12974 FilterLibs "${AVAHI_LIBS}"
12975 AVAHI_LIBS="${filteredlibs}"
12978 AC_SUBST(ENABLE_AVAHI)
12979 AC_SUBST(AVAHI_CFLAGS)
12980 AC_SUBST(AVAHI_LIBS)
12982 dnl ===================================================================
12983 dnl Test whether to use liblangtag
12984 dnl ===================================================================
12986 AC_MSG_CHECKING([whether to use system liblangtag])
12987 if test "$with_system_liblangtag" = yes; then
12988 SYSTEM_LIBLANGTAG=TRUE
12989 AC_MSG_RESULT([yes])
12990 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
12991 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
12992 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
12993 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12994 FilterLibs "${LIBLANGTAG_LIBS}"
12995 LIBLANGTAG_LIBS="${filteredlibs}"
12998 AC_MSG_RESULT([no])
12999 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13000 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13001 if test "$COM" = "MSC"; then
13002 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13004 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13007 AC_SUBST(SYSTEM_LIBLANGTAG)
13008 AC_SUBST(LIBLANGTAG_CFLAGS)
13009 AC_SUBST(LIBLANGTAG_LIBS)
13011 dnl ===================================================================
13012 dnl Test whether to build libpng or rely on the system version
13013 dnl ===================================================================
13015 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
13017 dnl ===================================================================
13018 dnl Check for runtime JVM search path
13019 dnl ===================================================================
13020 if test "$ENABLE_JAVA" != ""; then
13021 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13022 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13023 AC_MSG_RESULT([yes])
13024 if ! test -d "$with_jvm_path"; then
13025 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13027 if ! test -d "$with_jvm_path"jvm; then
13028 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13030 JVM_ONE_PATH_CHECK="$with_jvm_path"
13031 AC_SUBST(JVM_ONE_PATH_CHECK)
13033 AC_MSG_RESULT([no])
13037 dnl ===================================================================
13038 dnl Test for the presence of Ant and that it works
13039 dnl ===================================================================
13041 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13042 ANT_HOME=; export ANT_HOME
13043 WITH_ANT_HOME=; export WITH_ANT_HOME
13044 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13045 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13046 if test "$_os" = "WINNT"; then
13047 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13049 with_ant_home="$LODE_HOME/opt/ant"
13051 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13052 with_ant_home="$LODE_HOME/opt/ant"
13055 if test -z "$with_ant_home"; then
13056 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13058 if test "$_os" = "WINNT"; then
13059 # AC_PATH_PROGS needs unix path
13060 with_ant_home=`cygpath -u "$with_ant_home"`
13062 AbsolutePath "$with_ant_home"
13063 with_ant_home=$absolute_path
13064 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13065 WITH_ANT_HOME=$with_ant_home
13066 ANT_HOME=$with_ant_home
13069 if test -z "$ANT"; then
13070 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13072 # resolve relative or absolute symlink
13073 while test -h "$ANT"; do
13075 a_basename=`basename "$ANT"`
13076 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13077 cd "`dirname "$ANT"`"
13078 cd "`dirname "$a_script"`"
13079 ANT="`pwd`"/"`basename "$a_script"`"
13083 AC_MSG_CHECKING([if $ANT works])
13084 mkdir -p conftest.dir
13087 cat > conftest.java << EOF
13088 public class conftest {
13089 int testmethod(int a, int b) {
13095 cat > conftest.xml << EOF
13096 <project name="conftest" default="conftest">
13097 <target name="conftest">
13098 <javac srcdir="." includes="conftest.java">
13104 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13105 if test $? = 0 -a -f ./conftest.class; then
13106 AC_MSG_RESULT([Ant works])
13107 if test -z "$WITH_ANT_HOME"; then
13108 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13109 if test -z "$ANT_HOME"; then
13110 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13113 ANT_HOME="$WITH_ANT_HOME"
13116 echo "configure: Ant test failed" >&5
13117 cat conftest.java >&5
13118 cat conftest.xml >&5
13119 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13122 rm -fr conftest.dir
13124 if test -z "$ANT_HOME"; then
13125 ANT_HOME="NO_ANT_HOME"
13127 PathFormat "$ANT_HOME"
13128 ANT_HOME="$formatted_path"
13130 ANT="$formatted_path"
13133 dnl Checking for ant.jar
13134 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13135 AC_MSG_CHECKING([Ant lib directory])
13136 if test -f $ANT_HOME/lib/ant.jar; then
13137 ANT_LIB="$ANT_HOME/lib"
13139 if test -f $ANT_HOME/ant.jar; then
13140 ANT_LIB="$ANT_HOME"
13142 if test -f /usr/share/java/ant.jar; then
13143 ANT_LIB=/usr/share/java
13145 if test -f /usr/share/ant-core/lib/ant.jar; then
13146 ANT_LIB=/usr/share/ant-core/lib
13148 if test -f $ANT_HOME/lib/ant/ant.jar; then
13149 ANT_LIB="$ANT_HOME/lib/ant"
13151 if test -f /usr/share/lib/ant/ant.jar; then
13152 ANT_LIB=/usr/share/lib/ant
13154 AC_MSG_ERROR([Ant libraries not found!])
13161 PathFormat "$ANT_LIB"
13162 ANT_LIB="$formatted_path"
13163 AC_MSG_RESULT([Ant lib directory found.])
13167 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13169 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13170 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13171 ant_version_major=`echo $ant_version | cut -d. -f1`
13172 ant_version_minor=`echo $ant_version | cut -d. -f2`
13173 echo "configure: ant_version $ant_version " >&5
13174 echo "configure: ant_version_major $ant_version_major " >&5
13175 echo "configure: ant_version_minor $ant_version_minor " >&5
13176 if test "$ant_version_major" -ge "2"; then
13177 AC_MSG_RESULT([yes, $ant_version])
13178 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13179 AC_MSG_RESULT([yes, $ant_version])
13181 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13184 rm -f conftest* core core.* *.core
13192 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13193 AC_MSG_CHECKING([for JUnit 4])
13194 if test "$with_junit" = "yes"; then
13195 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13196 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13197 elif test -e /usr/share/java/junit4.jar; then
13198 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13200 if test -e /usr/share/lib/java/junit.jar; then
13201 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13203 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13207 OOO_JUNIT_JAR=$with_junit
13209 if test "$_os" = "WINNT"; then
13210 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13212 printf 'import org.junit.Before;' > conftest.java
13213 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13214 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13217 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13218 specify its pathname via --with-junit=..., or disable it via --without-junit])
13220 rm -f conftest.class conftest.java
13221 if test $OOO_JUNIT_JAR != ""; then
13222 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13225 AC_MSG_CHECKING([for included Hamcrest])
13226 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13227 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13228 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13230 AC_MSG_RESULT([Not included])
13231 AC_MSG_CHECKING([for standalone hamcrest jar.])
13232 if test "$with_hamcrest" = "yes"; then
13233 if test -e /usr/share/lib/java/hamcrest.jar; then
13234 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13235 elif test -e /usr/share/java/hamcrest/core.jar; then
13236 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13237 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13238 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13240 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13243 HAMCREST_JAR=$with_hamcrest
13245 if test "$_os" = "WINNT"; then
13246 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13248 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13249 AC_MSG_RESULT([$HAMCREST_JAR])
13251 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),
13252 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13255 rm -f conftest.class conftest.java
13257 AC_SUBST(OOO_JUNIT_JAR)
13258 AC_SUBST(HAMCREST_JAR)
13264 # check for wget and curl
13269 if test "$enable_fetch_external" != "no"; then
13271 CURL=`which curl 2>/dev/null`
13273 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13275 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13276 if test $? -eq 0; then
13282 if test -z "$WGET" -a -z "$CURL"; then
13283 AC_MSG_ERROR([neither wget nor curl found!])
13292 # check for sha256sum
13296 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13297 eval "$i -a 256 --version" > /dev/null 2>&1
13299 if test $ret -eq 0; then
13300 SHA256SUM="$i -a 256"
13305 if test -z "$SHA256SUM"; then
13306 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13307 eval "$i --version" > /dev/null 2>&1
13309 if test $ret -eq 0; then
13316 if test -z "$SHA256SUM"; then
13317 AC_MSG_ERROR([no sha256sum found!])
13320 AC_SUBST(SHA256SUM)
13322 dnl ===================================================================
13323 dnl Dealing with l10n options
13324 dnl ===================================================================
13325 AC_MSG_CHECKING([which languages to be built])
13326 # get list of all languages
13327 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13328 # the sed command does the following:
13329 # + if a line ends with a backslash, append the next line to it
13330 # + adds " on the beginning of the value (after =)
13331 # + adds " at the end of the value
13332 # + removes en-US; we want to put it on the beginning
13333 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13334 [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)]
13335 ALL_LANGS="en-US $completelangiso"
13336 # check the configured localizations
13337 WITH_LANG="$with_lang"
13339 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13340 # (Norwegian is "nb" and "nn".)
13341 if test "$WITH_LANG" = "no"; then
13345 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13346 AC_MSG_RESULT([en-US])
13348 AC_MSG_RESULT([$WITH_LANG])
13349 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13350 if test -z "$MSGFMT"; then
13351 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13352 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13353 elif test -x "/opt/lo/bin/msgfmt"; then
13354 MSGFMT="/opt/lo/bin/msgfmt"
13356 AC_CHECK_PROGS(MSGFMT, [msgfmt])
13357 if test -z "$MSGFMT"; then
13358 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13362 if test -z "$MSGUNIQ"; then
13363 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13364 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13365 elif test -x "/opt/lo/bin/msguniq"; then
13366 MSGUNIQ="/opt/lo/bin/msguniq"
13368 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13369 if test -z "$MSGUNIQ"; then
13370 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13377 # check that the list is valid
13378 for lang in $WITH_LANG; do
13379 test "$lang" = "ALL" && continue
13380 # need to check for the exact string, so add space before and after the list of all languages
13381 for vl in $ALL_LANGS; do
13382 if test "$vl" = "$lang"; then
13386 if test "$vl" != "$lang"; then
13387 # if you're reading this - you prolly quoted your languages remove the quotes ...
13388 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13391 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13392 echo $WITH_LANG | grep -q en-US
13393 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13395 # list with substituted ALL
13396 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13397 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13398 test "$WITH_LANG" = "en-US" && WITH_LANG=
13399 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13400 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13401 ALL_LANGS=`echo $ALL_LANGS qtz`
13403 AC_SUBST(ALL_LANGS)
13404 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13405 AC_SUBST(WITH_LANG)
13406 AC_SUBST(WITH_LANG_LIST)
13407 AC_SUBST(GIT_NEEDED_SUBMODULES)
13409 WITH_POOR_HELP_LOCALIZATIONS=
13410 if test -d "$SRC_ROOT/translations/source"; then
13411 for l in `ls -1 $SRC_ROOT/translations/source`; do
13412 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13413 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13417 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13419 if test -n "$with_locales"; then
13420 WITH_LOCALES="$with_locales"
13422 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13423 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13424 # config_host/config_locales.h.in
13425 for locale in $WITH_LOCALES; do
13428 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13432 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13435 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13440 AC_DEFINE(WITH_LOCALE_ALL)
13442 AC_SUBST(WITH_LOCALES)
13444 dnl git submodule update --reference
13445 dnl ===================================================================
13446 if test -n "${GIT_REFERENCE_SRC}"; then
13447 for repo in ${GIT_NEEDED_SUBMODULES}; do
13448 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13449 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
13453 AC_SUBST(GIT_REFERENCE_SRC)
13455 dnl git submodules linked dirs
13456 dnl ===================================================================
13457 if test -n "${GIT_LINK_SRC}"; then
13458 for repo in ${GIT_NEEDED_SUBMODULES}; do
13459 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
13460 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
13464 AC_SUBST(GIT_LINK_SRC)
13467 dnl ===================================================================
13468 AC_MSG_CHECKING([for alternative branding images directory])
13469 # initialize mapped arrays
13470 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
13471 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
13473 if test -z "$with_branding" -o "$with_branding" = "no"; then
13474 AC_MSG_RESULT([none])
13475 DEFAULT_BRAND_IMAGES="$brand_files"
13477 if ! test -d $with_branding ; then
13478 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
13480 AC_MSG_RESULT([$with_branding])
13481 CUSTOM_BRAND_DIR="$with_branding"
13482 for lfile in $brand_files
13484 if ! test -f $with_branding/$lfile ; then
13485 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
13486 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
13488 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
13491 check_for_progress="yes"
13494 AC_SUBST([BRAND_INTRO_IMAGES])
13495 AC_SUBST([CUSTOM_BRAND_DIR])
13496 AC_SUBST([CUSTOM_BRAND_IMAGES])
13497 AC_SUBST([DEFAULT_BRAND_IMAGES])
13500 AC_MSG_CHECKING([for 'intro' progress settings])
13504 PROGRESSFRAMECOLOR=
13506 PROGRESSTEXTBASELINE=
13508 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
13509 source "$with_branding/progress.conf"
13510 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
13512 AC_MSG_RESULT([none])
13515 AC_SUBST(PROGRESSBARCOLOR)
13516 AC_SUBST(PROGRESSSIZE)
13517 AC_SUBST(PROGRESSPOSITION)
13518 AC_SUBST(PROGRESSFRAMECOLOR)
13519 AC_SUBST(PROGRESSTEXTCOLOR)
13520 AC_SUBST(PROGRESSTEXTBASELINE)
13523 dnl ===================================================================
13524 dnl Custom build version
13525 dnl ===================================================================
13526 AC_MSG_CHECKING([for extra build ID])
13527 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
13528 EXTRA_BUILDID="$with_extra_buildid"
13530 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
13531 if test -n "$EXTRA_BUILDID" ; then
13532 AC_MSG_RESULT([$EXTRA_BUILDID])
13534 AC_MSG_RESULT([not set])
13536 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
13539 AC_MSG_CHECKING([for vendor])
13540 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
13541 OOO_VENDOR="$USERNAME"
13543 if test -z "$OOO_VENDOR"; then
13547 if test -z "$OOO_VENDOR"; then
13548 OOO_VENDOR="`id -u -n`"
13551 AC_MSG_RESULT([not set, using $OOO_VENDOR])
13553 OOO_VENDOR="$with_vendor"
13554 AC_MSG_RESULT([$OOO_VENDOR])
13556 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
13557 AC_SUBST(OOO_VENDOR)
13559 if test "$_os" = "Android" ; then
13560 ANDROID_PACKAGE_NAME=
13561 AC_MSG_CHECKING([for Android package name])
13562 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
13563 if test -n "$ENABLE_DEBUG"; then
13564 # Default to the package name that makes ndk-gdb happy.
13565 ANDROID_PACKAGE_NAME="org.libreoffice"
13567 ANDROID_PACKAGE_NAME="org.example.libreoffice"
13570 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
13572 ANDROID_PACKAGE_NAME="$with_android_package_name"
13573 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
13575 AC_SUBST(ANDROID_PACKAGE_NAME)
13578 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
13579 if test "$with_compat_oowrappers" = "yes"; then
13580 WITH_COMPAT_OOWRAPPERS=TRUE
13583 WITH_COMPAT_OOWRAPPERS=
13586 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
13588 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
13589 AC_MSG_CHECKING([for install dirname])
13590 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
13591 INSTALLDIRNAME="$with_install_dirname"
13593 AC_MSG_RESULT([$INSTALLDIRNAME])
13594 AC_SUBST(INSTALLDIRNAME)
13596 AC_MSG_CHECKING([for prefix])
13597 test "x$prefix" = xNONE && prefix=$ac_default_prefix
13598 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
13599 PREFIXDIR="$prefix"
13600 AC_MSG_RESULT([$PREFIXDIR])
13601 AC_SUBST(PREFIXDIR)
13603 LIBDIR=[$(eval echo $(eval echo $libdir))]
13606 DATADIR=[$(eval echo $(eval echo $datadir))]
13609 MANDIR=[$(eval echo $(eval echo $mandir))]
13612 DOCDIR=[$(eval echo $(eval echo $docdir))]
13615 BINDIR=[$(eval echo $(eval echo $bindir))]
13618 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
13619 AC_SUBST(INSTALLDIR)
13621 TESTINSTALLDIR="${BUILDDIR}/test-install"
13622 AC_SUBST(TESTINSTALLDIR)
13625 # ===================================================================
13626 # OAuth2 id and secrets
13627 # ===================================================================
13629 AC_MSG_CHECKING([for Google Drive client id and secret])
13630 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
13631 AC_MSG_RESULT([not set])
13632 GDRIVE_CLIENT_ID="\"\""
13633 GDRIVE_CLIENT_SECRET="\"\""
13635 AC_MSG_RESULT([set])
13636 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
13637 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
13639 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
13640 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
13642 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
13643 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
13644 AC_MSG_RESULT([not set])
13645 ALFRESCO_CLOUD_CLIENT_ID="\"\""
13646 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
13648 AC_MSG_RESULT([set])
13649 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
13650 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
13652 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
13653 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
13655 AC_MSG_CHECKING([for OneDrive client id and secret])
13656 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
13657 AC_MSG_RESULT([not set])
13658 ONEDRIVE_CLIENT_ID="\"\""
13659 ONEDRIVE_CLIENT_SECRET="\"\""
13661 AC_MSG_RESULT([set])
13662 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
13663 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
13665 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
13666 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
13669 dnl ===================================================================
13670 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
13671 dnl --enable-dependency-tracking configure option
13672 dnl ===================================================================
13673 AC_MSG_CHECKING([whether to enable dependency tracking])
13674 if test "$enable_dependency_tracking" = "no"; then
13676 AC_MSG_RESULT([no])
13678 AC_MSG_RESULT([yes])
13682 dnl ===================================================================
13683 dnl Number of CPUs to use during the build
13684 dnl ===================================================================
13685 AC_MSG_CHECKING([for number of processors to use])
13686 # plain --with-parallelism is just the default
13687 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
13688 if test "$with_parallelism" = "no"; then
13691 PARALLELISM=$with_parallelism
13694 if test "$enable_icecream" = "yes"; then
13699 Darwin|FreeBSD|NetBSD|OpenBSD)
13700 PARALLELISM=`sysctl -n hw.ncpu`
13704 PARALLELISM=`getconf _NPROCESSORS_ONLN`
13706 # what else than above does profit here *and* has /proc?
13708 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
13712 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
13713 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
13717 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
13718 if test -z "$with_parallelism"; then
13719 AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
13720 add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
13723 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."
13727 if test $PARALLELISM -eq 0; then
13728 AC_MSG_RESULT([explicit make -j option needed])
13730 AC_MSG_RESULT([$PARALLELISM])
13732 AC_SUBST(PARALLELISM)
13734 IWYU_PATH="$with_iwyu"
13735 AC_SUBST(IWYU_PATH)
13736 if test ! -z "$IWYU_PATH"; then
13737 if test ! -f "$IWYU_PATH"; then
13738 AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
13743 # Set up ILIB for MSVC build
13746 if test "$build_os" = "cygwin"; then
13748 if test -n "$JAVA_HOME"; then
13749 ILIB="$ILIB;$JAVA_HOME/lib"
13752 ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
13753 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
13754 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13755 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
13756 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
13757 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13758 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
13760 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
13761 ucrtlibpath_formatted=$formatted_path
13762 ILIB="$ILIB;$ucrtlibpath_formatted"
13763 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
13764 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
13765 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
13767 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
13770 if test "$cross_compiling" != "yes"; then
13771 ILIB_FOR_BUILD="$ILIB"
13775 AC_SUBST(ILIB_FOR_BUILD)
13777 # ===================================================================
13778 # Creating bigger shared library to link against
13779 # ===================================================================
13780 AC_MSG_CHECKING([whether to create huge library])
13783 if test $_os = iOS -o $_os = Android; then
13784 # Never any point in mergelibs for these as we build just static
13785 # libraries anyway...
13786 enable_mergelibs=no
13789 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
13790 if test $_os != Linux -a $_os != WINNT; then
13791 add_warning "--enable-mergelibs is not tested for this platform"
13794 AC_MSG_RESULT([yes])
13795 AC_DEFINE(ENABLE_MERGELIBS)
13797 AC_MSG_RESULT([no])
13799 AC_SUBST([MERGELIBS])
13801 dnl ===================================================================
13802 dnl icerun is a wrapper that stops us spawning tens of processes
13803 dnl locally - for tools that can't be executed on the compile cluster
13804 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
13805 dnl ===================================================================
13806 AC_MSG_CHECKING([whether to use icerun wrapper])
13808 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
13809 ICECREAM_RUN=icerun
13810 AC_MSG_RESULT([yes])
13812 AC_MSG_RESULT([no])
13814 AC_SUBST(ICECREAM_RUN)
13816 dnl ===================================================================
13817 dnl Setup the ICECC_VERSION for the build the same way it was set for
13818 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
13819 dnl ===================================================================
13820 x_ICECC_VERSION=[\#]
13821 if test -n "$ICECC_VERSION" ; then
13824 AC_SUBST(x_ICECC_VERSION)
13825 AC_SUBST(ICECC_VERSION)
13827 dnl ===================================================================
13829 AC_MSG_CHECKING([MPL subset])
13832 if test "$enable_mpl_subset" = "yes"; then
13834 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
13836 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
13839 if test "$warn_report" = "true"; then
13840 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
13842 if test "x$enable_postgresql_sdbc" != "xno"; then
13843 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
13845 if test "$enable_lotuswordpro" = "yes"; then
13846 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
13848 if test "$WITH_WEBDAV" = "neon"; then
13849 AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
13851 if test -n "$ENABLE_POPPLER"; then
13852 if test "x$SYSTEM_POPPLER" = "x"; then
13853 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
13856 # cf. m4/libo_check_extension.m4
13857 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
13858 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
13860 for theme in $WITH_THEMES; do
13862 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
13863 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
13868 ENABLE_OPENGL_TRANSITIONS=
13870 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
13871 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
13875 AC_DEFINE(MPL_HAVE_SUBSET)
13876 AC_MSG_RESULT([only])
13878 AC_MSG_RESULT([no restrictions])
13880 AC_SUBST(MPL_SUBSET)
13882 dnl ===================================================================
13884 AC_MSG_CHECKING([formula logger])
13885 ENABLE_FORMULA_LOGGER=
13887 if test "x$enable_formula_logger" = "xyes"; then
13888 AC_MSG_RESULT([yes])
13889 AC_DEFINE(ENABLE_FORMULA_LOGGER)
13890 ENABLE_FORMULA_LOGGER=TRUE
13891 elif test -n "$ENABLE_DBGUTIL" ; then
13892 AC_MSG_RESULT([yes])
13893 AC_DEFINE(ENABLE_FORMULA_LOGGER)
13894 ENABLE_FORMULA_LOGGER=TRUE
13896 AC_MSG_RESULT([no])
13899 AC_SUBST(ENABLE_FORMULA_LOGGER)
13901 dnl ===================================================================
13902 dnl Checking for active Antivirus software.
13903 dnl ===================================================================
13905 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
13906 AC_MSG_CHECKING([for active Antivirus software])
13907 ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
13908 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
13909 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
13910 AC_MSG_RESULT([found])
13911 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
13912 echo $EICAR_STRING > $SRC_ROOT/eicar
13913 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
13915 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13916 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13918 echo $EICAR_STRING > $BUILDDIR/eicar
13919 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
13921 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
13922 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
13924 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"
13926 AC_MSG_RESULT([not found])
13929 AC_MSG_RESULT([n/a])
13933 dnl ===================================================================
13934 dnl Setting up the environment.
13935 dnl ===================================================================
13936 AC_MSG_NOTICE([setting up the build environment variables...])
13940 if test "$build_os" = "cygwin"; then
13941 if test -d "$COMPATH/atlmfc/lib/spectre"; then
13942 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
13943 ATL_INCLUDE="$COMPATH/atlmfc/include"
13944 elif test -d "$COMPATH/atlmfc/lib"; then
13945 ATL_LIB="$COMPATH/atlmfc/lib"
13946 ATL_INCLUDE="$COMPATH/atlmfc/include"
13948 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
13949 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
13951 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
13952 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
13953 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
13955 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
13956 PathFormat "/usr/bin/find.exe"
13957 FIND="$formatted_path"
13958 PathFormat "/usr/bin/sort.exe"
13959 SORT="$formatted_path"
13960 PathFormat "/usr/bin/grep.exe"
13961 WIN_GREP="$formatted_path"
13962 PathFormat "/usr/bin/ls.exe"
13963 WIN_LS="$formatted_path"
13964 PathFormat "/usr/bin/touch.exe"
13965 WIN_TOUCH="$formatted_path"
13971 AC_SUBST(ATL_INCLUDE)
13977 AC_SUBST(WIN_TOUCH)
13979 AC_SUBST(BUILD_TYPE)
13984 PERL="$formatted_path"
13987 if test -n "$TMPDIR"; then
13988 TEMP_DIRECTORY="$TMPDIR"
13990 TEMP_DIRECTORY="/tmp"
13992 if test "$build_os" = "cygwin"; then
13993 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
13995 AC_SUBST(TEMP_DIRECTORY)
13997 # setup the PATH for the environment
13998 if test -n "$LO_PATH_FOR_BUILD"; then
13999 LO_PATH="$LO_PATH_FOR_BUILD"
14002 pathmunge "$MSVC_HOST_PATH" "before"
14010 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14011 if test "$ENABLE_JAVA" != ""; then
14012 pathmunge "$JAVA_HOME/bin" "after"
14017 # Win32 make needs native paths
14018 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14019 LO_PATH=`cygpath -p -m "$PATH"`
14021 if test "$WIN_BUILD_ARCH" = "x64"; then
14022 # needed for msi packaging
14023 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14025 # .NET 4.6 and higher don't have bin directory
14026 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14027 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14029 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14030 pathmunge "$CSC_PATH" "before"
14031 pathmunge "$MIDL_PATH" "before"
14032 pathmunge "$AL_PATH" "before"
14033 pathmunge "$MSVC_MULTI_PATH" "before"
14034 pathmunge "$MSVC_BUILD_PATH" "before"
14035 if test -n "$MSBUILD_PATH" ; then
14036 pathmunge "$MSBUILD_PATH" "before"
14038 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14039 if test "$ENABLE_JAVA" != ""; then
14040 if test -d "$JAVA_HOME/jre/bin/client"; then
14041 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14043 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14044 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14046 pathmunge "$JAVA_HOME/bin" "before"
14048 pathmunge "$MSVC_HOST_PATH" "before"
14052 pathmunge "/usr/css/bin" "before"
14053 if test "$ENABLE_JAVA" != ""; then
14054 pathmunge "$JAVA_HOME/bin" "after"
14062 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14063 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14064 x_LO_ELFCHECK_ALLOWLIST=
14066 x_LO_ELFCHECK_ALLOWLIST=[\#]
14068 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14069 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14073 # Generate a configuration sha256 we can use for deps
14074 if test -f config_host.mk; then
14075 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14077 if test -f config_host_lang.mk; then
14078 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14081 CFLAGS=$my_original_CFLAGS
14082 CXXFLAGS=$my_original_CXXFLAGS
14083 CPPFLAGS=$my_original_CPPFLAGS
14085 AC_CONFIG_LINKS([include:include])
14087 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14088 # BUILD platform configuration] - otherwise breaks cross building
14089 AC_CONFIG_FILES([config_host.mk
14090 config_host_lang.mk
14092 bin/bffvalidator.sh
14093 bin/odfvalidator.sh
14095 hardened_runtime.xcent
14096 instsetoo_native/util/openoffice.lst
14097 sysui/desktop/macosx/Info.plist])
14098 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14099 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14100 AC_CONFIG_HEADERS([config_host/config_clang.h])
14101 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14102 AC_CONFIG_HEADERS([config_host/config_eot.h])
14103 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14104 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14105 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14106 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14107 AC_CONFIG_HEADERS([config_host/config_features.h])
14108 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14109 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14110 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14111 AC_CONFIG_HEADERS([config_host/config_folders.h])
14112 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14113 AC_CONFIG_HEADERS([config_host/config_gio.h])
14114 AC_CONFIG_HEADERS([config_host/config_global.h])
14115 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14116 AC_CONFIG_HEADERS([config_host/config_java.h])
14117 AC_CONFIG_HEADERS([config_host/config_langs.h])
14118 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14119 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14120 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14121 AC_CONFIG_HEADERS([config_host/config_locales.h])
14122 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14123 AC_CONFIG_HEADERS([config_host/config_oox.h])
14124 AC_CONFIG_HEADERS([config_host/config_options.h])
14125 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14126 AC_CONFIG_HEADERS([config_host/config_qrcodegen.h])
14127 AC_CONFIG_HEADERS([config_host/config_skia.h])
14128 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14129 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14130 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14131 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14132 AC_CONFIG_HEADERS([config_host/config_version.h])
14133 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14134 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14135 AC_CONFIG_HEADERS([config_host/config_python.h])
14136 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14139 if test "$CROSS_COMPILING" = TRUE; then
14140 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14143 # touch the config timestamp file
14144 if test ! -f config_host.mk.stamp; then
14145 echo > config_host.mk.stamp
14146 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14147 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14149 echo > config_host.mk.stamp
14152 # touch the config lang timestamp file
14153 if test ! -f config_host_lang.mk.stamp; then
14154 echo > config_host_lang.mk.stamp
14155 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14156 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14158 echo > config_host_lang.mk.stamp
14162 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14163 -a "$build_os" = "cygwin"; then
14166 ****************************************************************************
14168 Your make version is known to be horribly slow, and hard to debug
14169 problems with. To get a reasonably functional make please do:
14171 to install a pre-compiled binary make for Win32
14173 mkdir -p /opt/lo/bin
14175 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14176 cp make-4.2.1-msvc.exe make
14179 to install from source:
14180 place yourself in a working directory of you choice.
14182 git clone git://git.savannah.gnu.org/make.git
14184 [go to Start menu, open "Visual Studio 2019", click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14185 set PATH=%PATH%;C:\Cygwin\bin
14186 [or Cygwin64, if that is what you have]
14187 cd path-to-make-repo-you-cloned-above
14188 build_w32.bat --without-guile
14190 should result in a WinRel/gnumake.exe.
14191 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14193 Then re-run autogen.sh
14195 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14196 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14199 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14200 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14206 ****************************************************************************
14211 To view some help, run:
14216 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14218 After the build has finished successfully, you can immediately run what you built using the command:
14221 if test $_os = Darwin; then
14222 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14224 echo instdir/program/soffice
14228 If you want to run the smoketest, run:
14234 if test -f warn; then
14239 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: