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.4.0.0.alpha1+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19 [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22 AC_MSG_ERROR([You have sourced config_host.mk in this shell. This may lead to trouble, please run in a fresh (login) shell.])
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
46 # Return value: $filteredlibs
51 # let's start with Fedora's paths for now
52 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
53 # ignore it: on UNIXoids it is searched by default anyway
54 # but if it's given explicitly then it may override other paths
55 # (on macOS it would be an error to use it instead of SDK)
58 filteredlibs="$filteredlibs $f"
66 # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
67 # function is called also on Unix.
69 # Return value: $formatted_path and $formatted_path_unix.
71 # $formatted_path is the argument in Windows format, but using forward slashes instead of
72 # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
73 # or shell metacharacters).
75 # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
76 # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
79 # Errors out if 8.3 names are needed but aren't present for some of the path components.
83 # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
85 # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
87 # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
89 # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
91 # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
93 # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
95 # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98 printf "PathFormat $1 ==> "
102 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
103 if test "$build_os" = "wsl"; then
104 formatted_path=$(echo "$formatted_path" | tr -d '\r')
108 # spaces,parentheses,brackets,braces are problematic in pathname
110 case "$formatted_path" in
111 *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
115 if test "$pf_conv_to_dos" = "yes"; then
116 if test "$build_os" = "wsl"; then
117 case "$formatted_path" in
119 formatted_path=$(wslpath -w "$formatted_path")
122 formatted_path=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$formatted_path")
123 elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
124 formatted_path=`cygpath -sm "$formatted_path"`
126 formatted_path=`cygpath -d "$formatted_path"`
128 if test $? -ne 0; then
129 AC_MSG_ERROR([path conversion failed for "$1".])
132 fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
133 fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
134 if test "$fp_count_slash$fp_count_colon" != "00"; then
135 if test "$fp_count_colon" = "0"; then
136 new_formatted_path=`realpath "$formatted_path"`
137 if test $? -ne 0; then
138 AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
140 formatted_path="$new_formatted_path"
143 if test "$build_os" = "wsl"; then
144 if test "$fp_count_colon" != "0"; then
145 formatted_path=$(wslpath "$formatted_path")
147 case "$formatted_path" in
152 formatted_path=$(wslpath -m $formatted_path)
153 case "$formatted_path" in
157 formatted_path="$formatted_path"$final_slash
161 formatted_path=$(wslpath -m "$formatted_path")
164 formatted_path=`cygpath -m "$formatted_path"`
166 if test $? -ne 0; then
167 AC_MSG_ERROR([path conversion failed for "$1".])
170 fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
171 if test "$fp_count_space" != "0"; then
172 AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
175 if test "$build_os" = "wsl"; then
176 # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
177 formatted_path_unix=$(wslpath "$formatted_path")
180 formatted_path_unix="$formatted_path"
186 # There appears to be no simple and portable method to get an absolute and
187 # canonical path, so we try creating the directory if does not exist and
188 # utilizing the shell and pwd.
190 # Args: $1: A possibly relative pathname
191 # Return value: $absolute_path
195 test ! -e "$rel" && mkdir -p "$rel"
196 if test -d "$rel" ; then
197 cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
198 absolute_path="$(pwd)"
201 AC_MSG_ERROR([Failed to resolve absolute path. "$rel" does not exist or is not a directory.])
205 WARNINGS_FILE=config.warn
206 WARNINGS_FILE_FOR_BUILD=config.Build.warn
207 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
211 if test "$have_WARNINGS" = "no"; then
212 echo "*************************************" > "$WARNINGS_FILE"
214 if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
215 dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
216 COLORWARN='*
\e@<:@1;33;40m WARNING
\e@<:@0m:'
218 COLORWARN="* WARNING :"
221 echo "$COLORWARN $@" >> "$WARNINGS_FILE"
224 dnl Some Mac User have the bad habit of letting a lot of crap
225 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
226 dnl that confuse the build.
227 dnl For the ones that use LODE, let's be nice and protect them
232 mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
233 dnl a common but nevertheless necessary thing that may be in a fancy
234 dnl path location is git, so make sure we have it
235 mac_git_path=`which git 2>/dev/null`
236 if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
237 mac_path="$mac_path:`dirname $mac_git_path`"
239 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
240 dnl path location is gpg, so make sure we find it
241 mac_gpg_path=`which gpg 2>/dev/null`
242 if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
243 mac_path="$mac_path:`dirname $mac_gpg_path`"
251 dnl semantically test a three digits version
252 dnl $1 - $3 = minimal version
253 dnl $4 - $6 = current version
255 check_semantic_version_three()
258 -o \( "$4" -eq "$1" -a "$5" -gt "$2" \) \
259 -o \( "$4" -eq "$1" -a "$5" -eq "$2" -a "$6" -ge "$3" \)
263 dnl calls check_semantic_version_three with digits in named variables $1_MAJOR, $1_MINOR, $1_TINY
264 dnl $1 = current version prefix, e.g. EMSCRIPTEN => EMSCRIPTEN_
265 dnl $2 = postfix to $1, e.g. MIN => EMSCRIPTEN_MIN_
267 check_semantic_version_three_prefixed()
269 eval local MIN_MAJOR="\$${1}_${2}_MAJOR"
270 eval local MIN_MINOR="\$${1}_${2}_MINOR"
271 eval local MIN_TINY="\$${1}_${2}_TINY"
272 eval local CUR_MAJOR="\$${1}_MAJOR"
273 eval local CUR_MINOR="\$${1}_MINOR"
274 eval local CUR_TINY="\$${1}_TINY"
275 check_semantic_version_three $MIN_MAJOR $MIN_MINOR $MIN_TINY $CUR_MAJOR $CUR_MINOR $CUR_TINY
279 echo "********************************************************************"
281 echo "* Running ${PACKAGE_NAME} build configuration."
283 echo "********************************************************************"
286 dnl ===================================================================
287 dnl checks build and host OSes
288 dnl do this before argument processing to allow for platform dependent defaults
289 dnl ===================================================================
291 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
292 # Linux on WSL) trust that.
293 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
294 ac_cv_host="x86_64-pc-wsl"
295 ac_cv_host_cpu="x86_64"
297 ac_cv_build="$ac_cv_host"
298 ac_cv_build_cpu="$ac_cv_host_cpu"
299 ac_cv_build_os="$ac_cv_host_os"
301 # Emulation of Cygwin's cygpath command for WSL.
304 if test -n "$UNITTEST_WSL_CYGPATH"; then
305 echo -n cygpath "$@" "==> "
308 # Cygwin's real cygpath has a plethora of options but we use only a few here.
311 local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
314 while getopts dmuwlsp opt; do
317 AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
327 if test $# -ne 1; then
328 AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
335 if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
336 # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
338 if test -n "$opt_u"; then
339 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
344 # A Windows file in WSL format
345 input=$(wslpath -w "$input")
347 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
348 # Already in Windows format
351 input=$(wslpath -w "$input")
354 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
357 if test -n "$opt_d" -o -n "$opt_s"; then
358 input=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --8.3 "$input")
360 if test -n "$opt_m"; then
361 input="${input//\\//}"
368 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
375 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
381 if test -n "$UNITTEST_WSL_CYGPATH"; then
384 # Nothing special with these file names, just arbitrary ones picked to test with
385 cygpath -d /usr/lib64/ld-linux-x86-64.so.2
386 cygpath -w /usr/lib64/ld-linux-x86-64.so.2
387 cygpath -m /usr/lib64/ld-linux-x86-64.so.2
388 cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
389 # At least on my machine for instance this file does have an 8.3 name
390 cygpath -d /mnt/c/windows/WindowsUpdate.log
391 # But for instance this one doesn't
392 cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
393 cygpath -ws /mnt/c/windows/WindowsUpdate.log
394 cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
395 cygpath -ms /mnt/c/windows/WindowsUpdate.log
397 cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
398 cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
407 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
411 # Use of PathFormat must be after AC_CANONICAL_BUILD above
413 printf "$formatted_path , $formatted_path_unix\n"
416 printf "$formatted_path , $formatted_path_unix\n"
418 PathFormat "$PROGRAMFILESX86"
419 printf "$formatted_path , $formatted_path_unix\n"
424 AC_MSG_CHECKING([for product name])
425 PRODUCTNAME="AC_PACKAGE_NAME"
426 if test -n "$with_product_name" -a "$with_product_name" != no; then
427 PRODUCTNAME="$with_product_name"
429 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
430 PRODUCTNAME="${PRODUCTNAME}Dev"
432 AC_MSG_RESULT([$PRODUCTNAME])
433 AC_SUBST(PRODUCTNAME)
434 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
435 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
437 dnl ===================================================================
438 dnl Our version is defined by the AC_INIT() at the top of this script.
439 dnl ===================================================================
441 AC_MSG_CHECKING([for package version])
442 if test -n "$with_package_version" -a "$with_package_version" != no; then
443 PACKAGE_VERSION="$with_package_version"
445 AC_MSG_RESULT([$PACKAGE_VERSION])
447 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
449 LIBO_VERSION_MAJOR=$1
450 LIBO_VERSION_MINOR=$2
451 LIBO_VERSION_MICRO=$3
452 LIBO_VERSION_PATCH=$4
454 LIBO_VERSION_SUFFIX=$5
456 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
457 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
458 # they get undoubled before actually passed to sed.
459 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
460 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
461 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
462 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
464 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
465 # three non-negative integers. Please find more information about CFBundleVersion at
466 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
468 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
469 # of at most three non-negative integers. Please find more information about
470 # CFBundleShortVersionString at
471 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
473 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
475 if test "$enable_macosx_sandbox" = yes; then
476 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
477 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
479 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
480 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
483 AC_SUBST(LIBO_VERSION_MAJOR)
484 AC_SUBST(LIBO_VERSION_MINOR)
485 AC_SUBST(LIBO_VERSION_MICRO)
486 AC_SUBST(LIBO_VERSION_PATCH)
487 AC_SUBST(LIBO_VERSION_SUFFIX)
488 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
489 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
490 AC_SUBST(MACOSX_BUNDLE_VERSION)
492 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
493 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
494 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
495 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
497 LIBO_THIS_YEAR=`date +%Y`
498 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
500 dnl ===================================================================
502 dnl ===================================================================
503 AC_MSG_CHECKING([for product version])
504 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
505 AC_MSG_RESULT([$PRODUCTVERSION])
506 AC_SUBST(PRODUCTVERSION)
509 # AC_PROG_EGREP doesn't set GREP on all systems as well
510 AC_PATH_PROG(GREP, grep)
518 dnl ======================================
519 dnl Required GObject introspection version
520 dnl ======================================
521 INTROSPECTION_REQUIRED_VERSION=1.32.0
523 dnl ===================================================================
524 dnl Search all the common names for GNU Make
525 dnl ===================================================================
526 AC_MSG_CHECKING([for GNU Make])
528 # try to use our own make if it is available and GNUMAKE was not already defined
529 if test -z "$GNUMAKE"; then
530 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
531 GNUMAKE="$LODE_HOME/opt/bin/make"
532 elif test -x "/opt/lo/bin/make"; then
533 GNUMAKE="/opt/lo/bin/make"
538 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
539 if test -n "$a"; then
540 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null
541 if test $? -eq 0; then
542 if test "$build_os" = "cygwin"; then
543 if test -n "$($a -v | grep 'Built for Windows')" ; then
544 GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
545 GNUMAKE_WIN_NATIVE="TRUE"
556 AC_MSG_RESULT($GNUMAKE)
557 if test -z "$GNUMAKE"; then
558 AC_MSG_ERROR([not found. install GNU Make.])
560 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
561 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
565 win_short_path_for_make()
567 local short_path="$1"
568 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
569 cygpath -sm "$short_path"
571 cygpath -u "$(cygpath -d "$short_path")"
576 if test "$build_os" = "cygwin"; then
577 PathFormat "$SRC_ROOT"
578 SRC_ROOT="$formatted_path"
579 PathFormat "$BUILDDIR"
580 BUILDDIR="$formatted_path"
582 AC_MSG_CHECKING(for explicit COMSPEC)
583 if test -z "$COMSPEC"; then
584 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
586 AC_MSG_RESULT([found: $COMSPEC])
593 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
594 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
595 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
597 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
598 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
601 # need sed in os checks...
602 AC_PATH_PROGS(SED, sed)
603 if test -z "$SED"; then
604 AC_MSG_ERROR([install sed to run this script])
607 # Set the ENABLE_LTO variable
608 # ===================================================================
609 AC_MSG_CHECKING([whether to use link-time optimization])
610 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
619 AC_ARG_ENABLE(fuzz-options,
620 AS_HELP_STRING([--enable-fuzz-options],
621 [Randomly enable or disable each of those configurable options
622 that are supposed to be freely selectable without interdependencies,
623 or where bad interaction from interdependencies is automatically avoided.])
626 dnl ===================================================================
627 dnl When building for Android, --with-android-ndk,
628 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
630 dnl ===================================================================
632 AC_ARG_WITH(android-ndk,
633 AS_HELP_STRING([--with-android-ndk],
634 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
637 AC_ARG_WITH(android-ndk-toolchain-version,
638 AS_HELP_STRING([--with-android-ndk-toolchain-version],
639 [Specify which toolchain version to use, of those present in the
640 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
641 with_android_ndk_toolchain_version=clang5.0)
643 AC_ARG_WITH(android-sdk,
644 AS_HELP_STRING([--with-android-sdk],
645 [Specify location of the Android SDK. Mandatory when building for Android.]),
648 AC_ARG_WITH(android-api-level,
649 AS_HELP_STRING([--with-android-api-level],
650 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
654 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
655 with_android_ndk="$SRC_ROOT/external/android-ndk"
657 if test -n "$with_android_ndk"; then
658 eval ANDROID_NDK_DIR=$with_android_ndk
660 # Set up a lot of pre-canned defaults
662 if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
663 if test ! -f $ANDROID_NDK_DIR/source.properties; then
664 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
666 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
668 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
670 if test -z "$ANDROID_NDK_VERSION"; then
671 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
673 case $ANDROID_NDK_VERSION in
675 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
677 11.1.*|12.1.*|13.1.*|14.1.*)
678 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
680 16.*|17.*|18.*|19.*|20.*)
683 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
684 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
689 if test -n "$with_android_api_level" ; then
690 ANDROID_API_LEVEL="$with_android_api_level"
693 android_cpu=$host_cpu
694 if test $host_cpu = arm; then
695 android_platform_prefix=arm-linux-androideabi
696 android_gnu_prefix=$android_platform_prefix
697 LLVM_TRIPLE=armv7a-linux-androideabi
698 ANDROID_APP_ABI=armeabi-v7a
699 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
700 elif test $host_cpu = aarch64; then
701 android_platform_prefix=aarch64-linux-android
702 android_gnu_prefix=$android_platform_prefix
703 LLVM_TRIPLE=$android_platform_prefix
704 # minimum android version that supports aarch64
705 if test "$ANDROID_API_LEVEL" -lt "21" ; then
708 ANDROID_APP_ABI=arm64-v8a
709 elif test $host_cpu = x86_64; then
710 android_platform_prefix=x86_64-linux-android
711 android_gnu_prefix=$android_platform_prefix
712 LLVM_TRIPLE=$android_platform_prefix
713 # minimum android version that supports x86_64
715 ANDROID_APP_ABI=x86_64
717 # host_cpu is something like "i386" or "i686" I guess, NDK uses
718 # "x86" in some contexts
720 android_platform_prefix=$android_cpu
721 android_gnu_prefix=i686-linux-android
722 LLVM_TRIPLE=$android_gnu_prefix
726 case "$with_android_ndk_toolchain_version" in
728 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
731 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
734 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
736 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
737 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
738 # manage to link the (app-specific) single huge .so that is built for the app in
739 # android/source/ if there is debug information in a significant part of the object files.
740 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
741 # all objects have been built with debug information.)
744 android_HOST_TAG=linux-x86_64
747 android_HOST_TAG=darwin-x86_64
750 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
751 # ndk would also support windows and windows-x86_64
754 android_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
755 ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
756 dnl TODO: NSS build uses it...
757 ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_DIR/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
758 AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
760 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
761 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
762 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
763 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
764 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
766 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
767 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
768 if test "$ENABLE_LTO" = TRUE; then
769 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
770 # $CC and $CXX when building external libraries
771 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
774 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
776 if test -z "$CC"; then
777 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
780 if test -z "$CXX"; then
781 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
785 AC_SUBST(ANDROID_NDK_DIR)
786 AC_SUBST(ANDROID_APP_ABI)
787 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
789 dnl ===================================================================
790 dnl --with-android-sdk
791 dnl ===================================================================
793 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
794 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
796 if test -n "$with_android_sdk"; then
797 eval ANDROID_SDK_DIR=$with_android_sdk
798 PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
800 AC_SUBST(ANDROID_SDK_DIR)
802 AC_ARG_ENABLE([android-lok],
803 AS_HELP_STRING([--enable-android-lok],
804 [The Android app from the android/ subdir needs several tweaks all
805 over the place that break the LOK when used in the Online-based
806 Android app. This switch indicates that the intent of this build is
807 actually the Online-based, non-modified LOK.])
810 if test -n "$ANDROID_NDK_DIR" ; then
811 if test "$enable_android_lok" = yes; then
812 ENABLE_ANDROID_LOK=TRUE
813 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
814 AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
816 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
819 AC_SUBST([ENABLE_ANDROID_LOK])
821 libo_FUZZ_ARG_ENABLE([android-editing],
822 AS_HELP_STRING([--enable-android-editing],
823 [Enable the experimental editing feature on Android.])
825 ENABLE_ANDROID_EDITING=
826 if test "$enable_android_editing" = yes; then
827 ENABLE_ANDROID_EDITING=TRUE
829 AC_SUBST([ENABLE_ANDROID_EDITING])
831 disable_database_connectivity_dependencies()
834 enable_firebird_sdbc=no
835 enable_mariadb_sdbc=no
836 enable_postgresql_sdbc=no
837 enable_report_builder=no
840 # ===================================================================
842 # Start initial platform setup
844 # The using_* variables reflect platform support and should not be
845 # changed after the "End initial platform setup" block.
846 # This is also true for most test_* variables.
847 # ===================================================================
856 # There is currently just iOS not using salplug, so this explicitly enables it.
857 # must: using_freetype_fontconfig
858 # may: using_headless_plugin defaults to $using_freetype_fontconfig
861 # Default values, as such probably valid just for Linux, set
862 # differently below just for Mac OSX, but at least better than
863 # hardcoding these as we used to do. Much of this is duplicated also
864 # in solenv for old build system and for gbuild, ideally we should
865 # perhaps define stuff like this only here in configure.ac?
867 LINKFLAGSSHL="-shared"
871 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
874 INSTROOTCONTENTSUFFIX=
877 HOST_PLATFORM="$host"
879 host_cpu_for_clang="$host_cpu"
884 using_freetype_fontconfig=yes
889 dnl ===========================================================
890 dnl Check whether we're using Solaris 10 - SPARC or Intel.
891 dnl ===========================================================
892 AC_MSG_CHECKING([the Solaris operating system release])
893 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
894 if test "$_os_release" -lt "10"; then
895 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
897 AC_MSG_RESULT([ok ($_os_release)])
900 dnl Check whether we're using a SPARC or i386 processor
901 AC_MSG_CHECKING([the processor type])
902 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
903 AC_MSG_RESULT([ok ($host_cpu)])
905 AC_MSG_ERROR([only SPARC and i386 processors are supported])
909 linux-gnu*|k*bsd*-gnu*|linux-musl*)
910 using_freetype_fontconfig=yes
915 if test "$enable_fuzzers" = yes; then
916 test_system_freetype=no
922 using_freetype_fontconfig=yes
928 # When building on Windows normally with MSVC under Cygwin,
929 # configure thinks that the host platform (the platform the
930 # built code will run on) is Cygwin, even if it obviously is
931 # Windows, which in Autoconf terminology is called
932 # "mingw32". (Which is misleading as MinGW is the name of the
933 # tool-chain, not an operating system.)
935 # Somewhat confusing, yes. But this configure script doesn't
936 # look at $host etc that much, it mostly uses its own $_os
937 # variable, set here in this case statement.
939 using_freetype_fontconfig=no
951 if test "$host_cpu" = "aarch64"; then
955 enable_firebird_sdbc=no
960 using_freetype_fontconfig=no
965 if test -n "$LODE_HOME" ; then
967 AC_MSG_NOTICE([sanitized the PATH to $PATH])
970 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
971 INSTROOTCONTENTSUFFIX=/Contents
972 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
973 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
974 LINKFLAGSSHL="-dynamiclib -single_module"
981 # -undefined error is the default
985 # Apple's Clang uses "arm64"
986 host_cpu_for_clang=arm64
991 using_freetype_fontconfig=no
997 if test -n "$LODE_HOME" ; then
999 AC_MSG_NOTICE([sanitized the PATH to $PATH])
1003 enable_mpl_subset=yes
1004 enable_lotuswordpro=no
1005 disable_database_connectivity_dependencies
1008 enable_extension_integration=no
1011 if test "$enable_ios_simulator" = "yes"; then
1012 host=x86_64-apple-darwin
1014 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1015 LINKFLAGSSHL="-dynamiclib -single_module"
1022 # -undefined error is the default
1023 LINKFLAGSNOUNDEFS=""
1025 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1026 # part, so use aarch64-apple-darwin for now.
1027 HOST_PLATFORM=aarch64-apple-darwin
1029 # Apple's Clang uses "arm64"
1030 host_cpu_for_clang=arm64
1034 using_freetype_fontconfig=yes
1037 AC_MSG_CHECKING([the FreeBSD operating system release])
1038 if test -n "$with_os_version"; then
1039 OSVERSION="$with_os_version"
1041 OSVERSION=`/sbin/sysctl -n kern.osreldate`
1043 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1044 AC_MSG_CHECKING([which thread library to use])
1045 if test "$OSVERSION" -lt "500016"; then
1046 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1047 PTHREAD_LIBS="-pthread"
1048 elif test "$OSVERSION" -lt "502102"; then
1049 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1050 PTHREAD_LIBS="-lc_r"
1053 PTHREAD_LIBS="-pthread"
1055 AC_MSG_RESULT([$PTHREAD_LIBS])
1060 using_freetype_fontconfig=yes
1064 PTHREAD_LIBS="-pthread -lpthread"
1069 using_freetype_fontconfig=yes
1072 test_gstreamer_1_0=no
1073 PTHREAD_LIBS=-pthread
1078 using_freetype_fontconfig=yes
1080 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1081 PTHREAD_LIBS="-pthread"
1086 using_freetype_fontconfig=yes
1089 PTHREAD_LIBS="-pthread"
1094 # API exists, but seems not really usable since Android 7 AFAIK
1096 using_freetype_fontconfig=yes
1097 using_headless_plugin=no
1101 test_system_freetype=no
1103 disable_database_connectivity_dependencies
1104 enable_lotuswordpro=no
1105 enable_mpl_subset=yes
1106 enable_cairo_canvas=no
1116 using_freetype_fontconfig=yes
1125 enable_postgresql_sdbc=no
1126 enable_firebird_sdbc=no
1131 # API currently just exists in headers, not code
1133 using_freetype_fontconfig=yes
1137 test_split_debug=yes
1138 test_system_freetype=no
1139 enable_compiler_plugins=no
1140 enable_customtarget_components=yes
1143 enable_split_debug=yes
1144 enable_wasm_strip=yes
1146 with_theme="colibre"
1151 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1155 AC_SUBST(HOST_PLATFORM)
1157 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1158 AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1161 # Set defaults, if not set by platform
1162 test "${test_cups+set}" = set || test_cups="$using_x11"
1163 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1164 test "${test_gen+set}" = set || test_gen="$using_x11"
1165 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1166 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1167 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1168 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1169 # don't handle test_qt5, so it can disable test_kf5 later
1170 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1171 test "${test_randr+set}" = set || test_randr="$using_x11"
1172 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1173 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1175 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1176 # Make sure fontconfig and freetype test both either system or not
1177 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1178 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1180 # convenience / platform overriding "fixes"
1182 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1183 test "$test_kf5" = yes && test_qt5=yes
1184 test "$test_gtk3" != yes && enable_gtk3=no
1185 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1186 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1187 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1189 # Keep in sync with the above $using_x11 depending test default list
1195 test_gstreamer_1_0=no
1206 test "$using_x11" = yes && USING_X11=TRUE
1208 if test "$using_freetype_fontconfig" = yes; then
1209 USE_HEADLESS_CODE=TRUE
1210 if test "$using_headless_plugin" = yes; then
1211 AC_DEFINE(ENABLE_HEADLESS)
1212 ENABLE_HEADLESS=TRUE
1219 AC_SUBST(ENABLE_HEADLESS)
1220 AC_SUBST(USE_HEADLESS_CODE)
1222 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1223 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1224 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1225 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1227 # ===================================================================
1229 # End initial platform setup
1231 # ===================================================================
1233 if test "$_os" = "Android" ; then
1234 # Verify that the NDK and SDK options are proper
1235 if test -z "$with_android_ndk"; then
1236 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1237 elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1238 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1241 if test -z "$ANDROID_SDK_DIR"; then
1242 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1243 elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1244 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1248 if test "$_os" = "AIX"; then
1249 AC_PATH_PROG(GAWK, gawk)
1250 if test -z "$GAWK"; then
1251 AC_MSG_ERROR([gawk not found in \$PATH])
1255 AC_SUBST(SDKDIRNAME)
1257 AC_SUBST(PTHREAD_CFLAGS)
1258 AC_SUBST(PTHREAD_LIBS)
1260 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1261 # By default use the ones specified by our build system,
1262 # but explicit override is possible.
1263 AC_MSG_CHECKING(for explicit AFLAGS)
1264 if test -n "$AFLAGS"; then
1265 AC_MSG_RESULT([$AFLAGS])
1271 AC_MSG_CHECKING(for explicit CFLAGS)
1272 if test -n "$CFLAGS"; then
1273 AC_MSG_RESULT([$CFLAGS])
1279 AC_MSG_CHECKING(for explicit CXXFLAGS)
1280 if test -n "$CXXFLAGS"; then
1281 AC_MSG_RESULT([$CXXFLAGS])
1287 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1288 if test -n "$OBJCFLAGS"; then
1289 AC_MSG_RESULT([$OBJCFLAGS])
1295 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1296 if test -n "$OBJCXXFLAGS"; then
1297 AC_MSG_RESULT([$OBJCXXFLAGS])
1303 AC_MSG_CHECKING(for explicit LDFLAGS)
1304 if test -n "$LDFLAGS"; then
1305 AC_MSG_RESULT([$LDFLAGS])
1315 AC_SUBST(OBJCXXFLAGS)
1319 AC_SUBST(x_CXXFLAGS)
1320 AC_SUBST(x_OBJCFLAGS)
1321 AC_SUBST(x_OBJCXXFLAGS)
1324 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1325 my_original_CFLAGS=$CFLAGS
1326 my_original_CXXFLAGS=$CXXFLAGS
1327 my_original_CPPFLAGS=$CPPFLAGS
1329 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1330 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1331 dnl AC_PROG_CC internally.
1332 if test "$_os" != "WINNT"; then
1333 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1337 if test -z "$CC_BASE"; then
1338 CC_BASE=`first_arg_basename "$CC"`
1342 if test "$_os" != "WINNT"; then
1343 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1347 AC_SUBST(ENDIANNESS)
1349 if test "$usable_dlapi" != no; then
1350 AC_DEFINE([HAVE_DLAPI])
1351 if test "$test_unix_dlapi" != no; then
1353 AC_SEARCH_LIBS([dlsym], [dl],
1354 [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1355 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1357 AC_DEFINE([HAVE_UNIX_DLAPI])
1360 AC_SUBST(UNIX_DLAPI_LIBS)
1362 # Check for a (GNU) backtrace implementation
1363 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1364 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1365 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1367 AC_SEARCH_LIBS([backtrace], [libexecinfo],
1368 [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1369 [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1372 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1373 AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1376 dnl ===================================================================
1377 dnl Sanity checks for Emscripten SDK setup
1378 dnl ===================================================================
1380 EMSCRIPTEN_MIN_MAJOR=2
1381 EMSCRIPTEN_MIN_MINOR=0
1382 EMSCRIPTEN_MIN_TINY=31
1383 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1385 if test "$_os" = "Emscripten"; then
1386 AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1387 EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1388 EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1389 EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1390 EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1391 EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1393 check_semantic_version_three_prefixed EMSCRIPTEN MIN
1394 if test $? -eq 0; then
1395 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1397 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1401 if ! which emconfigure >/dev/null 2>&1; then
1402 AC_MSG_WARN([emconfigure must be in your \$PATH])
1405 if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1406 AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1409 EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1410 if ! test -x "$EMSDK_FILE_PACKAGER"; then
1411 AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1414 if test $EMSCRIPTEN_ERROR -ne 0; then
1415 AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1418 AC_SUBST(EMSDK_FILE_PACKAGER)
1420 ###############################################################################
1421 # Extensions switches --enable/--disable
1422 ###############################################################################
1423 # By default these should be enabled unless having extra dependencies.
1424 # If there is extra dependency over configure options then the enable should
1425 # be automagic based on whether the requiring feature is enabled or not.
1426 # All this options change anything only with --enable-extension-integration.
1428 # The name of this option and its help string makes it sound as if
1429 # extensions are built anyway, just not integrated in the installer,
1430 # if you use --disable-extension-integration. Is that really the
1433 AC_ARG_ENABLE(ios-simulator,
1434 AS_HELP_STRING([--enable-ios-simulator],
1435 [build for iOS simulator])
1438 libo_FUZZ_ARG_ENABLE(extension-integration,
1439 AS_HELP_STRING([--disable-extension-integration],
1440 [Disable integration of the built extensions in the installer of the
1441 product. Use this switch to disable the integration.])
1444 AC_ARG_ENABLE(avmedia,
1445 AS_HELP_STRING([--disable-avmedia],
1446 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1447 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1449 AC_ARG_ENABLE(database-connectivity,
1450 AS_HELP_STRING([--disable-database-connectivity],
1451 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1454 # This doesn't mean not building (or "integrating") extensions
1455 # (although it probably should; i.e. it should imply
1456 # --disable-extension-integration I guess), it means not supporting
1457 # any extension mechanism at all
1458 libo_FUZZ_ARG_ENABLE(extensions,
1459 AS_HELP_STRING([--disable-extensions],
1460 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1463 AC_ARG_ENABLE(scripting,
1464 AS_HELP_STRING([--disable-scripting],
1465 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1466 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1468 # This is mainly for Android and iOS, but could potentially be used in some
1469 # special case otherwise, too, so factored out as a separate setting
1471 AC_ARG_ENABLE(dynamic-loading,
1472 AS_HELP_STRING([--disable-dynamic-loading],
1473 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1476 libo_FUZZ_ARG_ENABLE(report-builder,
1477 AS_HELP_STRING([--disable-report-builder],
1478 [Disable the Report Builder.])
1481 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1482 AS_HELP_STRING([--enable-ext-wiki-publisher],
1483 [Enable the Wiki Publisher extension.])
1486 libo_FUZZ_ARG_ENABLE(lpsolve,
1487 AS_HELP_STRING([--disable-lpsolve],
1488 [Disable compilation of the lp solve solver ])
1490 libo_FUZZ_ARG_ENABLE(coinmp,
1491 AS_HELP_STRING([--disable-coinmp],
1492 [Disable compilation of the CoinMP solver ])
1495 libo_FUZZ_ARG_ENABLE(pdfimport,
1496 AS_HELP_STRING([--disable-pdfimport],
1497 [Disable building the PDF import feature.])
1500 libo_FUZZ_ARG_ENABLE(pdfium,
1501 AS_HELP_STRING([--disable-pdfium],
1502 [Disable building PDFium. Results in unsecure PDF signature verification.])
1505 libo_FUZZ_ARG_ENABLE(skia,
1506 AS_HELP_STRING([--disable-skia],
1507 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1510 ###############################################################################
1512 dnl ---------- *** ----------
1514 libo_FUZZ_ARG_ENABLE(mergelibs,
1515 AS_HELP_STRING([--enable-mergelibs],
1516 [Merge several of the smaller libraries into one big, "merged", one.])
1519 libo_FUZZ_ARG_ENABLE(breakpad,
1520 AS_HELP_STRING([--enable-breakpad],
1521 [Enables breakpad for crash reporting.])
1524 libo_FUZZ_ARG_ENABLE(crashdump,
1525 AS_HELP_STRING([--disable-crashdump],
1526 [Disable dump.ini and dump-file, when --enable-breakpad])
1529 AC_ARG_ENABLE(fetch-external,
1530 AS_HELP_STRING([--disable-fetch-external],
1531 [Disables fetching external tarballs from web sources.])
1534 AC_ARG_ENABLE(fuzzers,
1535 AS_HELP_STRING([--enable-fuzzers],
1536 [Enables building libfuzzer targets for fuzz testing.])
1539 libo_FUZZ_ARG_ENABLE(pch,
1540 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1541 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1542 Using 'system' will include only external headers, 'base' will add also headers
1543 from base modules, 'normal' will also add all headers except from the module built,
1544 'full' will use all suitable headers even from a module itself.])
1547 libo_FUZZ_ARG_ENABLE(epm,
1548 AS_HELP_STRING([--enable-epm],
1549 [LibreOffice includes self-packaging code, that requires epm, however epm is
1550 useless for large scale package building.])
1553 libo_FUZZ_ARG_ENABLE(odk,
1554 AS_HELP_STRING([--enable-odk],
1555 [Enable building the Office Development Kit, the part that extensions need to build against])
1558 AC_ARG_ENABLE(mpl-subset,
1559 AS_HELP_STRING([--enable-mpl-subset],
1560 [Don't compile any pieces which are not MPL or more liberally licensed])
1563 libo_FUZZ_ARG_ENABLE(evolution2,
1564 AS_HELP_STRING([--enable-evolution2],
1565 [Allows the built-in evolution 2 addressbook connectivity build to be
1569 AC_ARG_ENABLE(avahi,
1570 AS_HELP_STRING([--enable-avahi],
1571 [Determines whether to use Avahi to advertise Impress to remote controls.])
1574 libo_FUZZ_ARG_ENABLE(werror,
1575 AS_HELP_STRING([--enable-werror],
1576 [Turn warnings to errors. (Has no effect in modules where the treating
1577 of warnings as errors is disabled explicitly.)]),
1580 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1581 AS_HELP_STRING([--enable-assert-always-abort],
1582 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1585 libo_FUZZ_ARG_ENABLE(dbgutil,
1586 AS_HELP_STRING([--enable-dbgutil],
1587 [Provide debugging support from --enable-debug and include additional debugging
1588 utilities such as object counting or more expensive checks.
1589 This is the recommended option for developers.
1590 Note that this makes the build ABI incompatible, it is not possible to mix object
1591 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1593 libo_FUZZ_ARG_ENABLE(debug,
1594 AS_HELP_STRING([--enable-debug],
1595 [Include debugging information, disable compiler optimization and inlining plus
1596 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1598 libo_FUZZ_ARG_ENABLE(split-debug,
1599 AS_HELP_STRING([--disable-split-debug],
1600 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1601 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1603 libo_FUZZ_ARG_ENABLE(gdb-index,
1604 AS_HELP_STRING([--disable-gdb-index],
1605 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1606 The feature requires a linker that supports the --gdb-index option.]))
1608 libo_FUZZ_ARG_ENABLE(sal-log,
1609 AS_HELP_STRING([--enable-sal-log],
1610 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1612 libo_FUZZ_ARG_ENABLE(symbols,
1613 AS_HELP_STRING([--enable-symbols],
1614 [Generate debug information.
1615 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1616 otherwise. It is possible to explicitly specify gbuild build targets
1617 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1618 everything in the directory; there is no ordering, more specific overrides
1619 more general, and disabling takes precedence).
1620 Example: --enable-symbols="all -sw/ -Library_sc".]))
1622 libo_FUZZ_ARG_ENABLE(optimized,
1623 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1624 [Whether to compile with optimization flags.
1625 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1626 otherwise. Using 'debug' will try to use only optimizations that should
1627 not interfere with debugging. For Emscripten we default to optimized (-O1)
1628 debug build, as otherwise binaries become too large.]))
1630 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1631 AS_HELP_STRING([--disable-runtime-optimizations],
1632 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1633 JVM JIT) that are known to interact badly with certain dynamic analysis
1634 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1635 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1636 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1638 AC_ARG_WITH(valgrind,
1639 AS_HELP_STRING([--with-valgrind],
1640 [Make availability of Valgrind headers a hard requirement.]))
1642 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1643 AS_HELP_STRING([--enable-compiler-plugins],
1644 [Enable compiler plugins that will perform additional checks during
1645 building. Enabled automatically by --enable-dbgutil.
1646 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1647 COMPILER_PLUGINS_DEBUG=
1648 if test "$enable_compiler_plugins" = debug; then
1649 enable_compiler_plugins=yes
1650 COMPILER_PLUGINS_DEBUG=TRUE
1653 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1654 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1655 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1656 relevant in the --disable-compiler-plugins case.]))
1658 libo_FUZZ_ARG_ENABLE(ooenv,
1659 AS_HELP_STRING([--enable-ooenv],
1660 [Enable ooenv for the instdir installation.]))
1663 AS_HELP_STRING([--enable-lto],
1664 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1665 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1668 AC_ARG_ENABLE(python,
1669 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1670 [Enables or disables Python support at run-time.
1671 Also specifies what Python to use at build-time.
1672 'fully-internal' even forces the internal version for uses of Python
1674 On macOS the only choices are
1675 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1678 libo_FUZZ_ARG_ENABLE(gtk3,
1679 AS_HELP_STRING([--disable-gtk3],
1680 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1681 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1684 AS_HELP_STRING([--enable-gtk4],
1685 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1687 AC_ARG_ENABLE(introspection,
1688 AS_HELP_STRING([--enable-introspection],
1689 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1690 Linux distributions.)]))
1692 AC_ARG_ENABLE(split-app-modules,
1693 AS_HELP_STRING([--enable-split-app-modules],
1694 [Split file lists for app modules, e.g. base, calc.
1695 Has effect only with make distro-pack-install]),
1698 AC_ARG_ENABLE(split-opt-features,
1699 AS_HELP_STRING([--enable-split-opt-features],
1700 [Split file lists for some optional features, e.g. pyuno, testtool.
1701 Has effect only with make distro-pack-install]),
1704 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1705 AS_HELP_STRING([--disable-cairo-canvas],
1706 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1709 libo_FUZZ_ARG_ENABLE(dbus,
1710 AS_HELP_STRING([--disable-dbus],
1711 [Determines whether to enable features that depend on dbus.
1712 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1713 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1715 libo_FUZZ_ARG_ENABLE(sdremote,
1716 AS_HELP_STRING([--disable-sdremote],
1717 [Determines whether to enable Impress remote control (i.e. the server component).]),
1718 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1720 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1721 AS_HELP_STRING([--disable-sdremote-bluetooth],
1722 [Determines whether to build sdremote with bluetooth support.
1723 Requires dbus on Linux.]))
1725 libo_FUZZ_ARG_ENABLE(gio,
1726 AS_HELP_STRING([--disable-gio],
1727 [Determines whether to use the GIO support.]),
1728 ,test "${enable_gio+set}" = set || enable_gio=yes)
1731 AS_HELP_STRING([--enable-qt5],
1732 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1737 AS_HELP_STRING([--enable-qt6],
1738 [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1743 AS_HELP_STRING([--enable-kf5],
1744 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1745 KF5 are available.]),
1748 AC_ARG_ENABLE(gtk3_kde5,
1749 AS_HELP_STRING([--enable-gtk3-kde5],
1750 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1751 platforms where Gtk3, Qt5 and Plasma is available.]),
1755 AS_HELP_STRING([--enable-gen],
1756 [To select the gen backend in case of --disable-dynamic-loading.
1757 Per default auto-enabled when X11 is used.]),
1758 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1761 AS_HELP_STRING([--disable-gui],
1762 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1765 libo_FUZZ_ARG_ENABLE(randr,
1766 AS_HELP_STRING([--disable-randr],
1767 [Disable RandR support in the vcl project.]),
1768 ,test "${enable_randr+set}" = set || enable_randr=yes)
1770 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1771 AS_HELP_STRING([--disable-gstreamer-1-0],
1772 [Disable building with the gstreamer 1.0 avmedia backend.]),
1773 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1775 libo_FUZZ_ARG_ENABLE(cve-tests,
1776 AS_HELP_STRING([--disable-cve-tests],
1777 [Prevent CVE tests to be executed]),
1780 libo_FUZZ_ARG_ENABLE(chart-tests,
1781 AS_HELP_STRING([--enable-chart-tests],
1782 [Executes chart XShape tests. In a perfect world these tests would be
1783 stable and everyone could run them, in reality it is best to run them
1784 only on a few machines that are known to work and maintained by people
1785 who can judge if a test failure is a regression or not.]),
1788 AC_ARG_ENABLE(build-opensymbol,
1789 AS_HELP_STRING([--enable-build-opensymbol],
1790 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1791 fontforge installed.]),
1794 AC_ARG_ENABLE(dependency-tracking,
1795 AS_HELP_STRING([--enable-dependency-tracking],
1796 [Do not reject slow dependency extractors.])[
1797 --disable-dependency-tracking
1798 Disables generation of dependency information.
1799 Speed up one-time builds.],
1802 AC_ARG_ENABLE(icecream,
1803 AS_HELP_STRING([--enable-icecream],
1804 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1805 It defaults to /opt/icecream for the location of the icecream gcc/g++
1806 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1810 AS_HELP_STRING([--enable-ld=<linker>],
1811 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1812 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1813 If <linker> contains any ':', the part before the first ':' is used as the value of
1814 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1815 needed for Clang 12).]),
1818 libo_FUZZ_ARG_ENABLE(cups,
1819 AS_HELP_STRING([--disable-cups],
1820 [Do not build cups support.])
1823 AC_ARG_ENABLE(ccache,
1824 AS_HELP_STRING([--disable-ccache],
1825 [Do not try to use ccache automatically.
1826 By default we will try to detect if ccache is available; in that case if
1827 CC/CXX are not yet set, and --enable-icecream is not given, we
1828 attempt to use ccache. --disable-ccache disables ccache completely.
1829 Additionally ccache's depend mode is enabled if possible,
1830 use --enable-ccache=nodepend to enable ccache without depend mode.
1834 AC_ARG_ENABLE(z7-debug,
1835 AS_HELP_STRING([--enable-z7-debug],
1836 [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1837 more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1838 Enabled by default if ccache is detected.]))
1840 libo_FUZZ_ARG_ENABLE(online-update,
1841 AS_HELP_STRING([--enable-online-update],
1842 [Enable the online update service that will check for new versions of
1843 LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1844 If the value is "mar", the experimental Mozilla-like update will be
1845 enabled instead of the traditional update mechanism.]),
1848 AC_ARG_WITH(update-config,
1849 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1850 [Path to the update config ini file]))
1852 libo_FUZZ_ARG_ENABLE(extension-update,
1853 AS_HELP_STRING([--disable-extension-update],
1854 [Disable possibility to update installed extensions.]),
1857 libo_FUZZ_ARG_ENABLE(release-build,
1858 AS_HELP_STRING([--enable-release-build],
1859 [Enable release build. Note that the "release build" choice is orthogonal to
1860 whether symbols are present, debug info is generated, or optimization
1862 See http://wiki.documentfoundation.org/Development/DevBuild]),
1865 AC_ARG_ENABLE(windows-build-signing,
1866 AS_HELP_STRING([--enable-windows-build-signing],
1867 [Enable signing of windows binaries (*.exe, *.dll)]),
1870 AC_ARG_ENABLE(silent-msi,
1871 AS_HELP_STRING([--enable-silent-msi],
1872 [Enable MSI with LIMITUI=1 (silent install).]),
1875 AC_ARG_ENABLE(macosx-code-signing,
1876 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1877 [Sign executables, dylibs, frameworks and the app bundle. If you
1878 don't provide an identity the first suitable certificate
1879 in your keychain is used.]),
1882 AC_ARG_ENABLE(macosx-package-signing,
1883 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1884 [Create a .pkg suitable for uploading to the Mac App Store and sign
1885 it. If you don't provide an identity the first suitable certificate
1886 in your keychain is used.]),
1889 AC_ARG_ENABLE(macosx-sandbox,
1890 AS_HELP_STRING([--enable-macosx-sandbox],
1891 [Make the app bundle run in a sandbox. Requires code signing.
1892 Is required by apps distributed in the Mac App Store, and implies
1893 adherence to App Store rules.]),
1896 AC_ARG_WITH(macosx-bundle-identifier,
1897 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1898 [Define the macOS bundle identifier. Default is the somewhat weird
1899 org.libreoffice.script ("script", huh?).]),
1900 ,with_macosx_bundle_identifier=org.libreoffice.script)
1902 AC_ARG_WITH(product-name,
1903 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1904 [Define the product name. Default is AC_PACKAGE_NAME.]),
1905 ,with_product_name=$PRODUCTNAME)
1907 libo_FUZZ_ARG_ENABLE(community-flavor,
1908 AS_HELP_STRING([--disable-community-flavor],
1909 [Disable the Community branding.]),
1912 AC_ARG_WITH(package-version,
1913 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1914 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1917 libo_FUZZ_ARG_ENABLE(readonly-installset,
1918 AS_HELP_STRING([--enable-readonly-installset],
1919 [Prevents any attempts by LibreOffice to write into its installation. That means
1920 at least that no "system-wide" extensions can be added. Partly experimental work in
1921 progress, probably not fully implemented. Always enabled for macOS.]),
1924 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1925 AS_HELP_STRING([--disable-mariadb-sdbc],
1926 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1929 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1930 AS_HELP_STRING([--disable-postgresql-sdbc],
1931 [Disable the build of the PostgreSQL-SDBC driver.])
1934 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1935 AS_HELP_STRING([--disable-lotuswordpro],
1936 [Disable the build of the Lotus Word Pro filter.]),
1937 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1939 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1940 AS_HELP_STRING([--disable-firebird-sdbc],
1941 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1942 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1944 AC_ARG_ENABLE(bogus-pkg-config,
1945 AS_HELP_STRING([--enable-bogus-pkg-config],
1946 [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.]),
1949 AC_ARG_ENABLE(openssl,
1950 AS_HELP_STRING([--disable-openssl],
1951 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1952 components will use NSS. Work in progress,
1953 use only if you are hacking on it.]),
1954 ,enable_openssl=yes)
1956 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1957 AS_HELP_STRING([--enable-cipher-openssl-backend],
1958 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1959 Requires --enable-openssl.]))
1962 AS_HELP_STRING([--disable-nss],
1963 [Disable using NSS. If disabled,
1964 components will use openssl. Work in progress,
1965 use only if you are hacking on it.]),
1968 AC_ARG_ENABLE(library-bin-tar,
1969 AS_HELP_STRING([--enable-library-bin-tar],
1970 [Enable the building and reused of tarball of binary build for some 'external' libraries.
1971 Some libraries can save their build result in a tarball
1972 stored in TARFILE_LOCATION. That binary tarball is
1973 uniquely identified by the source tarball,
1974 the content of the config_host.mk file and the content
1975 of the top-level directory in core for that library
1976 If this option is enabled, then if such a tarfile exist, it will be untarred
1977 instead of the source tarfile, and the build step will be skipped for that
1979 If a proper tarfile does not exist, then the normal source-based
1980 build is done for that library and a proper binary tarfile is created
1981 for the next time.]),
1984 AC_ARG_ENABLE(dconf,
1985 AS_HELP_STRING([--disable-dconf],
1986 [Disable the dconf configuration backend (enabled by default where
1989 libo_FUZZ_ARG_ENABLE(formula-logger,
1991 [--enable-formula-logger],
1992 [Enable formula logger for logging formula calculation flow in Calc.]
1997 AS_HELP_STRING([--disable-ldap],
1998 [Disable LDAP support.]),
2001 AC_ARG_ENABLE(opencl,
2002 AS_HELP_STRING([--disable-opencl],
2003 [Disable OpenCL support.]),
2006 libo_FUZZ_ARG_ENABLE(librelogo,
2007 AS_HELP_STRING([--disable-librelogo],
2008 [Do not build LibreLogo.]),
2009 ,enable_librelogo=yes)
2011 AC_ARG_ENABLE(wasm-strip,
2012 AS_HELP_STRING([--enable-wasm-strip],
2013 [Strip the static build like for WASM/emscripten platform.]),
2016 AC_ARG_ENABLE(wasm-exceptions,
2017 AS_HELP_STRING([--enable-wasm-exceptions],
2018 [Build with native WASM exceptions (AKA -fwasm-exceptions),
2019 matter of fact, this is currently not finished by any implementation)
2020 (see https://webassembly.org/roadmap/ for the current state]),
2023 AC_ARG_ENABLE(xmlhelp,
2024 AS_HELP_STRING([--disable-xmlhelp],
2025 [Disable XML help support]),
2026 ,enable_xmlhelp=yes)
2028 AC_ARG_ENABLE(customtarget-components,
2029 AS_HELP_STRING([--enable-customtarget-components],
2030 [Generates the static UNO object constructor mapping from the build.]))
2032 dnl ===================================================================
2033 dnl Optional Packages (--with/without-)
2034 dnl ===================================================================
2036 AC_ARG_WITH(gcc-home,
2037 AS_HELP_STRING([--with-gcc-home],
2038 [Specify the location of gcc/g++ manually. This can be used in conjunction
2039 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2040 non-default path.]),
2043 AC_ARG_WITH(gnu-patch,
2044 AS_HELP_STRING([--with-gnu-patch],
2045 [Specify location of GNU patch on Solaris or FreeBSD.]),
2048 AC_ARG_WITH(build-platform-configure-options,
2049 AS_HELP_STRING([--with-build-platform-configure-options],
2050 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2054 AS_HELP_STRING([--with-gnu-cp],
2055 [Specify location of GNU cp on Solaris or FreeBSD.]),
2058 AC_ARG_WITH(external-tar,
2059 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2060 [Specify an absolute path of where to find (and store) tarfiles.]),
2061 TARFILE_LOCATION=$withval ,
2064 AC_ARG_WITH(referenced-git,
2065 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2066 [Specify another checkout directory to reference. This makes use of
2067 git submodule update --reference, and saves a lot of diskspace
2068 when having multiple trees side-by-side.]),
2069 GIT_REFERENCE_SRC=$withval ,
2072 AC_ARG_WITH(linked-git,
2073 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2074 [Specify a directory where the repositories of submodules are located.
2075 This uses a method similar to git-new-workdir to get submodules.]),
2076 GIT_LINK_SRC=$withval ,
2079 AC_ARG_WITH(galleries,
2080 AS_HELP_STRING([--with-galleries],
2081 [Specify how galleries should be built. It is possible either to
2082 build these internally from source ("build"),
2083 or to disable them ("no")]),
2087 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2088 [Choose which themes to include. By default those themes with an '*' are included.
2089 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2090 *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2091 *elementary, *elementary_svg,
2092 *karasa_jaga, *karasa_jaga_svg,
2093 *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2094 *sukapura, *sukapura_svg.]),
2097 libo_FUZZ_ARG_WITH(helppack-integration,
2098 AS_HELP_STRING([--without-helppack-integration],
2099 [It will not integrate the helppacks to the installer
2100 of the product. Please use this switch to use the online help
2101 or separate help packages.]),
2104 libo_FUZZ_ARG_WITH(fonts,
2105 AS_HELP_STRING([--without-fonts],
2106 [LibreOffice includes some third-party fonts to provide a reliable basis for
2107 help content, templates, samples, etc. When these fonts are already
2108 known to be available on the system then you should use this option.]),
2112 AS_HELP_STRING([--with-epm],
2113 [Decides which epm to use. Default is to use the one from the system if
2114 one is built. When either this is not there or you say =internal epm
2118 AC_ARG_WITH(package-format,
2119 AS_HELP_STRING([--with-package-format],
2120 [Specify package format(s) for LibreOffice installation sets. The
2121 implicit --without-package-format leads to no installation sets being
2122 generated. Possible values: aix, archive, bsd, deb, dmg,
2123 installed, msi, pkg, and rpm.
2124 Example: --with-package-format='deb rpm']),
2128 AS_HELP_STRING([--with-tls],
2129 [Decides which TLS/SSL and cryptographic implementations to use for
2130 LibreOffice's code. Notice that this doesn't apply for depending
2131 libraries like "curl", for example. Default is to use NSS
2132 although OpenSSL is also possible. Notice that selecting NSS restricts
2133 the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2134 restrict by now the usage of NSS in LO's code. Possible values:
2135 openssl, nss. Example: --with-tls="nss"]),
2138 AC_ARG_WITH(system-libs,
2139 AS_HELP_STRING([--with-system-libs],
2140 [Use libraries already on system -- enables all --with-system-* flags.]),
2143 AC_ARG_WITH(system-bzip2,
2144 AS_HELP_STRING([--with-system-bzip2],
2145 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2146 [with_system_bzip2="$with_system_libs"])
2148 AC_ARG_WITH(system-headers,
2149 AS_HELP_STRING([--with-system-headers],
2150 [Use headers already on system -- enables all --with-system-* flags for
2151 external packages whose headers are the only entities used i.e.
2152 boost/odbc/sane-header(s).]),,
2153 [with_system_headers="$with_system_libs"])
2155 AC_ARG_WITH(system-jars,
2156 AS_HELP_STRING([--without-system-jars],
2157 [When building with --with-system-libs, also the needed jars are expected
2158 on the system. Use this to disable that]),,
2159 [with_system_jars="$with_system_libs"])
2161 AC_ARG_WITH(system-cairo,
2162 AS_HELP_STRING([--with-system-cairo],
2163 [Use cairo libraries already on system. Happens automatically for
2164 (implicit) --enable-gtk3.]))
2166 AC_ARG_WITH(system-epoxy,
2167 AS_HELP_STRING([--with-system-epoxy],
2168 [Use epoxy libraries already on system. Happens automatically for
2169 (implicit) --enable-gtk3.]),,
2170 [with_system_epoxy="$with_system_libs"])
2172 AC_ARG_WITH(myspell-dicts,
2173 AS_HELP_STRING([--with-myspell-dicts],
2174 [Adds myspell dictionaries to the LibreOffice installation set]),
2177 AC_ARG_WITH(system-dicts,
2178 AS_HELP_STRING([--without-system-dicts],
2179 [Do not use dictionaries from system paths.]),
2182 AC_ARG_WITH(external-dict-dir,
2183 AS_HELP_STRING([--with-external-dict-dir],
2184 [Specify external dictionary dir.]),
2187 AC_ARG_WITH(external-hyph-dir,
2188 AS_HELP_STRING([--with-external-hyph-dir],
2189 [Specify external hyphenation pattern dir.]),
2192 AC_ARG_WITH(external-thes-dir,
2193 AS_HELP_STRING([--with-external-thes-dir],
2194 [Specify external thesaurus dir.]),
2197 AC_ARG_WITH(system-zlib,
2198 AS_HELP_STRING([--with-system-zlib],
2199 [Use zlib already on system.]),,
2200 [with_system_zlib=auto])
2202 AC_ARG_WITH(system-jpeg,
2203 AS_HELP_STRING([--with-system-jpeg],
2204 [Use jpeg already on system.]),,
2205 [with_system_jpeg="$with_system_libs"])
2207 AC_ARG_WITH(system-expat,
2208 AS_HELP_STRING([--with-system-expat],
2209 [Use expat already on system.]),,
2210 [with_system_expat="$with_system_libs"])
2212 AC_ARG_WITH(system-libxml,
2213 AS_HELP_STRING([--with-system-libxml],
2214 [Use libxml/libxslt already on system.]),,
2215 [with_system_libxml=auto])
2217 AC_ARG_WITH(system-ucpp,
2218 AS_HELP_STRING([--with-system-ucpp],
2219 [Use ucpp already on system.]),,
2222 AC_ARG_WITH(system-openldap,
2223 AS_HELP_STRING([--with-system-openldap],
2224 [Use the OpenLDAP LDAP SDK already on system.]),,
2225 [with_system_openldap="$with_system_libs"])
2227 libo_FUZZ_ARG_ENABLE(poppler,
2228 AS_HELP_STRING([--disable-poppler],
2229 [Disable building Poppler.])
2232 AC_ARG_WITH(system-poppler,
2233 AS_HELP_STRING([--with-system-poppler],
2234 [Use system poppler (only needed for PDF import).]),,
2235 [with_system_poppler="$with_system_libs"])
2237 AC_ARG_WITH(system-abseil,
2238 AS_HELP_STRING([--with-system-abseil],
2239 [Use the abseil libraries already on system.]),,
2240 [with_system_abseil="$with_system_libs"])
2242 AC_ARG_WITH(system-openjpeg,
2243 AS_HELP_STRING([--with-system-openjpeg],
2244 [Use the OpenJPEG library already on system.]),,
2245 [with_system_openjpeg="$with_system_libs"])
2247 libo_FUZZ_ARG_ENABLE(gpgmepp,
2248 AS_HELP_STRING([--disable-gpgmepp],
2249 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2252 AC_ARG_WITH(system-gpgmepp,
2253 AS_HELP_STRING([--with-system-gpgmepp],
2254 [Use gpgmepp already on system]),,
2255 [with_system_gpgmepp="$with_system_libs"])
2257 AC_ARG_WITH(system-mariadb,
2258 AS_HELP_STRING([--with-system-mariadb],
2259 [Use MariaDB/MySQL libraries already on system.]),,
2260 [with_system_mariadb="$with_system_libs"])
2262 AC_ARG_ENABLE(bundle-mariadb,
2263 AS_HELP_STRING([--enable-bundle-mariadb],
2264 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2267 AC_ARG_WITH(system-postgresql,
2268 AS_HELP_STRING([--with-system-postgresql],
2269 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2270 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2271 [with_system_postgresql="$with_system_libs"])
2273 AC_ARG_WITH(libpq-path,
2274 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2275 [Use this PostgreSQL C interface (libpq) installation for building
2276 the PostgreSQL-SDBC extension.]),
2279 AC_ARG_WITH(system-firebird,
2280 AS_HELP_STRING([--with-system-firebird],
2281 [Use Firebird libraries already on system, for building the Firebird-SDBC
2282 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2283 [with_system_firebird="$with_system_libs"])
2285 AC_ARG_WITH(system-libtommath,
2286 AS_HELP_STRING([--with-system-libtommath],
2287 [Use libtommath already on system]),,
2288 [with_system_libtommath="$with_system_libs"])
2290 AC_ARG_WITH(system-hsqldb,
2291 AS_HELP_STRING([--with-system-hsqldb],
2292 [Use hsqldb already on system.]))
2294 AC_ARG_WITH(hsqldb-jar,
2295 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2296 [Specify path to jarfile manually.]),
2297 HSQLDB_JAR=$withval)
2299 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2300 AS_HELP_STRING([--disable-scripting-beanshell],
2301 [Disable support for scripts in BeanShell.]),
2305 AC_ARG_WITH(system-beanshell,
2306 AS_HELP_STRING([--with-system-beanshell],
2307 [Use beanshell already on system.]),,
2308 [with_system_beanshell="$with_system_jars"])
2310 AC_ARG_WITH(beanshell-jar,
2311 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2312 [Specify path to jarfile manually.]),
2315 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2316 AS_HELP_STRING([--disable-scripting-javascript],
2317 [Disable support for scripts in JavaScript.]),
2321 AC_ARG_WITH(system-rhino,
2322 AS_HELP_STRING([--with-system-rhino],
2323 [Use rhino already on system.]),,)
2324 # [with_system_rhino="$with_system_jars"])
2325 # Above is not used as we have different debug interface
2326 # patched into internal rhino. This code needs to be fixed
2327 # before we can enable it by default.
2329 AC_ARG_WITH(rhino-jar,
2330 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2331 [Specify path to jarfile manually.]),
2334 AC_ARG_WITH(system-jfreereport,
2335 AS_HELP_STRING([--with-system-jfreereport],
2336 [Use JFreeReport already on system.]),,
2337 [with_system_jfreereport="$with_system_jars"])
2339 AC_ARG_WITH(sac-jar,
2340 AS_HELP_STRING([--with-sac-jar=JARFILE],
2341 [Specify path to jarfile manually.]),
2344 AC_ARG_WITH(libxml-jar,
2345 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2346 [Specify path to jarfile manually.]),
2347 LIBXML_JAR=$withval)
2349 AC_ARG_WITH(flute-jar,
2350 AS_HELP_STRING([--with-flute-jar=JARFILE],
2351 [Specify path to jarfile manually.]),
2354 AC_ARG_WITH(jfreereport-jar,
2355 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2356 [Specify path to jarfile manually.]),
2357 JFREEREPORT_JAR=$withval)
2359 AC_ARG_WITH(liblayout-jar,
2360 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2361 [Specify path to jarfile manually.]),
2362 LIBLAYOUT_JAR=$withval)
2364 AC_ARG_WITH(libloader-jar,
2365 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2366 [Specify path to jarfile manually.]),
2367 LIBLOADER_JAR=$withval)
2369 AC_ARG_WITH(libformula-jar,
2370 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2371 [Specify path to jarfile manually.]),
2372 LIBFORMULA_JAR=$withval)
2374 AC_ARG_WITH(librepository-jar,
2375 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2376 [Specify path to jarfile manually.]),
2377 LIBREPOSITORY_JAR=$withval)
2379 AC_ARG_WITH(libfonts-jar,
2380 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2381 [Specify path to jarfile manually.]),
2382 LIBFONTS_JAR=$withval)
2384 AC_ARG_WITH(libserializer-jar,
2385 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2386 [Specify path to jarfile manually.]),
2387 LIBSERIALIZER_JAR=$withval)
2389 AC_ARG_WITH(libbase-jar,
2390 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2391 [Specify path to jarfile manually.]),
2392 LIBBASE_JAR=$withval)
2394 AC_ARG_WITH(system-odbc,
2395 AS_HELP_STRING([--with-system-odbc],
2396 [Use the odbc headers already on system.]),,
2397 [with_system_odbc="auto"])
2399 AC_ARG_WITH(system-sane,
2400 AS_HELP_STRING([--with-system-sane],
2401 [Use sane.h already on system.]),,
2402 [with_system_sane="$with_system_headers"])
2404 AC_ARG_WITH(system-bluez,
2405 AS_HELP_STRING([--with-system-bluez],
2406 [Use bluetooth.h already on system.]),,
2407 [with_system_bluez="$with_system_headers"])
2409 AC_ARG_WITH(system-boost,
2410 AS_HELP_STRING([--with-system-boost],
2411 [Use boost already on system.]),,
2412 [with_system_boost="$with_system_headers"])
2414 AC_ARG_WITH(system-cuckoo,
2415 AS_HELP_STRING([--with-system-cuckoo],
2416 [Use libcuckoo already on system.]),,
2417 [with_system_cuckoo="$with_system_headers"])
2419 AC_ARG_WITH(system-dragonbox,
2420 AS_HELP_STRING([--with-system-dragonbox],
2421 [Use dragonbox already on system.]),,
2422 [with_system_dragonbox="$with_system_headers"])
2424 AC_ARG_WITH(system-libfixmath,
2425 AS_HELP_STRING([--with-system-libfixmath],
2426 [Use libfixmath already on system.]),,
2427 [with_system_libfixmath="$with_system_libs"])
2429 AC_ARG_WITH(system-glm,
2430 AS_HELP_STRING([--with-system-glm],
2431 [Use glm already on system.]),,
2432 [with_system_glm="$with_system_headers"])
2434 AC_ARG_WITH(system-hunspell,
2435 AS_HELP_STRING([--with-system-hunspell],
2436 [Use libhunspell already on system.]),,
2437 [with_system_hunspell="$with_system_libs"])
2439 libo_FUZZ_ARG_ENABLE(zxing,
2440 AS_HELP_STRING([--disable-zxing],
2441 [Disable use of zxing external library.]))
2443 AC_ARG_WITH(system-zxing,
2444 AS_HELP_STRING([--with-system-zxing],
2445 [Use libzxing already on system.]),,
2446 [with_system_zxing="$with_system_libs"])
2448 AC_ARG_WITH(system-box2d,
2449 AS_HELP_STRING([--with-system-box2d],
2450 [Use box2d already on system.]),,
2451 [with_system_box2d="$with_system_libs"])
2453 AC_ARG_WITH(system-mythes,
2454 AS_HELP_STRING([--with-system-mythes],
2455 [Use mythes already on system.]),,
2456 [with_system_mythes="$with_system_libs"])
2458 AC_ARG_WITH(system-altlinuxhyph,
2459 AS_HELP_STRING([--with-system-altlinuxhyph],
2460 [Use ALTLinuxhyph already on system.]),,
2461 [with_system_altlinuxhyph="$with_system_libs"])
2463 AC_ARG_WITH(system-lpsolve,
2464 AS_HELP_STRING([--with-system-lpsolve],
2465 [Use lpsolve already on system.]),,
2466 [with_system_lpsolve="$with_system_libs"])
2468 AC_ARG_WITH(system-coinmp,
2469 AS_HELP_STRING([--with-system-coinmp],
2470 [Use CoinMP already on system.]),,
2471 [with_system_coinmp="$with_system_libs"])
2473 AC_ARG_WITH(system-liblangtag,
2474 AS_HELP_STRING([--with-system-liblangtag],
2475 [Use liblangtag library already on system.]),,
2476 [with_system_liblangtag="$with_system_libs"])
2478 AC_ARG_WITH(system-lockfile,
2479 AS_HELP_STRING([--with-system-lockfile[=file]],
2480 [Detect a system lockfile program or use the \$file argument.]))
2483 AS_HELP_STRING([--without-webdav],
2484 [Disable WebDAV support in the UCB.]))
2486 AC_ARG_WITH(linker-hash-style,
2487 AS_HELP_STRING([--with-linker-hash-style],
2488 [Use linker with --hash-style=<style> when linking shared objects.
2489 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2490 if supported on the build system, and "sysv" otherwise.]))
2492 AC_ARG_WITH(jdk-home,
2493 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2494 [If you have installed JDK 9 or later on your system please supply the
2495 path here. Note that this is not the location of the java command but the
2496 location of the entire distribution. In case of cross-compiling, this
2497 is the JDK of the host os. Use --with-build-platform-configure-options
2498 to point to a different build platform JDK.]),
2502 AS_HELP_STRING([--with-help],
2503 [Enable the build of help. There is a special parameter "common" that
2504 can be used to bundle only the common part, .e.g help-specific icons.
2505 This is useful when you build the helpcontent separately.])
2507 Usage: --with-help build the old local help
2508 --without-help no local help (default)
2509 --with-help=html build the new HTML local help
2510 --with-help=online build the new HTML online help
2514 AC_ARG_WITH(omindex,
2515 AS_HELP_STRING([--with-omindex],
2516 [Enable the support of xapian-omega index for online help.])
2518 Usage: --with-omindex=server prepare the pages for omindex
2519 but let xapian-omega be built in server.
2520 --with-omindex=noxap do not prepare online pages
2525 libo_FUZZ_ARG_WITH(java,
2526 AS_HELP_STRING([--with-java=<java command>],
2527 [Specify the name of the Java interpreter command. Typically "java"
2528 which is the default.
2530 To build without support for Java components, applets, accessibility
2531 or the XML filters written in Java, use --without-java or --with-java=no.]),
2532 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2533 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2536 AC_ARG_WITH(jvm-path,
2537 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2538 [Use a specific JVM search path at runtime.
2539 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2542 AC_ARG_WITH(ant-home,
2543 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2544 [If you have installed Apache Ant on your system, please supply the path here.
2545 Note that this is not the location of the Ant binary but the location
2546 of the entire distribution.]),
2549 AC_ARG_WITH(symbol-config,
2550 AS_HELP_STRING([--with-symbol-config],
2551 [Configuration for the crashreport symbol upload]),
2553 [with_symbol_config=no])
2555 AC_ARG_WITH(export-validation,
2556 AS_HELP_STRING([--without-export-validation],
2557 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2558 ,with_export_validation=auto)
2560 AC_ARG_WITH(bffvalidator,
2561 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2562 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2563 Requires installed Microsoft Office Binary File Format Validator.
2564 Note: export-validation (--with-export-validation) is required to be turned on.
2565 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2566 ,with_bffvalidator=no)
2568 libo_FUZZ_ARG_WITH(junit,
2569 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2570 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2571 --without-junit disables those tests. Not relevant in the --without-java case.]),
2574 AC_ARG_WITH(hamcrest,
2575 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2576 [Specifies the hamcrest jar file to use for JUnit-based tests.
2577 --without-junit disables those tests. Not relevant in the --without-java case.]),
2580 AC_ARG_WITH(perl-home,
2581 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2582 [If you have installed Perl 5 Distribution, on your system, please
2583 supply the path here. Note that this is not the location of the Perl
2584 binary but the location of the entire distribution.]),
2587 libo_FUZZ_ARG_WITH(doxygen,
2589 [--with-doxygen=<absolute path to doxygen executable>],
2590 [Specifies the doxygen executable to use when generating ODK C/C++
2591 documentation. --without-doxygen disables generation of ODK C/C++
2592 documentation. Not relevant in the --disable-odk case.]),
2595 AC_ARG_WITH(visual-studio,
2596 AS_HELP_STRING([--with-visual-studio=<2019/2022>],
2597 [Specify which Visual Studio version to use in case several are
2598 installed. Currently 2019 (default) and 2022 are supported.]),
2601 AC_ARG_WITH(windows-sdk,
2602 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2603 [Specify which Windows SDK, or "Windows Kit", version to use
2604 in case the one that came with the selected Visual Studio
2605 is not what you want for some reason. Note that not all compiler/SDK
2606 combinations are supported. The intent is that this option should not
2611 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2612 [Use this option to build LibreOffice with additional UI language support.
2613 English (US) is always included by default.
2614 Separate multiple languages with space.
2615 For all languages, use --with-lang=ALL.]),
2618 AC_ARG_WITH(locales,
2619 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2620 [Use this option to limit the locale information built in.
2621 Separate multiple locales with space.
2622 Very experimental and might well break stuff.
2623 Just a desperate measure to shrink code and data size.
2624 By default all the locales available is included.
2625 Just works with --disable-dynloading. Defaults to "ALL".
2626 This option is completely unrelated to --with-lang.])
2628 Affects also our character encoding conversion
2629 tables for encodings mainly targeted for a
2630 particular locale, like EUC-CN and EUC-TW for
2631 zh, ISO-2022-JP for ja.
2633 Affects also our add-on break iterator data for
2636 For the default, all locales, don't use this switch at all.
2637 Specifying just the language part of a locale means all matching
2638 locales will be included.
2642 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2643 libo_FUZZ_ARG_WITH(krb5,
2644 AS_HELP_STRING([--with-krb5],
2645 [Enable MIT Kerberos 5 support in modules that support it.
2646 By default automatically enabled on platforms
2647 where a good system Kerberos 5 is available.]),
2650 libo_FUZZ_ARG_WITH(gssapi,
2651 AS_HELP_STRING([--with-gssapi],
2652 [Enable GSSAPI support in modules that support it.
2653 By default automatically enabled on platforms
2654 where a good system GSSAPI is available.]),
2657 libo_FUZZ_ARG_WITH(lxml,
2658 AS_HELP_STRING([--without-lxml],
2659 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2660 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2661 report widget classes and ids.]),
2664 libo_FUZZ_ARG_WITH(latest-c++,
2665 AS_HELP_STRING([--with-latest-c++],
2666 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2667 published standard.]),,
2668 [with_latest_c__=no])
2670 dnl ===================================================================
2672 dnl ===================================================================
2674 AC_ARG_WITH(branding,
2675 AS_HELP_STRING([--with-branding=/path/to/images],
2676 [Use given path to retrieve branding images set.])
2678 Search for intro.png about.svg and logo.svg.
2679 If any is missing, default ones will be used instead.
2681 Search also progress.conf for progress
2682 settings on intro screen :
2684 PROGRESSBARCOLOR="255,255,255" Set color of
2685 progress bar. Comma separated RGB decimal values.
2686 PROGRESSSIZE="407,6" Set size of progress bar.
2687 Comma separated decimal values (width, height).
2688 PROGRESSPOSITION="61,317" Set position of progress
2689 bar from left,top. Comma separated decimal values.
2690 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2691 bar frame. Comma separated RGB decimal values.
2692 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2693 bar text. Comma separated RGB decimal values.
2694 PROGRESSTEXTBASELINE="287" Set vertical position of
2695 progress bar text from top. Decimal value.
2697 Default values will be used if not found.
2702 AC_ARG_WITH(extra-buildid,
2703 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2704 [Show addition build identification in about dialog.]),
2709 AS_HELP_STRING([--with-vendor="John the Builder"],
2710 [Set vendor of the build.]),
2713 AC_ARG_WITH(privacy-policy-url,
2714 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2715 [The URL to your privacy policy (needed when
2716 enabling online-update or crashreporting via breakpad)]),
2717 [if test "x$with_privacy_policy_url" = "xyes"; then
2718 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2719 elif test "x$with_privacy_policy_url" = "xno"; then
2720 with_privacy_policy_url="undefined"
2722 ,[with_privacy_policy_url="undefined"])
2724 AC_ARG_WITH(android-package-name,
2725 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2726 [Set Android package name of the build.]),
2729 AC_ARG_WITH(compat-oowrappers,
2730 AS_HELP_STRING([--with-compat-oowrappers],
2731 [Install oo* wrappers in parallel with
2732 lo* ones to keep backward compatibility.
2733 Has effect only with make distro-pack-install]),
2736 AC_ARG_WITH(os-version,
2737 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2738 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2741 AC_ARG_WITH(idlc-cpp,
2742 AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2743 [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2746 AC_ARG_WITH(parallelism,
2747 AS_HELP_STRING([--with-parallelism],
2748 [Number of jobs to run simultaneously during build. Parallel builds can
2749 save a lot of time on multi-cpu machines. Defaults to the number of
2750 CPUs on the machine, unless you configure --enable-icecream - then to
2754 AC_ARG_WITH(all-tarballs,
2755 AS_HELP_STRING([--with-all-tarballs],
2756 [Download all external tarballs unconditionally]))
2758 AC_ARG_WITH(gdrive-client-id,
2759 AS_HELP_STRING([--with-gdrive-client-id],
2760 [Provides the client id of the application for OAuth2 authentication
2761 on Google Drive. If either this or --with-gdrive-client-secret is
2762 empty, the feature will be disabled]),
2765 AC_ARG_WITH(gdrive-client-secret,
2766 AS_HELP_STRING([--with-gdrive-client-secret],
2767 [Provides the client secret of the application for OAuth2
2768 authentication on Google Drive. If either this or
2769 --with-gdrive-client-id is empty, the feature will be disabled]),
2772 AC_ARG_WITH(alfresco-cloud-client-id,
2773 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2774 [Provides the client id of the application for OAuth2 authentication
2775 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2776 empty, the feature will be disabled]),
2779 AC_ARG_WITH(alfresco-cloud-client-secret,
2780 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2781 [Provides the client secret of the application for OAuth2
2782 authentication on Alfresco Cloud. If either this or
2783 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2786 AC_ARG_WITH(onedrive-client-id,
2787 AS_HELP_STRING([--with-onedrive-client-id],
2788 [Provides the client id of the application for OAuth2 authentication
2789 on OneDrive. If either this or --with-onedrive-client-secret is
2790 empty, the feature will be disabled]),
2793 AC_ARG_WITH(onedrive-client-secret,
2794 AS_HELP_STRING([--with-onedrive-client-secret],
2795 [Provides the client secret of the application for OAuth2
2796 authentication on OneDrive. If either this or
2797 --with-onedrive-client-id is empty, the feature will be disabled]),
2799 dnl ===================================================================
2800 dnl Do we want to use pre-build binary tarball for recompile
2801 dnl ===================================================================
2803 if test "$enable_library_bin_tar" = "yes" ; then
2804 USE_LIBRARY_BIN_TAR=TRUE
2806 USE_LIBRARY_BIN_TAR=
2808 AC_SUBST(USE_LIBRARY_BIN_TAR)
2810 dnl ===================================================================
2811 dnl Test whether build target is Release Build
2812 dnl ===================================================================
2813 AC_MSG_CHECKING([whether build target is Release Build])
2814 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2816 ENABLE_RELEASE_BUILD=
2817 GET_TASK_ALLOW_ENTITLEMENT='
2818 <!-- We want to be able to debug a hardened process when not building for release -->
2819 <key>com.apple.security.get-task-allow</key>
2822 AC_MSG_RESULT([yes])
2823 ENABLE_RELEASE_BUILD=TRUE
2824 GET_TASK_ALLOW_ENTITLEMENT=''
2826 AC_SUBST(ENABLE_RELEASE_BUILD)
2827 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2829 AC_MSG_CHECKING([whether to build a Community flavor])
2830 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2831 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2832 AC_MSG_RESULT([yes])
2837 dnl ===================================================================
2838 dnl Test whether to sign Windows Build
2839 dnl ===================================================================
2840 AC_MSG_CHECKING([whether to sign windows build])
2841 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2842 AC_MSG_RESULT([yes])
2843 WINDOWS_BUILD_SIGNING="TRUE"
2846 WINDOWS_BUILD_SIGNING="FALSE"
2848 AC_SUBST(WINDOWS_BUILD_SIGNING)
2850 dnl ===================================================================
2851 dnl MacOSX build and runtime environment options
2852 dnl ===================================================================
2854 AC_ARG_WITH(macosx-version-min-required,
2855 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2856 [set the minimum OS version needed to run the built LibreOffice])
2858 e. g.: --with-macosx-version-min-required=10.13
2862 dnl ===================================================================
2863 dnl Check for incompatible options set by fuzzing, and reset those
2864 dnl automatically to working combinations
2865 dnl ===================================================================
2867 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2868 "$enable_dbus" != "$enable_avahi"; then
2869 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2870 enable_avahi=$enable_dbus
2875 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2876 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2880 add_lopath_before ()
2885 for dir in $LO_PATH ; do
2886 if test "$dir" != "$1" ; then
2887 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2890 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2893 dnl ===================================================================
2894 dnl check for required programs (grep, awk, sed, bash)
2895 dnl ===================================================================
2900 if test -n "$1"; then
2901 if test "$build_os" = "cygwin"; then
2902 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2904 new_path=`cygpath -sm "$formatted_path"`
2907 new_path=`cygpath -u "$formatted_path"`
2912 if test "$2" = "after"; then
2913 add_lopath_after "$new_path"
2915 add_lopath_before "$new_path"
2921 AC_PATH_PROG( AWK, $AWK)
2922 if test -z "$AWK"; then
2923 AC_MSG_ERROR([install awk to run this script])
2926 AC_PATH_PROG(BASH, bash)
2927 if test -z "$BASH"; then
2928 AC_MSG_ERROR([bash not found in \$PATH])
2932 # prefer parallel compression tools, if available
2933 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2934 if test -z "$COMPRESSIONTOOL"; then
2935 AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2936 if test -z "$COMPRESSIONTOOL"; then
2937 AC_MSG_ERROR([gzip not found in \$PATH])
2940 AC_SUBST(COMPRESSIONTOOL)
2942 AC_MSG_CHECKING([for GNU or BSD tar])
2943 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
2944 $a --version 2> /dev/null | egrep "GNU|bsdtar" 2>&1 > /dev/null
2945 if test $? -eq 0; then
2950 AC_MSG_RESULT($GNUTAR)
2951 if test -z "$GNUTAR"; then
2952 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2956 AC_MSG_CHECKING([for tar's option to strip components])
2957 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2958 if test $? -eq 0; then
2959 STRIP_COMPONENTS="--strip-components"
2961 $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2962 if test $? -eq 0; then
2963 STRIP_COMPONENTS="--strip-path"
2965 STRIP_COMPONENTS="unsupported"
2968 AC_MSG_RESULT($STRIP_COMPONENTS)
2969 if test x$STRIP_COMPONENTS = xunsupported; then
2970 AC_MSG_ERROR([you need a tar that is able to strip components.])
2972 AC_SUBST(STRIP_COMPONENTS)
2974 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2975 dnl desktop OSes from "mobile" ones.
2977 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2978 dnl In other words, that when building for an OS that is not a
2979 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2981 dnl Note the direction of the implication; there is no assumption that
2982 dnl cross-compiling would imply a non-desktop OS.
2984 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
2985 BUILD_TYPE="$BUILD_TYPE DESKTOP"
2986 AC_DEFINE(HAVE_FEATURE_DESKTOP)
2987 if test "$_os" != Emscripten; then
2988 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2992 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
2993 # also work with the default gtk3 plugin.
2994 if test "$enable_wasm_strip" = "yes"; then
2999 test "$_os" = Emscripten && enable_curl=no
3000 enable_database_connectivity=no
3003 test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3004 enable_extension_integration=no
3005 enable_extensions=no
3006 enable_extension_update=no
3010 enable_lotuswordpro=no
3014 enable_online_update=no
3018 enable_report_builder=no
3020 enable_sdremote_bluetooth=no
3030 test_libpagemaker=no
3039 test "${with_fonts+set}" = set || with_fonts=yes
3040 test "${with_locales+set}" = set || with_locales=en
3042 AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3043 AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3044 # AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3045 AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3046 AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3047 AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3048 AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3049 # AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3050 AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3051 AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3052 AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3053 AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3054 AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3055 AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3058 EMSCRIPTEN_NEH_MAJOR=3
3059 EMSCRIPTEN_NEH_MINOR=1
3060 EMSCRIPTEN_NEH_TINY=3
3061 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3063 if test "$enable_wasm_exceptions" = yes; then
3064 AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3065 check_semantic_version_three_prefixed EMSCRIPTEN NEH
3066 if test $? -ne 0; then
3067 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3069 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3071 ENABLE_WASM_EXCEPTIONS=TRUE
3073 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3075 # Whether to build "avmedia" functionality or not.
3077 if test "$enable_avmedia" = yes; then
3078 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3079 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3081 test_gstreamer_1_0=no
3084 # Decide whether to build database connectivity stuff (including Base) or not.
3085 if test "$enable_database_connectivity" != no; then
3086 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3087 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3089 if test "$_os" = iOS; then
3090 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3092 disable_database_connectivity_dependencies
3095 if test -z "$enable_extensions"; then
3096 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3097 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3098 enable_extensions=yes
3102 DISABLE_SCRIPTING=''
3103 if test "$enable_scripting" = yes; then
3104 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3105 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3107 DISABLE_SCRIPTING='TRUE'
3108 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3111 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3112 # Disable dynamic_loading always for iOS and Android
3113 enable_dynamic_loading=no
3114 elif test -z "$enable_dynamic_loading"; then
3115 # Otherwise enable it unless specifically disabled
3116 enable_dynamic_loading=yes
3119 DISABLE_DYNLOADING=''
3120 if test "$enable_dynamic_loading" = yes; then
3121 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3123 DISABLE_DYNLOADING='TRUE'
3124 if test $_os != iOS -a $_os != Android; then
3125 enable_database_connectivity=no
3133 AC_SUBST(DISABLE_DYNLOADING)
3135 ENABLE_CUSTOMTARGET_COMPONENTS=
3136 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3137 ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3138 if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3139 AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3142 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3144 if test "$enable_extensions" = yes; then
3145 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3146 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3148 enable_extension_integration=no
3149 enable_extension_update=no
3152 # remember SYSBASE value
3155 dnl ===================================================================
3156 dnl Sort out various gallery compilation options
3157 dnl ===================================================================
3158 WITH_GALLERY_BUILD=TRUE
3159 AC_MSG_CHECKING([how to build and package galleries])
3160 if test -n "${with_galleries}"; then
3161 if test "$with_galleries" = "build"; then
3162 if test "$enable_database_connectivity" = no; then
3163 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3165 AC_MSG_RESULT([build from source images internally])
3166 elif test "$with_galleries" = "no"; then
3168 AC_MSG_RESULT([disable non-internal gallery build])
3170 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3173 if test $_os != iOS -a $_os != Android; then
3174 AC_MSG_RESULT([internal src images for desktop])
3177 AC_MSG_RESULT([disable src image build])
3180 AC_SUBST(WITH_GALLERY_BUILD)
3182 dnl ===================================================================
3183 dnl Checks if ccache is available
3184 dnl ===================================================================
3186 if test "$enable_ccache" = "no"; then
3188 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3189 case "%$CC%$CXX%" in
3190 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3191 # assume that's good then
3192 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3193 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3194 CCACHE_DEPEND_MODE=1
3197 # try to use our own ccache if it is available and CCACHE was not already defined
3198 if test -z "$CCACHE"; then
3199 if test "$_os" = "WINNT"; then
3200 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3202 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3203 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3204 elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3205 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3208 AC_PATH_PROG([CCACHE],[ccache],[not found])
3209 if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3210 CCACHE=`win_short_path_for_make "$CCACHE"`
3211 # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3213 AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3214 CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3215 if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3223 if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3224 # on windows/VC perhaps sccache is around?
3225 case "%$CC%$CXX%" in
3226 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3227 # assume that's good then
3228 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3229 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3230 CCACHE_DEPEND_MODE=1
3234 # for sharing code below, reuse CCACHE env var
3235 AC_PATH_PROG([CCACHE],[sccache],[not found])
3236 if test "$CCACHE" != "not found"; then
3237 CCACHE=`win_short_path_for_make "$CCACHE"`
3239 CCACHE_DEPEND_MODE=1
3244 if test "$CCACHE" = "not found"; then
3247 if test -n "$CCACHE" -a -z "$SCCACHE"; then
3248 CCACHE_DEPEND_MODE=1
3249 # Need to check for ccache version: otherwise prevents
3250 # caching of the results (like "-x objective-c++" for Mac)
3251 if test $_os = Darwin -o $_os = iOS; then
3252 # Check ccache version
3253 AC_MSG_CHECKING([whether version of ccache is suitable])
3254 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3255 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3256 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3257 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3259 AC_MSG_RESULT([no, $CCACHE_VERSION])
3270 if test "$enable_ccache" = "nodepend"; then
3271 CCACHE_DEPEND_MODE=""
3273 AC_SUBST(CCACHE_DEPEND_MODE)
3275 # sccache defaults are good enough
3276 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3277 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3278 # -p works with both 4.2 and 4.4
3279 ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3280 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3281 if test "$ccache_size" = ""; then
3282 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3283 if test "$ccache_size" = ""; then
3286 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3287 if test $ccache_size -lt 1024; then
3289 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3290 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3292 # warn that ccache may be too small for debug build
3293 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3294 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3297 if test $ccache_size -lt 5; then
3298 #warn that ccache may be too small for debug build
3299 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3300 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3306 if test "$enable_z7_debug" != no; then
3307 if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3308 ENABLE_Z7_DEBUG=TRUE
3311 AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3312 add_warning "ccache will not work with --disable-z7-debug"
3314 AC_SUBST(ENABLE_Z7_DEBUG)
3316 dnl ===================================================================
3317 dnl Checks for C compiler,
3318 dnl The check for the C++ compiler is later on.
3319 dnl ===================================================================
3320 if test "$_os" != "WINNT"; then
3322 AC_MSG_CHECKING([gcc home])
3323 if test -z "$with_gcc_home"; then
3324 if test "$enable_icecream" = "yes"; then
3325 if test -d "/usr/lib/icecc/bin"; then
3326 GCC_HOME="/usr/lib/icecc/"
3327 elif test -d "/usr/libexec/icecc/bin"; then
3328 GCC_HOME="/usr/libexec/icecc/"
3329 elif test -d "/opt/icecream/bin"; then
3330 GCC_HOME="/opt/icecream/"
3332 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3336 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3337 GCC_HOME_SET="false"
3340 GCC_HOME="$with_gcc_home"
3342 AC_MSG_RESULT($GCC_HOME)
3345 if test "$GCC_HOME_SET" = "true"; then
3346 if test -z "$CC"; then
3347 CC="$GCC_HOME/bin/gcc"
3350 if test -z "$CXX"; then
3351 CXX="$GCC_HOME/bin/g++"
3357 COMPATH=`dirname "$CC"`
3358 if test "$COMPATH" = "."; then
3359 AC_PATH_PROGS(COMPATH, $CC)
3360 dnl double square bracket to get single because of M4 quote...
3361 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3363 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3365 dnl ===================================================================
3367 dnl ===================================================================
3368 AC_MSG_CHECKING([whether to build with Java support])
3369 if test "$with_java" != "no"; then
3370 if test "$DISABLE_SCRIPTING" = TRUE; then
3371 AC_MSG_RESULT([no, overridden by --disable-scripting])
3375 AC_MSG_RESULT([yes])
3377 AC_DEFINE(HAVE_FEATURE_JAVA)
3384 AC_SUBST(ENABLE_JAVA)
3386 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3388 dnl ENABLE_JAVA="" indicate no Java support at all
3390 dnl ===================================================================
3391 dnl Check macOS SDK and compiler
3392 dnl ===================================================================
3394 if test $_os = Darwin; then
3396 # The SDK in the currently selected Xcode should be found.
3398 AC_MSG_CHECKING([what macOS SDK to use])
3399 for macosx_sdk in 12.3 12.1 12.0 11.3 11.1 11.0 10.15 10.14 10.13; do
3400 MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null`
3401 if test -d "$MACOSX_SDK_PATH"; then
3404 MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk"
3405 if test -d "$MACOSX_SDK_PATH"; then
3410 if test ! -d "$MACOSX_SDK_PATH"; then
3411 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3414 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3418 MACOSX_SDK_VERSION=101300
3421 MACOSX_SDK_VERSION=101400
3424 MACOSX_SDK_VERSION=101500
3427 MACOSX_SDK_VERSION=110000
3430 MACOSX_SDK_VERSION=110100
3433 MACOSX_SDK_VERSION=110300
3436 MACOSX_SDK_VERSION=120000
3439 MACOSX_SDK_VERSION=120100
3442 MACOSX_SDK_VERSION=120300
3445 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported])
3449 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3450 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon])
3453 if test "$with_macosx_version_min_required" = "" ; then
3454 if test "$host_cpu" = x86_64; then
3455 with_macosx_version_min_required="10.13";
3457 with_macosx_version_min_required="11.0";
3461 # export this so that "xcrun" invocations later return matching values
3462 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3463 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3464 export DEVELOPER_DIR
3465 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3466 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3468 AC_MSG_CHECKING([whether Xcode is new enough])
3469 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3470 my_xcode_ver2=${my_xcode_ver1#Xcode }
3471 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3472 if test "$my_xcode_ver3" -ge 1205; then
3473 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3475 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3478 case "$with_macosx_version_min_required" in
3480 MAC_OS_X_VERSION_MIN_REQUIRED="101300"
3483 MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3486 MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3489 MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3492 MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3495 MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3498 MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3501 MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3504 MAC_OS_X_VERSION_MIN_REQUIRED="120100"
3507 MAC_OS_X_VERSION_MIN_REQUIRED="120300"
3510 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.13--12.3])
3514 LIBTOOL=/usr/bin/libtool
3515 INSTALL_NAME_TOOL=install_name_tool
3516 if test -z "$save_CC"; then
3517 stdlib=-stdlib=libc++
3519 AC_MSG_CHECKING([what C compiler to use])
3520 CC="`xcrun -find clang`"
3521 CC_BASE=`first_arg_basename "$CC"`
3522 if test "$host_cpu" = x86_64; then
3523 CC+=" -target x86_64-apple-macos"
3525 CC+=" -target arm64-apple-macos"
3527 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3528 AC_MSG_RESULT([$CC])
3530 AC_MSG_CHECKING([what C++ compiler to use])
3531 CXX="`xcrun -find clang++`"
3532 CXX_BASE=`first_arg_basename "$CXX"`
3533 if test "$host_cpu" = x86_64; then
3534 CXX+=" -target x86_64-apple-macos"
3536 CXX+=" -target arm64-apple-macos"
3538 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3539 AC_MSG_RESULT([$CXX])
3541 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3544 STRIP=`xcrun -find strip`
3545 LIBTOOL=`xcrun -find libtool`
3546 RANLIB=`xcrun -find ranlib`
3549 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3550 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3551 AC_MSG_ERROR([the version minimum required cannot be greater than the sdk level])
3555 AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3557 AC_MSG_CHECKING([whether to do code signing])
3559 if test "$enable_macosx_code_signing" = yes; then
3560 # By default use the first suitable certificate (?).
3562 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3563 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3564 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3565 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3566 # "Developer ID Application" one.
3568 identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3569 if test -n "$identity"; then
3570 MACOSX_CODESIGNING_IDENTITY=$identity
3571 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3572 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3574 AC_MSG_ERROR([cannot determine identity to use])
3576 elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3577 MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3578 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3579 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3584 AC_MSG_CHECKING([whether to create a Mac App Store package])
3586 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3588 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3589 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3590 elif test "$enable_macosx_package_signing" = yes; then
3591 # By default use the first suitable certificate.
3592 # It should be a "3rd Party Mac Developer Installer" one
3594 identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3595 if test -n "$identity"; then
3596 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3597 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3598 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3600 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3603 MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3604 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3605 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3608 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3609 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3612 AC_MSG_CHECKING([whether to sandbox the application])
3614 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3615 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3616 elif test "$enable_macosx_sandbox" = yes; then
3617 ENABLE_MACOSX_SANDBOX=TRUE
3618 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3619 AC_MSG_RESULT([yes])
3624 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3625 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3626 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3628 AC_SUBST(MACOSX_SDK_PATH)
3629 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3630 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3631 AC_SUBST(INSTALL_NAME_TOOL)
3632 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3633 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3634 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3635 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3636 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3638 dnl ===================================================================
3639 dnl Check iOS SDK and compiler
3640 dnl ===================================================================
3642 if test $_os = iOS; then
3643 AC_MSG_CHECKING([what iOS SDK to use])
3644 current_sdk_ver=15.4
3645 older_sdk_vers="15.2 15.0 14.5"
3646 if test "$enable_ios_simulator" = "yes"; then
3647 platform=iPhoneSimulator
3648 versionmin=-mios-simulator-version-min=13.6
3651 versionmin=-miphoneos-version-min=13.6
3653 xcode_developer=`xcode-select -print-path`
3655 for sdkver in $current_sdk_ver $older_sdk_vers; do
3656 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3663 if test -z "$sysroot"; then
3664 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3667 AC_MSG_RESULT($sysroot)
3669 stdlib="-stdlib=libc++"
3671 AC_MSG_CHECKING([what C compiler to use])
3672 CC="`xcrun -find clang`"
3673 CC_BASE=`first_arg_basename "$CC"`
3674 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3675 AC_MSG_RESULT([$CC])
3677 AC_MSG_CHECKING([what C++ compiler to use])
3678 CXX="`xcrun -find clang++`"
3679 CXX_BASE=`first_arg_basename "$CXX"`
3680 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3681 AC_MSG_RESULT([$CXX])
3683 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3686 STRIP=`xcrun -find strip`
3687 LIBTOOL=`xcrun -find libtool`
3688 RANLIB=`xcrun -find ranlib`
3691 AC_MSG_CHECKING([whether to treat the installation as read-only])
3693 if test $_os = Darwin; then
3694 enable_readonly_installset=yes
3695 elif test "$enable_extensions" != yes; then
3696 enable_readonly_installset=yes
3698 if test "$enable_readonly_installset" = yes; then
3699 AC_MSG_RESULT([yes])
3700 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3705 dnl ===================================================================
3706 dnl Structure of install set
3707 dnl ===================================================================
3709 if test $_os = Darwin; then
3710 LIBO_BIN_FOLDER=MacOS
3711 LIBO_ETC_FOLDER=Resources
3712 LIBO_LIBEXEC_FOLDER=MacOS
3713 LIBO_LIB_FOLDER=Frameworks
3714 LIBO_LIB_PYUNO_FOLDER=Resources
3715 LIBO_SHARE_FOLDER=Resources
3716 LIBO_SHARE_HELP_FOLDER=Resources/help
3717 LIBO_SHARE_JAVA_FOLDER=Resources/java
3718 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3719 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3720 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3721 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3722 LIBO_URE_BIN_FOLDER=MacOS
3723 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3724 LIBO_URE_LIB_FOLDER=Frameworks
3725 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3726 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3727 elif test $_os = WINNT; then
3728 LIBO_BIN_FOLDER=program
3729 LIBO_ETC_FOLDER=program
3730 LIBO_LIBEXEC_FOLDER=program
3731 LIBO_LIB_FOLDER=program
3732 LIBO_LIB_PYUNO_FOLDER=program
3733 LIBO_SHARE_FOLDER=share
3734 LIBO_SHARE_HELP_FOLDER=help
3735 LIBO_SHARE_JAVA_FOLDER=program/classes
3736 LIBO_SHARE_PRESETS_FOLDER=presets
3737 LIBO_SHARE_READMES_FOLDER=readmes
3738 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3739 LIBO_SHARE_SHELL_FOLDER=program/shell
3740 LIBO_URE_BIN_FOLDER=program
3741 LIBO_URE_ETC_FOLDER=program
3742 LIBO_URE_LIB_FOLDER=program
3743 LIBO_URE_MISC_FOLDER=program
3744 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3746 LIBO_BIN_FOLDER=program
3747 LIBO_ETC_FOLDER=program
3748 LIBO_LIBEXEC_FOLDER=program
3749 LIBO_LIB_FOLDER=program
3750 LIBO_LIB_PYUNO_FOLDER=program
3751 LIBO_SHARE_FOLDER=share
3752 LIBO_SHARE_HELP_FOLDER=help
3753 LIBO_SHARE_JAVA_FOLDER=program/classes
3754 LIBO_SHARE_PRESETS_FOLDER=presets
3755 LIBO_SHARE_READMES_FOLDER=readmes
3756 if test "$enable_fuzzers" != yes; then
3757 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3759 LIBO_SHARE_RESOURCE_FOLDER=resource
3761 LIBO_SHARE_SHELL_FOLDER=program/shell
3762 LIBO_URE_BIN_FOLDER=program
3763 LIBO_URE_ETC_FOLDER=program
3764 LIBO_URE_LIB_FOLDER=program
3765 LIBO_URE_MISC_FOLDER=program
3766 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3768 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3769 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3770 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3771 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3772 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3773 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3774 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3775 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3776 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3777 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3778 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3779 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3780 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3781 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3782 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3783 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3785 # Not all of them needed in config_host.mk, add more if need arises
3786 AC_SUBST(LIBO_BIN_FOLDER)
3787 AC_SUBST(LIBO_ETC_FOLDER)
3788 AC_SUBST(LIBO_LIB_FOLDER)
3789 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3790 AC_SUBST(LIBO_SHARE_FOLDER)
3791 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3792 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3793 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3794 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3795 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3796 AC_SUBST(LIBO_URE_BIN_FOLDER)
3797 AC_SUBST(LIBO_URE_ETC_FOLDER)
3798 AC_SUBST(LIBO_URE_LIB_FOLDER)
3799 AC_SUBST(LIBO_URE_MISC_FOLDER)
3800 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3802 dnl ===================================================================
3803 dnl Windows specific tests and stuff
3804 dnl ===================================================================
3808 # Return value: $regvalue
3811 if test "$build_os" = "wsl"; then
3812 regvalue=$($BUILDDIR/solenv/wsl/wsl-lo-helper.exe --read-registry $1 "$2" 2>/dev/null)
3816 local _regentry="/proc/registry${1}/${2}"
3817 if test -f "$_regentry"; then
3818 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3819 # Registry keys read via /proc/registry* are always \0 terminated!
3820 local _regvalue=$(tr -d '\0' < "$_regentry")
3821 if test $? -eq 0; then
3827 # Get a value from the 32-bit side of the Registry
3830 reg_get_value "32" "$1"
3833 # Get a value from the 64-bit side of the Registry
3836 reg_get_value "64" "$1"
3844 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3853 PLATFORMID=windows_x86_64
3855 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3857 WIN_MULTI_ARCH="x86"
3863 PLATFORMID=windows_x86
3866 WIN_OTHER_ARCH="x64"
3871 PLATFORMID=windows_aarch64
3873 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3874 WIN_HOST_ARCH="arm64"
3879 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3883 case "$build_cpu" in
3884 x86_64) WIN_BUILD_ARCH="x64" ;;
3885 i*86) WIN_BUILD_ARCH="x86" ;;
3886 aarch64) WIN_BUILD_ARCH="arm64" ;;
3888 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3892 SCPDEFS="$SCPDEFS -D_MSC_VER"
3896 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3897 # other-arch won't, but wouldn't break the build (x64 on x86).
3898 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3899 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3903 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3904 # To allow building Windows multi-arch releases without cross-tooling
3905 if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3906 cross_compiling="yes"
3910 if test "$cross_compiling" = "yes"; then
3911 export CROSS_COMPILING=TRUE
3912 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3913 ENABLE_WASM_STRIP=TRUE
3917 BUILD_TYPE="$BUILD_TYPE NATIVE"
3919 AC_SUBST(CROSS_COMPILING)
3920 AC_SUBST(ENABLE_WASM_STRIP)
3922 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3923 # NOTE: must _not_ be used for bundled external libraries!
3925 if test "$GCC" = "yes"; then
3926 AC_MSG_CHECKING( for -isystem )
3928 CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3929 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3931 if test -n "$ISYSTEM"; then
3937 if test -z "$ISYSTEM"; then
3938 # fall back to using -I
3943 dnl ===================================================================
3944 dnl Check which Visual Studio compiler is used
3945 dnl ===================================================================
3947 map_vs_year_to_version()
3949 # Return value: $vsversion
3959 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3963 vs_versions_to_check()
3965 # Args: $1 (optional) : versions to check, in the order of preference
3966 # Return value: $vsversions
3970 if test -n "$1"; then
3971 map_vs_year_to_version "$1"
3972 vsversions=$vsversion
3974 # Default version is 2019
3979 win_get_env_from_vsvars32bat()
3981 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3982 # Also seems to be located in another directory under the same name: vsvars32.bat
3983 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3984 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3985 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
3986 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3988 if test "$build_os" = "wsl"; then
3989 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
3991 chmod +x $WRAPPERBATCHFILEPATH
3992 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3994 rm -f $WRAPPERBATCHFILEPATH
3995 printf '%s' "$result"
4000 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4001 if test -n "$regvalue"; then
4002 PathFormat "$regvalue"
4003 UCRTSDKDIR=$formatted_path_unix
4004 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4005 UCRTVERSION=$regvalue
4007 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4011 if test -z "$UCRTSDKDIR"; then
4012 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4013 ide_env_file="${ide_env_dir}VsDevCmd.bat"
4014 if test -f "$ide_env_file"; then
4015 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
4016 UCRTSDKDIR=$formatted_path
4017 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
4018 dnl Hack needed at least by tml:
4019 if test "$UCRTVERSION" = 10.0.15063.0 \
4020 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4021 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4023 UCRTVERSION=10.0.14393.0
4026 AC_MSG_ERROR([No UCRT found])
4034 # Args: $1 (optional) : The VS version year
4035 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4037 unset vctest vctoolset vcnumwithdot vcbuildnumber
4039 vs_versions_to_check "$1"
4040 if test "$build_os" = wsl; then
4041 vswhere="$PROGRAMFILESX86"
4043 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4045 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4046 PathFormat "$vswhere"
4047 vswhere=$formatted_path_unix
4048 for ver in $vsversions; do
4049 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4050 if test -z "$vswhereoutput"; then
4051 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4053 # Fall back to all MS products (this includes VC++ Build Tools)
4054 if ! test -n "$vswhereoutput"; then
4055 AC_MSG_CHECKING([VC++ Build Tools and similar])
4056 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4058 if test -n "$vswhereoutput"; then
4059 PathFormat "$vswhereoutput"
4060 vctest=$formatted_path_unix
4065 if test -n "$vctest"; then
4066 vcnumwithdot="$ver.0"
4067 case "$vcnumwithdot" in
4077 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4084 AC_MSG_CHECKING([$1 compiler])
4086 CL_EXE_PATH="$2/cl.exe"
4088 if test ! -f "$CL_EXE_PATH"; then
4089 if test "$1" = "multi-arch"; then
4090 AC_MSG_WARN([no compiler (cl.exe) in $2])
4093 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4097 dnl ===========================================================
4098 dnl Check for the corresponding mspdb*.dll
4099 dnl ===========================================================
4101 # MSVC 15.0 has libraries from 14.0?
4104 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4105 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4108 # The compiles has to find its shared libraries
4110 TEMP_PATH=`cygpath -d "$2"`
4111 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4113 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4114 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4119 AC_MSG_RESULT([$CL_EXE_PATH])
4125 if test "$_os" = "WINNT"; then
4126 AC_MSG_CHECKING([Visual C++])
4127 find_msvc "$with_visual_studio"
4128 if test -z "$vctest"; then
4129 if test -n "$with_visual_studio"; then
4130 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4132 AC_MSG_ERROR([no Visual Studio installation found])
4137 VC_PRODUCT_DIR="$vctest/VC"
4138 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4140 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4141 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4142 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4143 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4144 if test $? -ne 0; then
4150 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4151 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4152 test_cl_exe "build" "$MSVC_BUILD_PATH"
4155 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4156 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4157 test_cl_exe "host" "$MSVC_HOST_PATH"
4159 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4162 AC_MSG_CHECKING([for short pathname of VC product directory])
4163 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4164 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4169 AC_MSG_CHECKING([for UCRT location])
4171 # find_ucrt errors out if it doesn't find it
4172 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4173 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4174 ucrtincpath_formatted=$formatted_path
4175 # SOLARINC is used for external modules and must be set too.
4176 # And no, it's not sufficient to set SOLARINC only, as configure
4177 # itself doesn't honour it.
4178 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4179 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4180 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4181 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4183 AC_SUBST(UCRTSDKDIR)
4184 AC_SUBST(UCRTVERSION)
4186 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4187 # Find the proper version of MSBuild.exe to use based on the VS version
4188 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4189 if test -z "$regvalue" ; then
4190 if test "$WIN_BUILD_ARCH" != "x64"; then
4191 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4193 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4196 if test -d "$regvalue" ; then
4197 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4198 AC_MSG_RESULT([$regvalue])
4200 AC_MSG_ERROR([MSBuild.exe location not found])
4203 # Find the version of devenv.exe
4204 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4205 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4206 DEVENV_unix=$(cygpath -u "$DEVENV")
4207 if test ! -e "$DEVENV_unix"; then
4208 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4211 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4212 dnl needed when building CLR code:
4213 if test -z "$MSVC_CXX"; then
4214 # This gives us a posix path with 8.3 filename restrictions
4215 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4218 if test -z "$CC"; then
4220 CC_BASE=`first_arg_basename "$CC"`
4222 if test -z "$CXX"; then
4224 CXX_BASE=`first_arg_basename "$CXX"`
4227 if test -n "$CC"; then
4228 # Remove /cl.exe from CC case insensitive
4229 AC_MSG_NOTICE([found Visual C++ $vcyear])
4231 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4232 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4234 PathFormat "$COMPATH"
4235 COMPATH=`win_short_path_for_make "$formatted_path"`
4238 VCTOOLSET=$vctoolset
4240 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4241 # are always "better", we list them in reverse chronological order.
4243 case "$vcnumwithdot" in
4245 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4249 # The expectation is that --with-windows-sdk should not need to be used
4250 if test -n "$with_windows_sdk"; then
4251 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4252 *" "$with_windows_sdk" "*)
4253 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4256 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4261 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4266 AC_MSG_ERROR([Visual C++ not found after all, huh])
4269 # ERROR if VS version < 16.5
4270 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4271 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4272 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4273 // between Visual Studio versions and _MSC_VER:
4277 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4279 # WARN if VS version < 16.10
4280 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4281 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4285 ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4287 if test $vs2019_recommended_version = yes; then
4288 AC_MSG_RESULT([yes])
4291 add_warning "You should have at least Visual Studio 2019 version 16.10 to avoid build problems. Otherwise, you may face problems with the build of some modules including dragonbox."
4294 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4295 # version of the Explorer extension (and maybe other small
4296 # bits, too) needed when installing a 32-bit LibreOffice on a
4297 # 64-bit OS. The 64-bit Explorer extension is a feature that
4298 # has been present since long in OOo. Don't confuse it with
4299 # building LibreOffice itself as 64-bit code.
4304 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4305 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4306 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4307 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4310 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4311 AC_MSG_RESULT([found])
4313 AC_MSG_RESULT([not found])
4314 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4316 elif test "$WIN_HOST_ARCH" = "x64"; then
4321 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4322 AC_SUBST(CXX_X64_BINARY)
4324 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4325 # needed to support TWAIN scan on both 32- and 64-bit systems
4327 case "$WIN_HOST_ARCH" in
4329 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4330 if test -n "$CXX_X86_BINARY"; then
4332 AC_MSG_RESULT([preset])
4333 elif test -n "$WIN_MULTI_ARCH"; then
4335 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4336 AC_MSG_RESULT([found])
4338 AC_MSG_RESULT([not found])
4339 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4344 CXX_X86_BINARY=$MSVC_CXX
4348 AC_SUBST(CXX_X86_BINARY)
4356 AC_MSG_CHECKING([whether the compiler is actually Clang])
4357 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4363 [AC_MSG_RESULT([yes])
4365 [AC_MSG_RESULT([no])])
4366 AC_SUBST(COM_IS_CLANG)
4369 if test "$COM_IS_CLANG" = TRUE; then
4370 AC_MSG_CHECKING([whether Clang is new enough])
4371 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4372 #if !defined __apple_build_version__
4376 [my_apple_clang=yes],[my_apple_clang=])
4377 if test "$my_apple_clang" = yes; then
4378 AC_MSG_RESULT([assumed yes (Apple Clang)])
4379 elif test "$_os" = Emscripten; then
4380 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4382 if test "$_os" = WINNT; then
4383 dnl In which case, assume clang-cl:
4388 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4389 CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4390 CLANGVER=`echo $clang_version \
4391 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4392 if test "$CLANGVER" -ge 80001; then
4393 AC_MSG_RESULT([yes ($clang_version)])
4395 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 8.0.1])
4397 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4398 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4402 SHOWINCLUDES_PREFIX=
4403 if test "$_os" = WINNT; then
4404 dnl We need to guess the prefix of the -showIncludes output, it can be
4406 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4407 echo "#include <stdlib.h>" > conftest.c
4408 SHOWINCLUDES_PREFIX=`$CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4409 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4410 rm -f conftest.c conftest.obj
4411 if test -z "$SHOWINCLUDES_PREFIX"; then
4412 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4414 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4417 AC_SUBST(SHOWINCLUDES_PREFIX)
4420 # prefix C with ccache if needed
4422 if test "$CCACHE" != ""; then
4423 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4427 CFLAGS="$CFLAGS --ccache-skip -O2"
4428 # msvc does not fail on unknown options, check stdout
4429 if test "$COM" = MSC; then
4430 CFLAGS="$CFLAGS -nologo"
4432 save_ac_c_werror_flag=$ac_c_werror_flag
4433 ac_c_werror_flag=yes
4434 dnl an empty program will do, we're checking the compiler flags
4435 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4436 [use_ccache=yes], [use_ccache=no])
4438 ac_c_werror_flag=$save_ac_c_werror_flag
4439 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4440 AC_MSG_RESULT([yes])
4443 CC_BASE="ccache $CC_BASE"
4449 # ===================================================================
4450 # check various GCC options that Clang does not support now but maybe
4451 # will somewhen in the future, check them even for GCC, so that the
4453 # ===================================================================
4456 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4457 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4459 CFLAGS="$CFLAGS -Werror -ggdb2"
4460 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4462 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4463 AC_MSG_RESULT([yes])
4468 if test "$host_cpu" = "m68k"; then
4469 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4471 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4472 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4474 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4475 AC_MSG_RESULT([yes])
4481 AC_SUBST(HAVE_GCC_GGDB2)
4483 dnl ===================================================================
4484 dnl Test the gcc version
4485 dnl ===================================================================
4486 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4487 AC_MSG_CHECKING([the GCC version])
4488 _gcc_version=`$CC -dumpfullversion`
4489 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4490 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4491 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4493 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4495 if test "$gcc_full_version" -lt 70000; then
4496 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4499 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4500 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4501 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4502 # (which reports itself as GCC 4.2.1).
4505 AC_SUBST(GCC_VERSION)
4507 dnl Set the ENABLE_DBGUTIL variable
4508 dnl ===================================================================
4509 AC_MSG_CHECKING([whether to build with additional debug utilities])
4510 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4511 ENABLE_DBGUTIL="TRUE"
4512 # this is an extra var so it can have different default on different MSVC
4513 # versions (in case there are version specific problems with it)
4514 MSVC_USE_DEBUG_RUNTIME="TRUE"
4516 AC_MSG_RESULT([yes])
4517 # cppunit and graphite expose STL in public headers
4518 if test "$with_system_cppunit" = "yes"; then
4519 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4521 with_system_cppunit=no
4523 if test "$with_system_graphite" = "yes"; then
4524 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4526 with_system_graphite=no
4528 if test "$with_system_orcus" = "yes"; then
4529 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4531 with_system_orcus=no
4533 if test "$with_system_libcmis" = "yes"; then
4534 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4536 with_system_libcmis=no
4538 if test "$with_system_hunspell" = "yes"; then
4539 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4541 with_system_hunspell=no
4543 if test "$with_system_gpgmepp" = "yes"; then
4544 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4546 with_system_gpgmepp=no
4548 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4549 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4550 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4551 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4552 # of those two is using the system variant:
4553 if test "$with_system_libnumbertext" = "yes"; then
4554 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4556 with_system_libnumbertext=no
4558 if test "$with_system_libwps" = "yes"; then
4559 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4561 with_system_libwps=no
4565 MSVC_USE_DEBUG_RUNTIME=""
4568 AC_SUBST(ENABLE_DBGUTIL)
4569 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4571 dnl Set the ENABLE_DEBUG variable.
4572 dnl ===================================================================
4573 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4574 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4576 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4577 if test -z "$libo_fuzzed_enable_debug"; then
4578 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4580 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4585 AC_MSG_CHECKING([whether to do a debug build])
4586 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4588 if test -n "$ENABLE_DBGUTIL" ; then
4589 AC_MSG_RESULT([yes (dbgutil)])
4591 AC_MSG_RESULT([yes])
4597 AC_SUBST(ENABLE_DEBUG)
4599 dnl ===================================================================
4600 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4601 dnl This is done only after compiler checks (need to know if Clang is
4602 dnl used, for different defaults) and after checking if a debug build
4603 dnl is wanted (non-debug builds get the default linker if not explicitly
4604 dnl specified otherwise).
4605 dnl All checks for linker features/options should come after this.
4606 dnl ===================================================================
4609 use_ld=-fuse-ld=${1%%:*}
4611 if test "$use_ld_path" != "$1"; then
4612 if test "$COM_IS_CLANG" = TRUE; then
4613 if test "$CLANGVER" -ge 120000; then
4614 use_ld="${use_ld} --ld-path=${use_ld_path}"
4616 use_ld="-fuse-ld=${use_ld_path}"
4619 # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4620 # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4621 # pickup the alternative linker, when called by libtool for linking.
4622 # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4623 AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4626 use_ld_fail_if_error=$2
4628 AC_MSG_CHECKING([for $use_ld linker support])
4629 use_ld_ldflags_save="$LDFLAGS"
4630 LDFLAGS="$LDFLAGS $use_ld"
4631 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4634 printf ("hello world\n");
4635 ])], USE_LD=$use_ld, [])
4636 if test -n "$USE_LD"; then
4637 AC_MSG_RESULT( yes )
4640 if test -n "$use_ld_fail_if_error"; then
4646 if test -n "$use_ld_ok"; then
4647 dnl keep the value of LDFLAGS
4650 LDFLAGS="$use_ld_ldflags_save"
4654 if test "$enable_ld" != "no"; then
4655 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4656 if test -n "$enable_ld"; then
4657 check_use_ld "$enable_ld" fail_if_error
4658 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4659 dnl non-debug builds default to the default linker
4661 elif test -n "$COM_IS_CLANG"; then
4663 if test $? -ne 0; then
4665 if test $? -ne 0; then
4670 # For gcc first try gold, new versions also support lld/mold.
4672 if test $? -ne 0; then
4674 if test $? -ne 0; then
4679 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4681 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4682 if test -z "$ld_used"; then
4685 AC_MSG_CHECKING([for linker that is used])
4686 AC_MSG_RESULT([$ld_used])
4687 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4688 if echo "$ld_used" | grep -q "^GNU ld"; then
4689 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4690 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4694 if test "$enable_ld" = "yes"; then
4695 AC_MSG_ERROR([--enable-ld not supported])
4702 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4703 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4704 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4705 bsymbolic_functions_ldflags_save=$LDFLAGS
4706 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4707 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4710 printf ("hello world\n");
4711 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4712 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4713 AC_MSG_RESULT( found )
4715 AC_MSG_RESULT( not found )
4717 LDFLAGS=$bsymbolic_functions_ldflags_save
4719 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4722 if test "$GCC" = "yes"; then
4723 for flag in "--gc-sections" "-dead_strip"; do
4724 AC_MSG_CHECKING([for $flag linker support])
4725 ldflags_save=$LDFLAGS
4726 LDFLAGS="$LDFLAGS -Wl,$flag"
4727 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4730 printf ("hello world\n");
4732 LD_GC_SECTIONS="-Wl,$flag"
4733 AC_MSG_RESULT( found )
4735 AC_MSG_RESULT( not found )
4737 LDFLAGS=$ldflags_save
4738 if test -n "$LD_GC_SECTIONS"; then
4743 AC_SUBST(LD_GC_SECTIONS)
4745 HAVE_EXTERNAL_DWARF=
4746 if test "$enable_split_debug" != no; then
4748 if test -n "$ENABLE_LTO"; then
4749 : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4750 elif test "$enable_split_debug" = yes; then
4752 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4753 elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4756 if test -n "$use_split_debug"; then
4757 if test "$_os" = "Emscripten"; then
4758 TEST_CC_FLAG=-gseparate-dwarf
4760 TEST_CC_FLAG=-gsplit-dwarf
4762 AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4764 CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4765 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4767 if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4768 AC_MSG_RESULT([yes])
4770 if test "$enable_split_debug" = yes; then
4777 if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4778 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4779 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4782 AC_SUBST(HAVE_EXTERNAL_DWARF)
4784 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4785 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4787 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4788 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4790 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4791 AC_MSG_RESULT([yes])
4795 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4798 if test "$enable_gdb_index" != "no"; then
4799 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4800 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4801 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4803 CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4805 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4806 if test "$have_ggnu_pubnames" != "TRUE"; then
4807 if test "$enable_gdb_index" = "yes"; then
4808 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4813 AC_MSG_RESULT( yes )
4814 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4815 ldflags_save=$LDFLAGS
4816 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4817 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4820 printf ("hello world\n");
4821 ])], ENABLE_GDB_INDEX=TRUE, [])
4822 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4823 AC_MSG_RESULT( yes )
4825 if test "$enable_gdb_index" = "yes"; then
4831 LDFLAGS=$ldflags_save
4835 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4836 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4837 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4840 AC_SUBST(ENABLE_GDB_INDEX)
4842 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4845 if test "$enable_sal_log" = yes; then
4848 AC_SUBST(ENABLE_SAL_LOG)
4850 dnl Check for enable symbols option
4851 dnl ===================================================================
4852 AC_MSG_CHECKING([whether to generate debug information])
4853 if test -z "$enable_symbols"; then
4854 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4860 if test "$enable_symbols" = yes; then
4861 ENABLE_SYMBOLS_FOR=all
4862 AC_MSG_RESULT([yes])
4863 elif test "$enable_symbols" = no; then
4867 # Selective debuginfo.
4868 ENABLE_SYMBOLS_FOR="$enable_symbols"
4869 AC_MSG_RESULT([for "$enable_symbols"])
4871 AC_SUBST(ENABLE_SYMBOLS_FOR)
4873 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4874 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4875 AC_MSG_CHECKING([whether enough memory is available for linking])
4876 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4877 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4878 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4879 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4881 AC_MSG_RESULT([yes])
4886 ENABLE_OPTIMIZED_DEBUG=
4887 AC_MSG_CHECKING([whether to compile with optimization flags])
4888 if test -z "$enable_optimized"; then
4889 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4892 enable_optimized=yes
4895 if test "$enable_optimized" = yes; then
4896 ENABLE_OPTIMIZED=TRUE
4897 AC_MSG_RESULT([yes])
4898 elif test "$enable_optimized" = debug; then
4899 ENABLE_OPTIMIZED_DEBUG=TRUE
4900 AC_MSG_RESULT([yes (debug)])
4902 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4903 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4905 CFLAGS="$CFLAGS -Werror -Og"
4906 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4908 if test "$HAVE_GCC_OG" = "TRUE"; then
4909 AC_MSG_RESULT([yes])
4914 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4915 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4920 AC_SUBST(ENABLE_OPTIMIZED)
4921 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4924 # determine CPUNAME, OS, ...
4934 PLATFORMID=aix_powerpc
4950 if test "$enable_ios_simulator" = "yes"; then
4955 PLATFORMID=macosx_aarch64
4959 if test "$enable_ios_simulator" = "yes"; then
4964 PLATFORMID=macosx_x86_64
4967 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4980 if test "$enable_ios_simulator" = "yes"; then
4981 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4985 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4990 PLATFORMID=ios_arm64
5003 PLATFORMID=dragonfly_x86
5008 PLATFORMID=dragonfly_x86_64
5011 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5025 PLATFORMID=freebsd_aarch64
5031 PLATFORMID=freebsd_x86
5036 PLATFORMID=freebsd_x86_64
5041 PLATFORMID=freebsd_powerpc64
5046 PLATFORMID=freebsd_powerpc
5049 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5065 PLATFORMID=haiku_x86
5070 PLATFORMID=haiku_x86_64
5073 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5089 PLATFORMID=kfreebsd_x86
5094 PLATFORMID=kfreebsd_x86_64
5097 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5102 linux-gnu*|linux-musl*)
5112 PLATFORMID=linux_aarch64
5114 EPM_FLAGS="-a arm64"
5119 PLATFORMID=linux_alpha
5125 PLATFORMID=linux_arm_eabi
5129 PLATFORMID=linux_arm_oabi
5137 PLATFORMID=linux_hppa
5142 PLATFORMID=linux_x86
5147 PLATFORMID=linux_ia64
5153 PLATFORMID=linux_mips_eb
5158 EPM_FLAGS="-a mips64"
5159 PLATFORMID=linux_mips64_eb
5164 EPM_FLAGS="-a mips64el"
5165 PLATFORMID=linux_mips64_el
5170 EPM_FLAGS="-a mipsel"
5171 PLATFORMID=linux_mips_el
5176 PLATFORMID=linux_m68k
5181 PLATFORMID=linux_powerpc
5186 PLATFORMID=linux_powerpc64
5190 RTL_ARCH=PowerPC_64_LE
5191 PLATFORMID=linux_powerpc64_le
5196 PLATFORMID=linux_sparc
5201 PLATFORMID=linux_sparc64
5206 PLATFORMID=linux_s390
5211 PLATFORMID=linux_s390x
5216 PLATFORMID=linux_x86_64
5219 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5235 PLATFORMID=android_arm_eabi
5240 PLATFORMID=android_aarch64
5245 PLATFORMID=android_x86
5250 PLATFORMID=android_x86_64
5253 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5268 PLATFORMID=netbsd_x86
5273 PLATFORMID=netbsd_powerpc
5278 PLATFORMID=netbsd_sparc
5283 PLATFORMID=netbsd_x86_64
5286 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5301 PLATFORMID=openbsd_x86
5306 PLATFORMID=openbsd_x86_64
5309 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5312 SOLARINC="$SOLARINC -I/usr/local/include"
5325 PLATFORMID=solaris_x86
5330 PLATFORMID=solaris_sparc
5335 PLATFORMID=solaris_sparc64
5338 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5341 SOLARINC="$SOLARINC -I/usr/local/include"
5354 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5359 PLATFORMID=linux_x86
5363 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5368 if test "$enable_gui" = "no"; then
5369 if test "$using_x11" != yes; then
5370 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5376 AC_DEFINE(HAVE_FEATURE_UI)
5378 AC_SUBST(DISABLE_GUI)
5380 if test "$with_x" = "no"; then
5384 if test -z "$USING_X11" -a "$DISABLE_DYNLOADING" = TRUE -a "$enable_gen" = "yes"; then
5385 AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5388 if test "$using_x11" = yes; then
5389 if test "$USING_X11" = TRUE; then
5390 AC_DEFINE(USING_X11)
5393 if test "$DISABLE_DYNLOADING" = TRUE; then
5398 if test "$USING_X11" = TRUE; then
5399 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5403 WORKDIR="${BUILDDIR}/workdir"
5404 INSTDIR="${BUILDDIR}/instdir"
5405 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5406 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5414 AC_SUBST([INSTROOT])
5415 AC_SUBST([INSTROOTBASE])
5419 AC_SUBST(PLATFORMID)
5420 AC_SUBST(WINDOWS_X64)
5421 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5422 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5424 if test "$OS" = WNT -a "$COM" = MSC; then
5426 INTEL) CPPU_ENV=msci ;;
5427 X86_64) CPPU_ENV=mscx ;;
5428 AARCH64) CPPU_ENV=msca ;;
5430 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5438 dnl ===================================================================
5439 dnl Test which package format to use
5440 dnl ===================================================================
5441 AC_MSG_CHECKING([which package format to use])
5442 if test -n "$with_package_format" -a "$with_package_format" != no; then
5443 for i in $with_package_format; do
5445 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5448 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5449 aix - AIX software distribution
5450 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5451 deb - Debian software distribution
5452 pkg - Solaris software distribution
5453 rpm - RedHat software distribution
5455 LibreOffice additionally supports:
5456 archive - .tar.gz or .zip
5458 installed - installation tree
5464 # fakeroot is needed to ensure correct file ownerships/permissions
5465 # inside deb packages and tar archives created on Linux and Solaris.
5466 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5467 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5468 if test "$FAKEROOT" = "no"; then
5470 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5473 PKGFORMAT="$with_package_format"
5474 AC_MSG_RESULT([$PKGFORMAT])
5477 AC_MSG_RESULT([none])
5481 dnl ===================================================================
5482 dnl handle help related options
5484 dnl If you change help related options, please update README.help
5485 dnl ===================================================================
5492 AC_MSG_CHECKING([which help to build])
5493 if test -n "$with_help" -a "$with_help" != "no"; then
5494 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5495 BUILD_TYPE="$BUILD_TYPE HELP"
5496 case "$with_help" in
5498 ENABLE_HTMLHELP=TRUE
5500 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5501 AC_MSG_RESULT([HTML (local)])
5504 ENABLE_HTMLHELP=TRUE
5506 AC_MSG_RESULT([HTML (online)])
5510 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5511 AC_MSG_RESULT([XML (local)])
5514 AC_MSG_ERROR([Unknown --with-help=$with_help])
5521 AC_MSG_CHECKING([if we need to build the help index tooling])
5522 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5523 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5525 AC_MSG_RESULT([yes])
5530 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5531 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5532 if test "$HELP_ONLINE" != TRUE; then
5533 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5535 case "$with_omindex" in
5537 HELP_OMINDEX_PAGE=TRUE
5538 AC_MSG_RESULT([SERVER])
5541 AC_MSG_RESULT([NOXAP])
5544 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5551 AC_MSG_CHECKING([whether to include the XML-help support])
5552 if test "$enable_xmlhelp" = yes; then
5553 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5555 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5556 AC_MSG_RESULT([yes])
5558 if test "$with_help" = yes; then
5559 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5564 dnl Test whether to integrate helppacks into the product's installer
5565 AC_MSG_CHECKING([for helppack integration])
5566 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5567 AC_MSG_RESULT([no integration])
5569 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5570 AC_MSG_RESULT([integration])
5573 AC_SUBST([ENABLE_HTMLHELP])
5574 AC_SUBST([HELP_OMINDEX_PAGE])
5575 AC_SUBST([HELP_ONLINE])
5576 # WITH_HELPPACKS is used only in configure
5578 dnl ===================================================================
5579 dnl Set up a different compiler to produce tools to run on the build
5580 dnl machine when doing cross-compilation
5581 dnl ===================================================================
5583 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5584 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5585 if test "$cross_compiling" = "yes"; then
5586 AC_MSG_CHECKING([for BUILD platform configuration])
5588 rm -rf CONF-FOR-BUILD config_build.mk
5589 mkdir CONF-FOR-BUILD
5590 # Here must be listed all files needed when running the configure script. In particular, also
5591 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5592 # keep them in the same order as there.
5593 (cd $SRC_ROOT && tar cf - \
5595 bin/get_config_variables \
5596 solenv/bin/getcompver.awk \
5597 solenv/inc/langlist.mk \
5600 config_host_lang.mk.in \
5602 bin/bffvalidator.sh.in \
5603 bin/odfvalidator.sh.in \
5604 bin/officeotron.sh.in \
5605 hardened_runtime.xcent.in \
5606 instsetoo_native/util/openoffice.lst.in \
5608 sysui/desktop/macosx/Info.plist.in \
5609 .vscode/vs-code-template.code-workspace.in \
5610 solenv/lockfile/autoconf.h.in \
5612 | (cd CONF-FOR-BUILD && tar xf -)
5613 cp configure CONF-FOR-BUILD
5614 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5616 unset COM USING_X11 OS CPUNAME
5617 unset CC CXX SYSBASE CFLAGS
5618 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5619 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5620 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5621 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5622 if test -n "$CC_FOR_BUILD"; then
5623 export CC="$CC_FOR_BUILD"
5624 CC_BASE=`first_arg_basename "$CC"`
5626 if test -n "$CXX_FOR_BUILD"; then
5627 export CXX="$CXX_FOR_BUILD"
5628 CXX_BASE=`first_arg_basename "$CXX"`
5630 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5633 # Handle host configuration, which affects the cross-toolset too
5635 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5636 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5637 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5638 # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5639 if test -n "$ENABLE_JAVA"; then
5642 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5643 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5646 if test -z "$with_jdk_home"; then
5647 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.])
5652 sub_conf_opts="$sub_conf_opts --disable-scripting"
5654 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5655 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5656 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5657 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5658 test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5659 test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5660 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5661 test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5662 test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5663 if test "$_os" = "Emscripten"; then
5664 sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5667 # Don't bother having configure look for stuff not needed for the build platform anyway
5668 # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5669 sub_conf_defaults=" \
5670 --build="$build_alias" \
5671 --disable-cairo-canvas \
5673 --disable-customtarget-components \
5674 --disable-firebird-sdbc \
5676 --disable-gstreamer-1-0 \
5680 --disable-mariadb-sdbc \
5682 --disable-online-update \
5684 --disable-pdfimport \
5685 --disable-postgresql-sdbc \
5688 --enable-dynamic-loading \
5689 --enable-icecream="$enable_icecream" \
5693 --with-tls=openssl \
5695 # single quotes added for better readability in case of spaces
5696 echo " Running CONF-FOR-BUILD/configure" \
5697 $sub_conf_defaults \
5698 --with-parallelism="'$with_parallelism'" \
5699 --with-theme="'$with_theme'" \
5701 $with_build_platform_configure_options \
5705 $sub_conf_defaults \
5706 --with-parallelism="$with_parallelism" \
5707 --with-theme="$with_theme" \
5709 $with_build_platform_configure_options \
5711 2>&1 | sed -e 's/^/ /'
5712 if test [${PIPESTATUS[0]}] -ne 0; then
5713 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5716 # filter permitted build targets
5717 PERMITTED_BUILD_TARGETS="
5752 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5753 # newlined lists, to use grep as a filter
5754 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5755 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5756 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5757 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5759 cp config_host.mk ../config_build.mk
5760 cp config_host_lang.mk ../config_build_lang.mk
5761 mv config.log ../config.Build.log
5762 mkdir -p ../config_build
5763 mv config_host/*.h ../config_build
5764 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5766 # all these will get a _FOR_BUILD postfix
5767 DIRECT_FOR_BUILD_SETTINGS="
5775 JDK_SECURITYMANAGER_DISALLOWED
5779 LIBO_URE_MISC_FOLDER
5785 # these overwrite host config with build config
5786 OVERWRITING_SETTINGS="
5790 JAVA_CLASSPATH_NOT_SET
5802 # these need some special handling
5803 EXTRA_HANDLED_SETTINGS="
5810 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5814 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5815 echo "$line" >>build-config
5817 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5819 VV=`eval "echo $VV"`
5820 if test -n "$VV"; then
5821 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5822 echo "$line" >>build-config
5826 for V in $OVERWRITING_SETTINGS; do
5828 VV=`eval "echo $VV"`
5829 if test -n "$VV"; then
5830 line=${V}='${'${V}:-$VV'}'
5831 echo "$line" >>build-config
5835 for V in INSTDIR INSTROOT WORKDIR; do
5837 VV=`eval "echo $VV"`
5838 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5839 if test -n "$VV"; then
5840 line="${V}_FOR_BUILD='$VV'"
5841 echo "$line" >>build-config
5846 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5847 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])
5848 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5849 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5851 eval `cat CONF-FOR-BUILD/build-config`
5853 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5855 rm -rf CONF-FOR-BUILD
5859 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5860 CXX_FOR_BUILD="$CXX"
5861 INSTDIR_FOR_BUILD="$INSTDIR"
5862 INSTROOT_FOR_BUILD="$INSTROOT"
5863 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5864 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5865 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5866 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5867 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5868 WORKDIR_FOR_BUILD="$WORKDIR"
5870 AC_SUBST(OS_FOR_BUILD)
5871 AC_SUBST(INSTDIR_FOR_BUILD)
5872 AC_SUBST(INSTROOT_FOR_BUILD)
5873 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5874 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5875 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5876 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5877 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5878 AC_SUBST(WORKDIR_FOR_BUILD)
5879 AC_SUBST(CC_FOR_BUILD)
5880 AC_SUBST(CXX_FOR_BUILD)
5881 AC_SUBST(CPPU_ENV_FOR_BUILD)
5883 dnl ===================================================================
5884 dnl Check for lockfile deps
5885 dnl ===================================================================
5886 if test -z "$CROSS_COMPILING"; then
5887 test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
5888 test "${with_system_lockfile+set}" = set || with_system_lockfile=no
5889 AC_MSG_CHECKING([which lockfile binary to use])
5890 case "$with_system_lockfile" in
5892 AC_MSG_RESULT([external])
5893 AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
5896 AC_MSG_RESULT([internal])
5899 if test -x "$with_system_lockfile"; then
5900 LOCKFILE="$with_system_lockfile"
5902 AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
5904 AC_MSG_RESULT([$with_system_lockfile])
5909 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
5910 add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
5913 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
5914 AC_CHECK_FUNCS([utime utimes])
5917 dnl ===================================================================
5918 dnl Check for syslog header
5919 dnl ===================================================================
5920 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5922 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5923 dnl ===================================================================
5924 AC_MSG_CHECKING([whether to turn warnings to errors])
5925 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5926 ENABLE_WERROR="TRUE"
5927 PYTHONWARNINGS="error"
5928 AC_MSG_RESULT([yes])
5930 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5931 ENABLE_WERROR="TRUE"
5932 PYTHONWARNINGS="error"
5933 AC_MSG_RESULT([yes])
5938 AC_SUBST(ENABLE_WERROR)
5939 AC_SUBST(PYTHONWARNINGS)
5941 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5942 dnl ===================================================================
5943 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5944 if test -z "$enable_assert_always_abort"; then
5945 if test "$ENABLE_DEBUG" = TRUE; then
5946 enable_assert_always_abort=yes
5948 enable_assert_always_abort=no
5951 if test "$enable_assert_always_abort" = "yes"; then
5952 ASSERT_ALWAYS_ABORT="TRUE"
5953 AC_MSG_RESULT([yes])
5955 ASSERT_ALWAYS_ABORT="FALSE"
5958 AC_SUBST(ASSERT_ALWAYS_ABORT)
5960 # Determine whether to use ooenv for the instdir installation
5961 # ===================================================================
5962 if test $_os != "WINNT" -a $_os != "Darwin"; then
5963 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
5964 if test -z "$enable_ooenv"; then
5965 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
5971 if test "$enable_ooenv" = "no"; then
5975 AC_MSG_RESULT([yes])
5978 AC_SUBST(ENABLE_OOENV)
5980 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5981 if test "$enable_qt5" = "no"; then
5982 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5988 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
5989 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
5990 AC_MSG_RESULT([yes])
5992 AC_DEFINE(HAVE_FEATURE_PAGEIN)
5996 AC_SUBST(ENABLE_PAGEIN)
5998 dnl ===================================================================
5999 dnl check for cups support
6000 dnl ===================================================================
6002 AC_MSG_CHECKING([whether to enable CUPS support])
6003 if test "$test_cups" = yes -a "$enable_cups" != no; then
6005 AC_MSG_RESULT([yes])
6007 AC_MSG_CHECKING([whether cups support is present])
6008 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6009 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6010 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6011 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6017 AC_SUBST(ENABLE_CUPS)
6019 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,system,TRUE)
6021 dnl whether to find & fetch external tarballs?
6022 dnl ===================================================================
6023 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6024 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6025 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6027 TARFILE_LOCATION="$LODE_HOME/ext_tar"
6030 if test -z "$TARFILE_LOCATION"; then
6031 if test -d "$SRC_ROOT/src" ; then
6032 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6033 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6035 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6037 AbsolutePath "$TARFILE_LOCATION"
6038 PathFormat "${absolute_path}"
6039 TARFILE_LOCATION="${formatted_path}"
6041 AC_SUBST(TARFILE_LOCATION)
6043 AC_MSG_CHECKING([whether we want to fetch tarballs])
6044 if test "$enable_fetch_external" != "no"; then
6045 if test "$with_all_tarballs" = "yes"; then
6046 AC_MSG_RESULT([yes, all of them])
6047 DO_FETCH_TARBALLS="ALL"
6049 AC_MSG_RESULT([yes, if we use them])
6050 DO_FETCH_TARBALLS="TRUE"
6056 AC_SUBST(DO_FETCH_TARBALLS)
6058 dnl Test whether to include MySpell dictionaries
6059 dnl ===================================================================
6060 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6061 if test "$with_myspell_dicts" = "yes"; then
6062 AC_MSG_RESULT([yes])
6063 WITH_MYSPELL_DICTS=TRUE
6064 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6065 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6070 AC_SUBST(WITH_MYSPELL_DICTS)
6072 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6073 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6074 if test "$with_system_dicts" = yes; then
6075 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6077 with_system_dicts=no
6080 AC_MSG_CHECKING([whether to use dicts from external paths])
6081 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6082 AC_MSG_RESULT([yes])
6084 AC_MSG_CHECKING([for spelling dictionary directory])
6085 if test -n "$with_external_dict_dir"; then
6086 DICT_SYSTEM_DIR=file://$with_external_dict_dir
6088 DICT_SYSTEM_DIR=file:///usr/share/hunspell
6089 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6090 DICT_SYSTEM_DIR=file:///usr/share/myspell
6093 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6094 AC_MSG_CHECKING([for hyphenation patterns directory])
6095 if test -n "$with_external_hyph_dir"; then
6096 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6098 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6100 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6101 AC_MSG_CHECKING([for thesaurus directory])
6102 if test -n "$with_external_thes_dir"; then
6103 THES_SYSTEM_DIR=file://$with_external_thes_dir
6105 THES_SYSTEM_DIR=file:///usr/share/mythes
6107 AC_MSG_RESULT([$THES_SYSTEM_DIR])
6112 AC_SUBST(SYSTEM_DICTS)
6113 AC_SUBST(DICT_SYSTEM_DIR)
6114 AC_SUBST(HYPH_SYSTEM_DIR)
6115 AC_SUBST(THES_SYSTEM_DIR)
6117 dnl ===================================================================
6118 dnl Precompiled headers.
6120 AC_MSG_CHECKING([whether to enable pch feature])
6121 if test -z "$enable_pch"; then
6122 if test "$_os" = "WINNT"; then
6123 # Enabled by default on Windows.
6125 # never use sccache on auto-enabled PCH builds, except if requested explicitly
6126 if test -z "$enable_ccache" -a "$SCCACHE"; then
6133 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6134 AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6136 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6137 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6139 if test "$enable_pch" = "system"; then
6141 AC_MSG_RESULT([yes (system headers)])
6142 elif test "$enable_pch" = "base"; then
6144 AC_MSG_RESULT([yes (system and base headers)])
6145 elif test "$enable_pch" = "normal"; then
6147 AC_MSG_RESULT([yes (normal)])
6148 elif test "$enable_pch" = "full"; then
6150 AC_MSG_RESULT([yes (full)])
6151 elif test "$enable_pch" = "yes"; then
6152 # Pick a suitable default.
6153 if test "$GCC" = "yes"; then
6154 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6155 # while making the PCHs larger and rebuilds more likely.
6157 AC_MSG_RESULT([yes (system and base headers)])
6159 # With MSVC the highest level makes a significant difference,
6160 # and it was the default when there used to be no PCH levels.
6162 AC_MSG_RESULT([yes (full)])
6164 elif test "$enable_pch" = "no"; then
6167 AC_MSG_ERROR([Unknown value for --enable-pch])
6169 AC_SUBST(ENABLE_PCH)
6170 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6171 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6172 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6173 if test "$CCACHE_BIN" != "not found"; then
6174 AC_MSG_CHECKING([ccache version])
6175 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6176 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6177 AC_MSG_RESULT([$CCACHE_VERSION])
6178 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6179 if test "$CCACHE_NUMVER" -gt "030701"; then
6180 AC_MSG_RESULT([yes])
6182 AC_MSG_RESULT([no (not newer than 3.7.1)])
6188 PCH_INSTANTIATE_TEMPLATES=
6189 if test -n "$ENABLE_PCH"; then
6190 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6192 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6193 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6195 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6201 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6203 BUILDING_PCH_WITH_OBJ=
6204 if test -n "$ENABLE_PCH"; then
6205 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6207 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6208 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6210 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6216 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6221 if test "$COM" = MSC; then
6222 fpch_prefix="-Xclang "
6224 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6225 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6227 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6228 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6229 [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6231 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6232 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6233 [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6235 if test -n "$PCH_CODEGEN"; then
6241 AC_SUBST(PCH_CODEGEN)
6242 AC_SUBST(PCH_NO_CODEGEN)
6244 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6245 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6247 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6248 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6250 if test -n "$PCH_DEBUGINFO"; then
6256 AC_SUBST(PCH_DEBUGINFO)
6260 AC_MSG_CHECKING([the GNU Make version])
6261 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6262 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6263 if test "$_make_longver" -ge "038200"; then
6264 AC_MSG_RESULT([$GNUMAKE $_make_version])
6266 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6269 # find if gnumake support file function
6270 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6271 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6272 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6273 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6275 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6276 \$(file >test.txt,Success )
6283 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6284 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6285 HAVE_GNUMAKE_FILE_FUNC=TRUE
6286 AC_MSG_RESULT([yes])
6290 rm -rf $TESTGMAKEFILEFUNC
6291 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6293 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6295 if test "$_make_ver_check" = ""; then
6299 HAVE_LD_HASH_STYLE=FALSE
6300 WITH_LINKER_HASH_STYLE=
6301 AC_MSG_CHECKING([for --hash-style gcc linker support])
6302 if test "$GCC" = "yes"; then
6303 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6304 hash_styles="gnu sysv"
6305 elif test "$with_linker_hash_style" = "no"; then
6308 hash_styles="$with_linker_hash_style"
6311 for hash_style in $hash_styles; do
6312 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6313 hash_style_ldflags_save=$LDFLAGS
6314 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6316 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6323 HAVE_LD_HASH_STYLE=TRUE
6324 WITH_LINKER_HASH_STYLE=$hash_style
6326 [HAVE_LD_HASH_STYLE=FALSE],
6327 [HAVE_LD_HASH_STYLE=FALSE])
6328 LDFLAGS=$hash_style_ldflags_save
6331 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6332 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6336 LDFLAGS=$hash_style_ldflags_save
6340 AC_SUBST(HAVE_LD_HASH_STYLE)
6341 AC_SUBST(WITH_LINKER_HASH_STYLE)
6343 dnl ===================================================================
6344 dnl Check whether there's a Perl version available.
6345 dnl ===================================================================
6346 if test -z "$with_perl_home"; then
6347 AC_PATH_PROG(PERL, perl)
6349 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6350 _perl_path="$with_perl_home/bin/perl"
6351 if test -x "$_perl_path"; then
6354 AC_MSG_ERROR([$_perl_path not found])
6358 dnl ===================================================================
6359 dnl Testing for Perl version 5 or greater.
6360 dnl $] is the Perl version variable, it is returned as an integer
6361 dnl ===================================================================
6362 if test "$PERL"; then
6363 AC_MSG_CHECKING([the Perl version])
6364 ${PERL} -e "exit($]);"
6366 if test "$_perl_version" -lt 5; then
6367 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6369 AC_MSG_RESULT([Perl $_perl_version])
6371 AC_MSG_ERROR([Perl not found, install Perl 5])
6374 dnl ===================================================================
6375 dnl Testing for required Perl modules
6376 dnl ===================================================================
6378 AC_MSG_CHECKING([for required Perl modules])
6379 perl_use_string="use Cwd ; use Digest::MD5"
6380 if test "$_os" = "WINNT"; then
6381 if test -n "$PKGFORMAT"; then
6382 for i in $PKGFORMAT; do
6385 # for getting fonts versions to use in MSI
6386 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6392 if test "$with_system_hsqldb" = "yes"; then
6393 perl_use_string="$perl_use_string ; use Archive::Zip"
6395 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6396 # OpenSSL needs that to build
6397 perl_use_string="$perl_use_string ; use FindBin"
6399 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6400 AC_MSG_RESULT([all modules found])
6402 AC_MSG_RESULT([failed to find some modules])
6403 # Find out which modules are missing.
6404 for i in $perl_use_string; do
6405 if test "$i" != "use" -a "$i" != ";"; then
6406 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6407 missing_perl_modules="$missing_perl_modules $i"
6412 The missing Perl modules are: $missing_perl_modules
6413 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6416 dnl ===================================================================
6417 dnl Check for pkg-config
6418 dnl ===================================================================
6419 if test "$_os" != "WINNT"; then
6422 AC_SUBST(PKG_CONFIG)
6423 AC_SUBST(PKG_CONFIG_PATH)
6424 AC_SUBST(PKG_CONFIG_LIBDIR)
6426 if test "$_os" != "WINNT"; then
6428 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6429 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6430 # explicitly. Or put /path/to/compiler in PATH yourself.
6433 if test "$COM_IS_CLANG" = "TRUE"; then
6436 AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6437 AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6438 AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6439 AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6440 AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6441 AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6450 dnl ===================================================================
6451 dnl pkg-config checks on macOS
6452 dnl ===================================================================
6454 if test $_os = Darwin; then
6455 AC_MSG_CHECKING([for bogus pkg-config])
6456 if test -n "$PKG_CONFIG"; then
6457 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6458 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6460 if test "$enable_bogus_pkg_config" = "yes"; then
6461 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6463 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.])
6467 AC_MSG_RESULT([no, good])
6473 # Return value: $csctest
6477 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6478 if test -n "$regvalue"; then
6486 # Return value: $altest
6490 # We need this check to detect 4.6.1 or above.
6491 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6492 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6493 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6499 for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
6500 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6501 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
6512 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6513 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6514 if test -n "$regvalue"; then
6521 find_winsdk_version()
6523 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6524 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6526 unset winsdktest winsdkbinsubdir winsdklibsubdir
6530 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6531 if test -n "$regvalue"; then
6532 winsdktest=$regvalue
6533 winsdklibsubdir=win8
6538 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6539 if test -n "$regvalue"; then
6540 winsdktest=$regvalue
6541 winsdklibsubdir=winv6.3
6546 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6547 if test -n "$regvalue"; then
6548 winsdktest=$regvalue
6549 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6550 if test -n "$regvalue"; then
6551 winsdkbinsubdir="$regvalue".0
6552 winsdklibsubdir=$winsdkbinsubdir
6553 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6554 local tmppath_unix=$(cygpath -u "$tmppath")
6555 # test exist the SDK path
6556 if test -d "$tmppath_unix"; then
6557 # when path is convertible to a short path then path is okay
6558 cygpath -d "$tmppath" >/dev/null 2>&1
6559 if test $? -ne 0; then
6560 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6563 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6574 # Return value: From find_winsdk_version
6578 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6579 find_winsdk_version $ver
6580 if test -n "$winsdktest"; then
6588 # Return value: $msmdir
6590 AC_MSG_CHECKING([for MSVC merge modules directory])
6594 dnl Order my_msm_files in increasing order. Then check the directories returned
6595 dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6596 dnl the result will be the highest MSM version found in the highest directory.
6600 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm Microsoft_VC143_CRT_x86.msm ${my_msm_files}"
6603 for f in $my_msm_files; do
6604 echo "$as_me:$LINENO: searching for $f" >&5
6610 for f in ${my_msm_files}; do
6611 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6612 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6613 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6614 if test -e "$my_msm_dir${f}"; then
6622 if test -n "$msmdir"; then
6623 msmdir=`cygpath -m "$msmdir"`
6624 AC_MSG_RESULT([$msmdir])
6626 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6627 AC_MSG_FAILURE([not found])
6629 AC_MSG_WARN([not found (check config.log)])
6630 add_warning "MSM none of ${my_msm_files} found"
6635 find_msvc_x64_dlls()
6637 # Return value: $msvcdllpath, $msvcdlls
6639 AC_MSG_CHECKING([for MSVC x64 DLL path])
6641 dnl Order crtver in increasing order. Then check the directories returned by
6642 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6643 dnl the result will be the highest CRT version found in the highest directory.
6645 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6648 for crtver in 141 142 143; do
6649 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6650 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6651 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6652 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6658 AC_MSG_RESULT([$msvcdllpath])
6659 AC_MSG_CHECKING([for MSVC x64 DLLs])
6660 msvcdlls="msvcp140.dll vcruntime140.dll"
6661 for dll in $msvcdlls; do
6662 if ! test -f "$msvcdllpath/$dll"; then
6663 AC_MSG_FAILURE([missing $dll])
6666 AC_MSG_RESULT([found all ($msvcdlls)])
6669 dnl =========================================
6670 dnl Check for the Windows SDK.
6671 dnl =========================================
6672 if test "$_os" = "WINNT"; then
6673 AC_MSG_CHECKING([for Windows SDK])
6674 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6676 WINDOWS_SDK_HOME=$winsdktest
6678 # normalize if found
6679 if test -n "$WINDOWS_SDK_HOME"; then
6680 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6681 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6684 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6687 if test -n "$WINDOWS_SDK_HOME"; then
6688 # Remove a possible trailing backslash
6689 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6691 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6692 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6693 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6694 have_windows_sdk_headers=yes
6695 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6696 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6697 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6698 have_windows_sdk_headers=yes
6699 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6700 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6701 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6702 have_windows_sdk_headers=yes
6704 have_windows_sdk_headers=no
6707 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6708 have_windows_sdk_libs=yes
6709 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6710 have_windows_sdk_libs=yes
6712 have_windows_sdk_libs=no
6715 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6716 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6717 the Windows SDK are installed.])
6721 if test -z "$WINDOWS_SDK_HOME"; then
6722 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6723 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6724 WINDOWS_SDK_VERSION=80
6725 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6726 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6727 WINDOWS_SDK_VERSION=81
6728 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6729 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6730 WINDOWS_SDK_VERSION=10
6731 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6733 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6735 PathFormat "$WINDOWS_SDK_HOME"
6736 WINDOWS_SDK_HOME="$formatted_path"
6737 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6738 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6739 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6740 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6741 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6742 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6743 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6747 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6748 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6749 dnl but not in v8.0), so allow this to be overridden with a
6750 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6751 dnl and configuration error if no WiLangId.vbs is found would arguably be
6752 dnl better, but I do not know under which conditions exactly it is needed by
6754 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6755 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6756 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6757 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6758 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6759 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6761 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6762 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6763 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6765 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6766 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6767 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6770 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6771 if test -n "$with_package_format" -a "$with_package_format" != no; then
6772 for i in "$with_package_format"; do
6773 if test "$i" = "msi"; then
6774 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6775 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6782 AC_SUBST(WINDOWS_SDK_HOME)
6783 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6784 AC_SUBST(WINDOWS_SDK_VERSION)
6785 AC_SUBST(WINDOWS_SDK_WILANGID)
6787 if test "$build_os" = "cygwin"; then
6788 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6789 dnl dir, it also determines that dir's path w/o an arch segment if any,
6790 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6791 AC_MSG_CHECKING([for midl.exe])
6794 if test -n "$winsdkbinsubdir" \
6795 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6797 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6798 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
6799 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6800 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6801 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6802 elif test -f "$winsdktest/Bin/midl.exe"; then
6803 MIDL_PATH=$winsdktest/Bin
6804 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
6806 if test ! -f "$MIDL_PATH/midl.exe"; then
6807 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6809 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6812 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6813 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6815 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6816 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6817 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6818 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6819 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6820 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6821 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6822 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6823 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6824 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6825 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6826 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6828 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6832 AC_MSG_CHECKING([for csc.exe])
6834 if test -f "$csctest/csc.exe"; then
6837 if test ! -f "$CSC_PATH/csc.exe"; then
6838 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6840 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6843 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6846 AC_MSG_CHECKING([for al.exe])
6848 if test -n "$winsdkbinsubdir" \
6849 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6851 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6852 elif test -f "$winsdktest/Bin/$WIN_BUILD_ARCH/al.exe"; then
6853 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6854 elif test -f "$winsdktest/Bin/al.exe"; then
6855 AL_PATH="$winsdktest/Bin"
6858 if test -z "$AL_PATH"; then
6860 if test -f "$altest/bin/al.exe"; then
6861 AL_PATH="$altest/bin"
6862 elif test -f "$altest/al.exe"; then
6866 if test ! -f "$AL_PATH/al.exe"; then
6867 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6869 AC_MSG_RESULT([$AL_PATH/al.exe])
6872 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6874 dnl Check mscoree.lib / .NET Framework dir
6875 AC_MSG_CHECKING(.NET Framework)
6877 PathFormat "$frametest"
6878 frametest="$formatted_path"
6879 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6880 DOTNET_FRAMEWORK_HOME="$frametest"
6883 if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6884 DOTNET_FRAMEWORK_HOME="$winsdktest"
6887 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
6888 AC_MSG_ERROR([mscoree.lib not found])
6890 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6892 PathFormat "$MIDL_PATH"
6893 MIDL_PATH="$formatted_path"
6895 PathFormat "$AL_PATH"
6896 AL_PATH="$formatted_path"
6898 PathFormat "$DOTNET_FRAMEWORK_HOME"
6899 DOTNET_FRAMEWORK_HOME="$formatted_path"
6901 PathFormat "$CSC_PATH"
6902 CSC_PATH="$formatted_path"
6905 dnl ===================================================================
6906 dnl Testing for C++ compiler and version...
6907 dnl ===================================================================
6909 if test "$_os" != "WINNT"; then
6910 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6911 save_CXXFLAGS=$CXXFLAGS
6913 CXXFLAGS=$save_CXXFLAGS
6914 if test -z "$CXX_BASE"; then
6915 CXX_BASE=`first_arg_basename "$CXX"`
6919 dnl check for GNU C++ compiler version
6920 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6921 AC_MSG_CHECKING([the GNU C++ compiler version])
6923 _gpp_version=`$CXX -dumpversion`
6924 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6926 if test "$_gpp_majmin" -lt "700"; then
6927 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6929 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6932 dnl see https://code.google.com/p/android/issues/detail?id=41770
6936 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6937 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6938 #include <bits/c++config.h>]],[[
6939 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6940 && !defined(_GLIBCXX__PTHREADS) \
6941 && !defined(_GLIBCXX_HAS_GTHREADS)
6944 ]])],[AC_MSG_RESULT([yes])
6945 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6947 if test $glibcxx_threads = yes; then
6948 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6951 AC_SUBST(BOOST_CXXFLAGS)
6954 # prefx CXX with ccache if needed
6956 if test "$CCACHE" != ""; then
6957 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6959 save_CXXFLAGS=$CXXFLAGS
6960 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6961 # msvc does not fail on unknown options, check stdout
6962 if test "$COM" = MSC; then
6963 CXXFLAGS="$CXXFLAGS -nologo"
6965 save_ac_cxx_werror_flag=$ac_cxx_werror_flag
6966 ac_cxx_werror_flag=yes
6967 dnl an empty program will do, we're checking the compiler flags
6968 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6969 [use_ccache=yes], [use_ccache=no])
6970 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
6971 AC_MSG_RESULT([yes])
6974 CXX_BASE="ccache $CXX_BASE"
6977 CXXFLAGS=$save_CXXFLAGS
6978 ac_cxx_werror_flag=$save_ac_cxx_werror_flag
6982 dnl ===================================================================
6983 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6984 dnl ===================================================================
6986 if test "$_os" != "WINNT"; then
6989 dnl Check whether there's a C pre-processor.
6994 dnl ===================================================================
6995 dnl Find integral type sizes and alignments
6996 dnl ===================================================================
6998 if test "$_os" != "WINNT"; then
7000 AC_CHECK_SIZEOF(long)
7001 AC_CHECK_SIZEOF(short)
7002 AC_CHECK_SIZEOF(int)
7003 AC_CHECK_SIZEOF(long long)
7004 AC_CHECK_SIZEOF(double)
7005 AC_CHECK_SIZEOF(void*)
7006 AC_CHECK_SIZEOF(size_t)
7008 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7009 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7010 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7011 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7012 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7013 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7015 dnl Allow build without AC_CHECK_ALIGNOF, grrr
7016 m4_pattern_allow([AC_CHECK_ALIGNOF])
7017 m4_ifdef([AC_CHECK_ALIGNOF],
7019 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7020 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7021 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7022 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7025 case "$_os-$host_cpu" in
7027 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7028 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7029 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7030 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7033 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7034 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7035 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7036 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7039 if test -z "$ac_cv_alignof_short" -o \
7040 -z "$ac_cv_alignof_int" -o \
7041 -z "$ac_cv_alignof_long" -o \
7042 -z "$ac_cv_alignof_double"; then
7043 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.])
7049 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7050 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7051 if test $ac_cv_sizeof_long -eq 8; then
7052 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7053 elif test $ac_cv_sizeof_double -eq 8; then
7054 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7056 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7059 dnl Check for large file support
7061 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7062 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7064 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7065 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7069 SAL_TYPES_SIZEOFSHORT=2
7070 SAL_TYPES_SIZEOFINT=4
7071 SAL_TYPES_SIZEOFLONG=4
7072 SAL_TYPES_SIZEOFLONGLONG=8
7073 if test $WIN_HOST_BITS -eq 32; then
7074 SAL_TYPES_SIZEOFPOINTER=4
7077 SAL_TYPES_SIZEOFPOINTER=8
7080 SAL_TYPES_ALIGNMENT2=2
7081 SAL_TYPES_ALIGNMENT4=4
7082 SAL_TYPES_ALIGNMENT8=8
7085 AC_SUBST(LFS_CFLAGS)
7086 AC_SUBST(SIZEOF_SIZE_T)
7088 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7089 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7090 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7091 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7092 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7093 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7094 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7095 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7097 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7098 AC_MSG_CHECKING([whether jumbo sheets are supported])
7099 if test "$_os" != "WINNT"; then
7100 if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7101 AC_MSG_RESULT([yes])
7102 ENABLE_JUMBO_SHEETS=TRUE
7103 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7108 if test $WIN_HOST_BITS -gt 32; then
7109 # 64bit windows is special-cased for tools::Long because long is 32bit
7110 AC_MSG_RESULT([yes])
7111 ENABLE_JUMBO_SHEETS=TRUE
7112 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7117 AC_SUBST(ENABLE_JUMBO_SHEETS)
7119 dnl ===================================================================
7120 dnl Check whether to enable runtime optimizations
7121 dnl ===================================================================
7122 ENABLE_RUNTIME_OPTIMIZATIONS=
7123 AC_MSG_CHECKING([whether to enable runtime optimizations])
7124 if test -z "$enable_runtime_optimizations"; then
7128 enable_runtime_optimizations=no
7134 if test "$enable_runtime_optimizations" != no; then
7135 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7136 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7137 AC_MSG_RESULT([yes])
7141 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7143 dnl ===================================================================
7144 dnl Check if valgrind headers are available
7145 dnl ===================================================================
7147 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7148 prev_cppflags=$CPPFLAGS
7149 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7150 # or where does it come from?
7151 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7152 AC_CHECK_HEADER([valgrind/valgrind.h],
7153 [ENABLE_VALGRIND=TRUE])
7154 CPPFLAGS=$prev_cppflags
7156 AC_SUBST([ENABLE_VALGRIND])
7157 if test -z "$ENABLE_VALGRIND"; then
7158 if test "$with_valgrind" = yes; then
7159 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7163 AC_SUBST([VALGRIND_CFLAGS])
7166 dnl ===================================================================
7167 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7168 dnl ===================================================================
7170 # We need at least the sys/sdt.h include header.
7171 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7172 if test "$SDT_H_FOUND" = "TRUE"; then
7173 # Found sys/sdt.h header, now make sure the c++ compiler works.
7174 # Old g++ versions had problems with probes in constructors/destructors.
7175 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7177 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7178 #include <sys/sdt.h>
7186 ProbeClass(int& v, const char *n) : ref(v), name(n)
7188 DTRACE_PROBE2(_test_, cons, name, ref);
7191 void method(int min)
7193 DTRACE_PROBE3(_test_, meth, name, ref, min);
7199 DTRACE_PROBE2(_test_, dest, name, ref);
7204 DTRACE_PROBE1(_test_, call, i);
7205 ProbeClass inst = ProbeClass(i, "call");
7207 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7208 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7211 AC_CONFIG_HEADERS([config_host/config_probes.h])
7213 dnl ===================================================================
7215 dnl ===================================================================
7216 HAVE_GCC_STACK_CLASH_PROTECTION=
7217 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7218 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7220 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7222 [AC_LANG_PROGRAM(, [[return 0;]])],
7223 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7224 [AC_MSG_RESULT([no])])
7227 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7229 CFLAGS="$CFLAGS -Werror -mno-avx"
7230 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7232 if test "$HAVE_GCC_AVX" = "TRUE"; then
7233 AC_MSG_RESULT([yes])
7238 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7239 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7241 if (__sync_add_and_fetch(&v, 1) != 1 ||
7242 __sync_sub_and_fetch(&v, 1) != 0)
7244 __sync_synchronize();
7245 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7249 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7250 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7251 AC_MSG_RESULT([yes])
7252 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7257 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7259 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7262 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7264 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7265 AC_MSG_RESULT([yes])
7266 ], [AC_MSG_RESULT([no])])
7269 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7271 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7274 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7276 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7277 AC_MSG_RESULT([yes])
7278 ], [AC_MSG_RESULT([no])])
7281 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7283 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7285 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7287 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7288 AC_MSG_RESULT([yes])
7289 ], [AC_MSG_RESULT([no])])
7292 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7294 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7297 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7299 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7300 AC_MSG_RESULT([yes])
7301 ], [AC_MSG_RESULT([no])])
7304 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7306 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7309 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7311 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7312 AC_MSG_RESULT([yes])
7313 ], [AC_MSG_RESULT([no])])
7316 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7318 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7320 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7322 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7323 AC_MSG_RESULT([yes])
7324 ], [AC_MSG_RESULT([no])])
7327 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7329 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7331 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7333 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7334 AC_MSG_RESULT([yes])
7335 ], [AC_MSG_RESULT([no])])
7338 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7340 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7342 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7344 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7345 AC_MSG_RESULT([yes])
7346 ], [AC_MSG_RESULT([no])])
7349 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7351 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7354 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7356 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7357 AC_MSG_RESULT([yes])
7358 ], [AC_MSG_RESULT([no])])
7361 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7363 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7366 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7368 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7369 AC_MSG_RESULT([yes])
7370 ], [AC_MSG_RESULT([no])])
7374 AC_SUBST(HAVE_GCC_AVX)
7375 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7376 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7378 dnl ===================================================================
7379 dnl Identify the C++ library
7380 dnl ===================================================================
7382 AC_MSG_CHECKING([what the C++ library is])
7386 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7392 [CPP_LIBRARY=GLIBCXX
7393 cpp_library_name="GNU libstdc++"
7396 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7398 #ifndef _LIBCPP_VERSION
7403 cpp_library_name="LLVM libc++"
7404 AC_DEFINE([HAVE_LIBCPP])
7407 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7414 cpp_library_name="Microsoft"
7416 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7417 AC_MSG_RESULT([$cpp_library_name])
7419 AC_SUBST([HAVE_LIBSTDCPP])
7420 AC_SUBST([HAVE_LIBCPP])
7423 if test -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"; then
7424 # Libc++ supports debug mode only if built for it, Mac libc++ isn't,
7425 # and there would be undefined references to debug functions.
7426 # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7427 AC_MSG_CHECKING([if libc++ has a usable debug mode])
7429 AC_RUN_IFELSE([AC_LANG_SOURCE([[
7430 #define _LIBCPP_DEBUG 1
7433 int foo(const std::vector<int>& v) { return *v.begin(); }
7436 std::vector<int> v{ 1, 2 };
7437 std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7438 return (foo(v) + s.size()) != 0 ? 0 : 1;
7448 AC_SUBST([HAVE_LIBCPP_DEBUG])
7450 dnl ===================================================================
7452 dnl ===================================================================
7453 AC_PATH_PROG(GPERF, gperf)
7454 if test -z "$GPERF"; then
7455 AC_MSG_ERROR([gperf not found but needed. Install it.])
7457 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7458 GPERF=`cygpath -m $GPERF`
7460 AC_MSG_CHECKING([whether gperf is new enough])
7461 my_gperf_ver1=$($GPERF --version | head -n 1)
7462 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7463 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7464 if test "$my_gperf_ver3" -ge 301; then
7465 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7467 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7471 dnl ===================================================================
7472 dnl Check for system libcmis
7473 dnl ===================================================================
7474 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2],enabled)
7476 dnl ===================================================================
7478 dnl ===================================================================
7480 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7482 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7483 if test "$with_latest_c__" = yes; then
7484 CXXFLAGS_CXX11=-std:c++latest
7486 CXXFLAGS_CXX11=-std:c++17
7488 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7489 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7490 my_flags='-std=c++17 -std=c++1z'
7491 if test "$with_latest_c__" = yes; then
7492 my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7494 for flag in $my_flags; do
7495 if test "$COM" = MSC; then
7496 flag="-Xclang $flag"
7498 save_CXXFLAGS=$CXXFLAGS
7499 CXXFLAGS="$CXXFLAGS $flag -Werror"
7500 if test "$SYSTEM_LIBCMIS" = TRUE; then
7501 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7504 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7505 #include <algorithm>
7506 #include <functional>
7509 #if defined SYSTEM_LIBCMIS
7510 // See ucb/source/ucp/cmis/auth_provider.hxx:
7511 #if !defined __clang__
7512 #pragma GCC diagnostic push
7513 #pragma GCC diagnostic ignored "-Wdeprecated"
7514 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7516 #include <libcmis/libcmis.hxx>
7517 #if !defined __clang__
7518 #pragma GCC diagnostic pop
7522 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7523 std::sort(v.begin(), v.end(), fn);
7525 ]])],[CXXFLAGS_CXX11=$flag])
7527 CXXFLAGS=$save_CXXFLAGS
7528 if test -n "$CXXFLAGS_CXX11"; then
7533 if test -n "$CXXFLAGS_CXX11"; then
7534 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7538 AC_SUBST(CXXFLAGS_CXX11)
7540 if test "$GCC" = "yes"; then
7541 save_CXXFLAGS=$CXXFLAGS
7542 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7544 CXXFLAGS=$save_CXXFLAGS
7545 AC_SUBST(ATOMIC_LIB)
7548 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7549 save_CXXFLAGS=$CXXFLAGS
7550 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7553 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7556 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7572 a thinga[]={{0,0}, {1,1}};
7573 b thingb[]={{0,0}, {1,1}};
7574 size_t i = sizeof(sal_n_array_size(thinga));
7575 size_t j = sizeof(sal_n_array_size(thingb));
7576 return !(i != 0 && j != 0);
7578 ], [ AC_MSG_RESULT(yes) ],
7579 [ AC_MSG_ERROR(no)])
7581 CXXFLAGS=$save_CXXFLAGS
7583 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7584 if test "$GCC" = yes; then
7585 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7587 save_CXXFLAGS=$CXXFLAGS
7588 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7589 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7590 CXXFLAGS=$save_CXXFLAGS
7592 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7593 AC_MSG_RESULT([yes])
7598 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7600 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7602 save_CXXFLAGS=$CXXFLAGS
7603 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7604 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7605 #include <algorithm>
7606 #include <initializer_list>
7608 template<typename T> class S {
7612 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7614 constinit S<int> s{3, 2, 1};
7616 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7617 AC_MSG_RESULT([yes])
7618 ], [AC_MSG_RESULT([no])])
7619 CXXFLAGS=$save_CXXFLAGS
7622 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7624 save_CXXFLAGS=$CXXFLAGS
7625 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7626 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7628 #include <type_traits>
7629 // Don't check size_type directly, as it was called index_type before P1872R0:
7630 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7632 AC_DEFINE([HAVE_CPP_SPAN],[1])
7633 AC_MSG_RESULT([yes])
7634 ], [AC_MSG_RESULT([no])])
7635 CXXFLAGS=$save_CXXFLAGS
7638 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7640 save_CXXFLAGS=$CXXFLAGS
7641 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7642 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7643 struct S1 { S1(S1 &&); };
7645 S1 f(S2 s) { return s; }
7647 AC_DEFINE([HAVE_P1155R3],[1])
7648 AC_MSG_RESULT([yes])
7649 ], [AC_MSG_RESULT([no])])
7650 CXXFLAGS=$save_CXXFLAGS
7653 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7654 HAVE_CXX20_ATOMIC_REF=
7656 save_CXXFLAGS=$CXXFLAGS
7657 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7658 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7661 std::atomic_ref<int> y(x);
7663 HAVE_CXX20_ATOMIC_REF=TRUE
7664 AC_MSG_RESULT([yes])
7665 ], [AC_MSG_RESULT([no])])
7666 CXXFLAGS=$save_CXXFLAGS
7668 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7670 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7671 dnl which is included in -Wextra anyway):
7672 HAVE_WDEPRECATED_COPY_DTOR=
7673 if test "$GCC" = yes; then
7674 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7676 save_CXXFLAGS=$CXXFLAGS
7677 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7678 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7679 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7680 AC_MSG_RESULT([yes])
7681 ], [AC_MSG_RESULT([no])])
7682 CXXFLAGS=$save_CXXFLAGS
7685 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7687 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7688 dnl uninitialized warning for code like
7691 dnl boost::optional<OString> * g(bool b) {
7692 dnl boost::optional<OString> o;
7694 dnl return new boost::optional<OString>(o);
7697 dnl (as is e.g. present, in a slightly more elaborate form, in
7698 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7699 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7700 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7701 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7702 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7704 save_CXXFLAGS=$CXXFLAGS
7705 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7706 if test "$ENABLE_OPTIMIZED" = TRUE; then
7707 CXXFLAGS="$CXXFLAGS -O2"
7709 CXXFLAGS="$CXXFLAGS -O0"
7711 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7720 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7721 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7727 char stg[sizeof (S1)];
7735 ]])], [AC_MSG_RESULT([no])], [
7736 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7737 AC_MSG_RESULT([yes])
7739 CXXFLAGS=$save_CXXFLAGS
7742 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7744 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7745 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7746 dnl hits us e.g. with GCC 10 and --enable-optimized at
7748 dnl In file included from include/rtl/string.hxx:49,
7749 dnl from include/rtl/ustring.hxx:43,
7750 dnl from include/osl/file.hxx:35,
7751 dnl from include/codemaker/global.hxx:28,
7752 dnl from include/codemaker/options.hxx:23,
7753 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7754 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7755 dnl inlined from ‘static char* rtl::ToStringHelper<const char [N]>::addData(char*, const char*) [with long unsigned int N = 3]’ at include/rtl/stringconcat.hxx:147:85,
7756 dnl inlined from ‘char* rtl::OStringConcat<T1, T2>::addData(char*) const [with T1 = const char [3]; T2 = rtl::OString]’ at include/rtl/stringconcat.hxx:226:103,
7757 dnl inlined from ‘rtl::OStringBuffer& rtl::OStringBuffer::append(rtl::OStringConcat<T1, T2>&&) [with T1 = const char [3]; T2 = rtl::OString]’ at include/rtl/strbuf.hxx:599:30,
7758 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7759 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7760 dnl 78 | memcpy( buffer, data, length );
7761 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7762 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7763 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7764 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7766 save_CXXFLAGS=$CXXFLAGS
7767 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7768 if test "$ENABLE_OPTIMIZED" = TRUE; then
7769 CXXFLAGS="$CXXFLAGS -O2"
7771 CXXFLAGS="$CXXFLAGS -O0"
7773 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7774 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7775 void fill(char const * begin, char const * end, char c);
7781 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7782 __builtin_strncpy(c.username, "root", sizeof(c.username));
7784 ]])], [AC_MSG_RESULT([no])], [
7785 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7786 AC_MSG_RESULT([yes])
7788 CXXFLAGS=$save_CXXFLAGS
7791 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7793 HAVE_DLLEXPORTINLINES=
7794 if test "$_os" = "WINNT"; then
7795 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7797 save_CXXFLAGS=$CXXFLAGS
7798 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7799 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7800 HAVE_DLLEXPORTINLINES=TRUE
7801 AC_MSG_RESULT([yes])
7802 ], [AC_MSG_RESULT([no])])
7803 CXXFLAGS=$save_CXXFLAGS
7806 AC_SUBST([HAVE_DLLEXPORTINLINES])
7808 dnl ===================================================================
7809 dnl CPU Intrinsics support - SSE, AVX
7810 dnl ===================================================================
7812 CXXFLAGS_INTRINSICS_SSE2=
7813 CXXFLAGS_INTRINSICS_SSSE3=
7814 CXXFLAGS_INTRINSICS_SSE41=
7815 CXXFLAGS_INTRINSICS_SSE42=
7816 CXXFLAGS_INTRINSICS_AVX=
7817 CXXFLAGS_INTRINSICS_AVX2=
7818 CXXFLAGS_INTRINSICS_AVX512=
7819 CXXFLAGS_INTRINSICS_AVX512F=
7820 CXXFLAGS_INTRINSICS_F16C=
7821 CXXFLAGS_INTRINSICS_FMA=
7823 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7824 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7831 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7832 flag_avx512f=-mavx512f
7836 # With MSVC using -arch is in fact not necessary for being able
7837 # to use CPU intrinsics, code using AVX512F intrinsics will compile
7838 # even if compiled with -arch:AVX, the -arch option really only affects
7839 # instructions generated for C/C++ code.
7840 # So use the matching same (or lower) -arch options, but only in order
7841 # to generate the best matching instructions for the C++ code surrounding
7843 # SSE2 is the default for x86/x64, so no need to specify the option.
7845 # No specific options for these, use the next lower.
7846 flag_ssse3="$flag_sse2"
7847 flag_sse41="$flag_sse2"
7848 flag_sse42="$flag_sse2"
7850 flag_avx2=-arch:AVX2
7851 flag_avx512=-arch:AVX512
7852 # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7853 flag_avx512f=-arch:AVX2
7854 # No MSVC options for these.
7855 flag_f16c="$flag_sse2"
7856 flag_fma="$flag_sse2"
7859 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7861 save_CXXFLAGS=$CXXFLAGS
7862 CXXFLAGS="$CXXFLAGS $flag_sse2"
7863 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7864 #include <emmintrin.h>
7866 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7867 c = _mm_xor_si128 (a, b);
7871 [can_compile_sse2=yes],
7872 [can_compile_sse2=no])
7874 CXXFLAGS=$save_CXXFLAGS
7875 AC_MSG_RESULT([${can_compile_sse2}])
7876 if test "${can_compile_sse2}" = "yes" ; then
7877 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7880 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7882 save_CXXFLAGS=$CXXFLAGS
7883 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7884 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7885 #include <tmmintrin.h>
7887 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7888 c = _mm_maddubs_epi16 (a, b);
7892 [can_compile_ssse3=yes],
7893 [can_compile_ssse3=no])
7895 CXXFLAGS=$save_CXXFLAGS
7896 AC_MSG_RESULT([${can_compile_ssse3}])
7897 if test "${can_compile_ssse3}" = "yes" ; then
7898 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7901 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7903 save_CXXFLAGS=$CXXFLAGS
7904 CXXFLAGS="$CXXFLAGS $flag_sse41"
7905 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7906 #include <smmintrin.h>
7908 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7909 c = _mm_cmpeq_epi64 (a, b);
7913 [can_compile_sse41=yes],
7914 [can_compile_sse41=no])
7916 CXXFLAGS=$save_CXXFLAGS
7917 AC_MSG_RESULT([${can_compile_sse41}])
7918 if test "${can_compile_sse41}" = "yes" ; then
7919 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7922 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7924 save_CXXFLAGS=$CXXFLAGS
7925 CXXFLAGS="$CXXFLAGS $flag_sse42"
7926 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7927 #include <nmmintrin.h>
7929 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7930 c = _mm_cmpgt_epi64 (a, b);
7934 [can_compile_sse42=yes],
7935 [can_compile_sse42=no])
7937 CXXFLAGS=$save_CXXFLAGS
7938 AC_MSG_RESULT([${can_compile_sse42}])
7939 if test "${can_compile_sse42}" = "yes" ; then
7940 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7943 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
7945 save_CXXFLAGS=$CXXFLAGS
7946 CXXFLAGS="$CXXFLAGS $flag_avx"
7947 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7948 #include <immintrin.h>
7950 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
7951 c = _mm256_xor_ps(a, b);
7955 [can_compile_avx=yes],
7956 [can_compile_avx=no])
7958 CXXFLAGS=$save_CXXFLAGS
7959 AC_MSG_RESULT([${can_compile_avx}])
7960 if test "${can_compile_avx}" = "yes" ; then
7961 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
7964 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
7966 save_CXXFLAGS=$CXXFLAGS
7967 CXXFLAGS="$CXXFLAGS $flag_avx2"
7968 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7969 #include <immintrin.h>
7971 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7972 c = _mm256_maddubs_epi16(a, b);
7976 [can_compile_avx2=yes],
7977 [can_compile_avx2=no])
7979 CXXFLAGS=$save_CXXFLAGS
7980 AC_MSG_RESULT([${can_compile_avx2}])
7981 if test "${can_compile_avx2}" = "yes" ; then
7982 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
7985 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
7987 save_CXXFLAGS=$CXXFLAGS
7988 CXXFLAGS="$CXXFLAGS $flag_avx512"
7989 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7990 #include <immintrin.h>
7992 __m512i a = _mm512_loadu_si512(0);
7993 __m512d v1 = _mm512_load_pd(0);
7994 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
7995 __m512d v2 = _mm512_abs_pd(v1);
7999 [can_compile_avx512=yes],
8000 [can_compile_avx512=no])
8002 CXXFLAGS=$save_CXXFLAGS
8003 AC_MSG_RESULT([${can_compile_avx512}])
8004 if test "${can_compile_avx512}" = "yes" ; then
8005 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8006 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8009 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8011 save_CXXFLAGS=$CXXFLAGS
8012 CXXFLAGS="$CXXFLAGS $flag_f16c"
8013 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8014 #include <immintrin.h>
8016 __m128i a = _mm_set1_epi32 (0);
8018 c = _mm_cvtph_ps(a);
8022 [can_compile_f16c=yes],
8023 [can_compile_f16c=no])
8025 CXXFLAGS=$save_CXXFLAGS
8026 AC_MSG_RESULT([${can_compile_f16c}])
8027 if test "${can_compile_f16c}" = "yes" ; then
8028 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8031 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8033 save_CXXFLAGS=$CXXFLAGS
8034 CXXFLAGS="$CXXFLAGS $flag_fma"
8035 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8036 #include <immintrin.h>
8038 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8039 d = _mm256_fmadd_ps(a, b, c);
8043 [can_compile_fma=yes],
8044 [can_compile_fma=no])
8046 CXXFLAGS=$save_CXXFLAGS
8047 AC_MSG_RESULT([${can_compile_fma}])
8048 if test "${can_compile_fma}" = "yes" ; then
8049 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8052 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8053 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8054 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8055 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8056 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8057 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8058 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8059 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8060 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8061 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8063 dnl ===================================================================
8064 dnl system stl sanity tests
8065 dnl ===================================================================
8066 if test "$_os" != "WINNT"; then
8070 save_CPPFLAGS="$CPPFLAGS"
8071 if test -n "$MACOSX_SDK_PATH"; then
8072 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8075 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8077 if test "$CPP_LIBRARY" = GLIBCXX; then
8078 dnl gcc#19664, gcc#22482, rhbz#162935
8079 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8080 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8081 AC_MSG_RESULT([$stlvisok])
8082 if test "$stlvisok" = "no"; then
8083 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8087 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8088 # when we don't make any dynamic libraries?
8089 if test "$DISABLE_DYNLOADING" = ""; then
8090 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8091 cat > conftestlib1.cc <<_ACEOF
8092 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8093 struct S2: S1<int> { virtual ~S2(); };
8096 cat > conftestlib2.cc <<_ACEOF
8097 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8098 struct S2: S1<int> { virtual ~S2(); };
8099 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8101 gccvisinlineshiddenok=yes
8102 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8103 gccvisinlineshiddenok=no
8105 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8106 dnl known to not work with -z defs (unsetting which makes the test
8108 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8109 if test "$COM_IS_CLANG" = TRUE; then
8110 for i in $CXX $CXXFLAGS; do
8113 my_linkflagsnoundefs=
8119 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8120 gccvisinlineshiddenok=no
8125 AC_MSG_RESULT([$gccvisinlineshiddenok])
8126 if test "$gccvisinlineshiddenok" = "no"; then
8127 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8131 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8132 cat >visibility.cxx <<_ACEOF
8133 #pragma GCC visibility push(hidden)
8134 struct __attribute__ ((visibility ("default"))) TestStruct {
8137 __attribute__ ((visibility ("default"))) void TestFunc() {
8141 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8146 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8149 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8161 rm -f visibility.s visibility.cxx
8163 AC_MSG_RESULT([$gccvisbroken])
8164 if test "$gccvisbroken" = "yes"; then
8165 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8168 CPPFLAGS="$save_CPPFLAGS"
8170 AC_MSG_CHECKING([if CET endbranch is recognized])
8171 cat > endbr.s <<_ACEOF
8174 HAVE_ASM_END_BRANCH_INS_SUPPORT=
8175 if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8176 AC_MSG_RESULT([yes])
8177 HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8181 rm -f endbr.s endbr.o
8182 AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8187 dnl ===================================================================
8189 dnl ===================================================================
8191 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8192 if test "$GCC" = "yes"; then
8193 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8195 save_CXXFLAGS=$CXXFLAGS
8196 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8197 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8198 CXXFLAGS=$save_CXXFLAGS
8200 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8201 AC_MSG_RESULT([yes])
8206 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8208 dnl ===================================================================
8209 dnl Compiler plugins
8210 dnl ===================================================================
8213 # currently only Clang
8215 if test "$COM_IS_CLANG" != "TRUE"; then
8216 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8217 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8218 enable_compiler_plugins=no
8222 COMPILER_PLUGINS_COM_IS_CLANG=
8223 if test "$COM_IS_CLANG" = "TRUE"; then
8224 if test -n "$enable_compiler_plugins"; then
8225 compiler_plugins="$enable_compiler_plugins"
8226 elif test -n "$ENABLE_DBGUTIL"; then
8227 compiler_plugins=test
8231 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8232 if test "$CLANGVER" -lt 120001; then
8233 if test "$compiler_plugins" = yes; then
8235 [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8241 if test "$compiler_plugins" != "no"; then
8242 dnl The prefix where Clang resides, override to where Clang resides if
8243 dnl using a source build:
8244 if test -z "$CLANGDIR"; then
8245 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8247 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8248 if test -z "$COMPILER_PLUGINS_CXX"; then
8249 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8251 clangbindir=$CLANGDIR/bin
8252 if test "$build_os" = "cygwin"; then
8253 clangbindir=$(cygpath -u "$clangbindir")
8255 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8256 if test -n "$LLVM_CONFIG"; then
8257 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8258 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8259 if test -z "$CLANGLIBDIR"; then
8260 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8262 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8263 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8264 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8265 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8266 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8268 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8269 clangobjdir=$($LLVM_CONFIG --obj-root)
8270 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8271 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8274 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8278 save_CPPFLAGS=$CPPFLAGS
8279 save_CXXFLAGS=$CXXFLAGS
8280 save_LDFLAGS=$LDFLAGS
8282 CXX=$COMPILER_PLUGINS_CXX
8283 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8284 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8285 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8286 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8287 [COMPILER_PLUGINS=TRUE],
8289 if test "$compiler_plugins" = "yes"; then
8290 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8292 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8293 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8296 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8297 dnl comment in compilerplugins/Makefile-clang.mk:
8298 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8300 AC_MSG_CHECKING([for clang libraries to use])
8301 if test -z "$CLANGTOOLLIBS"; then
8302 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8303 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8305 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8306 [[ clang::FullSourceLoc().dump(); ]])
8307 ],[CLANGTOOLLIBS="$LIBS"],[])
8309 if test -z "$CLANGTOOLLIBS"; then
8310 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8312 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8313 [[ clang::FullSourceLoc().dump(); ]])
8314 ],[CLANGTOOLLIBS="$LIBS"],[])
8316 AC_MSG_RESULT([$CLANGTOOLLIBS])
8317 if test -z "$CLANGTOOLLIBS"; then
8318 if test "$compiler_plugins" = "yes"; then
8319 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8321 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8322 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8326 if test -n "$COMPILER_PLUGINS"; then
8327 if test -z "$CLANGSYSINCLUDE"; then
8328 if test -n "$LLVM_CONFIG"; then
8329 # Path to the clang system headers (no idea if there's a better way to get it).
8330 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8337 CPPFLAGS=$save_CPPFLAGS
8338 CXXFLAGS=$save_CXXFLAGS
8339 LDFLAGS=$save_LDFLAGS
8343 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8344 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8350 [AC_MSG_RESULT([yes])
8351 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8352 [AC_MSG_RESULT([no])])
8353 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8356 if test "$enable_compiler_plugins" = "yes"; then
8357 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8360 COMPILER_PLUGINS_ANALYZER_PCH=
8361 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8362 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8364 AC_SUBST(COMPILER_PLUGINS)
8365 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8366 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8367 AC_SUBST(COMPILER_PLUGINS_CXX)
8368 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8369 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8370 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8371 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8373 AC_SUBST(CLANGLIBDIR)
8374 AC_SUBST(CLANGTOOLLIBS)
8375 AC_SUBST(CLANGSYSINCLUDE)
8377 # Plugin to help linker.
8378 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8379 # This makes --enable-lto build with clang work.
8382 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8383 AC_SUBST(HAVE_POSIX_FALLOCATE)
8385 JITC_PROCESSOR_TYPE=""
8386 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8387 # IBMs JDK needs this...
8388 JITC_PROCESSOR_TYPE=6
8389 export JITC_PROCESSOR_TYPE
8391 AC_SUBST([JITC_PROCESSOR_TYPE])
8393 # Misc Windows Stuff
8394 AC_ARG_WITH(ucrt-dir,
8395 AS_HELP_STRING([--with-ucrt-dir],
8396 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8397 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8398 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8399 Windows6.1-KB2999226-x64.msu
8400 Windows6.1-KB2999226-x86.msu
8401 Windows8.1-KB2999226-x64.msu
8402 Windows8.1-KB2999226-x86.msu
8403 Windows8-RT-KB2999226-x64.msu
8404 Windows8-RT-KB2999226-x86.msu
8405 A zip archive including those files is available from Microsoft site:
8406 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8409 UCRT_REDISTDIR="$with_ucrt_dir"
8410 if test $_os = "WINNT"; then
8412 for i in $PKGFORMAT; do
8413 if test "$i" = msi; then
8418 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8419 MSVC_DLLS="$msvcdlls"
8420 test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8421 # MSVC 15.3 changed it to VC141
8422 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8423 SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8424 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8425 SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8426 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8427 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8429 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8432 if test "$UCRT_REDISTDIR" = "no"; then
8433 dnl explicitly disabled
8436 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8437 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8438 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8439 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8440 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8441 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8443 if test -n "$PKGFORMAT"; then
8444 for i in $PKGFORMAT; do
8447 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8448 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8457 AC_SUBST(UCRT_REDISTDIR)
8458 AC_SUBST(MSVC_DLL_PATH)
8463 dnl ===================================================================
8465 dnl ===================================================================
8466 if test "$ENABLE_JAVA" != ""; then
8468 # Windows-specific tests
8469 if test "$build_os" = "cygwin"; then
8470 if test -z "$with_jdk_home"; then
8471 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8472 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8473 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8474 if test -n "$regvalue"; then
8476 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8477 with_jdk_home=$regvalue
8479 howfound="found automatically"
8481 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8482 howfound="you passed"
8485 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8486 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option (or fix the path) pointing to a $WIN_HOST_BITS-bit JDK >= 9])
8490 # 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.
8491 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8492 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8493 with_jdk_home=`/usr/libexec/java_home`
8496 JAVA_HOME=; export JAVA_HOME
8497 if test -z "$with_jdk_home"; then
8498 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8500 _java_path="$with_jdk_home/bin/$with_java"
8501 dnl Check if there is a Java interpreter at all.
8502 if test -x "$_java_path"; then
8503 JAVAINTERPRETER=$_java_path
8505 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8509 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8510 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8511 dnl loaded by java to run JunitTests:
8512 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8513 shortjdkhome=`cygpath -d "$with_jdk_home"`
8514 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
8515 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8516 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8517 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
8518 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8519 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8522 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8523 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8525 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8526 elif test "$cross_compiling" != "yes"; then
8528 AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
8529 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8530 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8531 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8534 *) # assumption: everything else 32-bit
8535 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8536 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8537 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8544 dnl ===================================================================
8546 dnl ===================================================================
8548 # Whether all the complexity here actually is needed any more or not, no idea.
8550 JDK_SECURITYMANAGER_DISALLOWED=
8551 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8553 AC_MSG_CHECKING([the installed JDK])
8554 if test -n "$JAVAINTERPRETER"; then
8555 dnl java -version sends output to stderr!
8556 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8557 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8558 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8559 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8560 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8561 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8562 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8563 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8567 dnl Sun JDK specific tests
8568 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8569 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8571 if test "$_jdk_ver" -lt 10900; then
8572 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8574 if test "$_jdk_ver" -gt 10900; then
8575 JAVA_CLASSPATH_NOT_SET=TRUE
8577 dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8578 dnl completely removed in some Java version > 18 (see
8579 dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8580 if test "$_jdk_ver" -ge 180000; then
8581 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8584 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8585 if test "$_os" = "WINNT"; then
8586 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8588 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8590 # set to limit VM usage for JunitTests
8592 # set to limit VM usage for javac
8593 JAVACFLAGS=-J-Xmx128M
8596 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8599 if test -z "$ENABLE_JAVA"; then
8603 elif test "$cross_compiling" = "yes"; then
8604 # Just assume compatibility of build and host JDK
8606 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8610 dnl ===================================================================
8611 dnl Checks for javac
8612 dnl ===================================================================
8613 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8614 javacompiler="javac"
8615 : ${JAVA_SOURCE_VER=8}
8616 : ${JAVA_TARGET_VER=8}
8617 if test -z "$with_jdk_home"; then
8618 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8620 _javac_path="$with_jdk_home/bin/$javacompiler"
8621 dnl Check if there is a Java compiler at all.
8622 if test -x "$_javac_path"; then
8623 JAVACOMPILER=$_javac_path
8626 if test -z "$JAVACOMPILER"; then
8627 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8629 if test "$build_os" = "cygwin"; then
8630 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8631 JAVACOMPILER="${JAVACOMPILER}.exe"
8633 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8637 dnl ===================================================================
8638 dnl Checks for javadoc
8639 dnl ===================================================================
8640 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8641 if test -z "$with_jdk_home"; then
8642 AC_PATH_PROG(JAVADOC, javadoc)
8644 _javadoc_path="$with_jdk_home/bin/javadoc"
8645 dnl Check if there is a javadoc at all.
8646 if test -x "$_javadoc_path"; then
8647 JAVADOC=$_javadoc_path
8649 AC_PATH_PROG(JAVADOC, javadoc)
8652 if test -z "$JAVADOC"; then
8653 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8655 if test "$build_os" = "cygwin"; then
8656 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8657 JAVADOC="${JAVADOC}.exe"
8659 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8662 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8663 JAVADOCISGJDOC="yes"
8667 AC_SUBST(JAVADOCISGJDOC)
8669 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8670 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8671 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8672 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8673 # try to recover first by looking whether we have an alternative
8674 # system as in Debian or newer SuSEs where following /usr/bin/javac
8675 # over /etc/alternatives/javac leads to the right bindir where we
8676 # just need to strip a bit away to get a valid JAVA_HOME
8677 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8678 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8679 # maybe only one level of symlink (e.g. on Mac)
8680 JAVA_HOME=$(readlink $JAVACOMPILER)
8681 if test "$(dirname $JAVA_HOME)" = "."; then
8682 # we've got no path to trim back
8687 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8688 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8689 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8690 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8692 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8693 if test "$JAVA_HOME" != "/usr"; then
8694 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8695 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8696 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8697 dnl Tiger already returns a JDK path...
8698 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8700 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8701 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8702 dnl that checks which version to run
8703 if test -f "$JAVA_HOME"; then
8704 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8709 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8711 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8712 if test -z "$JAVA_HOME"; then
8713 if test "x$with_jdk_home" = "x"; then
8714 cat > findhome.java <<_ACEOF
8715 [import java.io.File;
8719 public static void main(String args[])
8721 String jrelocation = System.getProperty("java.home");
8722 File jre = new File(jrelocation);
8723 System.out.println(jre.getParent());
8727 AC_MSG_CHECKING([if javac works])
8728 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8729 AC_TRY_EVAL(javac_cmd)
8730 if test $? = 0 -a -f ./findhome.class; then
8731 AC_MSG_RESULT([javac works])
8733 echo "configure: javac test failed" >&5
8734 cat findhome.java >&5
8735 AC_MSG_ERROR([javac does not work - java projects will not build!])
8737 AC_MSG_CHECKING([if gij knows its java.home])
8738 JAVA_HOME=`$JAVAINTERPRETER findhome`
8739 if test $? = 0 -a "$JAVA_HOME" != ""; then
8740 AC_MSG_RESULT([$JAVA_HOME])
8742 echo "configure: java test failed" >&5
8743 cat findhome.java >&5
8744 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8746 # clean-up after ourselves
8747 rm -f ./findhome.java ./findhome.class
8749 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8753 # now check if $JAVA_HOME is really valid
8754 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8755 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8756 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8757 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8758 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8759 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8760 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8761 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8764 PathFormat "$JAVA_HOME"
8765 JAVA_HOME="$formatted_path"
8768 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8771 AC_MSG_CHECKING([for JAWT lib])
8772 if test "$_os" = WINNT; then
8773 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8778 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8779 JAVA_ARCH=$my_java_arch
8794 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8795 JAVA_ARCH=$my_java_arch
8798 my_java_arch=sparcv9
8804 my_java_arch=$host_cpu
8807 # This is where JDK9 puts the library
8808 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8809 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8811 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8813 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8815 AC_MSG_RESULT([$JAWTLIB])
8819 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8823 JAVAINC="-I$JAVA_HOME/include"
8824 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8825 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8829 JAVAINC="-I$JAVA_HOME/include/win32"
8830 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8834 if test -d "$JAVA_HOME/include/darwin"; then
8835 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8837 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8842 JAVAINC="-I$JAVA_HOME/include"
8843 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8847 JAVAINC="-I$JAVA_HOME/include"
8848 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8849 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8850 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8851 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8855 JAVAINC="-I$JAVA_HOME/include"
8856 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8857 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8861 JAVAINC="-I$JAVA_HOME/include"
8862 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8863 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8867 JAVAINC="-I$JAVA_HOME/include"
8868 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8869 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8873 JAVAINC="-I$JAVA_HOME/include"
8874 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8875 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8879 JAVAINC="-I$JAVA_HOME/include"
8880 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8881 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8885 SOLARINC="$SOLARINC $JAVAINC"
8887 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8888 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8889 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8891 JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
8894 AC_SUBST(JAVACFLAGS)
8895 AC_SUBST(JAVACOMPILER)
8896 AC_SUBST(JAVAINTERPRETER)
8897 AC_SUBST(JAVAIFLAGS)
8898 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8899 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8901 AC_SUBST(JAVA_HOME_FOR_BUILD)
8903 AC_SUBST(JDK_FOR_BUILD)
8904 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
8905 AC_SUBST(JAVA_SOURCE_VER)
8906 AC_SUBST(JAVA_TARGET_VER)
8909 dnl ===================================================================
8910 dnl Export file validation
8911 dnl ===================================================================
8912 AC_MSG_CHECKING([whether to enable export file validation])
8913 if test "$with_export_validation" != "no"; then
8914 if test -z "$ENABLE_JAVA"; then
8915 if test "$with_export_validation" = "yes"; then
8916 AC_MSG_ERROR([requested, but Java is disabled])
8918 AC_MSG_RESULT([no, as Java is disabled])
8920 elif ! test -d "${SRC_ROOT}/schema"; then
8921 if test "$with_export_validation" = "yes"; then
8922 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8924 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8927 AC_MSG_RESULT([yes])
8928 AC_DEFINE(HAVE_EXPORT_VALIDATION)
8930 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8931 if test -z "$ODFVALIDATOR"; then
8932 # remember to download the ODF toolkit with validator later
8933 AC_MSG_NOTICE([no odfvalidator found, will download it])
8934 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8935 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8937 # and fetch name of odfvalidator jar name from download.lst
8938 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8939 AC_SUBST(ODFVALIDATOR_JAR)
8941 if test -z "$ODFVALIDATOR_JAR"; then
8942 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
8945 if test "$build_os" = "cygwin"; then
8946 # In case of Cygwin it will be executed from Windows,
8947 # so we need to run bash and absolute path to validator
8948 # so instead of "odfvalidator" it will be
8949 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8950 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
8952 ODFVALIDATOR="sh $ODFVALIDATOR"
8954 AC_SUBST(ODFVALIDATOR)
8957 AC_PATH_PROGS(OFFICEOTRON, officeotron)
8958 if test -z "$OFFICEOTRON"; then
8959 # remember to download the officeotron with validator later
8960 AC_MSG_NOTICE([no officeotron found, will download it])
8961 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
8962 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
8964 # and fetch name of officeotron jar name from download.lst
8965 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
8966 AC_SUBST(OFFICEOTRON_JAR)
8968 if test -z "$OFFICEOTRON_JAR"; then
8969 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
8972 # check version of existing officeotron
8973 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
8974 if test 0"$OFFICEOTRON_VER" -lt 704; then
8975 AC_MSG_ERROR([officeotron too old])
8978 if test "$build_os" = "cygwin"; then
8979 # In case of Cygwin it will be executed from Windows,
8980 # so we need to run bash and absolute path to validator
8981 # so instead of "odfvalidator" it will be
8982 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
8983 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
8985 OFFICEOTRON="sh $OFFICEOTRON"
8988 AC_SUBST(OFFICEOTRON)
8993 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
8994 if test "$with_bffvalidator" != "no"; then
8995 AC_DEFINE(HAVE_BFFVALIDATOR)
8997 if test "$with_export_validation" = "no"; then
8998 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9001 if test "$with_bffvalidator" = "yes"; then
9002 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9004 BFFVALIDATOR="$with_bffvalidator"
9007 if test "$build_os" = "cygwin"; then
9008 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9009 AC_MSG_RESULT($BFFVALIDATOR)
9011 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9013 elif test -n "$BFFVALIDATOR"; then
9014 # We are not in Cygwin but need to run Windows binary with wine
9015 AC_PATH_PROGS(WINE, wine)
9017 # so swap in a shell wrapper that converts paths transparently
9018 BFFVALIDATOR_EXE="$BFFVALIDATOR"
9019 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9020 AC_SUBST(BFFVALIDATOR_EXE)
9021 AC_MSG_RESULT($BFFVALIDATOR)
9023 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9025 AC_SUBST(BFFVALIDATOR)
9030 dnl ===================================================================
9031 dnl Check for C preprocessor to use
9032 dnl ===================================================================
9033 AC_MSG_CHECKING([which C preprocessor to use in idlc])
9035 if test -n "$with_idlc_cpp"; then
9036 AC_MSG_RESULT([$with_idlc_cpp])
9037 AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
9038 AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
9039 # ucpp will accept -v (to output version), warn about the others as unknown
9040 # and return 1 (due to -v)
9041 # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
9042 # and return 0 (due to --version ) if all options are supported
9043 $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
9044 if test $? -eq 0; then
9045 SYSTEM_UCPP_IS_GCC=TRUE
9046 AC_MSG_RESULT([yes])
9051 AC_MSG_RESULT([ucpp])
9052 AC_MSG_CHECKING([which ucpp to use])
9053 if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
9054 AC_MSG_RESULT([external])
9055 AC_PATH_PROG(SYSTEM_UCPP, ucpp)
9057 AC_MSG_RESULT([internal])
9058 BUILD_TYPE="$BUILD_TYPE UCPP"
9061 AC_SUBST(SYSTEM_UCPP)
9062 AC_SUBST(SYSTEM_UCPP_IS_GCC)
9064 dnl ===================================================================
9065 dnl Check for epm (not needed for Windows)
9066 dnl ===================================================================
9067 AC_MSG_CHECKING([whether to enable EPM for packing])
9068 if test "$enable_epm" = "yes"; then
9069 AC_MSG_RESULT([yes])
9070 if test "$_os" != "WINNT"; then
9071 if test $_os = Darwin; then
9073 elif test -n "$with_epm"; then
9076 AC_PATH_PROG(EPM, epm, no)
9078 if test "$EPM" = "no" -o "$EPM" = "internal"; then
9079 AC_MSG_NOTICE([EPM will be built.])
9080 BUILD_TYPE="$BUILD_TYPE EPM"
9081 EPM=${WORKDIR}/UnpackedTarball/epm/epm
9083 # Gentoo has some epm which is something different...
9084 AC_MSG_CHECKING([whether the found epm is the right epm])
9085 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9086 AC_MSG_RESULT([yes])
9088 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9090 AC_MSG_CHECKING([epm version])
9091 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9092 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9093 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9094 AC_MSG_RESULT([OK, >= 3.7])
9096 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9097 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9102 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9103 AC_MSG_CHECKING([for rpm])
9104 for a in "$RPM" rpmbuild rpm; do
9105 $a --usage >/dev/null 2> /dev/null
9106 if test $? -eq 0; then
9110 $a --version >/dev/null 2> /dev/null
9111 if test $? -eq 0; then
9117 if test -z "$RPM"; then
9118 AC_MSG_ERROR([not found])
9119 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9120 RPM_PATH=`which $RPM`
9121 AC_MSG_RESULT([$RPM_PATH])
9122 SCPDEFS="$SCPDEFS -DWITH_RPM"
9124 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9127 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9128 AC_PATH_PROG(DPKG, dpkg, no)
9129 if test "$DPKG" = "no"; then
9130 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9133 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9134 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9135 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9136 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9137 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9138 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9139 AC_MSG_RESULT([yes])
9142 if echo "$PKGFORMAT" | $GREP -q rpm; then
9144 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9145 add_warning "the rpms will need to be installed with --nodeps"
9149 AC_MSG_WARN([the ${_pt}s will not be relocatable])
9150 add_warning "the ${_pt}s will not be relocatable"
9151 AC_MSG_WARN([if you want to make sure installation without --nodeps and
9152 relocation will work, you need to patch your epm with the
9153 patch in epm/epm-3.7.patch or build with
9154 --with-epm=internal which will build a suitable epm])
9159 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9160 AC_PATH_PROG(PKGMK, pkgmk, no)
9161 if test "$PKGMK" = "no"; then
9162 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9169 for i in $PKGFORMAT; do
9171 aix | bsd | deb | pkg | rpm | native | portable)
9173 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9183 if test "$enable_lotuswordpro" = "yes"; then
9186 AC_SUBST(ENABLE_LWP)
9188 dnl ===================================================================
9189 dnl Check for building ODK
9190 dnl ===================================================================
9191 AC_MSG_CHECKING([whether to build the ODK])
9192 if test "$enable_odk" = yes; then
9193 if test "$DISABLE_DYNLOADING" = TRUE; then
9194 AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9196 AC_MSG_RESULT([yes])
9197 BUILD_TYPE="$BUILD_TYPE ODK"
9202 if test "$enable_odk" != yes; then
9205 if test "$with_doxygen" = no; then
9206 AC_MSG_CHECKING([for doxygen])
9210 if test "$with_doxygen" = yes; then
9211 AC_PATH_PROG([DOXYGEN], [doxygen])
9212 if test -z "$DOXYGEN"; then
9213 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9215 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9216 if ! dot -V 2>/dev/null; then
9217 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9221 AC_MSG_CHECKING([for doxygen])
9222 DOXYGEN=$with_doxygen
9223 AC_MSG_RESULT([$DOXYGEN])
9225 if test -n "$DOXYGEN"; then
9226 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9227 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9228 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9229 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9236 dnl ==================================================================
9238 dnl ==================================================================
9239 AC_MSG_CHECKING([whether to enable fuzzers])
9240 if test "$enable_fuzzers" != yes; then
9243 if test -z $LIB_FUZZING_ENGINE; then
9244 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9246 AC_MSG_RESULT([yes])
9247 ENABLE_FUZZERS="TRUE"
9248 AC_DEFINE([ENABLE_FUZZERS],1)
9249 AC_DEFINE([VCL_FLOAT_DEVICE_PIXEL],1)
9250 BUILD_TYPE="$BUILD_TYPE FUZZERS"
9252 AC_SUBST(LIB_FUZZING_ENGINE)
9254 dnl ===================================================================
9255 dnl Check for system zlib
9256 dnl ===================================================================
9257 if test "$with_system_zlib" = "auto"; then
9260 with_system_zlib="$with_system_libs"
9263 if test "$enable_fuzzers" != "yes"; then
9264 with_system_zlib=yes
9272 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9273 dnl and has no pkg-config for it at least on some tinderboxes,
9274 dnl so leaving that out for now
9275 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9276 AC_MSG_CHECKING([which zlib to use])
9277 if test "$with_system_zlib" = "yes"; then
9278 AC_MSG_RESULT([external])
9280 AC_CHECK_HEADER(zlib.h, [],
9281 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9282 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9283 [AC_MSG_ERROR(zlib not found or functional)], [])
9285 AC_MSG_RESULT([internal])
9287 BUILD_TYPE="$BUILD_TYPE ZLIB"
9288 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9289 if test "$COM" = "MSC"; then
9290 ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9292 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9295 AC_SUBST(ZLIB_CFLAGS)
9297 AC_SUBST(SYSTEM_ZLIB)
9299 dnl ===================================================================
9300 dnl Check for system jpeg
9301 dnl ===================================================================
9302 AC_MSG_CHECKING([which libjpeg to use])
9303 if test "$with_system_jpeg" = "yes"; then
9304 AC_MSG_RESULT([external])
9306 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9307 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9308 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9309 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9312 AC_MSG_RESULT([internal, libjpeg-turbo])
9313 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9316 x86_64 | amd64 | i*86 | x86 | ia32)
9317 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9318 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9319 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9320 NASM="$LODE_HOME/opt/bin/nasm"
9321 elif test -x "/opt/lo/bin/nasm"; then
9322 NASM="/opt/lo/bin/nasm"
9326 if test -n "$NASM"; then
9327 AC_MSG_CHECKING([for object file format of host system])
9329 cygwin* | mingw* | pw32* | wsl*)
9339 msdosdjgpp* | go32*)
9342 os2-emx*) # not tested
9343 objfmt='MSOMF' # obj
9345 linux*coff* | linux*oldld*)
9361 kfreebsd* | freebsd* | netbsd* | openbsd*)
9362 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9375 solaris* | sunos* | sysv* | sco*)
9385 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9400 AC_MSG_RESULT([$objfmt])
9401 if test "$objfmt" = 'ELF ?'; then
9403 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9406 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9408 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9409 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9410 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9411 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9412 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9413 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9414 ELF) NAFLAGS='-felf -DELF -DPIC';;
9415 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9416 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9417 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9418 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9420 AC_MSG_RESULT([$NAFLAGS])
9422 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9423 cat > conftest.asm << EOF
9424 [%line __oline__ "configure"
9432 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9433 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9436 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9437 cat conftest.asm >&AS_MESSAGE_LOG_FD
9440 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9446 if test -z "$NASM"; then
9448 ****************************************************************************
9449 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9453 if test "$build_os" = "cygwin"; then
9455 install a pre-compiled binary for Win32
9457 mkdir -p /opt/lo/bin
9459 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9462 or get and install one from http://www.nasm.us/
9464 Then re-run autogen.sh
9466 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9467 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9472 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9476 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9477 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9485 AC_SUBST(LIBJPEG_CFLAGS)
9486 AC_SUBST(LIBJPEG_LIBS)
9487 AC_SUBST(SYSTEM_LIBJPEG)
9489 dnl ===================================================================
9490 dnl Check for system clucene
9491 dnl ===================================================================
9492 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9493 if test "$SYSTEM_CLUCENE" = TRUE; then
9495 save_CXXFLAGS=$CXXFLAGS
9496 save_CPPFLAGS=$CPPFLAGS
9497 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9498 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9499 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9500 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9501 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9502 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9503 CXXFLAGS=$save_CXXFLAGS
9504 CPPFLAGS=$save_CPPFLAGS
9506 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9509 dnl ===================================================================
9510 dnl Check for system expat
9511 dnl ===================================================================
9512 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9514 dnl ===================================================================
9515 dnl Check for system xmlsec
9516 dnl ===================================================================
9517 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9519 libo_CHECK_SYSTEM_MODULE([eot],[LIBEOT],[libeot >= 0.01],disabled)
9521 dnl ===================================================================
9522 dnl Check for DLP libs
9523 dnl ===================================================================
9524 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9525 AS_IF([test "$COM" = "MSC"],
9526 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9527 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9529 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9530 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9532 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9534 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9536 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9537 AS_IF([test "$COM" = "MSC"],
9538 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9539 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9541 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9542 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9544 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9546 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9547 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9549 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9551 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9553 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9555 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9556 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9558 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9559 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9561 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9563 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9564 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9566 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9568 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9570 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9572 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9574 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9575 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9577 dnl ===================================================================
9578 dnl Check for system lcms2
9579 dnl ===================================================================
9580 if test "$with_system_lcms2" != "yes"; then
9583 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9584 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9585 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9586 if test "$GCC" = "yes"; then
9587 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9589 if test "$COM" = "MSC"; then # override the above
9590 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9593 dnl ===================================================================
9594 dnl Check for system cppunit
9595 dnl ===================================================================
9596 if test "$_os" != "Android" ; then
9597 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9600 dnl ===================================================================
9601 dnl Check whether freetype is available
9603 dnl FreeType has 3 different kinds of versions
9604 dnl * release, like 2.4.10
9605 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9607 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9610 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9611 dnl ===================================================================
9612 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9613 if test "x$ac_config_site_64bit_host" = xYES; then
9614 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9616 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9618 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9620 # ===================================================================
9621 # Check for system libxslt
9622 # to prevent incompatibilities between internal libxml2 and external libxslt,
9623 # or vice versa, use with_system_libxml here
9624 # ===================================================================
9625 if test "$with_system_libxml" = "auto"; then
9628 with_system_libxml="$with_system_libs"
9631 with_system_libxml=no
9634 if test "$enable_fuzzers" != "yes"; then
9635 with_system_libxml=yes
9637 with_system_libxml=no
9643 AC_MSG_CHECKING([which libxslt to use])
9644 if test "$with_system_libxml" = "yes"; then
9645 AC_MSG_RESULT([external])
9647 if test "$_os" = "Darwin"; then
9648 dnl make sure to use SDK path
9649 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9650 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9652 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9653 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9655 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9656 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9657 FilterLibs "${LIBXSLT_LIBS}"
9658 LIBXSLT_LIBS="${filteredlibs}"
9659 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9660 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9661 FilterLibs "${LIBEXSLT_LIBS}"
9662 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9665 dnl Check for xsltproc
9666 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9667 if test "$XSLTPROC" = "no"; then
9668 AC_MSG_ERROR([xsltproc is required])
9671 AC_MSG_RESULT([internal])
9673 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9675 AC_SUBST(SYSTEM_LIBXSLT)
9676 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9677 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9679 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9681 AC_SUBST(LIBEXSLT_CFLAGS)
9682 AC_SUBST(LIBEXSLT_LIBS)
9683 AC_SUBST(LIBXSLT_CFLAGS)
9684 AC_SUBST(LIBXSLT_LIBS)
9687 # ===================================================================
9688 # Check for system libxml
9689 # ===================================================================
9690 AC_MSG_CHECKING([which libxml to use])
9691 if test "$with_system_libxml" = "yes"; then
9692 AC_MSG_RESULT([external])
9694 if test "$_os" = "Darwin"; then
9695 dnl make sure to use SDK path
9696 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9698 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9699 elif test $_os = iOS; then
9700 dnl make sure to use SDK path
9701 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9702 LIBXML_CFLAGS="-I$usr/include/libxml2"
9703 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9705 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9706 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9707 FilterLibs "${LIBXML_LIBS}"
9708 LIBXML_LIBS="${filteredlibs}"
9711 dnl Check for xmllint
9712 AC_PATH_PROG(XMLLINT, xmllint, no)
9713 if test "$XMLLINT" = "no"; then
9714 AC_MSG_ERROR([xmllint is required])
9717 AC_MSG_RESULT([internal])
9719 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9720 if test "$COM" = "MSC"; then
9721 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9723 if test "$COM" = "MSC"; then
9724 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9726 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9727 if test "$DISABLE_DYNLOADING" = TRUE; then
9728 LIBXML_LIBS="$LIBXML_LIBS -lm"
9731 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9733 AC_SUBST(SYSTEM_LIBXML)
9734 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9735 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9737 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9738 AC_SUBST(LIBXML_CFLAGS)
9739 AC_SUBST(LIBXML_LIBS)
9742 # =====================================================================
9743 # Checking for a Python interpreter with version >= 3.3.
9744 # Optionally user can pass an option to configure, i. e.
9745 # ./configure PYTHON=/usr/bin/python
9746 # =====================================================================
9747 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9748 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9749 # unless PYTHON is defined as above which allows 'system'
9750 enable_python=internal
9752 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9753 if test -n "$PYTHON"; then
9754 PYTHON_FOR_BUILD=$PYTHON
9756 # This allows a lack of system python with no error, we use internal one in that case.
9757 AM_PATH_PYTHON([3.3],, [:])
9758 # Clean PYTHON_VERSION checked below if cross-compiling
9760 if test "$PYTHON" != ":"; then
9761 PYTHON_FOR_BUILD=$PYTHON
9766 # Checks for Python to use for Pyuno
9767 AC_MSG_CHECKING([which Python to use for Pyuno])
9768 case "$enable_python" in
9770 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9771 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9772 # requirement from the choice whether to include Python stuff in the installer, but why
9774 AC_MSG_ERROR([Python is required at build time.])
9777 AC_MSG_RESULT([none])
9780 if test "$DISABLE_SCRIPTING" = TRUE; then
9781 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9782 AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9784 AC_MSG_RESULT([none, overridden by --disable-scripting])
9786 elif test $build_os = cygwin; then
9787 dnl When building on Windows we don't attempt to use any installed
9788 dnl "system" Python.
9789 AC_MSG_RESULT([fully internal])
9790 enable_python=internal
9791 elif test "$cross_compiling" = yes; then
9792 AC_MSG_RESULT([system])
9793 enable_python=system
9795 # Unset variables set by the above AM_PATH_PYTHON so that
9796 # we actually do check anew.
9798 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
9799 AM_PATH_PYTHON([3.3],, [:])
9800 AC_MSG_CHECKING([which Python to use for Pyuno])
9801 if test "$PYTHON" = ":"; then
9802 if test -z "$PYTHON_FOR_BUILD"; then
9803 AC_MSG_RESULT([fully internal])
9805 AC_MSG_RESULT([internal])
9807 enable_python=internal
9809 AC_MSG_RESULT([system])
9810 enable_python=system
9815 AC_MSG_RESULT([internal])
9818 AC_MSG_RESULT([fully internal])
9819 enable_python=internal
9822 AC_MSG_RESULT([system])
9823 if test "$_os" = Darwin -a -z "$PYTHON"; then
9824 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9828 AC_MSG_ERROR([Incorrect --enable-python option])
9832 if test $enable_python != no; then
9833 BUILD_TYPE="$BUILD_TYPE PYUNO"
9836 if test $enable_python = system; then
9837 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9838 # Fallback: Accept these in the environment, or as set above
9841 elif test "$cross_compiling" != yes; then
9842 # Unset variables set by the above AM_PATH_PYTHON so that
9843 # we actually do check anew.
9844 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
9845 # This causes an error if no python command is found
9846 AM_PATH_PYTHON([3.3])
9847 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9848 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9849 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9850 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9851 if test -z "$PKG_CONFIG"; then
9852 PYTHON_CFLAGS="-I$python_include"
9853 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9854 elif $PKG_CONFIG --exists python-$python_version-embed; then
9855 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9856 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9857 elif $PKG_CONFIG --exists python-$python_version; then
9858 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9859 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9861 PYTHON_CFLAGS="-I$python_include"
9862 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9864 FilterLibs "${PYTHON_LIBS}"
9865 PYTHON_LIBS="${filteredlibs}"
9867 dnl How to find out the cross-compilation Python installation path?
9868 AC_MSG_CHECKING([for python version])
9869 AS_IF([test -n "$PYTHON_VERSION"],
9870 [AC_MSG_RESULT([$PYTHON_VERSION])],
9871 [AC_MSG_RESULT([not found])
9872 AC_MSG_ERROR([no usable python found])])
9873 test -n "$PYTHON_CFLAGS" && break
9876 dnl Check if the headers really work
9877 save_CPPFLAGS="$CPPFLAGS"
9878 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9879 AC_CHECK_HEADER(Python.h)
9880 CPPFLAGS="$save_CPPFLAGS"
9882 # let the PYTHON_FOR_BUILD match the same python installation that
9883 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9884 # better for PythonTests.
9885 PYTHON_FOR_BUILD=$PYTHON
9888 if test "$with_lxml" != no; then
9889 if test -z "$PYTHON_FOR_BUILD"; then
9892 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9895 if test "$cross_compiling" != yes ; then
9896 BUILD_TYPE="$BUILD_TYPE LXML"
9901 AC_MSG_CHECKING([for python lxml])
9902 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9903 AC_MSG_RESULT([yes])
9907 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9910 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9911 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9912 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9914 BUILD_TYPE="$BUILD_TYPE LXML"
9915 AC_MSG_RESULT([no, using internal lxml])
9918 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9926 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
9928 PYTHON_VERSION_MAJOR=3
9929 PYTHON_VERSION_MINOR=8
9930 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.12
9931 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9932 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9934 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9936 # Embedded Python dies without Home set
9937 if test "$HOME" = ""; then
9942 dnl By now enable_python should be "system", "internal" or "no"
9943 case $enable_python in
9947 if test "x$ac_cv_header_Python_h" != "xyes"; then
9948 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9952 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9953 AC_MSG_CHECKING([for correct python library version])
9954 AC_RUN_IFELSE([AC_LANG_SOURCE([[
9957 int main(int argc, char **argv) {
9958 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
9961 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
9964 dnl FIXME Check if the Python library can be linked with, too?
9968 BUILD_TYPE="$BUILD_TYPE PYTHON"
9969 if test "$OS" = LINUX -o "$OS" = WNT ; then
9970 BUILD_TYPE="$BUILD_TYPE LIBFFI"
9978 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
9982 AC_SUBST(DISABLE_PYTHON)
9983 AC_SUBST(SYSTEM_PYTHON)
9984 AC_SUBST(PYTHON_CFLAGS)
9985 AC_SUBST(PYTHON_FOR_BUILD)
9986 AC_SUBST(PYTHON_LIBS)
9987 AC_SUBST(PYTHON_VERSION)
9988 AC_SUBST(PYTHON_VERSION_MAJOR)
9989 AC_SUBST(PYTHON_VERSION_MINOR)
9991 AC_MSG_CHECKING([whether to build LibreLogo])
9992 case "$enable_python" in
9994 AC_MSG_RESULT([no; Python disabled])
9997 if test "${enable_librelogo}" = "no"; then
10000 AC_MSG_RESULT([yes])
10001 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10002 AC_DEFINE([ENABLE_LIBRELOGO],1)
10006 AC_SUBST(ENABLE_LIBRELOGO)
10012 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10013 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10014 ENABLE_MARIADBC=TRUE
10015 AC_MSG_RESULT([yes])
10016 BUILD_TYPE="$BUILD_TYPE MARIADBC"
10018 AC_MSG_RESULT([no])
10020 AC_SUBST(ENABLE_MARIADBC)
10021 AC_SUBST(MARIADBC_MAJOR)
10022 AC_SUBST(MARIADBC_MINOR)
10023 AC_SUBST(MARIADBC_MICRO)
10025 if test "$ENABLE_MARIADBC" = "TRUE"; then
10026 dnl ===================================================================
10027 dnl Check for system MariaDB
10028 dnl ===================================================================
10029 AC_MSG_CHECKING([which MariaDB to use])
10030 if test "$with_system_mariadb" = "yes"; then
10031 AC_MSG_RESULT([external])
10032 SYSTEM_MARIADB_CONNECTOR_C=TRUE
10033 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10034 if test -z "$MARIADBCONFIG"; then
10035 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10036 if test -z "$MARIADBCONFIG"; then
10037 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10038 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10041 AC_MSG_CHECKING([MariaDB version])
10042 MARIADB_VERSION=`$MARIADBCONFIG --version`
10043 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10044 if test "$MARIADB_MAJOR" -ge "5"; then
10045 AC_MSG_RESULT([OK])
10047 AC_MSG_ERROR([too old, use 5.0.x or later])
10049 AC_MSG_CHECKING([for MariaDB Client library])
10050 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10051 if test "$COM_IS_CLANG" = TRUE; then
10052 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10054 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10055 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10056 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10058 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10059 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10060 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10061 | sed -e 's|/lib64/|/lib/|')
10063 FilterLibs "${MARIADB_LIBS}"
10064 MARIADB_LIBS="${filteredlibs}"
10065 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10066 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10067 if test "$enable_bundle_mariadb" = "yes"; then
10068 AC_MSG_RESULT([yes])
10069 BUNDLE_MARIADB_CONNECTOR_C=TRUE
10070 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10072 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10074 /g' | grep -E '(mysqlclient|mariadb)')
10075 if test "$_os" = "Darwin"; then
10076 LIBMARIADB=${LIBMARIADB}.dylib
10077 elif test "$_os" = "WINNT"; then
10078 LIBMARIADB=${LIBMARIADB}.dll
10080 LIBMARIADB=${LIBMARIADB}.so
10082 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10083 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10084 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10085 AC_MSG_RESULT([found.])
10086 PathFormat "$LIBMARIADB_PATH"
10087 LIBMARIADB_PATH="$formatted_path"
10089 AC_MSG_ERROR([not found.])
10092 AC_MSG_RESULT([no])
10093 BUNDLE_MARIADB_CONNECTOR_C=
10096 AC_MSG_RESULT([internal])
10097 SYSTEM_MARIADB_CONNECTOR_C=
10098 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10099 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10100 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10103 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10104 AC_SUBST(MARIADB_CFLAGS)
10105 AC_SUBST(MARIADB_LIBS)
10106 AC_SUBST(LIBMARIADB)
10107 AC_SUBST(LIBMARIADB_PATH)
10108 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10111 dnl ===================================================================
10112 dnl Check for system hsqldb
10113 dnl ===================================================================
10114 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10115 AC_MSG_CHECKING([which hsqldb to use])
10116 if test "$with_system_hsqldb" = "yes"; then
10117 AC_MSG_RESULT([external])
10119 if test -z $HSQLDB_JAR; then
10120 HSQLDB_JAR=/usr/share/java/hsqldb.jar
10122 if ! test -f $HSQLDB_JAR; then
10123 AC_MSG_ERROR(hsqldb.jar not found.)
10125 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10129 my $file = "$ENV{'HSQLDB_JAR'}";
10130 my $zip = Archive::Zip->new( $file );
10131 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10132 if ( $mf =~ m/Specification-Version: 1.8.*/ )
10134 push @l, split(/\n/, $mf);
10135 foreach my $line (@l)
10137 if ($line =~ m/Specification-Version:/)
10139 ($t, $version) = split (/:/,$line);
10140 $version =~ s/^\s//;
10141 ($a, $b, $c, $d) = split (/\./,$version);
10142 if ($c == "0" && $d > "8")
10157 AC_MSG_RESULT([yes])
10159 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10162 AC_MSG_RESULT([internal])
10164 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10168 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10169 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10172 AC_SUBST(SYSTEM_HSQLDB)
10173 AC_SUBST(HSQLDB_JAR)
10175 dnl ===================================================================
10176 dnl Check for PostgreSQL stuff
10177 dnl ===================================================================
10178 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10179 if test "x$enable_postgresql_sdbc" != "xno"; then
10180 AC_MSG_RESULT([yes])
10181 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10183 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10184 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10186 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10187 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10190 postgres_interface=""
10191 if test "$with_system_postgresql" = "yes"; then
10192 postgres_interface="external PostgreSQL"
10193 SYSTEM_POSTGRESQL=TRUE
10194 if test "$_os" = Darwin; then
10196 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10197 pg_supp_path="$P_SEP$d$pg_supp_path"
10200 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10201 if test -n "$PGCONFIG"; then
10202 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10203 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10205 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10206 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10207 POSTGRESQL_LIB=$POSTGRESQL_LIBS
10209 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10212 FilterLibs "${POSTGRESQL_LIB}"
10213 POSTGRESQL_LIB="${filteredlibs}"
10215 # if/when anything else than PostgreSQL uses Kerberos,
10216 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10221 # macOS has system MIT Kerberos 5 since 10.4
10222 if test "$with_krb5" != "no"; then
10225 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10226 # that the libraries where these functions are located on macOS will change, is it?
10227 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10228 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10231 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10232 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10233 KRB5_LIBS="$KRB5_LIBS $LIBS"
10236 if test "$with_gssapi" != "no"; then
10239 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10240 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10246 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10247 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10250 Linux|GNU|*BSD|DragonFly)
10251 if test "$with_krb5" != "no"; then
10254 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10255 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10258 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10259 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10260 KRB5_LIBS="$KRB5_LIBS $LIBS"
10263 if test "$with_gssapi" != "no"; then
10266 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10267 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10273 if test "$with_krb5" = "yes"; then
10276 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10277 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10280 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10281 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10282 KRB5_LIBS="$KRB5_LIBS $LIBS"
10285 if test "$with_gssapi" = "yes"; then
10288 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10289 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10295 if test -n "$with_libpq_path"; then
10296 SYSTEM_POSTGRESQL=TRUE
10297 postgres_interface="external libpq"
10298 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10299 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10302 postgres_interface="internal"
10304 POSTGRESQL_INC="%OVERRIDE_ME%"
10305 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10309 AC_MSG_CHECKING([PostgreSQL C interface])
10310 AC_MSG_RESULT([$postgres_interface])
10312 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10313 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10314 save_CFLAGS=$CFLAGS
10315 save_CPPFLAGS=$CPPFLAGS
10317 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10318 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10319 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10320 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10321 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10322 CFLAGS=$save_CFLAGS
10323 CPPFLAGS=$save_CPPFLAGS
10326 BUILD_POSTGRESQL_SDBC=TRUE
10328 AC_MSG_RESULT([no])
10330 AC_SUBST(WITH_KRB5)
10331 AC_SUBST(WITH_GSSAPI)
10332 AC_SUBST(GSSAPI_LIBS)
10333 AC_SUBST(KRB5_LIBS)
10334 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10335 AC_SUBST(SYSTEM_POSTGRESQL)
10336 AC_SUBST(POSTGRESQL_INC)
10337 AC_SUBST(POSTGRESQL_LIB)
10339 dnl ===================================================================
10340 dnl Check for Firebird stuff
10341 dnl ===================================================================
10342 ENABLE_FIREBIRD_SDBC=
10343 if test "$enable_firebird_sdbc" = "yes" ; then
10344 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10346 dnl ===================================================================
10347 dnl Check for system Firebird
10348 dnl ===================================================================
10349 AC_MSG_CHECKING([which Firebird to use])
10350 if test "$with_system_firebird" = "yes"; then
10351 AC_MSG_RESULT([external])
10352 SYSTEM_FIREBIRD=TRUE
10353 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10354 if test -z "$FIREBIRDCONFIG"; then
10355 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10356 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10357 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10359 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10361 AC_MSG_NOTICE([fb_config found])
10362 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10363 AC_MSG_CHECKING([for Firebird Client library])
10364 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10365 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10366 FilterLibs "${FIREBIRD_LIBS}"
10367 FIREBIRD_LIBS="${filteredlibs}"
10369 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10370 AC_MSG_CHECKING([Firebird version])
10371 if test -n "${FIREBIRD_VERSION}"; then
10372 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10373 if test "$FIREBIRD_MAJOR" -ge "3"; then
10374 AC_MSG_RESULT([OK])
10376 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10379 save_CFLAGS="${CFLAGS}"
10380 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10381 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10382 #if defined(FB_API_VER) && FB_API_VER == 30
10383 int fb_api_is_30(void) { return 0; }
10385 #error "Wrong Firebird API version"
10386 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10387 CFLAGS="$save_CFLAGS"
10389 ENABLE_FIREBIRD_SDBC=TRUE
10390 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10391 elif test "$enable_database_connectivity" = no; then
10392 AC_MSG_RESULT([none])
10393 elif test "$cross_compiling" = "yes"; then
10394 AC_MSG_RESULT([none])
10396 dnl Embedded Firebird has version 3.0
10397 dnl We need libatomic_ops for any non X86/X64 system
10398 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10399 dnl ===================================================================
10400 dnl Check for system libatomic_ops
10401 dnl ===================================================================
10402 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10403 if test "$with_system_libatomic_ops" = "yes"; then
10404 SYSTEM_LIBATOMIC_OPS=TRUE
10405 AC_CHECK_HEADERS(atomic_ops.h, [],
10406 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10408 SYSTEM_LIBATOMIC_OPS=
10409 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10410 LIBATOMIC_OPS_LIBS="-latomic_ops"
10411 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10415 AC_MSG_RESULT([internal])
10417 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10418 FIREBIRD_LIBS="-lfbclient"
10420 if test "$with_system_libtommath" = "yes"; then
10421 SYSTEM_LIBTOMMATH=TRUE
10422 dnl check for tommath presence
10424 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10425 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10429 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10430 LIBTOMMATH_LIBS="-ltommath"
10431 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10434 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10435 ENABLE_FIREBIRD_SDBC=TRUE
10436 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10439 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10440 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10441 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10442 AC_SUBST(LIBATOMIC_OPS_LIBS)
10443 AC_SUBST(SYSTEM_FIREBIRD)
10444 AC_SUBST(FIREBIRD_CFLAGS)
10445 AC_SUBST(FIREBIRD_LIBS)
10446 AC_SUBST(SYSTEM_LIBTOMMATH)
10447 AC_SUBST(LIBTOMMATH_CFLAGS)
10448 AC_SUBST(LIBTOMMATH_LIBS)
10450 dnl ===================================================================
10451 dnl Check for system curl
10452 dnl ===================================================================
10453 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10455 dnl ===================================================================
10456 dnl Check for system boost
10457 dnl ===================================================================
10458 AC_MSG_CHECKING([which boost to use])
10459 if test "$with_system_boost" = "yes"; then
10460 AC_MSG_RESULT([external])
10462 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10464 AX_BOOST_FILESYSTEM
10467 AC_LANG_PUSH([C++])
10468 save_CXXFLAGS=$CXXFLAGS
10469 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10470 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10471 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10472 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10473 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10474 CXXFLAGS=$save_CXXFLAGS
10476 # this is in m4/ax_boost_base.m4
10477 FilterLibs "${BOOST_LDFLAGS}"
10478 BOOST_LDFLAGS="${filteredlibs}"
10480 AC_MSG_RESULT([internal])
10481 BUILD_TYPE="$BUILD_TYPE BOOST"
10483 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10484 # use warning-suppressing wrapper headers
10485 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10487 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10490 AC_SUBST(SYSTEM_BOOST)
10492 dnl ===================================================================
10493 dnl Check for system mdds
10494 dnl ===================================================================
10495 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10496 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.0 >= 2.0.0])
10498 dnl ===================================================================
10499 dnl Check for system cuckoo
10500 dnl ===================================================================
10501 AC_MSG_CHECKING([which cuckoo to use])
10502 if test "$with_system_cuckoo" = "yes"; then
10503 AC_MSG_RESULT([external])
10505 AC_LANG_PUSH([C++])
10506 AC_CHECK_HEADER([libcuckoo/cuckoohash_map.hh], [],
10507 [AC_MSG_ERROR([libcuckoo/cuckoohash_map.hh not found. install cuckoo])], [])
10510 AC_MSG_RESULT([internal])
10511 BUILD_TYPE="$BUILD_TYPE CUCKOO"
10514 AC_SUBST([SYSTEM_CUCKOO])
10516 dnl ===================================================================
10517 dnl Check for system dragonbox
10518 dnl ===================================================================
10519 AC_MSG_CHECKING([which dragonbox to use])
10520 if test "$with_system_dragonbox" = "yes"; then
10521 AC_MSG_RESULT([external])
10522 SYSTEM_DRAGONBOX=TRUE
10523 AC_LANG_PUSH([C++])
10524 save_CPPFLAGS=$CPPFLAGS
10525 # This is where upstream installs to, unfortunately no .pc or so...
10526 DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.0.0
10527 CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10528 AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10529 [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10531 CPPFLAGS=$save_CPPFLAGS
10533 AC_MSG_RESULT([internal])
10534 BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10537 AC_SUBST([SYSTEM_DRAGONBOX])
10538 AC_SUBST([DRAGONBOX_CFLAGS])
10540 dnl ===================================================================
10541 dnl Check for system libfixmath
10542 dnl ===================================================================
10543 AC_MSG_CHECKING([which libfixmath to use])
10544 if test "$with_system_libfixmath" = "yes"; then
10545 AC_MSG_RESULT([external])
10546 SYSTEM_LIBFIXMATH=TRUE
10547 AC_LANG_PUSH([C++])
10548 AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10549 [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10550 AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10553 AC_MSG_RESULT([internal])
10556 AC_SUBST([SYSTEM_LIBFIXMATH])
10558 dnl ===================================================================
10559 dnl Check for system glm
10560 dnl ===================================================================
10561 AC_MSG_CHECKING([which glm to use])
10562 if test "$with_system_glm" = "yes"; then
10563 AC_MSG_RESULT([external])
10565 AC_LANG_PUSH([C++])
10566 AC_CHECK_HEADER([glm/glm.hpp], [],
10567 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10570 AC_MSG_RESULT([internal])
10571 BUILD_TYPE="$BUILD_TYPE GLM"
10573 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10575 AC_SUBST([GLM_CFLAGS])
10576 AC_SUBST([SYSTEM_GLM])
10578 dnl ===================================================================
10579 dnl Check for system odbc
10580 dnl ===================================================================
10581 AC_MSG_CHECKING([which odbc headers to use])
10582 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
10583 AC_MSG_RESULT([external])
10584 SYSTEM_ODBC_HEADERS=TRUE
10586 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10587 save_CPPFLAGS=$CPPFLAGS
10589 PathFormat "$winsdktest"
10590 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"
10591 AC_CHECK_HEADER(sqlext.h, [],
10592 [AC_MSG_ERROR(odbc not found. install odbc)],
10593 [#include <windows.h>])
10594 CPPFLAGS=$save_CPPFLAGS
10596 AC_CHECK_HEADER(sqlext.h, [],
10597 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10599 elif test "$enable_database_connectivity" = no; then
10600 AC_MSG_RESULT([none])
10602 AC_MSG_RESULT([internal])
10603 SYSTEM_ODBC_HEADERS=
10605 AC_SUBST(SYSTEM_ODBC_HEADERS)
10607 dnl ===================================================================
10608 dnl Check for system NSS
10609 dnl ===================================================================
10610 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10611 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10612 AC_DEFINE(HAVE_FEATURE_NSS)
10614 elif test $_os != iOS ; then
10617 AC_SUBST(ENABLE_NSS)
10619 dnl ===================================================================
10620 dnl Enable LDAP support
10621 dnl ===================================================================
10623 if test "$test_openldap" = yes; then
10624 AC_MSG_CHECKING([whether to enable LDAP support])
10625 if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10626 AC_MSG_RESULT([yes])
10629 if test "$enable_ldap" != "yes"; then
10630 AC_MSG_RESULT([no])
10632 AC_MSG_RESULT([no (needs NSS or system openldap)])
10636 dnl ===================================================================
10637 dnl Check for system openldap
10638 dnl ===================================================================
10640 if test "$ENABLE_LDAP" = TRUE; then
10641 AC_MSG_CHECKING([which openldap library to use])
10642 if test "$with_system_openldap" = yes; then
10643 AC_MSG_RESULT([external])
10644 SYSTEM_OPENLDAP=TRUE
10645 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10646 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10647 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10649 AC_MSG_RESULT([internal])
10650 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10655 AC_SUBST(ENABLE_LDAP)
10656 AC_SUBST(SYSTEM_OPENLDAP)
10658 dnl ===================================================================
10659 dnl Check for TLS/SSL and cryptographic implementation to use
10660 dnl ===================================================================
10661 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10662 if test -n "$with_tls"; then
10665 AC_DEFINE(USE_TLS_OPENSSL)
10667 AC_MSG_RESULT([$TLS])
10669 if test "$enable_openssl" != "yes"; then
10670 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10673 # warn that OpenSSL has been selected but not all TLS code has this option
10674 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10675 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10678 AC_DEFINE(USE_TLS_NSS)
10680 AC_MSG_RESULT([$TLS])
10683 AC_MSG_RESULT([none])
10684 AC_MSG_WARN([Skipping TLS/SSL])
10688 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10690 nss - Mozilla's Network Security Services (NSS)
10695 # default to using NSS, it results in smaller oox lib
10696 AC_DEFINE(USE_TLS_NSS)
10698 AC_MSG_RESULT([$TLS])
10702 dnl ===================================================================
10703 dnl Check for system sane
10704 dnl ===================================================================
10705 AC_MSG_CHECKING([which sane header to use])
10706 if test "$with_system_sane" = "yes"; then
10707 AC_MSG_RESULT([external])
10708 AC_CHECK_HEADER(sane/sane.h, [],
10709 [AC_MSG_ERROR(sane not found. install sane)], [])
10711 AC_MSG_RESULT([internal])
10712 BUILD_TYPE="$BUILD_TYPE SANE"
10715 dnl ===================================================================
10716 dnl Check for system icu
10717 dnl ===================================================================
10720 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10721 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10722 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10723 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10724 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10725 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 4.6])
10726 if test "$SYSTEM_ICU" = TRUE; then
10727 AC_LANG_PUSH([C++])
10728 AC_MSG_CHECKING([for unicode/rbbi.h])
10729 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10732 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10733 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10734 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10736 if test "$ICU_MAJOR" -ge 50; then
10737 AC_MSG_NOTICE([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10741 if test "$CROSS_COMPILING" != TRUE; then
10742 # using the system icu tools can lead to version confusion, use the
10743 # ones from the build environment when cross-compiling
10744 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10745 if test -z "$SYSTEM_GENBRK"; then
10746 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10748 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10749 if test -z "$SYSTEM_GENCCODE"; then
10750 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10752 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10753 if test -z "$SYSTEM_GENCMN"; then
10754 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10756 if test "$ICU_MAJOR" -lt 49; then
10757 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10758 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10759 ICU_RECLASSIFIED_HEBREW_LETTER=
10763 if test "$ICU_MAJOR" -ge "59"; then
10764 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10765 # with -std=c++11 but not all external libraries can be built with that,
10766 # for those use a bit-compatible typedef uint16_t UChar; see
10767 # icu/source/common/unicode/umachine.h
10768 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10772 AC_SUBST(SYSTEM_GENBRK)
10773 AC_SUBST(SYSTEM_GENCCODE)
10774 AC_SUBST(SYSTEM_GENCMN)
10775 AC_SUBST(ICU_MAJOR)
10776 AC_SUBST(ICU_MINOR)
10777 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10778 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10779 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10780 AC_SUBST(ICU_UCHAR_TYPE)
10782 dnl ==================================================================
10784 dnl ==================================================================
10785 DEFAULT_CRASHDUMP_VALUE="true"
10786 AC_MSG_CHECKING([whether to enable breakpad])
10787 if test "$enable_breakpad" != yes; then
10788 AC_MSG_RESULT([no])
10790 AC_MSG_RESULT([yes])
10791 ENABLE_BREAKPAD="TRUE"
10792 AC_DEFINE(ENABLE_BREAKPAD)
10793 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10794 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10796 AC_MSG_CHECKING([for disable crash dump])
10797 if test "$enable_crashdump" = no; then
10798 DEFAULT_CRASHDUMP_VALUE="false"
10799 AC_MSG_RESULT([yes])
10801 AC_MSG_RESULT([no])
10804 AC_MSG_CHECKING([for crashreport config])
10805 if test "$with_symbol_config" = "no"; then
10806 BREAKPAD_SYMBOL_CONFIG="invalid"
10807 AC_MSG_RESULT([no])
10809 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10810 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10811 AC_MSG_RESULT([yes])
10813 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10815 AC_SUBST(ENABLE_BREAKPAD)
10816 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10818 dnl ===================================================================
10820 dnl ===================================================================
10821 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10822 if test "$with_system_orcus" != "yes"; then
10823 if test "$SYSTEM_BOOST" = "TRUE"; then
10824 dnl Link with Boost.System
10825 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10826 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10827 dnl in documentation has no effect.
10831 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10832 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10833 AC_SUBST([BOOST_SYSTEM_LIB])
10834 AC_SUBST(SYSTEM_LIBORCUS)
10836 dnl ===================================================================
10838 dnl ===================================================================
10840 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10841 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10842 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10844 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10845 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10846 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42])
10848 if test "$COM" = "MSC"; then # override the above
10849 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10850 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10853 if test "$with_system_harfbuzz" = "yes"; then
10854 if test "$with_system_graphite" = "no"; then
10855 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10857 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10859 save_CFLAGS="$CFLAGS"
10860 LIBS="$LIBS $HARFBUZZ_LIBS"
10861 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10862 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10864 CFLAGS="$save_CFLAGS"
10866 if test "$with_system_graphite" = "yes"; then
10867 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10871 if test "$USING_X11" = TRUE; then
10874 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10876 if test -z "$x_includes"; then
10877 x_includes="default_x_includes"
10879 if test -z "$x_libraries"; then
10880 x_libraries="default_x_libraries"
10882 CFLAGS="$CFLAGS $X_CFLAGS"
10883 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10884 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10886 x_includes="no_x_includes"
10887 x_libraries="no_x_libraries"
10890 if test "$USING_X11" = TRUE; then
10891 dnl ===================================================================
10892 dnl Check for extension headers
10893 dnl ===================================================================
10894 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10895 [#include <X11/extensions/shape.h>])
10897 # vcl needs ICE and SM
10898 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10899 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10900 [AC_MSG_ERROR(ICE library not found)])
10901 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10902 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10903 [AC_MSG_ERROR(SM library not found)])
10906 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10907 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10908 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10911 dnl ===================================================================
10912 dnl Check for system Xrender
10913 dnl ===================================================================
10914 AC_MSG_CHECKING([whether to use Xrender])
10915 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10916 AC_MSG_RESULT([yes])
10917 PKG_CHECK_MODULES(XRENDER, xrender)
10918 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10919 FilterLibs "${XRENDER_LIBS}"
10920 XRENDER_LIBS="${filteredlibs}"
10921 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10922 [AC_MSG_ERROR(libXrender not found or functional)], [])
10923 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10924 [AC_MSG_ERROR(Xrender not found. install X)], [])
10926 AC_MSG_RESULT([no])
10928 AC_SUBST(XRENDER_CFLAGS)
10929 AC_SUBST(XRENDER_LIBS)
10931 dnl ===================================================================
10932 dnl Check for XRandr
10933 dnl ===================================================================
10934 AC_MSG_CHECKING([whether to enable RandR support])
10935 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10936 AC_MSG_RESULT([yes])
10937 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10938 if test "$ENABLE_RANDR" != "TRUE"; then
10939 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10940 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10942 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10943 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10944 XRANDR_LIBS="-lXrandr "
10945 ENABLE_RANDR="TRUE"
10947 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10948 FilterLibs "${XRANDR_LIBS}"
10949 XRANDR_LIBS="${filteredlibs}"
10952 AC_MSG_RESULT([no])
10954 AC_SUBST(XRANDR_CFLAGS)
10955 AC_SUBST(XRANDR_LIBS)
10956 AC_SUBST(ENABLE_RANDR)
10958 if test -z "$with_webdav"; then
10959 with_webdav=$test_webdav
10962 AC_MSG_CHECKING([for WebDAV support])
10963 case "$with_webdav" in
10965 AC_MSG_RESULT([no])
10969 AC_MSG_RESULT([yes])
10970 # curl is already mandatory (almost) and checked elsewhere
10971 if test "$enable_curl" = "no"; then
10972 AC_MSG_ERROR(["--with-webdav conflicts with --disable-curl"])
10977 AC_SUBST(WITH_WEBDAV)
10979 dnl ===================================================================
10980 dnl Check for disabling cve_tests
10981 dnl ===================================================================
10982 AC_MSG_CHECKING([whether to execute CVE tests])
10983 # If not explicitly enabled or disabled, default
10984 if test -z "$enable_cve_tests"; then
10987 # Default cves off for Windows with its wild and wonderful
10988 # variety of AV software kicking in and panicking
10989 enable_cve_tests=no
10993 enable_cve_tests=yes
10997 if test "$enable_cve_tests" = "no"; then
10998 AC_MSG_RESULT([no])
10999 DISABLE_CVE_TESTS=TRUE
11000 AC_SUBST(DISABLE_CVE_TESTS)
11002 AC_MSG_RESULT([yes])
11005 dnl ===================================================================
11006 dnl Check for enabling chart XShape tests
11007 dnl ===================================================================
11008 AC_MSG_CHECKING([whether to execute chart XShape tests])
11009 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
11010 AC_MSG_RESULT([yes])
11011 ENABLE_CHART_TESTS=TRUE
11012 AC_SUBST(ENABLE_CHART_TESTS)
11014 AC_MSG_RESULT([no])
11017 dnl ===================================================================
11018 dnl Check for system openssl
11019 dnl ===================================================================
11021 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11022 if test "$enable_openssl" = "yes"; then
11023 AC_MSG_RESULT([no])
11024 ENABLE_OPENSSL=TRUE
11025 if test "$_os" = Darwin ; then
11026 # OpenSSL is deprecated when building for 10.7 or later.
11028 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11029 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11031 with_system_openssl=no
11032 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11033 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11034 && test "$with_system_openssl" != "no"; then
11035 with_system_openssl=yes
11036 SYSTEM_OPENSSL=TRUE
11038 OPENSSL_LIBS="-lssl -lcrypto"
11040 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11042 if test "$with_system_openssl" = "yes"; then
11043 AC_MSG_CHECKING([whether openssl supports SHA512])
11045 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11046 SHA512_CTX context;
11047 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11051 AC_MSG_RESULT([yes])
11053 # warn that although OpenSSL is disabled, system libraries may depend on it
11054 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11055 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11058 AC_SUBST([ENABLE_OPENSSL])
11060 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11061 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11062 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11063 enable_cipher_openssl_backend=no
11065 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11068 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11069 ENABLE_CIPHER_OPENSSL_BACKEND=
11070 if test "$enable_cipher_openssl_backend" = yes; then
11071 AC_MSG_RESULT([yes])
11072 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11074 AC_MSG_RESULT([no])
11076 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11078 dnl ===================================================================
11079 dnl Select the crypto backends used by LO
11080 dnl ===================================================================
11082 if test "$build_crypto" = yes; then
11083 if test "$OS" = WNT; then
11084 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11085 AC_DEFINE([USE_CRYPTO_MSCAPI])
11086 elif test "$ENABLE_NSS" = TRUE; then
11087 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11088 AC_DEFINE([USE_CRYPTO_NSS])
11092 dnl ===================================================================
11093 dnl Check for system redland
11094 dnl ===================================================================
11095 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11096 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11097 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11098 if test "$with_system_redland" = "yes"; then
11099 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11100 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11106 AC_SUBST(RAPTOR_MAJOR)
11107 AC_SUBST(RASQAL_MAJOR)
11108 AC_SUBST(REDLAND_MAJOR)
11110 dnl ===================================================================
11111 dnl Check for system hunspell
11112 dnl ===================================================================
11113 AC_MSG_CHECKING([which libhunspell to use])
11114 if test "$with_system_hunspell" = "yes"; then
11115 AC_MSG_RESULT([external])
11116 SYSTEM_HUNSPELL=TRUE
11117 AC_LANG_PUSH([C++])
11118 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11119 if test "$HUNSPELL_PC" != "TRUE"; then
11120 AC_CHECK_HEADER(hunspell.hxx, [],
11122 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11123 [AC_MSG_ERROR(hunspell headers not found.)], [])
11125 AC_CHECK_LIB([hunspell], [main], [:],
11126 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11127 HUNSPELL_LIBS=-lhunspell
11130 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11131 FilterLibs "${HUNSPELL_LIBS}"
11132 HUNSPELL_LIBS="${filteredlibs}"
11134 AC_MSG_RESULT([internal])
11136 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11137 if test "$COM" = "MSC"; then
11138 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11140 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11142 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11144 AC_SUBST(SYSTEM_HUNSPELL)
11145 AC_SUBST(HUNSPELL_CFLAGS)
11146 AC_SUBST(HUNSPELL_LIBS)
11148 dnl ===================================================================
11149 dnl Check for system zxing
11150 dnl ===================================================================
11151 AC_MSG_CHECKING([whether to use zxing])
11152 if test "$enable_zxing" = "no"; then
11153 AC_MSG_RESULT([no])
11157 AC_MSG_RESULT([yes])
11159 AC_MSG_CHECKING([which libzxing to use])
11160 if test "$with_system_zxing" = "yes"; then
11161 AC_MSG_RESULT([external])
11164 AC_LANG_PUSH([C++])
11165 save_CXXFLAGS=$CXXFLAGS
11168 for i in $CPLUS_INCLUDE_PATH /usr/include; do
11169 dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11170 dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11171 dnl unsetting follows the advice at <http://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11172 dnl a=commit;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11173 dnl unsetting IFS."):
11175 dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11176 dnl ignore them here:
11177 if test -z "$i"; then
11180 dnl TODO: White space in $i would cause problems:
11181 CXXFLAGS="$save_CXXFLAGS -I$i/ZXing"
11182 AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11183 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11185 CXXFLAGS=$save_CXXFLAGS
11186 if test -z "$ZXING_CFLAGS"; then
11187 AC_MSG_ERROR(zxing headers not found.)
11189 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11190 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11191 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11193 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11194 FilterLibs "${ZXING_LIBS}"
11195 ZXING_LIBS="${filteredlibs}"
11197 AC_MSG_RESULT([internal])
11199 BUILD_TYPE="$BUILD_TYPE ZXING"
11201 if test "$ENABLE_ZXING" = TRUE; then
11202 AC_DEFINE(ENABLE_ZXING)
11205 AC_SUBST(SYSTEM_ZXING)
11206 AC_SUBST(ENABLE_ZXING)
11207 AC_SUBST(ZXING_CFLAGS)
11208 AC_SUBST(ZXING_LIBS)
11210 dnl ===================================================================
11211 dnl Check for system box2d
11212 dnl ===================================================================
11213 AC_MSG_CHECKING([which box2d to use])
11214 if test "$with_system_box2d" = "yes"; then
11215 AC_MSG_RESULT([external])
11217 AC_LANG_PUSH([C++])
11218 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11219 [BOX2D_H_FOUND='FALSE'])
11220 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11222 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11224 # fail this. there's no other alternative to check when we are here.
11225 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11226 [AC_MSG_ERROR(box2d headers not found.)])
11228 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11230 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11231 [ AC_MSG_ERROR(box2d library not found.) ], [])
11232 BOX2D_LIBS=-l$_BOX2D_LIB
11234 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11235 FilterLibs "${BOX2D_LIBS}"
11236 BOX2D_LIBS="${filteredlibs}"
11238 AC_MSG_RESULT([internal])
11240 BUILD_TYPE="$BUILD_TYPE BOX2D"
11242 AC_SUBST(SYSTEM_BOX2D)
11243 AC_SUBST(BOX2D_CFLAGS)
11244 AC_SUBST(BOX2D_LIBS)
11246 dnl ===================================================================
11247 dnl Checking for altlinuxhyph
11248 dnl ===================================================================
11249 AC_MSG_CHECKING([which altlinuxhyph to use])
11250 if test "$with_system_altlinuxhyph" = "yes"; then
11251 AC_MSG_RESULT([external])
11253 AC_CHECK_HEADER(hyphen.h, [],
11254 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11255 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11256 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11257 [#include <hyphen.h>])
11258 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11259 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11260 if test -z "$HYPHEN_LIB"; then
11261 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11262 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11264 if test -z "$HYPHEN_LIB"; then
11265 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11266 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11269 AC_MSG_RESULT([internal])
11271 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11272 if test "$COM" = "MSC"; then
11273 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11275 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11278 AC_SUBST(SYSTEM_HYPH)
11279 AC_SUBST(HYPHEN_LIB)
11281 dnl ===================================================================
11282 dnl Checking for mythes
11283 dnl ===================================================================
11284 AC_MSG_CHECKING([which mythes to use])
11285 if test "$with_system_mythes" = "yes"; then
11286 AC_MSG_RESULT([external])
11288 AC_LANG_PUSH([C++])
11289 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11290 if test "$MYTHES_PKGCONFIG" = "no"; then
11291 AC_CHECK_HEADER(mythes.hxx, [],
11292 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11293 AC_CHECK_LIB([mythes-1.2], [main], [:],
11294 [ MYTHES_FOUND=no], [])
11295 if test "$MYTHES_FOUND" = "no"; then
11296 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11297 [ MYTHES_FOUND=no], [])
11299 if test "$MYTHES_FOUND" = "no"; then
11300 AC_MSG_ERROR([mythes library not found!.])
11304 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11305 FilterLibs "${MYTHES_LIBS}"
11306 MYTHES_LIBS="${filteredlibs}"
11308 AC_MSG_RESULT([internal])
11310 BUILD_TYPE="$BUILD_TYPE MYTHES"
11311 if test "$COM" = "MSC"; then
11312 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11314 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11317 AC_SUBST(SYSTEM_MYTHES)
11318 AC_SUBST(MYTHES_CFLAGS)
11319 AC_SUBST(MYTHES_LIBS)
11321 dnl ===================================================================
11322 dnl How should we build the linear programming solver ?
11323 dnl ===================================================================
11326 AC_MSG_CHECKING([whether to build with CoinMP])
11327 if test "$enable_coinmp" != "no"; then
11329 AC_MSG_RESULT([yes])
11330 if test "$with_system_coinmp" = "yes"; then
11332 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11333 FilterLibs "${COINMP_LIBS}"
11334 COINMP_LIBS="${filteredlibs}"
11336 BUILD_TYPE="$BUILD_TYPE COINMP"
11339 AC_MSG_RESULT([no])
11341 AC_SUBST(ENABLE_COINMP)
11342 AC_SUBST(SYSTEM_COINMP)
11343 AC_SUBST(COINMP_CFLAGS)
11344 AC_SUBST(COINMP_LIBS)
11347 AC_MSG_CHECKING([whether to build with lpsolve])
11348 if test "$enable_lpsolve" != "no"; then
11349 ENABLE_LPSOLVE=TRUE
11350 AC_MSG_RESULT([yes])
11352 AC_MSG_RESULT([no])
11354 AC_SUBST(ENABLE_LPSOLVE)
11356 if test "$ENABLE_LPSOLVE" = TRUE; then
11357 AC_MSG_CHECKING([which lpsolve to use])
11358 if test "$with_system_lpsolve" = "yes"; then
11359 AC_MSG_RESULT([external])
11360 SYSTEM_LPSOLVE=TRUE
11361 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11362 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11364 # some systems need this. Like Ubuntu...
11365 AC_CHECK_LIB(m, floor)
11366 AC_CHECK_LIB(dl, dlopen)
11367 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11368 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11371 AC_MSG_RESULT([internal])
11373 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11376 AC_SUBST(SYSTEM_LPSOLVE)
11378 dnl ===================================================================
11379 dnl Checking for libexttextcat
11380 dnl ===================================================================
11381 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11382 if test "$with_system_libexttextcat" = "yes"; then
11383 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11385 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11387 dnl ===================================================================
11388 dnl Checking for libnumbertext
11389 dnl ===================================================================
11390 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11391 if test "$with_system_libnumbertext" = "yes"; then
11392 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11393 SYSTEM_LIBNUMBERTEXT=YES
11395 SYSTEM_LIBNUMBERTEXT=
11397 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11398 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11400 dnl ***************************************
11401 dnl testing libc version for Linux...
11402 dnl ***************************************
11403 if test "$_os" = "Linux"; then
11404 AC_MSG_CHECKING([whether the libc is recent enough])
11405 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11406 #include <features.h>
11407 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11408 #error glibc >= 2.1 is required
11410 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11413 dnl =========================================
11414 dnl Check for uuidgen
11415 dnl =========================================
11416 if test "$_os" = "WINNT"; then
11417 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11418 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11419 UUIDGEN=uuidgen.exe
11422 AC_PATH_PROG([UUIDGEN], [uuidgen])
11423 if test -z "$UUIDGEN"; then
11424 AC_MSG_WARN([uuid is needed for building installation sets])
11428 dnl ***************************************
11429 dnl Checking for bison and flex
11430 dnl ***************************************
11431 AC_PATH_PROG(BISON, bison)
11432 if test -z "$BISON"; then
11433 AC_MSG_ERROR([no bison found in \$PATH, install it])
11435 AC_MSG_CHECKING([the bison version])
11436 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11437 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11438 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11441 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]
11442 dnl typedef union YYSTYPE
11445 dnl while at least 3.4.1 is know to be good:
11446 if test "$COMPILER_PLUGINS" = TRUE; then
11447 if test "$_bison_longver" -lt 2004; then
11448 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11451 if test "$_bison_longver" -lt 2000; then
11452 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11458 AC_PATH_PROG(FLEX, flex)
11459 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11460 FLEX=`cygpath -m $FLEX`
11462 if test -z "$FLEX"; then
11463 AC_MSG_ERROR([no flex found in \$PATH, install it])
11465 AC_MSG_CHECKING([the flex version])
11466 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11467 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11468 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11473 AC_PATH_PROG(DIFF, diff)
11474 if test -z "$DIFF"; then
11475 AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11479 AC_PATH_PROG(UNIQ, uniq)
11480 if test -z "$UNIQ"; then
11481 AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11485 dnl ***************************************
11486 dnl Checking for patch
11487 dnl ***************************************
11488 AC_PATH_PROG(PATCH, patch)
11489 if test -z "$PATCH"; then
11490 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11493 dnl On Solaris or macOS, check if --with-gnu-patch was used
11494 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11495 if test -z "$with_gnu_patch"; then
11498 if test -x "$with_gnu_patch"; then
11499 GNUPATCH=$with_gnu_patch
11501 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11505 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11506 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11507 AC_MSG_RESULT([yes])
11509 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11515 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11516 GNUPATCH=`cygpath -m $GNUPATCH`
11519 dnl We also need to check for --with-gnu-cp
11521 if test -z "$with_gnu_cp"; then
11522 # check the place where the good stuff is hidden on Solaris...
11523 if test -x /usr/gnu/bin/cp; then
11524 GNUCP=/usr/gnu/bin/cp
11526 AC_PATH_PROGS(GNUCP, gnucp cp)
11528 if test -z $GNUCP; then
11529 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11532 if test -x "$with_gnu_cp"; then
11535 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11539 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11540 GNUCP=`cygpath -m $GNUCP`
11543 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11544 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11545 AC_MSG_RESULT([yes])
11546 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11547 AC_MSG_RESULT([yes])
11549 case "$build_os" in
11550 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11553 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11556 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11565 dnl ***************************************
11566 dnl testing assembler path
11567 dnl ***************************************
11569 if test "$_os" = "WINNT"; then
11570 case "$WIN_HOST_ARCH" in
11571 x86) assembler=ml.exe ;;
11572 x64) assembler=ml64.exe ;;
11573 arm64) assembler=armasm64.exe ;;
11576 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11577 if test -f "$MSVC_HOST_PATH/$assembler"; then
11578 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11579 AC_MSG_RESULT([$ML_EXE])
11581 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11587 dnl ===================================================================
11588 dnl We need zip and unzip
11589 dnl ===================================================================
11590 AC_PATH_PROG(ZIP, zip)
11591 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11592 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11593 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],,)
11596 AC_PATH_PROG(UNZIP, unzip)
11597 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11599 dnl ===================================================================
11600 dnl Zip must be a specific type for different build types.
11601 dnl ===================================================================
11602 if test $build_os = cygwin; then
11603 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11604 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11608 dnl ===================================================================
11609 dnl We need touch with -h option support.
11610 dnl ===================================================================
11611 AC_PATH_PROG(TOUCH, touch)
11612 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11613 touch "$WARNINGS_FILE"
11614 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11615 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],,)
11618 dnl ===================================================================
11619 dnl Check for system epoxy
11620 dnl ===================================================================
11621 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11622 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11624 dnl ===================================================================
11625 dnl Set vcl option: coordinate device in double or sal_Int32
11626 dnl ===================================================================
11628 dnl disabled for now, we don't want subtle differences between OSs
11629 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11630 dnl if test "$_os" = "Darwin" -o $_os = iOS ; then
11631 dnl AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11632 dnl AC_MSG_RESULT([double])
11634 dnl AC_MSG_RESULT([sal_Int32])
11637 dnl ===================================================================
11638 dnl Show which vclplugs will be built.
11639 dnl ===================================================================
11642 libo_ENABLE_VCLPLUG([gen])
11643 libo_ENABLE_VCLPLUG([gtk3])
11644 libo_ENABLE_VCLPLUG([gtk3_kde5])
11645 libo_ENABLE_VCLPLUG([gtk4])
11646 libo_ENABLE_VCLPLUG([kf5])
11647 libo_ENABLE_VCLPLUG([qt5])
11648 libo_ENABLE_VCLPLUG([qt6])
11650 if test "$_os" = "WINNT"; then
11652 elif test "$_os" = "Darwin"; then
11654 elif test "$_os" = "iOS"; then
11656 elif test "$_os" = Android; then
11660 build_vcl_plugins="$R"
11661 if test -z "$build_vcl_plugins"; then
11662 build_vcl_plugins=" none"
11664 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11666 AC_SUBST([VCL_PLUGIN_INFO])
11668 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11669 AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11672 dnl ===================================================================
11673 dnl Check for GTK libraries
11674 dnl ===================================================================
11678 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11679 if test "$with_system_cairo" = no; then
11680 add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11682 : ${with_system_cairo:=yes}
11683 PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= 3.20 gtk+-unix-print-3.0 gmodule-no-export-2.0 glib-2.0 >= 2.38 atk >= 2.28.1 cairo)
11684 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11685 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11686 FilterLibs "${GTK3_LIBS}"
11687 GTK3_LIBS="${filteredlibs}"
11689 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11690 if test "$with_system_epoxy" != "yes"; then
11691 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11692 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11693 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11696 AC_SUBST(GTK3_LIBS)
11697 AC_SUBST(GTK3_CFLAGS)
11701 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11702 if test "$with_system_cairo" = no; then
11703 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11705 : ${with_system_cairo:=yes}
11706 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11707 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11708 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11709 FilterLibs "${GTK4_LIBS}"
11710 GTK4_LIBS="${filteredlibs}"
11712 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11713 if test "$with_system_epoxy" != "yes"; then
11714 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11715 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11716 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11719 AC_SUBST(GTK4_LIBS)
11720 AC_SUBST(GTK4_CFLAGS)
11722 if test "$enable_introspection" = yes; then
11723 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11724 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11726 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11730 dnl ===================================================================
11731 dnl check for dbus support
11732 dnl ===================================================================
11736 DBUS_GLIB_CFLAGS=""
11740 if test "$enable_dbus" = "no"; then
11744 AC_MSG_CHECKING([whether to enable DBUS support])
11745 if test "$test_dbus" = "yes"; then
11747 AC_MSG_RESULT([yes])
11748 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11749 AC_DEFINE(ENABLE_DBUS)
11750 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11751 FilterLibs "${DBUS_LIBS}"
11752 DBUS_LIBS="${filteredlibs}"
11754 # Glib is needed for BluetoothServer
11755 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11756 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11758 DBUS_HAVE_GLIB="TRUE"
11759 AC_DEFINE(DBUS_HAVE_GLIB,1)
11761 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11764 AC_MSG_RESULT([no])
11767 AC_SUBST(ENABLE_DBUS)
11768 AC_SUBST(DBUS_CFLAGS)
11769 AC_SUBST(DBUS_LIBS)
11770 AC_SUBST(DBUS_GLIB_CFLAGS)
11771 AC_SUBST(DBUS_GLIB_LIBS)
11772 AC_SUBST(DBUS_HAVE_GLIB)
11774 AC_MSG_CHECKING([whether to enable Impress remote control])
11775 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11776 AC_MSG_RESULT([yes])
11777 ENABLE_SDREMOTE=TRUE
11778 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11780 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11781 # The Bluetooth code doesn't compile with macOS SDK 10.15
11782 if test "$enable_sdremote_bluetooth" = yes; then
11783 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11785 enable_sdremote_bluetooth=no
11787 # If not explicitly enabled or disabled, default
11788 if test -z "$enable_sdremote_bluetooth"; then
11791 # Default to yes for these
11792 enable_sdremote_bluetooth=yes
11796 enable_sdremote_bluetooth=no
11800 # $enable_sdremote_bluetooth is guaranteed non-empty now
11802 if test "$enable_sdremote_bluetooth" != "no"; then
11803 if test "$OS" = "LINUX"; then
11804 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11805 AC_MSG_RESULT([yes])
11806 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11807 dnl ===================================================================
11808 dnl Check for system bluez
11809 dnl ===================================================================
11810 AC_MSG_CHECKING([which Bluetooth header to use])
11811 if test "$with_system_bluez" = "yes"; then
11812 AC_MSG_RESULT([external])
11813 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11814 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11817 AC_MSG_RESULT([internal])
11821 AC_MSG_RESULT([no, dbus disabled])
11822 ENABLE_SDREMOTE_BLUETOOTH=
11826 AC_MSG_RESULT([yes])
11827 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11831 AC_MSG_RESULT([no])
11832 ENABLE_SDREMOTE_BLUETOOTH=
11838 AC_MSG_RESULT([no])
11840 AC_SUBST(ENABLE_SDREMOTE)
11841 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11842 AC_SUBST(SYSTEM_BLUEZ)
11844 dnl ===================================================================
11845 dnl Check whether to enable GIO support
11846 dnl ===================================================================
11847 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11848 AC_MSG_CHECKING([whether to enable GIO support])
11849 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11850 dnl Need at least 2.26 for the dbus support.
11851 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11852 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11853 if test "$ENABLE_GIO" = "TRUE"; then
11854 AC_DEFINE(ENABLE_GIO)
11855 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11856 FilterLibs "${GIO_LIBS}"
11857 GIO_LIBS="${filteredlibs}"
11860 AC_MSG_RESULT([no])
11863 AC_SUBST(ENABLE_GIO)
11864 AC_SUBST(GIO_CFLAGS)
11868 dnl ===================================================================
11870 SPLIT_APP_MODULES=""
11871 if test "$enable_split_app_modules" = "yes"; then
11872 SPLIT_APP_MODULES="TRUE"
11874 AC_SUBST(SPLIT_APP_MODULES)
11876 SPLIT_OPT_FEATURES=""
11877 if test "$enable_split_opt_features" = "yes"; then
11878 SPLIT_OPT_FEATURES="TRUE"
11880 AC_SUBST(SPLIT_OPT_FEATURES)
11882 dnl ===================================================================
11883 dnl Check whether the GStreamer libraries are available.
11884 dnl ===================================================================
11886 ENABLE_GSTREAMER_1_0=""
11888 if test "$test_gstreamer_1_0" = yes; then
11890 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11891 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11892 ENABLE_GSTREAMER_1_0="TRUE"
11893 AC_MSG_RESULT([yes])
11894 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11895 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11896 FilterLibs "${GSTREAMER_1_0_LIBS}"
11897 GSTREAMER_1_0_LIBS="${filteredlibs}"
11898 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11900 AC_MSG_RESULT([no])
11903 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11904 AC_SUBST(GSTREAMER_1_0_LIBS)
11905 AC_SUBST(ENABLE_GSTREAMER_1_0)
11907 ENABLE_OPENGL_TRANSITIONS=
11908 ENABLE_OPENGL_CANVAS=
11909 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11911 elif test "$_os" = "Darwin"; then
11912 # We use frameworks on macOS, no need for detail checks
11913 ENABLE_OPENGL_TRANSITIONS=TRUE
11914 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11915 ENABLE_OPENGL_CANVAS=TRUE
11916 elif test $_os = WINNT; then
11917 ENABLE_OPENGL_TRANSITIONS=TRUE
11918 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11919 ENABLE_OPENGL_CANVAS=TRUE
11921 if test "$USING_X11" = TRUE; then
11922 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11923 ENABLE_OPENGL_TRANSITIONS=TRUE
11924 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11925 ENABLE_OPENGL_CANVAS=TRUE
11929 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11930 AC_SUBST(ENABLE_OPENGL_CANVAS)
11932 dnl =================================================
11933 dnl Check whether to build with OpenCL support.
11934 dnl =================================================
11936 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11937 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11938 # platform (optional at run-time, used through clew).
11939 BUILD_TYPE="$BUILD_TYPE OPENCL"
11940 AC_DEFINE(HAVE_FEATURE_OPENCL)
11943 dnl =================================================
11944 dnl Check whether to build with dconf support.
11945 dnl =================================================
11947 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11948 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11949 if test "$enable_dconf" = yes; then
11950 AC_MSG_ERROR([dconf not found])
11955 AC_MSG_CHECKING([whether to enable dconf])
11956 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11960 AC_MSG_RESULT([no])
11963 AC_DEFINE(ENABLE_DCONF)
11964 AC_MSG_RESULT([yes])
11966 AC_SUBST([DCONF_CFLAGS])
11967 AC_SUBST([DCONF_LIBS])
11968 AC_SUBST([ENABLE_DCONF])
11971 AC_MSG_CHECKING([whether to build the PDF import feature])
11973 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
11974 AC_MSG_RESULT([yes])
11975 ENABLE_PDFIMPORT=TRUE
11976 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
11978 AC_MSG_RESULT([no])
11982 AC_MSG_CHECKING([whether to build PDFium])
11984 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11985 AC_MSG_RESULT([yes])
11987 BUILD_TYPE="$BUILD_TYPE PDFIUM"
11989 AC_MSG_RESULT([no])
11991 AC_SUBST(ENABLE_PDFIUM)
11993 if test "$ENABLE_PDFIUM" = "TRUE"; then
11994 AC_MSG_CHECKING([which OpenJPEG library to use])
11995 if test "$with_system_openjpeg" = "yes"; then
11996 SYSTEM_OPENJPEG2=TRUE
11997 AC_MSG_RESULT([external])
11998 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
11999 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12000 FilterLibs "${OPENJPEG2_LIBS}"
12001 OPENJPEG2_LIBS="${filteredlibs}"
12003 SYSTEM_OPENJPEG2=FALSE
12004 AC_MSG_RESULT([internal])
12007 AC_MSG_CHECKING([which Abseil library to use])
12008 if test "$with_system_abseil" = "yes"; then
12009 AC_MSG_RESULT([external])
12011 AC_LANG_PUSH([C++])
12012 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12013 [AC_MSG_ERROR(abseil headers not found.)], [])
12014 AC_CHECK_LIB([absl_bad_optional_access], [main], [ABSEIL_LIBS=-labsl_bad_optional_access],
12015 [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12017 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12018 FilterLibs "${ABSEIL_LIBS}"
12019 ABSEIL_LIBS="${filteredlibs}"
12021 AC_MSG_RESULT([internal])
12024 AC_SUBST(SYSTEM_OPENJPEG2)
12025 AC_SUBST(SYSTEM_ABSEIL)
12026 AC_SUBST(ABSEIL_CFLAGS)
12027 AC_SUBST(ABSEIL_LIBS)
12029 dnl ===================================================================
12030 dnl Check for poppler
12031 dnl ===================================================================
12033 AC_MSG_CHECKING([whether to build Poppler])
12034 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12035 AC_MSG_RESULT([yes])
12036 ENABLE_POPPLER=TRUE
12037 AC_DEFINE(HAVE_FEATURE_POPPLER)
12039 AC_MSG_RESULT([no])
12041 AC_SUBST(ENABLE_POPPLER)
12043 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12044 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12047 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12048 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12051 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12052 dnl ===================================================================
12053 dnl Check for system poppler
12054 dnl ===================================================================
12055 AC_MSG_CHECKING([which PDF import poppler to use])
12056 if test "$with_system_poppler" = "yes"; then
12057 AC_MSG_RESULT([external])
12058 SYSTEM_POPPLER=TRUE
12059 PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12060 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12061 FilterLibs "${POPPLER_LIBS}"
12062 POPPLER_LIBS="${filteredlibs}"
12064 AC_MSG_RESULT([internal])
12066 BUILD_TYPE="$BUILD_TYPE POPPLER"
12068 AC_DEFINE([ENABLE_PDFIMPORT],1)
12070 AC_SUBST(ENABLE_PDFIMPORT)
12071 AC_SUBST(SYSTEM_POPPLER)
12072 AC_SUBST(POPPLER_CFLAGS)
12073 AC_SUBST(POPPLER_LIBS)
12077 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12078 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12079 if test "$SYSTEM_FREETYPE" = TRUE; then
12080 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12081 [skia_freetype_ok=yes],
12082 [skia_freetype_ok=no])
12083 else # internal is ok
12084 skia_freetype_ok=yes
12086 AC_MSG_CHECKING([whether to build Skia])
12087 if test "$skia_freetype_ok" = "yes"; then
12088 if test "$enable_skia" = "debug"; then
12089 AC_MSG_RESULT([yes (debug)])
12090 ENABLE_SKIA_DEBUG=TRUE
12092 AC_MSG_RESULT([yes])
12096 AC_DEFINE(HAVE_FEATURE_SKIA)
12097 BUILD_TYPE="$BUILD_TYPE SKIA"
12099 if test "$OS" = "MACOSX"; then
12100 AC_DEFINE(SK_SUPPORT_GPU,1)
12101 AC_DEFINE(SK_METAL,1)
12105 AC_DEFINE(SK_SUPPORT_GPU,1)
12106 AC_DEFINE(SK_VULKAN,1)
12111 if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
12112 SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
12113 AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
12116 AC_MSG_RESULT([no (freetype too old)])
12117 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12121 AC_MSG_CHECKING([whether to build Skia])
12122 AC_MSG_RESULT([no])
12124 AC_SUBST(ENABLE_SKIA)
12125 AC_SUBST(ENABLE_SKIA_DEBUG)
12127 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12128 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12129 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12130 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12131 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12132 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12133 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12134 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12135 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12136 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12137 HAVE_LO_CLANG_DLLEXPORTINLINES=
12139 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12140 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12141 AC_MSG_CHECKING([for Clang])
12142 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12144 if test "$_os" = "WINNT"; then
12145 AC_MSG_CHECKING([for clang-cl])
12146 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12147 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12148 elif test -n "$PROGRAMFILES" -a -x "$PROGRAMFILES/LLVM/bin/clang-cl.exe"; then
12149 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12150 elif test -x "c:/Program Files/LLVM/bin/clang-cl.exe"; then
12151 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12153 if test -n "$LO_CLANG_CC"; then
12154 dnl explicitly set -m32/-m64
12155 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12156 LO_CLANG_CXX="$LO_CLANG_CC"
12157 AC_MSG_RESULT([$LO_CLANG_CC])
12159 AC_MSG_RESULT([no])
12162 AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12163 echo "#include <stdlib.h>" > conftest.c
12164 LO_CLANG_SHOWINCLUDES_PREFIX=`$LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12165 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12166 rm -f conftest.c conftest.obj
12167 if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12168 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12170 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12173 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12174 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12177 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12178 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12179 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12180 if test "$clang2_ver" -lt 50002; then
12181 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12186 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12188 CXX="$LO_CLANG_CXX"
12189 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12190 AC_LANG_PUSH([C++])
12191 save_CXXFLAGS=$CXXFLAGS
12192 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12193 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12194 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12195 AC_MSG_RESULT([yes])
12196 ], [AC_MSG_RESULT([no])])
12197 CXXFLAGS=$save_CXXFLAGS
12200 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12201 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.])
12204 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12205 # Skia is the default on Windows and Mac, so hard-require Clang.
12206 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12207 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12208 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12210 AC_MSG_WARN([Clang compiler not found.])
12215 CXX="$LO_CLANG_CXX"
12216 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12219 flag_sse41=-msse4.1
12220 flag_sse42=-msse4.2
12223 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12224 flag_avx512f=-mavx512f
12228 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12229 AC_LANG_PUSH([C++])
12230 save_CXXFLAGS=$CXXFLAGS
12231 CXXFLAGS="$CXXFLAGS $flag_sse2"
12232 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12233 #include <emmintrin.h>
12235 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12236 c = _mm_xor_si128 (a, b);
12240 [can_compile_sse2=yes],
12241 [can_compile_sse2=no])
12243 CXXFLAGS=$save_CXXFLAGS
12244 AC_MSG_RESULT([${can_compile_sse2}])
12245 if test "${can_compile_sse2}" = "yes" ; then
12246 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12249 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12250 AC_LANG_PUSH([C++])
12251 save_CXXFLAGS=$CXXFLAGS
12252 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12253 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12254 #include <tmmintrin.h>
12256 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12257 c = _mm_maddubs_epi16 (a, b);
12261 [can_compile_ssse3=yes],
12262 [can_compile_ssse3=no])
12264 CXXFLAGS=$save_CXXFLAGS
12265 AC_MSG_RESULT([${can_compile_ssse3}])
12266 if test "${can_compile_ssse3}" = "yes" ; then
12267 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12270 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12271 AC_LANG_PUSH([C++])
12272 save_CXXFLAGS=$CXXFLAGS
12273 CXXFLAGS="$CXXFLAGS $flag_sse41"
12274 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12275 #include <smmintrin.h>
12277 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12278 c = _mm_cmpeq_epi64 (a, b);
12282 [can_compile_sse41=yes],
12283 [can_compile_sse41=no])
12285 CXXFLAGS=$save_CXXFLAGS
12286 AC_MSG_RESULT([${can_compile_sse41}])
12287 if test "${can_compile_sse41}" = "yes" ; then
12288 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12291 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12292 AC_LANG_PUSH([C++])
12293 save_CXXFLAGS=$CXXFLAGS
12294 CXXFLAGS="$CXXFLAGS $flag_sse42"
12295 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12296 #include <nmmintrin.h>
12298 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12299 c = _mm_cmpgt_epi64 (a, b);
12303 [can_compile_sse42=yes],
12304 [can_compile_sse42=no])
12306 CXXFLAGS=$save_CXXFLAGS
12307 AC_MSG_RESULT([${can_compile_sse42}])
12308 if test "${can_compile_sse42}" = "yes" ; then
12309 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12312 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12313 AC_LANG_PUSH([C++])
12314 save_CXXFLAGS=$CXXFLAGS
12315 CXXFLAGS="$CXXFLAGS $flag_avx"
12316 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12317 #include <immintrin.h>
12319 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12320 c = _mm256_xor_ps(a, b);
12324 [can_compile_avx=yes],
12325 [can_compile_avx=no])
12327 CXXFLAGS=$save_CXXFLAGS
12328 AC_MSG_RESULT([${can_compile_avx}])
12329 if test "${can_compile_avx}" = "yes" ; then
12330 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12333 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12334 AC_LANG_PUSH([C++])
12335 save_CXXFLAGS=$CXXFLAGS
12336 CXXFLAGS="$CXXFLAGS $flag_avx2"
12337 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12338 #include <immintrin.h>
12340 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12341 c = _mm256_maddubs_epi16(a, b);
12345 [can_compile_avx2=yes],
12346 [can_compile_avx2=no])
12348 CXXFLAGS=$save_CXXFLAGS
12349 AC_MSG_RESULT([${can_compile_avx2}])
12350 if test "${can_compile_avx2}" = "yes" ; then
12351 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12354 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12355 AC_LANG_PUSH([C++])
12356 save_CXXFLAGS=$CXXFLAGS
12357 CXXFLAGS="$CXXFLAGS $flag_avx512"
12358 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12359 #include <immintrin.h>
12361 __m512i a = _mm512_loadu_si512(0);
12362 __m512d v1 = _mm512_load_pd(0);
12363 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12364 __m512d v2 = _mm512_abs_pd(v1);
12368 [can_compile_avx512=yes],
12369 [can_compile_avx512=no])
12371 CXXFLAGS=$save_CXXFLAGS
12372 AC_MSG_RESULT([${can_compile_avx512}])
12373 if test "${can_compile_avx512}" = "yes" ; then
12374 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12375 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12378 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12379 AC_LANG_PUSH([C++])
12380 save_CXXFLAGS=$CXXFLAGS
12381 CXXFLAGS="$CXXFLAGS $flag_f16c"
12382 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12383 #include <immintrin.h>
12385 __m128i a = _mm_set1_epi32 (0);
12387 c = _mm_cvtph_ps(a);
12391 [can_compile_f16c=yes],
12392 [can_compile_f16c=no])
12394 CXXFLAGS=$save_CXXFLAGS
12395 AC_MSG_RESULT([${can_compile_f16c}])
12396 if test "${can_compile_f16c}" = "yes" ; then
12397 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12400 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12401 AC_LANG_PUSH([C++])
12402 save_CXXFLAGS=$CXXFLAGS
12403 CXXFLAGS="$CXXFLAGS $flag_fma"
12404 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12405 #include <immintrin.h>
12407 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12408 d = _mm256_fmadd_ps(a, b, c);
12412 [can_compile_fma=yes],
12413 [can_compile_fma=no])
12415 CXXFLAGS=$save_CXXFLAGS
12416 AC_MSG_RESULT([${can_compile_fma}])
12417 if test "${can_compile_fma}" = "yes" ; then
12418 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12425 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12427 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12428 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12432 save_CFLAGS=$CFLAGS
12433 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12434 dnl an empty program will do, we're checking the compiler flags
12435 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12436 [use_ccache=yes], [use_ccache=no])
12437 CFLAGS=$save_CFLAGS
12439 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12440 AC_MSG_RESULT([yes])
12442 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12443 AC_MSG_RESULT([no])
12447 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12448 AC_LANG_PUSH([C++])
12450 CXX="$LO_CLANG_CXX"
12451 save_CXXFLAGS=$CXXFLAGS
12452 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12453 dnl an empty program will do, we're checking the compiler flags
12454 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12455 [use_ccache=yes], [use_ccache=no])
12456 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12457 AC_MSG_RESULT([yes])
12459 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12460 AC_MSG_RESULT([no])
12462 CXXFLAGS=$save_CXXFLAGS
12467 AC_SUBST(LO_CLANG_CC)
12468 AC_SUBST(LO_CLANG_CXX)
12469 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12470 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12471 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12472 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12473 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12474 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12475 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12476 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12477 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12478 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12479 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12480 AC_SUBST(CLANG_USE_LD)
12481 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12485 AC_MSG_CHECKING([whether to enable gpgmepp])
12486 if test "$enable_gpgmepp" = no; then
12487 AC_MSG_RESULT([no])
12488 elif test "$enable_mpl_subset" = "yes"; then
12489 AC_MSG_RESULT([no (MPL only])
12490 elif test "$enable_fuzzers" = "yes"; then
12491 AC_MSG_RESULT([no (oss-fuzz)])
12492 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12493 AC_MSG_RESULT([yes])
12494 dnl ===================================================================
12495 dnl Check for system gpgme
12496 dnl ===================================================================
12497 AC_MSG_CHECKING([which gpgmepp to use])
12498 if test "$with_system_gpgmepp" = "yes"; then
12499 AC_MSG_RESULT([external])
12500 SYSTEM_GPGMEPP=TRUE
12502 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12503 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12504 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12505 # progress_callback is the only func with plain C linkage
12506 # checking for it also filters out older, KDE-dependent libgpgmepp versions
12507 AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
12508 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12509 AC_CHECK_HEADER(gpgme.h, [],
12510 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12512 AC_MSG_RESULT([internal])
12513 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12515 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12516 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12517 if test "$_os" != "WINNT"; then
12518 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12519 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12522 ENABLE_GPGMEPP=TRUE
12523 AC_DEFINE([HAVE_FEATURE_GPGME])
12524 AC_PATH_PROG(GPG, gpg)
12525 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12526 # so let's exclude that manually for the moment
12527 if test -n "$GPG" -a "$_os" != "WINNT"; then
12528 # make sure we not only have a working gpgme, but a full working
12529 # gpg installation to run OpenPGP signature verification
12530 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12532 if test "$_os" = "Linux"; then
12534 AC_MSG_CHECKING([for /run/user/$uid])
12535 if test -d /run/user/$uid; then
12536 AC_MSG_RESULT([yes])
12537 AC_PATH_PROG(GPGCONF, gpgconf)
12539 # Older versions of gpgconf are not working as expected, since
12540 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12541 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12542 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12543 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12544 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12545 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12546 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12547 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12548 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12549 if $GPGCONF --dump-options > /dev/null ; then
12550 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12551 AC_MSG_RESULT([yes])
12552 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12553 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12555 AC_MSG_RESULT([no])
12558 AC_MSG_RESULT([no. missing or broken gpgconf?])
12561 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12564 AC_MSG_RESULT([no])
12568 AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12570 AC_SUBST(ENABLE_GPGMEPP)
12571 AC_SUBST(SYSTEM_GPGMEPP)
12572 AC_SUBST(GPG_ERROR_CFLAGS)
12573 AC_SUBST(GPG_ERROR_LIBS)
12574 AC_SUBST(LIBASSUAN_CFLAGS)
12575 AC_SUBST(LIBASSUAN_LIBS)
12576 AC_SUBST(GPGMEPP_CFLAGS)
12577 AC_SUBST(GPGMEPP_LIBS)
12579 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12580 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12581 AC_MSG_RESULT([yes])
12582 ENABLE_MEDIAWIKI=TRUE
12583 BUILD_TYPE="$BUILD_TYPE XSLTML"
12584 if test "x$with_java" = "xno"; then
12585 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12588 AC_MSG_RESULT([no])
12590 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12592 AC_SUBST(ENABLE_MEDIAWIKI)
12594 AC_MSG_CHECKING([whether to build the Report Builder])
12595 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12596 AC_MSG_RESULT([yes])
12597 ENABLE_REPORTBUILDER=TRUE
12598 AC_MSG_CHECKING([which jfreereport libs to use])
12599 if test "$with_system_jfreereport" = "yes"; then
12600 SYSTEM_JFREEREPORT=TRUE
12601 AC_MSG_RESULT([external])
12602 if test -z $SAC_JAR; then
12603 SAC_JAR=/usr/share/java/sac.jar
12605 if ! test -f $SAC_JAR; then
12606 AC_MSG_ERROR(sac.jar not found.)
12609 if test -z $LIBXML_JAR; then
12610 if test -f /usr/share/java/libxml-1.0.0.jar; then
12611 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12612 elif test -f /usr/share/java/libxml.jar; then
12613 LIBXML_JAR=/usr/share/java/libxml.jar
12615 AC_MSG_ERROR(libxml.jar replacement not found.)
12617 elif ! test -f $LIBXML_JAR; then
12618 AC_MSG_ERROR(libxml.jar not found.)
12621 if test -z $FLUTE_JAR; then
12622 if test -f /usr/share/java/flute-1.3.0.jar; then
12623 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12624 elif test -f /usr/share/java/flute.jar; then
12625 FLUTE_JAR=/usr/share/java/flute.jar
12627 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12629 elif ! test -f $FLUTE_JAR; then
12630 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12633 if test -z $JFREEREPORT_JAR; then
12634 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12635 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12636 elif test -f /usr/share/java/flow-engine.jar; then
12637 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12639 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12641 elif ! test -f $JFREEREPORT_JAR; then
12642 AC_MSG_ERROR(jfreereport.jar not found.)
12645 if test -z $LIBLAYOUT_JAR; then
12646 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12647 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12648 elif test -f /usr/share/java/liblayout.jar; then
12649 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12651 AC_MSG_ERROR(liblayout.jar replacement not found.)
12653 elif ! test -f $LIBLAYOUT_JAR; then
12654 AC_MSG_ERROR(liblayout.jar not found.)
12657 if test -z $LIBLOADER_JAR; then
12658 if test -f /usr/share/java/libloader-1.0.0.jar; then
12659 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12660 elif test -f /usr/share/java/libloader.jar; then
12661 LIBLOADER_JAR=/usr/share/java/libloader.jar
12663 AC_MSG_ERROR(libloader.jar replacement not found.)
12665 elif ! test -f $LIBLOADER_JAR; then
12666 AC_MSG_ERROR(libloader.jar not found.)
12669 if test -z $LIBFORMULA_JAR; then
12670 if test -f /usr/share/java/libformula-0.2.0.jar; then
12671 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12672 elif test -f /usr/share/java/libformula.jar; then
12673 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12675 AC_MSG_ERROR(libformula.jar replacement not found.)
12677 elif ! test -f $LIBFORMULA_JAR; then
12678 AC_MSG_ERROR(libformula.jar not found.)
12681 if test -z $LIBREPOSITORY_JAR; then
12682 if test -f /usr/share/java/librepository-1.0.0.jar; then
12683 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12684 elif test -f /usr/share/java/librepository.jar; then
12685 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12687 AC_MSG_ERROR(librepository.jar replacement not found.)
12689 elif ! test -f $LIBREPOSITORY_JAR; then
12690 AC_MSG_ERROR(librepository.jar not found.)
12693 if test -z $LIBFONTS_JAR; then
12694 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12695 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12696 elif test -f /usr/share/java/libfonts.jar; then
12697 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12699 AC_MSG_ERROR(libfonts.jar replacement not found.)
12701 elif ! test -f $LIBFONTS_JAR; then
12702 AC_MSG_ERROR(libfonts.jar not found.)
12705 if test -z $LIBSERIALIZER_JAR; then
12706 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12707 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12708 elif test -f /usr/share/java/libserializer.jar; then
12709 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12711 AC_MSG_ERROR(libserializer.jar replacement not found.)
12713 elif ! test -f $LIBSERIALIZER_JAR; then
12714 AC_MSG_ERROR(libserializer.jar not found.)
12717 if test -z $LIBBASE_JAR; then
12718 if test -f /usr/share/java/libbase-1.0.0.jar; then
12719 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12720 elif test -f /usr/share/java/libbase.jar; then
12721 LIBBASE_JAR=/usr/share/java/libbase.jar
12723 AC_MSG_ERROR(libbase.jar replacement not found.)
12725 elif ! test -f $LIBBASE_JAR; then
12726 AC_MSG_ERROR(libbase.jar not found.)
12730 AC_MSG_RESULT([internal])
12731 SYSTEM_JFREEREPORT=
12732 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12736 AC_MSG_RESULT([no])
12737 ENABLE_REPORTBUILDER=
12738 SYSTEM_JFREEREPORT=
12740 AC_SUBST(ENABLE_REPORTBUILDER)
12741 AC_SUBST(SYSTEM_JFREEREPORT)
12743 AC_SUBST(LIBXML_JAR)
12744 AC_SUBST(FLUTE_JAR)
12745 AC_SUBST(JFREEREPORT_JAR)
12746 AC_SUBST(LIBBASE_JAR)
12747 AC_SUBST(LIBLAYOUT_JAR)
12748 AC_SUBST(LIBLOADER_JAR)
12749 AC_SUBST(LIBFORMULA_JAR)
12750 AC_SUBST(LIBREPOSITORY_JAR)
12751 AC_SUBST(LIBFONTS_JAR)
12752 AC_SUBST(LIBSERIALIZER_JAR)
12754 # scripting provider for BeanShell?
12755 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12756 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12757 AC_MSG_RESULT([yes])
12758 ENABLE_SCRIPTING_BEANSHELL=TRUE
12760 dnl ===================================================================
12761 dnl Check for system beanshell
12762 dnl ===================================================================
12763 AC_MSG_CHECKING([which beanshell to use])
12764 if test "$with_system_beanshell" = "yes"; then
12765 AC_MSG_RESULT([external])
12767 if test -z $BSH_JAR; then
12768 BSH_JAR=/usr/share/java/bsh.jar
12770 if ! test -f $BSH_JAR; then
12771 AC_MSG_ERROR(bsh.jar not found.)
12774 AC_MSG_RESULT([internal])
12776 BUILD_TYPE="$BUILD_TYPE BSH"
12779 AC_MSG_RESULT([no])
12780 ENABLE_SCRIPTING_BEANSHELL=
12781 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12783 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12784 AC_SUBST(SYSTEM_BSH)
12787 # scripting provider for JavaScript?
12788 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12789 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12790 AC_MSG_RESULT([yes])
12791 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12793 dnl ===================================================================
12794 dnl Check for system rhino
12795 dnl ===================================================================
12796 AC_MSG_CHECKING([which rhino to use])
12797 if test "$with_system_rhino" = "yes"; then
12798 AC_MSG_RESULT([external])
12800 if test -z $RHINO_JAR; then
12801 RHINO_JAR=/usr/share/java/js.jar
12803 if ! test -f $RHINO_JAR; then
12804 AC_MSG_ERROR(js.jar not found.)
12807 AC_MSG_RESULT([internal])
12809 BUILD_TYPE="$BUILD_TYPE RHINO"
12813 AC_MSG_RESULT([no])
12814 ENABLE_SCRIPTING_JAVASCRIPT=
12815 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12817 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12818 AC_SUBST(SYSTEM_RHINO)
12819 AC_SUBST(RHINO_JAR)
12821 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12822 # paths should be added to library search path. So lets put all 64-bit
12825 case "$host_cpu" in
12826 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
12827 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12828 supports_multilib="yes"
12835 dnl ===================================================================
12836 dnl QT5 Integration
12837 dnl ===================================================================
12843 QT5_GOBJECT_CFLAGS=""
12844 QT5_GOBJECT_LIBS=""
12845 QT5_HAVE_GOBJECT=""
12846 QT5_PLATFORMS_SRCDIR=""
12847 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12848 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12849 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12851 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12852 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12854 if test -n "$supports_multilib"; then
12855 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12858 qt5_test_include="QtWidgets/qapplication.h"
12859 if test "$_os" = "Emscripten"; then
12860 qt5_test_library="libQt5Widgets.a"
12862 qt5_test_library="libQt5Widgets.so"
12865 dnl Check for qmake5
12866 if test -n "$QT5DIR"; then
12867 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12869 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12871 if test "$QMAKE5" = "no"; then
12872 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12874 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12875 if test -z "$qmake5_test_ver"; then
12876 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12878 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12879 qt5_minimal_minor="6"
12880 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12881 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12883 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12887 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12888 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12889 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12890 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12892 AC_MSG_CHECKING([for Qt5 headers])
12894 for inc_dir in $qt5_incdirs; do
12895 if test -r "$inc_dir/$qt5_test_include"; then
12896 qt5_incdir="$inc_dir"
12900 AC_MSG_RESULT([$qt5_incdir])
12901 if test "x$qt5_incdir" = "xno"; then
12902 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12904 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12905 AC_LANG_PUSH([C++])
12906 save_CPPFLAGS=$CPPFLAGS
12907 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12908 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12909 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12910 CPPFLAGS=$save_CPPFLAGS
12913 AC_MSG_CHECKING([for Qt5 libraries])
12915 for lib_dir in $qt5_libdirs; do
12916 if test -r "$lib_dir/$qt5_test_library"; then
12917 qt5_libdir="$lib_dir"
12921 AC_MSG_RESULT([$qt5_libdir])
12922 if test "x$qt5_libdir" = "xno"; then
12923 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12926 if test "$_os" = "Emscripten"; then
12927 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12928 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12930 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12931 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12934 EMSDK_LLVM_NM="$(em-config EMSCRIPTEN_ROOT)"/../bin/llvm-nm
12935 if ! test -x "$EMSDK_LLVM_NM"; then
12936 AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
12938 if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
12939 AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
12941 QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
12942 if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
12943 AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
12945 if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
12946 AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
12950 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12951 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12952 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12953 if test "$_os" = "Emscripten"; then
12954 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12957 if test "$USING_X11" = TRUE; then
12958 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12959 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12960 QT5_HAVE_XCB_ICCCM=1
12961 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12963 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)])
12964 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
12966 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
12967 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
12969 AC_DEFINE(QT5_USING_X11)
12972 dnl Check for Meta Object Compiler
12974 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
12975 if test "$MOC5" = "no"; then
12976 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
12977 the root of your Qt installation by exporting QT5DIR before running "configure".])
12980 if test "$test_gstreamer_1_0" = yes; then
12981 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
12983 AC_DEFINE(QT5_HAVE_GOBJECT)
12985 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
12989 AC_SUBST(QT5_CFLAGS)
12992 AC_SUBST(QT5_GOBJECT_CFLAGS)
12993 AC_SUBST(QT5_GOBJECT_LIBS)
12994 AC_SUBST(QT5_HAVE_GOBJECT)
12995 AC_SUBST(QT5_PLATFORMS_SRCDIR)
12997 dnl ===================================================================
12998 dnl QT6 Integration
12999 dnl ===================================================================
13005 QT6_PLATFORMS_SRCDIR=""
13006 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13008 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13009 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13011 if test -n "$supports_multilib"; then
13012 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13015 qt6_test_include="QtWidgets/qapplication.h"
13016 if test "$_os" = "Emscripten"; then
13017 qt6_test_library="libQt6Widgets.a"
13019 qt6_test_library="libQt6Widgets.so"
13022 dnl Check for qmake6
13023 if test -n "$QT6DIR"; then
13024 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13026 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no)
13028 if test "$QMAKE6" = "no"; then
13029 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13031 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13032 if test -z "$qmake6_test_ver"; then
13033 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13035 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13038 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13039 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13040 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13041 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13043 AC_MSG_CHECKING([for Qt6 headers])
13045 for inc_dir in $qt6_incdirs; do
13046 if test -r "$inc_dir/$qt6_test_include"; then
13047 qt6_incdir="$inc_dir"
13051 AC_MSG_RESULT([$qt6_incdir])
13052 if test "x$qt6_incdir" = "xno"; then
13053 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13055 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13056 AC_LANG_PUSH([C++])
13057 save_CPPFLAGS=$CPPFLAGS
13058 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13059 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13060 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13061 CPPFLAGS=$save_CPPFLAGS
13064 AC_MSG_CHECKING([for Qt6 libraries])
13066 for lib_dir in $qt6_libdirs; do
13067 if test -r "$lib_dir/$qt6_test_library"; then
13068 qt6_libdir="$lib_dir"
13072 AC_MSG_RESULT([$qt6_libdir])
13073 if test "x$qt6_libdir" = "xno"; then
13074 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13077 if test "$_os" = "Emscripten"; then
13078 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13079 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13081 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13082 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13086 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13087 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13088 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13089 if test "$_os" = "Emscripten"; then
13090 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13093 if test "$USING_X11" = TRUE; then
13094 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13095 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13096 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13098 AC_DEFINE(QT6_USING_X11)
13101 dnl Check for Meta Object Compiler
13103 AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH])
13104 if test "$MOC6" = "no"; then
13105 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13106 the root of your Qt installation by exporting QT6DIR before running "configure".])
13109 AC_SUBST(QT6_CFLAGS)
13112 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13114 dnl ===================================================================
13115 dnl KF5 Integration
13116 dnl ===================================================================
13120 KF5_CONFIG="kf5-config"
13121 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13122 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13124 if test "$OS" = "HAIKU"; then
13125 haiku_arch="`echo $RTL_ARCH | tr X x`"
13126 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13127 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13130 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13131 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13132 if test -n "$supports_multilib"; then
13133 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13136 kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13137 kf5_test_library="libKF5KIOFileWidgets.so"
13138 kf5_libdirs="$qt5_libdir $kf5_libdirs"
13140 dnl kf5 KDE4 support compatibility installed
13141 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13142 if test "$KF5_CONFIG" != "no"; then
13143 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13144 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13147 dnl Check for KF5 headers
13148 AC_MSG_CHECKING([for KF5 headers])
13150 for kf5_check in $kf5_incdirs; do
13151 if test -r "$kf5_check/$kf5_test_include"; then
13152 kf5_incdir="$kf5_check/KF5"
13156 AC_MSG_RESULT([$kf5_incdir])
13157 if test "x$kf5_incdir" = "xno"; then
13158 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13161 dnl Check for KF5 libraries
13162 AC_MSG_CHECKING([for KF5 libraries])
13164 for kf5_check in $kf5_libdirs; do
13165 if test -r "$kf5_check/$kf5_test_library"; then
13166 kf5_libdir="$kf5_check"
13171 AC_MSG_RESULT([$kf5_libdir])
13172 if test "x$kf5_libdir" = "xno"; then
13173 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13176 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"
13177 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13178 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13180 if test "$USING_X11" = TRUE; then
13181 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13184 AC_LANG_PUSH([C++])
13185 save_CXXFLAGS=$CXXFLAGS
13186 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13187 AC_MSG_CHECKING([whether KDE is >= 5.0])
13188 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13189 #include <kcoreaddons_version.h>
13191 int main(int argc, char **argv) {
13192 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13195 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13196 CXXFLAGS=$save_CXXFLAGS
13199 AC_SUBST(KF5_CFLAGS)
13202 dnl ===================================================================
13203 dnl Test whether to include Evolution 2 support
13204 dnl ===================================================================
13205 AC_MSG_CHECKING([whether to enable evolution 2 support])
13206 if test "$enable_evolution2" = yes; then
13207 AC_MSG_RESULT([yes])
13208 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13209 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13210 FilterLibs "${GOBJECT_LIBS}"
13211 GOBJECT_LIBS="${filteredlibs}"
13212 ENABLE_EVOAB2="TRUE"
13214 AC_MSG_RESULT([no])
13216 AC_SUBST(ENABLE_EVOAB2)
13217 AC_SUBST(GOBJECT_CFLAGS)
13218 AC_SUBST(GOBJECT_LIBS)
13220 dnl ===================================================================
13221 dnl Test which themes to include
13222 dnl ===================================================================
13223 AC_MSG_CHECKING([which themes to include])
13224 # if none given use default subset of available themes
13225 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13226 with_theme="breeze breeze_dark breeze_dark_svg breeze_svg colibre colibre_svg colibre_dark colibre_dark_svg elementary elementary_svg karasa_jaga karasa_jaga_svg sifr sifr_svg sifr_dark sifr_dark_svg sukapura sukapura_svg"
13230 if test "x$with_theme" != "xno"; then
13231 for theme in $with_theme; do
13233 breeze|breeze_dark|breeze_dark_svg|breeze_svg|colibre|colibre_svg|colibre_dark|colibre_dark_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg|sifr|sifr_svg|sifr_dark|sifr_dark_svg|sukapura|sukapura_svg) real_theme="$theme" ;;
13234 default) real_theme=colibre ;;
13235 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13237 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13240 AC_MSG_RESULT([$WITH_THEMES])
13241 AC_SUBST([WITH_THEMES])
13242 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13243 for theme in $with_theme; do
13245 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13250 ###############################################################################
13251 # Extensions checking
13252 ###############################################################################
13253 AC_MSG_CHECKING([for extensions integration])
13254 if test "x$enable_extension_integration" != "xno"; then
13255 WITH_EXTENSION_INTEGRATION=TRUE
13256 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13257 AC_MSG_RESULT([yes, use integration])
13259 WITH_EXTENSION_INTEGRATION=
13260 AC_MSG_RESULT([no, do not integrate])
13262 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13264 dnl Should any extra extensions be included?
13265 dnl There are standalone tests for each of these below.
13266 WITH_EXTRA_EXTENSIONS=
13267 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13269 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13270 if test "x$with_java" != "xno"; then
13271 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13274 AC_MSG_CHECKING([whether to build opens___.ttf])
13275 if test "$enable_build_opensymbol" = "yes"; then
13276 AC_MSG_RESULT([yes])
13277 AC_PATH_PROG(FONTFORGE, fontforge)
13278 if test -z "$FONTFORGE"; then
13279 AC_MSG_ERROR([fontforge not installed])
13282 AC_MSG_RESULT([no])
13283 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13285 AC_SUBST(FONTFORGE)
13287 dnl ===================================================================
13288 dnl Test whether to include fonts
13289 dnl ===================================================================
13290 AC_MSG_CHECKING([whether to include third-party fonts])
13291 if test "$with_fonts" != "no"; then
13292 AC_MSG_RESULT([yes])
13294 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13295 AC_DEFINE(HAVE_MORE_FONTS)
13297 AC_MSG_RESULT([no])
13299 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13301 AC_SUBST(WITH_FONTS)
13304 dnl ===================================================================
13305 dnl Test whether to enable online update service
13306 dnl ===================================================================
13307 AC_MSG_CHECKING([whether to enable online update])
13308 ENABLE_ONLINE_UPDATE=
13309 ENABLE_ONLINE_UPDATE_MAR=
13311 if test "$enable_online_update" = ""; then
13312 AC_MSG_RESULT([no])
13314 if test "$enable_online_update" = "mar"; then
13315 AC_MSG_RESULT([yes - MAR-based online update])
13316 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13317 if test "$with_update_config" = ""; then
13318 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13320 UPDATE_CONFIG="$with_update_config"
13321 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13322 elif test "$enable_online_update" = "yes"; then
13323 AC_MSG_RESULT([yes])
13324 ENABLE_ONLINE_UPDATE="TRUE"
13326 AC_MSG_RESULT([no])
13329 AC_SUBST(ENABLE_ONLINE_UPDATE)
13330 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13331 AC_SUBST(UPDATE_CONFIG)
13334 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13335 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13336 if test "x$with_privacy_policy_url" = "xundefined"; then
13337 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13340 AC_SUBST(PRIVACY_POLICY_URL)
13341 dnl ===================================================================
13342 dnl Test whether we need bzip2
13343 dnl ===================================================================
13345 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13346 AC_MSG_CHECKING([whether to use system bzip2])
13347 if test "$with_system_bzip2" = yes; then
13349 AC_MSG_RESULT([yes])
13350 PKG_CHECK_MODULES(BZIP2, bzip2)
13351 FilterLibs "${BZIP2_LIBS}"
13352 BZIP2_LIBS="${filteredlibs}"
13354 AC_MSG_RESULT([no])
13355 BUILD_TYPE="$BUILD_TYPE BZIP2"
13358 AC_SUBST(SYSTEM_BZIP2)
13359 AC_SUBST(BZIP2_CFLAGS)
13360 AC_SUBST(BZIP2_LIBS)
13362 dnl ===================================================================
13363 dnl Test whether to enable extension update
13364 dnl ===================================================================
13365 AC_MSG_CHECKING([whether to enable extension update])
13366 ENABLE_EXTENSION_UPDATE=
13367 if test "x$enable_extension_update" = "xno"; then
13368 AC_MSG_RESULT([no])
13370 AC_MSG_RESULT([yes])
13371 ENABLE_EXTENSION_UPDATE="TRUE"
13372 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13373 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13375 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13378 dnl ===================================================================
13379 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13380 dnl ===================================================================
13381 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13382 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13383 AC_MSG_RESULT([no])
13386 AC_MSG_RESULT([yes])
13387 ENABLE_SILENT_MSI=TRUE
13388 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13390 AC_SUBST(ENABLE_SILENT_MSI)
13392 AC_MSG_CHECKING([whether and how to use Xinerama])
13393 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13394 if test "$x_libraries" = "default_x_libraries"; then
13395 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13396 if test "x$XINERAMALIB" = x; then
13397 XINERAMALIB="/usr/lib"
13400 XINERAMALIB="$x_libraries"
13402 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13403 # we have both versions, let the user decide but use the dynamic one
13406 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13407 XINERAMA_LINK=dynamic
13409 XINERAMA_LINK=static
13411 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13412 # we have only the dynamic version
13414 XINERAMA_LINK=dynamic
13415 elif test -e "$XINERAMALIB/libXinerama.a"; then
13417 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13419 XINERAMA_LINK=static
13429 if test "$USE_XINERAMA" = "TRUE"; then
13430 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13431 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13432 [AC_MSG_ERROR(Xinerama header not found.)], [])
13433 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13434 if test "x$XEXTLIB" = x; then
13435 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13437 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13438 if test "$_os" = "FreeBSD"; then
13439 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13441 if test "$_os" = "Linux"; then
13442 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13444 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13445 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13447 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13452 AC_MSG_RESULT([no])
13454 AC_SUBST(USE_XINERAMA)
13455 AC_SUBST(XINERAMA_LINK)
13457 dnl ===================================================================
13458 dnl Test whether to build cairo or rely on the system version
13459 dnl ===================================================================
13461 if test "$test_cairo" = "yes"; then
13462 AC_MSG_CHECKING([whether to use the system cairo])
13464 : ${with_system_cairo:=$with_system_libs}
13465 if test "$with_system_cairo" = "yes"; then
13467 AC_MSG_RESULT([yes])
13469 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13470 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13471 FilterLibs "${CAIRO_LIBS}"
13472 CAIRO_LIBS="${filteredlibs}"
13474 if test "$test_xrender" = "yes"; then
13475 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13477 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13478 #ifdef PictStandardA8
13482 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13487 AC_MSG_RESULT([no])
13488 BUILD_TYPE="$BUILD_TYPE CAIRO"
13491 if test "$enable_cairo_canvas" != no; then
13492 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13493 ENABLE_CAIRO_CANVAS=TRUE
13497 AC_SUBST(CAIRO_CFLAGS)
13498 AC_SUBST(CAIRO_LIBS)
13499 AC_SUBST(ENABLE_CAIRO_CANVAS)
13500 AC_SUBST(SYSTEM_CAIRO)
13502 dnl ===================================================================
13503 dnl Test whether to use avahi
13504 dnl ===================================================================
13505 if test "$_os" = "WINNT"; then
13506 # Windows uses bundled mDNSResponder
13507 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13508 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13509 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13510 [ENABLE_AVAHI="TRUE"])
13511 AC_DEFINE(HAVE_FEATURE_AVAHI)
13512 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13513 FilterLibs "${AVAHI_LIBS}"
13514 AVAHI_LIBS="${filteredlibs}"
13517 AC_SUBST(ENABLE_AVAHI)
13518 AC_SUBST(AVAHI_CFLAGS)
13519 AC_SUBST(AVAHI_LIBS)
13521 dnl ===================================================================
13522 dnl Test whether to use liblangtag
13523 dnl ===================================================================
13525 AC_MSG_CHECKING([whether to use system liblangtag])
13526 if test "$with_system_liblangtag" = yes; then
13527 SYSTEM_LIBLANGTAG=TRUE
13528 AC_MSG_RESULT([yes])
13529 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13530 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13531 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13532 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13533 FilterLibs "${LIBLANGTAG_LIBS}"
13534 LIBLANGTAG_LIBS="${filteredlibs}"
13537 AC_MSG_RESULT([no])
13538 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13539 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13540 if test "$COM" = "MSC"; then
13541 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13543 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13546 AC_SUBST(SYSTEM_LIBLANGTAG)
13547 AC_SUBST(LIBLANGTAG_CFLAGS)
13548 AC_SUBST(LIBLANGTAG_LIBS)
13550 dnl ===================================================================
13551 dnl Test whether to build libpng or rely on the system version
13552 dnl ===================================================================
13554 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13555 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13556 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13558 dnl ===================================================================
13559 dnl Test whether to build libwebp or rely on the system version
13560 dnl ===================================================================
13562 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13564 dnl ===================================================================
13565 dnl Check for runtime JVM search path
13566 dnl ===================================================================
13567 if test "$ENABLE_JAVA" != ""; then
13568 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13569 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13570 AC_MSG_RESULT([yes])
13571 if ! test -d "$with_jvm_path"; then
13572 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13574 if ! test -d "$with_jvm_path"jvm; then
13575 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13577 JVM_ONE_PATH_CHECK="$with_jvm_path"
13578 AC_SUBST(JVM_ONE_PATH_CHECK)
13580 AC_MSG_RESULT([no])
13584 dnl ===================================================================
13585 dnl Test for the presence of Ant and that it works
13586 dnl ===================================================================
13588 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13589 ANT_HOME=; export ANT_HOME
13590 WITH_ANT_HOME=; export WITH_ANT_HOME
13591 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13592 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13593 if test "$_os" = "WINNT"; then
13594 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13596 with_ant_home="$LODE_HOME/opt/ant"
13598 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13599 with_ant_home="$LODE_HOME/opt/ant"
13602 if test -z "$with_ant_home"; then
13603 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13605 if test "$_os" = "WINNT"; then
13606 # AC_PATH_PROGS needs unix path
13607 with_ant_home=`cygpath -u "$with_ant_home"`
13609 AbsolutePath "$with_ant_home"
13610 with_ant_home=$absolute_path
13611 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13612 WITH_ANT_HOME=$with_ant_home
13613 ANT_HOME=$with_ant_home
13616 if test -z "$ANT"; then
13617 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13619 # resolve relative or absolute symlink
13620 while test -h "$ANT"; do
13622 a_basename=`basename "$ANT"`
13623 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13624 cd "`dirname "$ANT"`"
13625 cd "`dirname "$a_script"`"
13626 ANT="`pwd`"/"`basename "$a_script"`"
13630 AC_MSG_CHECKING([if $ANT works])
13631 mkdir -p conftest.dir
13634 cat > conftest.java << EOF
13635 public class conftest {
13636 int testmethod(int a, int b) {
13642 cat > conftest.xml << EOF
13643 <project name="conftest" default="conftest">
13644 <target name="conftest">
13645 <javac srcdir="." includes="conftest.java">
13651 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13652 if test $? = 0 -a -f ./conftest.class; then
13653 AC_MSG_RESULT([Ant works])
13654 if test -z "$WITH_ANT_HOME"; then
13655 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13656 if test -z "$ANT_HOME"; then
13657 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13660 ANT_HOME="$WITH_ANT_HOME"
13663 echo "configure: Ant test failed" >&5
13664 cat conftest.java >&5
13665 cat conftest.xml >&5
13666 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13669 rm -fr conftest.dir
13671 if test -z "$ANT_HOME"; then
13672 ANT_HOME="NO_ANT_HOME"
13674 PathFormat "$ANT_HOME"
13675 ANT_HOME="$formatted_path"
13677 ANT="$formatted_path"
13680 dnl Checking for ant.jar
13681 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13682 AC_MSG_CHECKING([Ant lib directory])
13683 if test -f $ANT_HOME/lib/ant.jar; then
13684 ANT_LIB="$ANT_HOME/lib"
13686 if test -f $ANT_HOME/ant.jar; then
13687 ANT_LIB="$ANT_HOME"
13689 if test -f /usr/share/java/ant.jar; then
13690 ANT_LIB=/usr/share/java
13692 if test -f /usr/share/ant-core/lib/ant.jar; then
13693 ANT_LIB=/usr/share/ant-core/lib
13695 if test -f $ANT_HOME/lib/ant/ant.jar; then
13696 ANT_LIB="$ANT_HOME/lib/ant"
13698 if test -f /usr/share/lib/ant/ant.jar; then
13699 ANT_LIB=/usr/share/lib/ant
13701 AC_MSG_ERROR([Ant libraries not found!])
13708 PathFormat "$ANT_LIB"
13709 ANT_LIB="$formatted_path"
13710 AC_MSG_RESULT([Ant lib directory found.])
13714 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13716 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13717 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13718 ant_version_major=`echo $ant_version | cut -d. -f1`
13719 ant_version_minor=`echo $ant_version | cut -d. -f2`
13720 echo "configure: ant_version $ant_version " >&5
13721 echo "configure: ant_version_major $ant_version_major " >&5
13722 echo "configure: ant_version_minor $ant_version_minor " >&5
13723 if test "$ant_version_major" -ge "2"; then
13724 AC_MSG_RESULT([yes, $ant_version])
13725 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13726 AC_MSG_RESULT([yes, $ant_version])
13728 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13731 rm -f conftest* core core.* *.core
13739 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13740 AC_MSG_CHECKING([for JUnit 4])
13741 if test "$with_junit" = "yes"; then
13742 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13743 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13744 elif test -e /usr/share/java/junit4.jar; then
13745 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13747 if test -e /usr/share/lib/java/junit.jar; then
13748 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13750 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13754 OOO_JUNIT_JAR=$with_junit
13756 if test "$_os" = "WINNT"; then
13757 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13759 printf 'import org.junit.Before;' > conftest.java
13760 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13761 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13764 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13765 specify its pathname via --with-junit=..., or disable it via --without-junit])
13767 rm -f conftest.class conftest.java
13768 if test $OOO_JUNIT_JAR != ""; then
13769 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13772 AC_MSG_CHECKING([for included Hamcrest])
13773 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13774 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13775 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13777 AC_MSG_RESULT([Not included])
13778 AC_MSG_CHECKING([for standalone hamcrest jar.])
13779 if test "$with_hamcrest" = "yes"; then
13780 if test -e /usr/share/lib/java/hamcrest.jar; then
13781 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13782 elif test -e /usr/share/java/hamcrest/core.jar; then
13783 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13784 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13785 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13787 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13790 HAMCREST_JAR=$with_hamcrest
13792 if test "$_os" = "WINNT"; then
13793 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13795 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13796 AC_MSG_RESULT([$HAMCREST_JAR])
13798 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),
13799 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13802 rm -f conftest.class conftest.java
13804 AC_SUBST(OOO_JUNIT_JAR)
13805 AC_SUBST(HAMCREST_JAR)
13811 # check for wget and curl
13816 if test "$enable_fetch_external" != "no"; then
13818 CURL=`which curl 2>/dev/null`
13820 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13822 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13823 if test $? -eq 0; then
13829 if test -z "$WGET" -a -z "$CURL"; then
13830 AC_MSG_ERROR([neither wget nor curl found!])
13839 # check for sha256sum
13843 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13844 eval "$i -a 256 --version" > /dev/null 2>&1
13846 if test $ret -eq 0; then
13847 SHA256SUM="$i -a 256"
13852 if test -z "$SHA256SUM"; then
13853 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13854 eval "$i --version" > /dev/null 2>&1
13856 if test $ret -eq 0; then
13863 if test -z "$SHA256SUM"; then
13864 AC_MSG_ERROR([no sha256sum found!])
13867 AC_SUBST(SHA256SUM)
13869 dnl ===================================================================
13870 dnl Dealing with l10n options
13871 dnl ===================================================================
13872 AC_MSG_CHECKING([which languages to be built])
13873 # get list of all languages
13874 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13875 # the sed command does the following:
13876 # + if a line ends with a backslash, append the next line to it
13877 # + adds " on the beginning of the value (after =)
13878 # + adds " at the end of the value
13879 # + removes en-US; we want to put it on the beginning
13880 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13881 [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)]
13882 ALL_LANGS="en-US $completelangiso"
13883 # check the configured localizations
13884 WITH_LANG="$with_lang"
13886 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13887 # (Norwegian is "nb" and "nn".)
13888 if test "$WITH_LANG" = "no"; then
13892 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13893 AC_MSG_RESULT([en-US])
13895 AC_MSG_RESULT([$WITH_LANG])
13896 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13897 if test -z "$MSGFMT"; then
13898 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13899 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13900 elif test -x "/opt/lo/bin/msgfmt"; then
13901 MSGFMT="/opt/lo/bin/msgfmt"
13903 AC_CHECK_PROGS(MSGFMT, [msgfmt])
13904 if test -z "$MSGFMT"; then
13905 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13909 if test -z "$MSGUNIQ"; then
13910 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13911 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13912 elif test -x "/opt/lo/bin/msguniq"; then
13913 MSGUNIQ="/opt/lo/bin/msguniq"
13915 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13916 if test -z "$MSGUNIQ"; then
13917 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13924 # check that the list is valid
13925 for lang in $WITH_LANG; do
13926 test "$lang" = "ALL" && continue
13927 # need to check for the exact string, so add space before and after the list of all languages
13928 for vl in $ALL_LANGS; do
13929 if test "$vl" = "$lang"; then
13933 if test "$vl" != "$lang"; then
13934 # if you're reading this - you prolly quoted your languages remove the quotes ...
13935 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13938 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13939 echo $WITH_LANG | grep -q en-US
13940 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13942 # list with substituted ALL
13943 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13944 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13945 test "$WITH_LANG" = "en-US" && WITH_LANG=
13946 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13947 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13948 ALL_LANGS=`echo $ALL_LANGS qtz`
13950 AC_SUBST(ALL_LANGS)
13951 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
13952 AC_SUBST(WITH_LANG)
13953 AC_SUBST(WITH_LANG_LIST)
13954 AC_SUBST(GIT_NEEDED_SUBMODULES)
13956 WITH_POOR_HELP_LOCALIZATIONS=
13957 if test -d "$SRC_ROOT/translations/source"; then
13958 for l in `ls -1 $SRC_ROOT/translations/source`; do
13959 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
13960 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
13964 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
13966 if test -n "$with_locales" -a "$with_locales" != ALL; then
13967 WITH_LOCALES="$with_locales"
13969 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
13970 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
13971 # config_host/config_locales.h.in
13972 for locale in $WITH_LOCALES; do
13975 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
13979 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
13982 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
13987 AC_DEFINE(WITH_LOCALE_ALL)
13989 AC_SUBST(WITH_LOCALES)
13991 dnl git submodule update --reference
13992 dnl ===================================================================
13993 if test -n "${GIT_REFERENCE_SRC}"; then
13994 for repo in ${GIT_NEEDED_SUBMODULES}; do
13995 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
13996 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14000 AC_SUBST(GIT_REFERENCE_SRC)
14002 dnl git submodules linked dirs
14003 dnl ===================================================================
14004 if test -n "${GIT_LINK_SRC}"; then
14005 for repo in ${GIT_NEEDED_SUBMODULES}; do
14006 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14007 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14011 AC_SUBST(GIT_LINK_SRC)
14014 dnl ===================================================================
14015 AC_MSG_CHECKING([for alternative branding images directory])
14016 # initialize mapped arrays
14017 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14018 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14020 if test -z "$with_branding" -o "$with_branding" = "no"; then
14021 AC_MSG_RESULT([none])
14022 DEFAULT_BRAND_IMAGES="$brand_files"
14024 if ! test -d $with_branding ; then
14025 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14027 AC_MSG_RESULT([$with_branding])
14028 CUSTOM_BRAND_DIR="$with_branding"
14029 for lfile in $brand_files
14031 if ! test -f $with_branding/$lfile ; then
14032 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14033 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14035 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14038 check_for_progress="yes"
14041 AC_SUBST([BRAND_INTRO_IMAGES])
14042 AC_SUBST([CUSTOM_BRAND_DIR])
14043 AC_SUBST([CUSTOM_BRAND_IMAGES])
14044 AC_SUBST([DEFAULT_BRAND_IMAGES])
14047 AC_MSG_CHECKING([for 'intro' progress settings])
14051 PROGRESSFRAMECOLOR=
14053 PROGRESSTEXTBASELINE=
14055 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14056 source "$with_branding/progress.conf"
14057 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14059 AC_MSG_RESULT([none])
14062 AC_SUBST(PROGRESSBARCOLOR)
14063 AC_SUBST(PROGRESSSIZE)
14064 AC_SUBST(PROGRESSPOSITION)
14065 AC_SUBST(PROGRESSFRAMECOLOR)
14066 AC_SUBST(PROGRESSTEXTCOLOR)
14067 AC_SUBST(PROGRESSTEXTBASELINE)
14070 dnl ===================================================================
14071 dnl Custom build version
14072 dnl ===================================================================
14073 AC_MSG_CHECKING([for extra build ID])
14074 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14075 EXTRA_BUILDID="$with_extra_buildid"
14077 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14078 if test -n "$EXTRA_BUILDID" ; then
14079 AC_MSG_RESULT([$EXTRA_BUILDID])
14081 AC_MSG_RESULT([not set])
14083 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14086 AC_MSG_CHECKING([for vendor])
14087 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14088 OOO_VENDOR="$USERNAME"
14090 if test -z "$OOO_VENDOR"; then
14094 if test -z "$OOO_VENDOR"; then
14095 OOO_VENDOR="`id -u -n`"
14098 AC_MSG_RESULT([not set, using $OOO_VENDOR])
14100 OOO_VENDOR="$with_vendor"
14101 AC_MSG_RESULT([$OOO_VENDOR])
14103 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14104 AC_SUBST(OOO_VENDOR)
14106 if test "$_os" = "Android" ; then
14107 ANDROID_PACKAGE_NAME=
14108 AC_MSG_CHECKING([for Android package name])
14109 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14110 if test -n "$ENABLE_DEBUG"; then
14111 # Default to the package name that makes ndk-gdb happy.
14112 ANDROID_PACKAGE_NAME="org.libreoffice"
14114 ANDROID_PACKAGE_NAME="org.example.libreoffice"
14117 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14119 ANDROID_PACKAGE_NAME="$with_android_package_name"
14120 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14122 AC_SUBST(ANDROID_PACKAGE_NAME)
14125 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14126 if test "$with_compat_oowrappers" = "yes"; then
14127 WITH_COMPAT_OOWRAPPERS=TRUE
14130 WITH_COMPAT_OOWRAPPERS=
14133 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14135 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14136 AC_MSG_CHECKING([for install dirname])
14137 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14138 INSTALLDIRNAME="$with_install_dirname"
14140 AC_MSG_RESULT([$INSTALLDIRNAME])
14141 AC_SUBST(INSTALLDIRNAME)
14143 AC_MSG_CHECKING([for prefix])
14144 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14145 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14146 PREFIXDIR="$prefix"
14147 AC_MSG_RESULT([$PREFIXDIR])
14148 AC_SUBST(PREFIXDIR)
14150 LIBDIR=[$(eval echo $(eval echo $libdir))]
14153 DATADIR=[$(eval echo $(eval echo $datadir))]
14156 MANDIR=[$(eval echo $(eval echo $mandir))]
14159 DOCDIR=[$(eval echo $(eval echo $docdir))]
14162 BINDIR=[$(eval echo $(eval echo $bindir))]
14165 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14166 AC_SUBST(INSTALLDIR)
14168 TESTINSTALLDIR="${BUILDDIR}/test-install"
14169 AC_SUBST(TESTINSTALLDIR)
14172 # ===================================================================
14173 # OAuth2 id and secrets
14174 # ===================================================================
14176 AC_MSG_CHECKING([for Google Drive client id and secret])
14177 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14178 AC_MSG_RESULT([not set])
14179 GDRIVE_CLIENT_ID="\"\""
14180 GDRIVE_CLIENT_SECRET="\"\""
14182 AC_MSG_RESULT([set])
14183 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14184 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14186 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14187 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14189 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14190 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14191 AC_MSG_RESULT([not set])
14192 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14193 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14195 AC_MSG_RESULT([set])
14196 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14197 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14199 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14200 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14202 AC_MSG_CHECKING([for OneDrive client id and secret])
14203 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14204 AC_MSG_RESULT([not set])
14205 ONEDRIVE_CLIENT_ID="\"\""
14206 ONEDRIVE_CLIENT_SECRET="\"\""
14208 AC_MSG_RESULT([set])
14209 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14210 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14212 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14213 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14216 dnl ===================================================================
14217 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14218 dnl --enable-dependency-tracking configure option
14219 dnl ===================================================================
14220 AC_MSG_CHECKING([whether to enable dependency tracking])
14221 if test "$enable_dependency_tracking" = "no"; then
14223 AC_MSG_RESULT([no])
14225 AC_MSG_RESULT([yes])
14229 dnl ===================================================================
14230 dnl Number of CPUs to use during the build
14231 dnl ===================================================================
14232 AC_MSG_CHECKING([for number of processors to use])
14233 # plain --with-parallelism is just the default
14234 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14235 if test "$with_parallelism" = "no"; then
14238 PARALLELISM=$with_parallelism
14241 if test "$enable_icecream" = "yes"; then
14246 Darwin|FreeBSD|NetBSD|OpenBSD)
14247 PARALLELISM=`sysctl -n hw.ncpu`
14251 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14253 # what else than above does profit here *and* has /proc?
14255 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14259 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14260 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14264 if test $PARALLELISM -eq 0; then
14265 AC_MSG_RESULT([explicit make -j option needed])
14267 AC_MSG_RESULT([$PARALLELISM])
14269 AC_SUBST(PARALLELISM)
14272 # Set up ILIB for MSVC build
14275 if test "$build_os" = "cygwin"; then
14277 if test -n "$JAVA_HOME"; then
14278 ILIB="$ILIB;$JAVA_HOME/lib"
14281 ILIB="$ILIB;$COMPATH/lib/$WIN_HOST_ARCH"
14282 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/$WIN_HOST_ARCH"
14283 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14284 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14285 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14286 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14287 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14289 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14290 ucrtlibpath_formatted=$formatted_path
14291 ILIB="$ILIB;$ucrtlibpath_formatted"
14292 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14293 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14294 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
14296 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14299 if test "$cross_compiling" != "yes"; then
14300 ILIB_FOR_BUILD="$ILIB"
14304 AC_SUBST(ILIB_FOR_BUILD)
14306 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14307 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14308 dnl from consteval constructor initializing const variable",
14309 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14310 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14311 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14312 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'",
14313 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14314 dnl constructor in ternary expression (/std:c++latest)", or
14315 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14316 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14317 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14318 dnl && "Ptr must be a pointer to Val type!"' failed.":
14319 AC_LANG_PUSH([C++])
14321 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14322 CXX="env LIB=$ILIB $CXX"
14324 save_CXXFLAGS=$CXXFLAGS
14325 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14326 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14328 consteval S() { i = 1; }
14333 struct S1 { consteval S1(int) {} };
14348 struct S4 { consteval S4() = default; };
14349 void f4(bool b) { b ? S4() : S4(); }
14352 consteval S5() { c = 0; }
14353 char * f() { return &c; }
14359 auto s5 = S5().f();
14361 return (s.i == 1) ? 0 : 1;
14363 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14364 AC_MSG_RESULT([yes])
14365 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14367 CXXFLAGS=$save_CXXFLAGS
14370 # ===================================================================
14371 # Creating bigger shared library to link against
14372 # ===================================================================
14373 AC_MSG_CHECKING([whether to create huge library])
14376 if test $_os = iOS -o $_os = Android; then
14377 # Never any point in mergelibs for these as we build just static
14378 # libraries anyway...
14379 enable_mergelibs=no
14382 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14383 if test $_os != Linux -a $_os != WINNT; then
14384 add_warning "--enable-mergelibs is not tested for this platform"
14387 AC_MSG_RESULT([yes])
14388 AC_DEFINE(ENABLE_MERGELIBS)
14390 AC_MSG_RESULT([no])
14392 AC_SUBST([MERGELIBS])
14394 dnl ===================================================================
14395 dnl icerun is a wrapper that stops us spawning tens of processes
14396 dnl locally - for tools that can't be executed on the compile cluster
14397 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14398 dnl ===================================================================
14399 AC_MSG_CHECKING([whether to use icerun wrapper])
14401 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14402 ICECREAM_RUN=icerun
14403 AC_MSG_RESULT([yes])
14405 AC_MSG_RESULT([no])
14407 AC_SUBST(ICECREAM_RUN)
14409 dnl ===================================================================
14410 dnl Setup the ICECC_VERSION for the build the same way it was set for
14411 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14412 dnl ===================================================================
14413 x_ICECC_VERSION=[\#]
14414 if test -n "$ICECC_VERSION" ; then
14417 AC_SUBST(x_ICECC_VERSION)
14418 AC_SUBST(ICECC_VERSION)
14420 dnl ===================================================================
14422 AC_MSG_CHECKING([MPL subset])
14425 if test "$enable_mpl_subset" = "yes"; then
14427 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14429 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14432 if test "$warn_report" = "true"; then
14433 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14435 if test "x$enable_postgresql_sdbc" != "xno"; then
14436 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14438 if test "$enable_lotuswordpro" = "yes"; then
14439 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14441 if test -n "$ENABLE_POPPLER"; then
14442 if test "x$SYSTEM_POPPLER" = "x"; then
14443 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14446 # cf. m4/libo_check_extension.m4
14447 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14448 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14450 for theme in $WITH_THEMES; do
14452 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14453 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14458 ENABLE_OPENGL_TRANSITIONS=
14460 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14461 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14465 AC_DEFINE(MPL_HAVE_SUBSET)
14466 AC_MSG_RESULT([only])
14468 AC_MSG_RESULT([no restrictions])
14470 AC_SUBST(MPL_SUBSET)
14472 dnl ===================================================================
14474 AC_MSG_CHECKING([formula logger])
14475 ENABLE_FORMULA_LOGGER=
14477 if test "x$enable_formula_logger" = "xyes"; then
14478 AC_MSG_RESULT([yes])
14479 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14480 ENABLE_FORMULA_LOGGER=TRUE
14481 elif test -n "$ENABLE_DBGUTIL" ; then
14482 AC_MSG_RESULT([yes])
14483 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14484 ENABLE_FORMULA_LOGGER=TRUE
14486 AC_MSG_RESULT([no])
14489 AC_SUBST(ENABLE_FORMULA_LOGGER)
14491 dnl ===================================================================
14492 dnl Checking for active Antivirus software.
14493 dnl ===================================================================
14495 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14496 AC_MSG_CHECKING([for active Antivirus software])
14497 ANTIVIRUS_LIST=`cscript.exe //Nologo $SRC_ROOT/antivirusDetection.vbs`
14498 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14499 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14500 AC_MSG_RESULT([found])
14501 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14502 echo $EICAR_STRING > $SRC_ROOT/eicar
14503 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14505 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14506 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14508 echo $EICAR_STRING > $BUILDDIR/eicar
14509 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14511 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14512 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14514 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"
14516 AC_MSG_RESULT([not found])
14519 AC_MSG_RESULT([n/a])
14523 dnl ===================================================================
14524 dnl Setting up the environment.
14525 dnl ===================================================================
14526 AC_MSG_NOTICE([setting up the build environment variables...])
14530 if test "$build_os" = "cygwin"; then
14531 if test -d "$COMPATH/atlmfc/lib/spectre"; then
14532 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14533 ATL_INCLUDE="$COMPATH/atlmfc/include"
14534 elif test -d "$COMPATH/atlmfc/lib"; then
14535 ATL_LIB="$COMPATH/atlmfc/lib"
14536 ATL_INCLUDE="$COMPATH/atlmfc/include"
14538 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14539 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14541 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14542 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14543 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14545 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14546 PathFormat "/usr/bin/find.exe"
14547 FIND="$formatted_path"
14548 PathFormat "/usr/bin/sort.exe"
14549 SORT="$formatted_path"
14550 PathFormat "/usr/bin/grep.exe"
14551 WIN_GREP="$formatted_path"
14552 PathFormat "/usr/bin/ls.exe"
14553 WIN_LS="$formatted_path"
14554 PathFormat "/usr/bin/touch.exe"
14555 WIN_TOUCH="$formatted_path"
14561 AC_SUBST(ATL_INCLUDE)
14567 AC_SUBST(WIN_TOUCH)
14569 AC_SUBST(BUILD_TYPE)
14574 PERL="$formatted_path"
14577 if test -n "$TMPDIR"; then
14578 TEMP_DIRECTORY="$TMPDIR"
14580 TEMP_DIRECTORY="/tmp"
14582 if test "$build_os" = "cygwin"; then
14583 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14585 AC_SUBST(TEMP_DIRECTORY)
14587 # setup the PATH for the environment
14588 if test -n "$LO_PATH_FOR_BUILD"; then
14589 LO_PATH="$LO_PATH_FOR_BUILD"
14592 pathmunge "$MSVC_HOST_PATH" "before"
14600 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14601 if test "$ENABLE_JAVA" != ""; then
14602 pathmunge "$JAVA_HOME/bin" "after"
14607 # Win32 make needs native paths
14608 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14609 LO_PATH=`cygpath -p -m "$PATH"`
14611 if test "$WIN_BUILD_ARCH" = "x64"; then
14612 # needed for msi packaging
14613 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14615 # .NET 4.6 and higher don't have bin directory
14616 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14617 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14619 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14620 pathmunge "$CSC_PATH" "before"
14621 pathmunge "$MIDL_PATH" "before"
14622 pathmunge "$AL_PATH" "before"
14623 pathmunge "$MSVC_MULTI_PATH" "before"
14624 pathmunge "$MSVC_BUILD_PATH" "before"
14625 if test -n "$MSBUILD_PATH" ; then
14626 pathmunge "$MSBUILD_PATH" "before"
14628 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14629 if test "$ENABLE_JAVA" != ""; then
14630 if test -d "$JAVA_HOME/jre/bin/client"; then
14631 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14633 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14634 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14636 pathmunge "$JAVA_HOME/bin" "before"
14638 pathmunge "$MSVC_HOST_PATH" "before"
14642 pathmunge "/usr/css/bin" "before"
14643 if test "$ENABLE_JAVA" != ""; then
14644 pathmunge "$JAVA_HOME/bin" "after"
14652 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14653 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14654 x_LO_ELFCHECK_ALLOWLIST=
14656 x_LO_ELFCHECK_ALLOWLIST=[\#]
14658 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14659 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14663 # Generate a configuration sha256 we can use for deps
14664 if test -f config_host.mk; then
14665 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14667 if test -f config_host_lang.mk; then
14668 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14671 CFLAGS=$my_original_CFLAGS
14672 CXXFLAGS=$my_original_CXXFLAGS
14673 CPPFLAGS=$my_original_CPPFLAGS
14675 AC_CONFIG_LINKS([include:include])
14677 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14678 # BUILD platform configuration] - otherwise breaks cross building
14679 AC_CONFIG_FILES([config_host.mk
14680 config_host_lang.mk
14682 bin/bffvalidator.sh
14683 bin/odfvalidator.sh
14685 hardened_runtime.xcent
14686 instsetoo_native/util/openoffice.lst
14687 sysui/desktop/macosx/Info.plist
14688 vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14689 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14690 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14691 AC_CONFIG_HEADERS([config_host/config_clang.h])
14692 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14693 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14694 AC_CONFIG_HEADERS([config_host/config_eot.h])
14695 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14696 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14697 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14698 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14699 AC_CONFIG_HEADERS([config_host/config_features.h])
14700 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14701 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14702 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14703 AC_CONFIG_HEADERS([config_host/config_folders.h])
14704 AC_CONFIG_HEADERS([config_host/config_fonts.h])
14705 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14706 AC_CONFIG_HEADERS([config_host/config_gio.h])
14707 AC_CONFIG_HEADERS([config_host/config_global.h])
14708 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14709 AC_CONFIG_HEADERS([config_host/config_java.h])
14710 AC_CONFIG_HEADERS([config_host/config_langs.h])
14711 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14712 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14713 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14714 AC_CONFIG_HEADERS([config_host/config_locales.h])
14715 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14716 AC_CONFIG_HEADERS([config_host/config_oox.h])
14717 AC_CONFIG_HEADERS([config_host/config_options.h])
14718 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14719 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14720 AC_CONFIG_HEADERS([config_host/config_skia.h])
14721 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14722 AC_CONFIG_HEADERS([config_host/config_validation.h])
14723 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14724 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14725 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14726 AC_CONFIG_HEADERS([config_host/config_version.h])
14727 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14728 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14729 AC_CONFIG_HEADERS([config_host/config_python.h])
14730 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14731 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
14732 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14735 if test "$CROSS_COMPILING" = TRUE; then
14736 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14739 # touch the config timestamp file
14740 if test ! -f config_host.mk.stamp; then
14741 echo > config_host.mk.stamp
14742 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14743 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14745 echo > config_host.mk.stamp
14748 # touch the config lang timestamp file
14749 if test ! -f config_host_lang.mk.stamp; then
14750 echo > config_host_lang.mk.stamp
14751 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14752 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14754 echo > config_host_lang.mk.stamp
14758 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14759 -a "$build_os" = "cygwin"; then
14762 ****************************************************************************
14764 Your make version is known to be horribly slow, and hard to debug
14765 problems with. To get a reasonably functional make please do:
14767 to install a pre-compiled binary make for Win32
14769 mkdir -p /opt/lo/bin
14771 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14772 cp make-4.2.1-msvc.exe make
14775 to install from source:
14776 place yourself in a working directory of you choice.
14778 git clone git://git.savannah.gnu.org/make.git
14780 [go to Start menu, open "Visual Studio 2019" or "Visual Studio 2022", and then click "x86 Native Tools Command Prompt" or "x64 Native Tools Command Prompt"]
14781 set PATH=%PATH%;C:\Cygwin\bin
14782 [or Cygwin64, if that is what you have]
14783 cd path-to-make-repo-you-cloned-above
14784 build_w32.bat --without-guile
14786 should result in a WinRel/gnumake.exe.
14787 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14789 Then re-run autogen.sh
14791 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14792 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14795 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14796 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14802 ****************************************************************************
14804 To show information on various make targets and make flags, run:
14807 To just build, run:
14812 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14814 After the build has finished successfully, you can immediately run what you built using the command:
14817 if test $_os = Darwin; then
14818 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14820 echo instdir/program/soffice
14824 If you want to run the unit tests, run:
14830 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14831 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14832 cat "$WARNINGS_FILE_FOR_BUILD"
14836 if test -s "$WARNINGS_FILE"; then
14837 echo "HOST config ($WARNINGS_FILE)"
14838 cat "$WARNINGS_FILE"
14841 # Remove unneeded emconfigure artifacts
14842 rm -f a.out a.wasm a.out.js a.out.wasm
14844 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: