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.6.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19 [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22 AC_MSG_ERROR([You have sourced config_host.mk in this shell. This may lead to trouble, please run in a fresh (login) shell.])
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
46 # Return value: $filteredlibs
49 if test "$COM" = "MSC"; then
51 if test "x$f" != "x${f#-L}"; then
52 filteredlibs="$filteredlibs -LIBPATH:${f:2}"
53 elif test "x$f" != "x${f#-l}"; then
54 filteredlibs="$filteredlibs ${f:2}.lib"
56 filteredlibs="$filteredlibs $f"
62 # let's start with Fedora's paths for now
63 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
64 # ignore it: on UNIXoids it is searched by default anyway
65 # but if it's given explicitly then it may override other paths
66 # (on macOS it would be an error to use it instead of SDK)
69 filteredlibs="$filteredlibs $f"
78 # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
79 # function is called also on Unix.
81 # Return value: $formatted_path and $formatted_path_unix.
83 # $formatted_path is the argument in Windows format, but using forward slashes instead of
84 # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
85 # or shell metacharacters).
87 # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
88 # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
91 # Errors out if 8.3 names are needed but aren't present for some of the path components.
95 # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
97 # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
99 # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
101 # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
103 # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
105 # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
107 # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
109 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
110 printf "PathFormat $1 ==> "
114 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
115 if test "$build_os" = "wsl"; then
116 formatted_path=$(echo "$formatted_path" | tr -d '\r')
120 # spaces,parentheses,brackets,braces are problematic in pathname
122 case "$formatted_path" in
123 *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
127 if test "$pf_conv_to_dos" = "yes"; then
128 if test "$build_os" = "wsl"; then
129 case "$formatted_path" in
131 formatted_path=$(wslpath -w "$formatted_path")
134 formatted_path=$($WSL_LO_HELPER --8.3 "$formatted_path")
135 elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
136 formatted_path=`cygpath -sm "$formatted_path"`
138 formatted_path=`cygpath -d "$formatted_path"`
140 if test $? -ne 0; then
141 AC_MSG_ERROR([path conversion failed for "$1".])
144 fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
145 fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
146 if test "$fp_count_slash$fp_count_colon" != "00"; then
147 if test "$fp_count_colon" = "0"; then
148 new_formatted_path=`realpath "$formatted_path"`
149 if test $? -ne 0; then
150 AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
152 formatted_path="$new_formatted_path"
155 if test "$build_os" = "wsl"; then
156 if test "$fp_count_colon" != "0"; then
157 formatted_path=$(wslpath "$formatted_path")
159 case "$formatted_path" in
164 formatted_path=$(wslpath -m $formatted_path)
165 case "$formatted_path" in
169 formatted_path="$formatted_path"$final_slash
173 formatted_path=$(wslpath -m "$formatted_path")
176 formatted_path=`cygpath -m "$formatted_path"`
178 if test $? -ne 0; then
179 AC_MSG_ERROR([path conversion failed for "$1".])
182 fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
183 if test "$fp_count_space" != "0"; then
184 AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
187 if test "$build_os" = "wsl"; then
188 # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
189 formatted_path_unix=$(wslpath "$formatted_path")
192 formatted_path_unix="$formatted_path"
198 # There appears to be no simple and portable method to get an absolute and
199 # canonical path, so we try creating the directory if does not exist and
200 # utilizing the shell and pwd.
202 # Args: $1: A possibly relative pathname
203 # Return value: $absolute_path
205 # Convert to unix path, mkdir would treat c:/path as a relative path.
207 local rel="$formatted_path_unix"
209 test ! -e "$rel" && mkdir -p "$rel"
210 if test -d "$rel" ; then
211 cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
212 absolute_path="$(pwd)"
215 AC_MSG_ERROR([Failed to resolve absolute path. "$rel" does not exist or is not a directory.])
219 WARNINGS_FILE=config.warn
220 WARNINGS_FILE_FOR_BUILD=config.Build.warn
221 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
225 if test "$have_WARNINGS" = "no"; then
226 echo "*************************************" > "$WARNINGS_FILE"
228 if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
229 dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
230 COLORWARN='*
\e@<:@1;33;40m WARNING
\e@<:@0m:'
232 COLORWARN="* WARNING :"
235 echo "$COLORWARN $@" >> "$WARNINGS_FILE"
238 dnl Some Mac User have the bad habit of letting a lot of crap
239 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
240 dnl that confuse the build.
241 dnl For the ones that use LODE, let's be nice and protect them
246 mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
247 dnl a common but nevertheless necessary thing that may be in a fancy
248 dnl path location is git, so make sure we have it
249 mac_git_path=`which git 2>/dev/null`
250 if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
251 mac_path="$mac_path:`dirname $mac_git_path`"
253 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
254 dnl path location is gpg, so make sure we find it
255 mac_gpg_path=`which gpg 2>/dev/null`
256 if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
257 mac_path="$mac_path:`dirname $mac_gpg_path`"
265 dnl semantically test a three digits version
266 dnl $1 - $3 = minimal version
267 dnl $4 - $6 = current version
269 check_semantic_version_three()
272 -o \( "$4" -eq "$1" -a "$5" -gt "$2" \) \
273 -o \( "$4" -eq "$1" -a "$5" -eq "$2" -a "$6" -ge "$3" \)
277 dnl calls check_semantic_version_three with digits in named variables $1_MAJOR, $1_MINOR, $1_TINY
278 dnl $1 = current version prefix, e.g. EMSCRIPTEN => EMSCRIPTEN_
279 dnl $2 = postfix to $1, e.g. MIN => EMSCRIPTEN_MIN_
281 check_semantic_version_three_prefixed()
283 eval local MIN_MAJOR="\$${1}_${2}_MAJOR"
284 eval local MIN_MINOR="\$${1}_${2}_MINOR"
285 eval local MIN_TINY="\$${1}_${2}_TINY"
286 eval local CUR_MAJOR="\$${1}_MAJOR"
287 eval local CUR_MINOR="\$${1}_MINOR"
288 eval local CUR_TINY="\$${1}_TINY"
289 check_semantic_version_three $MIN_MAJOR $MIN_MINOR $MIN_TINY $CUR_MAJOR $CUR_MINOR $CUR_TINY
293 echo "********************************************************************"
295 echo "* Running ${PACKAGE_NAME} build configuration."
297 echo "********************************************************************"
300 dnl ===================================================================
301 dnl checks build and host OSes
302 dnl do this before argument processing to allow for platform dependent defaults
303 dnl ===================================================================
305 # Check for WSL (version 2, at least). But if --host is explicitly specified (to really do build for
306 # Linux on WSL) trust that.
307 if test -z "$host" -a -z "$build" -a "`wslsys -v 2>/dev/null`" != ""; then
308 ac_cv_host="x86_64-pc-wsl"
309 ac_cv_host_cpu="x86_64"
311 ac_cv_build="$ac_cv_host"
312 ac_cv_build_cpu="$ac_cv_host_cpu"
313 ac_cv_build_os="$ac_cv_host_os"
315 # Emulation of Cygwin's cygpath command for WSL.
318 if test -n "$UNITTEST_WSL_CYGPATH"; then
319 echo -n cygpath "$@" "==> "
322 # Cygwin's real cygpath has a plethora of options but we use only a few here.
325 local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
328 while getopts dmuwlsp opt; do
331 AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
341 if test $# -ne 1; then
342 AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
349 if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
350 # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
352 if test -n "$opt_u"; then
353 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
358 # A Windows file in WSL format
359 input=$(wslpath -w "$input")
361 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
362 # Already in Windows format
365 input=$(wslpath -w "$input")
368 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
371 if test -n "$opt_d" -o -n "$opt_s"; then
372 input=$($WSL_LO_HELPER --8.3 "$input")
374 if test -n "$opt_m"; then
375 input="${input//\\//}"
382 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
389 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
395 if test -n "$UNITTEST_WSL_CYGPATH"; then
398 # Nothing special with these file names, just arbitrary ones picked to test with
399 cygpath -d /usr/lib64/ld-linux-x86-64.so.2
400 cygpath -w /usr/lib64/ld-linux-x86-64.so.2
401 cygpath -m /usr/lib64/ld-linux-x86-64.so.2
402 cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
403 # At least on my machine for instance this file does have an 8.3 name
404 cygpath -d /mnt/c/windows/WindowsUpdate.log
405 # But for instance this one doesn't
406 cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
407 cygpath -ws /mnt/c/windows/WindowsUpdate.log
408 cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
409 cygpath -ms /mnt/c/windows/WindowsUpdate.log
411 cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
412 cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
417 if test -z "$WSL_LO_HELPER"; then
418 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/wsl-lo-helper" ; then
419 WSL_LO_HELPER="$LODE_HOME/opt/bin/wsl-lo-helper"
420 elif test -x "/opt/lo/bin/wsl-lo-helper"; then
421 WSL_LO_HELPER="/opt/lo/bin/wsl-lo-helper"
424 if test -z "$WSL_LO_HELPER"; then
425 AC_MSG_ERROR([wsl-lo-helper not found. See solenv/wsl/README.])
432 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
436 # Use of PathFormat must be after AC_CANONICAL_BUILD above
438 printf "$formatted_path , $formatted_path_unix\n"
441 printf "$formatted_path , $formatted_path_unix\n"
443 PathFormat "$PROGRAMFILESX86"
444 printf "$formatted_path , $formatted_path_unix\n"
449 AC_MSG_CHECKING([for product name])
450 PRODUCTNAME="AC_PACKAGE_NAME"
451 if test -n "$with_product_name" -a "$with_product_name" != no; then
452 PRODUCTNAME="$with_product_name"
454 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
455 PRODUCTNAME="${PRODUCTNAME}Dev"
457 AC_MSG_RESULT([$PRODUCTNAME])
458 AC_SUBST(PRODUCTNAME)
459 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
460 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
462 dnl ===================================================================
463 dnl Our version is defined by the AC_INIT() at the top of this script.
464 dnl ===================================================================
466 AC_MSG_CHECKING([for package version])
467 if test -n "$with_package_version" -a "$with_package_version" != no; then
468 PACKAGE_VERSION="$with_package_version"
470 AC_MSG_RESULT([$PACKAGE_VERSION])
472 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
474 LIBO_VERSION_MAJOR=$1
475 LIBO_VERSION_MINOR=$2
476 LIBO_VERSION_MICRO=$3
477 LIBO_VERSION_PATCH=$4
479 LIBO_VERSION_SUFFIX=$5
481 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
482 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
483 # they get undoubled before actually passed to sed.
484 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
485 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
486 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
487 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
489 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
490 # three non-negative integers. Please find more information about CFBundleVersion at
491 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
493 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
494 # of at most three non-negative integers. Please find more information about
495 # CFBundleShortVersionString at
496 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
498 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
500 if test "$enable_macosx_sandbox" = yes; then
501 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
502 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
504 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
505 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
508 AC_SUBST(LIBO_VERSION_MAJOR)
509 AC_SUBST(LIBO_VERSION_MINOR)
510 AC_SUBST(LIBO_VERSION_MICRO)
511 AC_SUBST(LIBO_VERSION_PATCH)
512 AC_SUBST(LIBO_VERSION_SUFFIX)
513 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
514 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
515 AC_SUBST(MACOSX_BUNDLE_VERSION)
517 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
518 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
519 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
520 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
522 LIBO_THIS_YEAR=`date +%Y`
523 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
525 # replace backslashes, to get a valid c++ string
526 config_args=$(echo $ac_configure_args | tr '\\' '/')
527 AC_DEFINE_UNQUOTED([BUILDCONFIG],[["$config_args"]],[Options passed to configure script])
529 dnl ===================================================================
531 dnl ===================================================================
532 AC_MSG_CHECKING([for product version])
533 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
534 AC_MSG_RESULT([$PRODUCTVERSION])
535 AC_SUBST(PRODUCTVERSION)
538 # AC_PROG_EGREP doesn't set GREP on all systems as well
539 AC_PATH_PROG(GREP, grep)
547 dnl ======================================
548 dnl Required GObject introspection version
549 dnl ======================================
550 INTROSPECTION_REQUIRED_VERSION=1.32.0
552 dnl ===================================================================
553 dnl Search all the common names for GNU Make
554 dnl ===================================================================
555 AC_MSG_CHECKING([for GNU Make])
557 # try to use our own make if it is available and GNUMAKE was not already defined
558 if test -z "$GNUMAKE"; then
559 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
560 GNUMAKE="$LODE_HOME/opt/bin/make"
561 elif test -x "/opt/lo/bin/make"; then
562 GNUMAKE="/opt/lo/bin/make"
567 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
568 if test -n "$a"; then
569 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null
570 if test $? -eq 0; then
571 if test "$build_os" = "cygwin"; then
572 if test -n "$($a -v | grep 'Built for Windows')" ; then
573 GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
574 GNUMAKE_WIN_NATIVE="TRUE"
585 AC_MSG_RESULT($GNUMAKE)
586 if test -z "$GNUMAKE"; then
587 AC_MSG_ERROR([not found. install GNU Make.])
589 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
590 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
594 win_short_path_for_make()
596 local short_path="$1"
597 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
598 cygpath -sm "$short_path"
600 cygpath -u "$(cygpath -d "$short_path")"
605 if test "$build_os" = "cygwin"; then
606 PathFormat "$SRC_ROOT"
607 SRC_ROOT="$formatted_path"
608 PathFormat "$BUILDDIR"
609 BUILDDIR="$formatted_path"
611 AC_MSG_CHECKING(for explicit COMSPEC)
612 if test -z "$COMSPEC"; then
613 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
615 AC_MSG_RESULT([found: $COMSPEC])
622 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
623 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
624 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
626 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
627 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
630 # need sed in os checks...
631 AC_PATH_PROGS(SED, sed)
632 if test -z "$SED"; then
633 AC_MSG_ERROR([install sed to run this script])
636 # Set the ENABLE_LTO variable
637 # ===================================================================
638 AC_MSG_CHECKING([whether to use link-time optimization])
639 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
648 AC_ARG_ENABLE(fuzz-options,
649 AS_HELP_STRING([--enable-fuzz-options],
650 [Randomly enable or disable each of those configurable options
651 that are supposed to be freely selectable without interdependencies,
652 or where bad interaction from interdependencies is automatically avoided.])
655 dnl ===================================================================
656 dnl When building for Android, --with-android-ndk,
657 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
659 dnl ===================================================================
661 AC_ARG_WITH(android-ndk,
662 AS_HELP_STRING([--with-android-ndk],
663 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
666 AC_ARG_WITH(android-ndk-toolchain-version,
667 AS_HELP_STRING([--with-android-ndk-toolchain-version],
668 [Specify which toolchain version to use, of those present in the
669 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
670 with_android_ndk_toolchain_version=clang5.0)
672 AC_ARG_WITH(android-sdk,
673 AS_HELP_STRING([--with-android-sdk],
674 [Specify location of the Android SDK. Mandatory when building for Android.]),
677 AC_ARG_WITH(android-api-level,
678 AS_HELP_STRING([--with-android-api-level],
679 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
683 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
684 with_android_ndk="$SRC_ROOT/external/android-ndk"
686 if test -n "$with_android_ndk"; then
687 eval ANDROID_NDK_DIR=$with_android_ndk
689 # Set up a lot of pre-canned defaults
691 if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
692 if test ! -f $ANDROID_NDK_DIR/source.properties; then
693 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
695 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
697 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
699 if test -z "$ANDROID_NDK_VERSION"; then
700 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
702 case $ANDROID_NDK_VERSION in
704 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
706 11.1.*|12.1.*|13.1.*|14.1.*)
707 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
709 16.*|17.*|18.*|19.*|20.*)
712 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
713 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
718 if test -n "$with_android_api_level" ; then
719 ANDROID_API_LEVEL="$with_android_api_level"
722 android_cpu=$host_cpu
723 if test $host_cpu = arm; then
724 android_platform_prefix=arm-linux-androideabi
725 android_gnu_prefix=$android_platform_prefix
726 LLVM_TRIPLE=armv7a-linux-androideabi
727 ANDROID_APP_ABI=armeabi-v7a
728 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
729 elif test $host_cpu = aarch64; then
730 android_platform_prefix=aarch64-linux-android
731 android_gnu_prefix=$android_platform_prefix
732 LLVM_TRIPLE=$android_platform_prefix
733 # minimum android version that supports aarch64
734 if test "$ANDROID_API_LEVEL" -lt "21" ; then
737 ANDROID_APP_ABI=arm64-v8a
738 elif test $host_cpu = x86_64; then
739 android_platform_prefix=x86_64-linux-android
740 android_gnu_prefix=$android_platform_prefix
741 LLVM_TRIPLE=$android_platform_prefix
742 # minimum android version that supports x86_64
744 ANDROID_APP_ABI=x86_64
746 # host_cpu is something like "i386" or "i686" I guess, NDK uses
747 # "x86" in some contexts
749 android_platform_prefix=$android_cpu
750 android_gnu_prefix=i686-linux-android
751 LLVM_TRIPLE=$android_gnu_prefix
755 case "$with_android_ndk_toolchain_version" in
757 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
760 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
763 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
765 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
766 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
767 # manage to link the (app-specific) single huge .so that is built for the app in
768 # android/source/ if there is debug information in a significant part of the object files.
769 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
770 # all objects have been built with debug information.)
773 android_HOST_TAG=linux-x86_64
776 android_HOST_TAG=darwin-x86_64
779 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
780 # ndk would also support windows and windows-x86_64
783 android_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
784 ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
785 dnl TODO: NSS build uses it...
786 ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_DIR/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
787 AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
789 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
790 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
791 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
792 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
793 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
795 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
796 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
797 if test "$ENABLE_LTO" = TRUE; then
798 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
799 # $CC and $CXX when building external libraries
800 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
803 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
805 if test -z "$CC"; then
806 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
809 if test -z "$CXX"; then
810 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
814 AC_SUBST(ANDROID_NDK_DIR)
815 AC_SUBST(ANDROID_APP_ABI)
816 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
818 dnl ===================================================================
819 dnl --with-android-sdk
820 dnl ===================================================================
822 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
823 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
825 if test -n "$with_android_sdk"; then
826 eval ANDROID_SDK_DIR=$with_android_sdk
827 PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
829 AC_SUBST(ANDROID_SDK_DIR)
831 AC_ARG_ENABLE([android-lok],
832 AS_HELP_STRING([--enable-android-lok],
833 [The Android app from the android/ subdir needs several tweaks all
834 over the place that break the LOK when used in the Online-based
835 Android app. This switch indicates that the intent of this build is
836 actually the Online-based, non-modified LOK.])
839 if test -n "$ANDROID_NDK_DIR" ; then
840 if test "$enable_android_lok" = yes; then
841 ENABLE_ANDROID_LOK=TRUE
842 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
843 AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
845 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
848 AC_SUBST([ENABLE_ANDROID_LOK])
850 libo_FUZZ_ARG_ENABLE([android-editing],
851 AS_HELP_STRING([--enable-android-editing],
852 [Enable the experimental editing feature on Android.])
854 ENABLE_ANDROID_EDITING=
855 if test "$enable_android_editing" = yes; then
856 ENABLE_ANDROID_EDITING=TRUE
858 AC_SUBST([ENABLE_ANDROID_EDITING])
860 disable_database_connectivity_dependencies()
863 enable_firebird_sdbc=no
864 enable_mariadb_sdbc=no
865 enable_postgresql_sdbc=no
866 enable_report_builder=no
869 # ===================================================================
871 # Start initial platform setup
873 # The using_* variables reflect platform support and should not be
874 # changed after the "End initial platform setup" block.
875 # This is also true for most test_* variables.
876 # ===================================================================
885 # There is currently just iOS not using salplug, so this explicitly enables it.
886 # must: using_freetype_fontconfig
887 # may: using_headless_plugin defaults to $using_freetype_fontconfig
890 # Default values, as such probably valid just for Linux, set
891 # differently below just for Mac OSX, but at least better than
892 # hardcoding these as we used to do. Much of this is duplicated also
893 # in solenv for old build system and for gbuild, ideally we should
894 # perhaps define stuff like this only here in configure.ac?
896 LINKFLAGSSHL="-shared"
900 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
903 INSTROOTCONTENTSUFFIX=
906 HOST_PLATFORM="$host"
908 host_cpu_for_clang="$host_cpu"
913 using_freetype_fontconfig=yes
918 dnl ===========================================================
919 dnl Check whether we're using Solaris 10 - SPARC or Intel.
920 dnl ===========================================================
921 AC_MSG_CHECKING([the Solaris operating system release])
922 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
923 if test "$_os_release" -lt "10"; then
924 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
926 AC_MSG_RESULT([ok ($_os_release)])
929 dnl Check whether we're using a SPARC or i386 processor
930 AC_MSG_CHECKING([the processor type])
931 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
932 AC_MSG_RESULT([ok ($host_cpu)])
934 AC_MSG_ERROR([only SPARC and i386 processors are supported])
938 linux-gnu*|k*bsd*-gnu*|linux-musl*)
939 using_freetype_fontconfig=yes
944 if test "$enable_fuzzers" = yes; then
945 test_system_freetype=no
951 using_freetype_fontconfig=yes
957 # When building on Windows normally with MSVC under Cygwin,
958 # configure thinks that the host platform (the platform the
959 # built code will run on) is Cygwin, even if it obviously is
960 # Windows, which in Autoconf terminology is called
961 # "mingw32". (Which is misleading as MinGW is the name of the
962 # tool-chain, not an operating system.)
964 # Somewhat confusing, yes. But this configure script doesn't
965 # look at $host etc that much, it mostly uses its own $_os
966 # variable, set here in this case statement.
968 using_freetype_fontconfig=no
979 if test "$host_cpu" = "aarch64"; then
983 enable_firebird_sdbc=no
988 using_freetype_fontconfig=no
992 if test -n "$LODE_HOME" ; then
994 AC_MSG_NOTICE([sanitized the PATH to $PATH])
997 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
998 INSTROOTCONTENTSUFFIX=/Contents
999 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
1000 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1001 LINKFLAGSSHL="-dynamiclib -single_module"
1008 # -undefined error is the default
1009 LINKFLAGSNOUNDEFS=""
1012 # Apple's Clang uses "arm64"
1013 host_cpu_for_clang=arm64
1018 using_freetype_fontconfig=no
1024 if test -n "$LODE_HOME" ; then
1026 AC_MSG_NOTICE([sanitized the PATH to $PATH])
1030 enable_mpl_subset=yes
1031 enable_lotuswordpro=no
1032 disable_database_connectivity_dependencies
1035 enable_extension_integration=no
1038 if test "$enable_ios_simulator" = "yes"; then
1039 host=x86_64-apple-darwin
1041 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1042 LINKFLAGSSHL="-dynamiclib -single_module"
1049 # -undefined error is the default
1050 LINKFLAGSNOUNDEFS=""
1052 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1053 # part, so use aarch64-apple-darwin for now.
1054 HOST_PLATFORM=aarch64-apple-darwin
1056 # Apple's Clang uses "arm64"
1057 host_cpu_for_clang=arm64
1061 using_freetype_fontconfig=yes
1064 AC_MSG_CHECKING([the FreeBSD operating system release])
1065 if test -n "$with_os_version"; then
1066 OSVERSION="$with_os_version"
1068 OSVERSION=`/sbin/sysctl -n kern.osreldate`
1070 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1071 AC_MSG_CHECKING([which thread library to use])
1072 if test "$OSVERSION" -lt "500016"; then
1073 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1074 PTHREAD_LIBS="-pthread"
1075 elif test "$OSVERSION" -lt "502102"; then
1076 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1077 PTHREAD_LIBS="-lc_r"
1080 PTHREAD_LIBS="-pthread"
1082 AC_MSG_RESULT([$PTHREAD_LIBS])
1087 using_freetype_fontconfig=yes
1091 PTHREAD_LIBS="-pthread -lpthread"
1096 using_freetype_fontconfig=yes
1099 test_gstreamer_1_0=no
1100 PTHREAD_LIBS=-pthread
1105 using_freetype_fontconfig=yes
1107 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1108 PTHREAD_LIBS="-pthread"
1113 using_freetype_fontconfig=yes
1116 PTHREAD_LIBS="-pthread"
1121 # API exists, but seems not really usable since Android 7 AFAIK
1123 using_freetype_fontconfig=yes
1124 using_headless_plugin=no
1128 test_system_freetype=no
1130 disable_database_connectivity_dependencies
1131 enable_lotuswordpro=no
1132 enable_mpl_subset=yes
1133 enable_cairo_canvas=no
1143 using_freetype_fontconfig=yes
1152 enable_postgresql_sdbc=no
1153 enable_firebird_sdbc=no
1158 # API currently just exists in headers, not code
1160 using_freetype_fontconfig=yes
1164 test_split_debug=yes
1165 test_system_freetype=no
1166 enable_compiler_plugins=no
1167 enable_customtarget_components=yes
1168 enable_split_debug=yes
1169 enable_wasm_strip=yes
1171 with_theme="colibre"
1176 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1180 AC_SUBST(HOST_PLATFORM)
1182 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1183 AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1186 # Set defaults, if not set by platform
1187 test "${test_cups+set}" = set || test_cups="$using_x11"
1188 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1189 test "${test_gen+set}" = set || test_gen="$using_x11"
1190 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1191 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1192 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1193 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1194 # don't handle test_qt5, so it can disable test_kf5 later
1195 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1196 test "${test_randr+set}" = set || test_randr="$using_x11"
1197 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1198 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1200 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1201 # Make sure fontconfig and freetype test both either system or not
1202 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1203 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1205 # convenience / platform overriding "fixes"
1207 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1208 test "$test_kf5" = yes && test_qt5=yes
1209 test "$test_gtk3" != yes && enable_gtk3=no
1210 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1211 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1212 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1214 # Keep in sync with the above $using_x11 depending test default list
1220 test_gstreamer_1_0=no
1231 test "$using_x11" = yes && USING_X11=TRUE
1233 if test "$using_freetype_fontconfig" = yes; then
1234 AC_DEFINE(USE_HEADLESS_CODE)
1235 USE_HEADLESS_CODE=TRUE
1236 if test "$using_headless_plugin" = yes; then
1237 AC_DEFINE(ENABLE_HEADLESS)
1238 ENABLE_HEADLESS=TRUE
1245 AC_SUBST(ENABLE_HEADLESS)
1246 AC_SUBST(USE_HEADLESS_CODE)
1248 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1249 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1250 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1251 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1253 # ===================================================================
1255 # End initial platform setup
1257 # ===================================================================
1259 if test "$_os" = "Android" ; then
1260 # Verify that the NDK and SDK options are proper
1261 if test -z "$with_android_ndk"; then
1262 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1263 elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1264 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1267 if test -z "$ANDROID_SDK_DIR"; then
1268 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1269 elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1270 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1274 if test "$_os" = "AIX"; then
1275 AC_PATH_PROG(GAWK, gawk)
1276 if test -z "$GAWK"; then
1277 AC_MSG_ERROR([gawk not found in \$PATH])
1281 AC_SUBST(SDKDIRNAME)
1283 AC_SUBST(PTHREAD_CFLAGS)
1284 AC_SUBST(PTHREAD_LIBS)
1286 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1287 # By default use the ones specified by our build system,
1288 # but explicit override is possible.
1289 AC_MSG_CHECKING(for explicit AFLAGS)
1290 if test -n "$AFLAGS"; then
1291 AC_MSG_RESULT([$AFLAGS])
1297 AC_MSG_CHECKING(for explicit CFLAGS)
1298 if test -n "$CFLAGS"; then
1299 AC_MSG_RESULT([$CFLAGS])
1305 AC_MSG_CHECKING(for explicit CXXFLAGS)
1306 if test -n "$CXXFLAGS"; then
1307 AC_MSG_RESULT([$CXXFLAGS])
1313 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1314 if test -n "$OBJCFLAGS"; then
1315 AC_MSG_RESULT([$OBJCFLAGS])
1321 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1322 if test -n "$OBJCXXFLAGS"; then
1323 AC_MSG_RESULT([$OBJCXXFLAGS])
1329 AC_MSG_CHECKING(for explicit LDFLAGS)
1330 if test -n "$LDFLAGS"; then
1331 AC_MSG_RESULT([$LDFLAGS])
1341 AC_SUBST(OBJCXXFLAGS)
1345 AC_SUBST(x_CXXFLAGS)
1346 AC_SUBST(x_OBJCFLAGS)
1347 AC_SUBST(x_OBJCXXFLAGS)
1350 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1351 my_original_CFLAGS=$CFLAGS
1352 my_original_CXXFLAGS=$CXXFLAGS
1353 my_original_CPPFLAGS=$CPPFLAGS
1355 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1356 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1357 dnl AC_PROG_CC internally.
1358 if test "$_os" != "WINNT"; then
1359 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1363 if test -z "$CC_BASE"; then
1364 CC_BASE=`first_arg_basename "$CC"`
1368 if test "$_os" != "WINNT"; then
1369 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1373 AC_SUBST(ENDIANNESS)
1375 if test "$usable_dlapi" != no; then
1376 AC_DEFINE([HAVE_DLAPI])
1377 if test "$test_unix_dlapi" != no; then
1379 AC_SEARCH_LIBS([dlsym], [dl],
1380 [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1381 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1383 AC_DEFINE([HAVE_UNIX_DLAPI])
1386 AC_SUBST(UNIX_DLAPI_LIBS)
1388 # Check for a (GNU) backtrace implementation
1389 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1390 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1391 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1393 AC_SEARCH_LIBS([backtrace], [libexecinfo],
1394 [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1395 [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1398 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1399 AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1402 dnl ===================================================================
1403 dnl Sanity checks for Emscripten SDK setup
1404 dnl ===================================================================
1406 EMSCRIPTEN_MIN_MAJOR=2
1407 EMSCRIPTEN_MIN_MINOR=0
1408 EMSCRIPTEN_MIN_TINY=31
1409 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1411 if test "$_os" = "Emscripten"; then
1412 AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1413 AS_IF([test -z "$EMSDK"],
1414 [AC_MSG_ERROR([No \$EMSDK environment variable.])])
1415 EMSCRIPTEN_VERSION_H=$EMSDK/upstream/emscripten/cache/sysroot/include/emscripten/version.h
1416 if test -f "$EMSCRIPTEN_VERSION_H"; then
1417 EMSCRIPTEN_MAJOR=$($GREP __EMSCRIPTEN_major__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1418 EMSCRIPTEN_MINOR=$($GREP __EMSCRIPTEN_minor__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1419 EMSCRIPTEN_TINY=$($GREP __EMSCRIPTEN_tiny__ "$EMSCRIPTEN_VERSION_H" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1421 EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1422 EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1423 EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1424 EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1427 EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1429 check_semantic_version_three_prefixed EMSCRIPTEN MIN
1430 if test $? -eq 0; then
1431 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1433 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1437 if ! which emconfigure >/dev/null 2>&1; then
1438 AC_MSG_WARN([emconfigure must be in your \$PATH])
1441 if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1442 AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1445 EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1446 if ! test -x "$EMSDK_FILE_PACKAGER"; then
1447 AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1450 if test $EMSCRIPTEN_ERROR -ne 0; then
1451 AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1454 AC_SUBST(EMSDK_FILE_PACKAGER)
1456 ###############################################################################
1457 # Extensions switches --enable/--disable
1458 ###############################################################################
1459 # By default these should be enabled unless having extra dependencies.
1460 # If there is extra dependency over configure options then the enable should
1461 # be automagic based on whether the requiring feature is enabled or not.
1462 # All this options change anything only with --enable-extension-integration.
1464 # The name of this option and its help string makes it sound as if
1465 # extensions are built anyway, just not integrated in the installer,
1466 # if you use --disable-extension-integration. Is that really the
1469 AC_ARG_ENABLE(ios-simulator,
1470 AS_HELP_STRING([--enable-ios-simulator],
1471 [build for iOS simulator])
1474 libo_FUZZ_ARG_ENABLE(extension-integration,
1475 AS_HELP_STRING([--disable-extension-integration],
1476 [Disable integration of the built extensions in the installer of the
1477 product. Use this switch to disable the integration.])
1480 AC_ARG_ENABLE(avmedia,
1481 AS_HELP_STRING([--disable-avmedia],
1482 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1483 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1485 AC_ARG_ENABLE(database-connectivity,
1486 AS_HELP_STRING([--disable-database-connectivity],
1487 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1490 # This doesn't mean not building (or "integrating") extensions
1491 # (although it probably should; i.e. it should imply
1492 # --disable-extension-integration I guess), it means not supporting
1493 # any extension mechanism at all
1494 libo_FUZZ_ARG_ENABLE(extensions,
1495 AS_HELP_STRING([--disable-extensions],
1496 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1499 AC_ARG_ENABLE(scripting,
1500 AS_HELP_STRING([--disable-scripting],
1501 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1502 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1504 # This is mainly for Android and iOS, but could potentially be used in some
1505 # special case otherwise, too, so factored out as a separate setting
1507 AC_ARG_ENABLE(dynamic-loading,
1508 AS_HELP_STRING([--disable-dynamic-loading],
1509 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1512 libo_FUZZ_ARG_ENABLE(report-builder,
1513 AS_HELP_STRING([--disable-report-builder],
1514 [Disable the Report Builder.])
1517 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1518 AS_HELP_STRING([--enable-ext-wiki-publisher],
1519 [Enable the Wiki Publisher extension.])
1522 libo_FUZZ_ARG_ENABLE(lpsolve,
1523 AS_HELP_STRING([--disable-lpsolve],
1524 [Disable compilation of the lp solve solver ])
1526 libo_FUZZ_ARG_ENABLE(coinmp,
1527 AS_HELP_STRING([--disable-coinmp],
1528 [Disable compilation of the CoinMP solver ])
1531 libo_FUZZ_ARG_ENABLE(pdfimport,
1532 AS_HELP_STRING([--disable-pdfimport],
1533 [Disable building the PDF import feature.])
1536 libo_FUZZ_ARG_ENABLE(pdfium,
1537 AS_HELP_STRING([--disable-pdfium],
1538 [Disable building PDFium. Results in unsecure PDF signature verification.])
1541 libo_FUZZ_ARG_ENABLE(skia,
1542 AS_HELP_STRING([--disable-skia],
1543 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1546 ###############################################################################
1548 dnl ---------- *** ----------
1550 libo_FUZZ_ARG_ENABLE(mergelibs,
1551 AS_HELP_STRING([--enable-mergelibs],
1552 [Merge several of the smaller libraries into one big, "merged", one.])
1555 libo_FUZZ_ARG_ENABLE(breakpad,
1556 AS_HELP_STRING([--enable-breakpad],
1557 [Enables breakpad for crash reporting.])
1560 libo_FUZZ_ARG_ENABLE(crashdump,
1561 AS_HELP_STRING([--disable-crashdump],
1562 [Disable dump.ini and dump-file, when --enable-breakpad])
1565 AC_ARG_ENABLE(fetch-external,
1566 AS_HELP_STRING([--disable-fetch-external],
1567 [Disables fetching external tarballs from web sources.])
1570 AC_ARG_ENABLE(fuzzers,
1571 AS_HELP_STRING([--enable-fuzzers],
1572 [Enables building libfuzzer targets for fuzz testing.])
1575 libo_FUZZ_ARG_ENABLE(pch,
1576 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1577 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1578 Using 'system' will include only external headers, 'base' will add also headers
1579 from base modules, 'normal' will also add all headers except from the module built,
1580 'full' will use all suitable headers even from a module itself.])
1583 libo_FUZZ_ARG_ENABLE(epm,
1584 AS_HELP_STRING([--enable-epm],
1585 [LibreOffice includes self-packaging code, that requires epm, however epm is
1586 useless for large scale package building.])
1589 libo_FUZZ_ARG_ENABLE(odk,
1590 AS_HELP_STRING([--enable-odk],
1591 [Enable building the Office Development Kit, the part that extensions need to build against])
1594 AC_ARG_ENABLE(mpl-subset,
1595 AS_HELP_STRING([--enable-mpl-subset],
1596 [Don't compile any pieces which are not MPL or more liberally licensed])
1599 libo_FUZZ_ARG_ENABLE(evolution2,
1600 AS_HELP_STRING([--enable-evolution2],
1601 [Allows the built-in evolution 2 addressbook connectivity build to be
1605 AC_ARG_ENABLE(avahi,
1606 AS_HELP_STRING([--enable-avahi],
1607 [Determines whether to use Avahi to advertise Impress to remote controls.])
1610 libo_FUZZ_ARG_ENABLE(werror,
1611 AS_HELP_STRING([--enable-werror],
1612 [Turn warnings to errors. (Has no effect in modules where the treating
1613 of warnings as errors is disabled explicitly.)]),
1616 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1617 AS_HELP_STRING([--enable-assert-always-abort],
1618 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1621 libo_FUZZ_ARG_ENABLE(dbgutil,
1622 AS_HELP_STRING([--enable-dbgutil],
1623 [Provide debugging support from --enable-debug and include additional debugging
1624 utilities such as object counting or more expensive checks.
1625 This is the recommended option for developers.
1626 Note that this makes the build ABI incompatible, it is not possible to mix object
1627 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1629 libo_FUZZ_ARG_ENABLE(debug,
1630 AS_HELP_STRING([--enable-debug],
1631 [Include debugging information, disable compiler optimization and inlining plus
1632 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1634 libo_FUZZ_ARG_ENABLE(split-debug,
1635 AS_HELP_STRING([--disable-split-debug],
1636 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1637 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1639 libo_FUZZ_ARG_ENABLE(gdb-index,
1640 AS_HELP_STRING([--disable-gdb-index],
1641 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1642 The feature requires a linker that supports the --gdb-index option.]))
1644 libo_FUZZ_ARG_ENABLE(sal-log,
1645 AS_HELP_STRING([--enable-sal-log],
1646 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1648 libo_FUZZ_ARG_ENABLE(symbols,
1649 AS_HELP_STRING([--enable-symbols],
1650 [Generate debug information.
1651 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1652 otherwise. It is possible to explicitly specify gbuild build targets
1653 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1654 everything in the directory; there is no ordering, more specific overrides
1655 more general, and disabling takes precedence).
1656 Example: --enable-symbols="all -sw/ -Library_sc".]))
1658 libo_FUZZ_ARG_ENABLE(optimized,
1659 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1660 [Whether to compile with optimization flags.
1661 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1662 otherwise. Using 'debug' will try to use only optimizations that should
1663 not interfere with debugging. For Emscripten we default to optimized (-O1)
1664 debug build, as otherwise binaries become too large.]))
1666 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1667 AS_HELP_STRING([--disable-runtime-optimizations],
1668 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1669 JVM JIT) that are known to interact badly with certain dynamic analysis
1670 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1671 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1672 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1674 AC_ARG_WITH(valgrind,
1675 AS_HELP_STRING([--with-valgrind],
1676 [Make availability of Valgrind headers a hard requirement.]))
1678 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1679 AS_HELP_STRING([--enable-compiler-plugins],
1680 [Enable compiler plugins that will perform additional checks during
1681 building. Enabled automatically by --enable-dbgutil.
1682 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1683 COMPILER_PLUGINS_DEBUG=
1684 if test "$enable_compiler_plugins" = debug; then
1685 enable_compiler_plugins=yes
1686 COMPILER_PLUGINS_DEBUG=TRUE
1689 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1690 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1691 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1692 relevant in the --disable-compiler-plugins case.]))
1694 libo_FUZZ_ARG_ENABLE(ooenv,
1695 AS_HELP_STRING([--enable-ooenv],
1696 [Enable ooenv for the instdir installation.]))
1699 AS_HELP_STRING([--enable-lto],
1700 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1701 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1704 AC_ARG_ENABLE(python,
1705 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1706 [Enables or disables Python support at run-time.
1707 Also specifies what Python to use at build-time.
1708 'fully-internal' even forces the internal version for uses of Python
1710 On macOS the only choices are
1711 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1714 libo_FUZZ_ARG_ENABLE(gtk3,
1715 AS_HELP_STRING([--disable-gtk3],
1716 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1717 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1720 AS_HELP_STRING([--enable-gtk4],
1721 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1723 AC_ARG_ENABLE(introspection,
1724 AS_HELP_STRING([--enable-introspection],
1725 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1726 Linux distributions.)]))
1728 AC_ARG_ENABLE(split-app-modules,
1729 AS_HELP_STRING([--enable-split-app-modules],
1730 [Split file lists for app modules, e.g. base, calc.
1731 Has effect only with make distro-pack-install]),
1734 AC_ARG_ENABLE(split-opt-features,
1735 AS_HELP_STRING([--enable-split-opt-features],
1736 [Split file lists for some optional features, e.g. pyuno, testtool.
1737 Has effect only with make distro-pack-install]),
1740 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1741 AS_HELP_STRING([--disable-cairo-canvas],
1742 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1745 libo_FUZZ_ARG_ENABLE(dbus,
1746 AS_HELP_STRING([--disable-dbus],
1747 [Determines whether to enable features that depend on dbus.
1748 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1749 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1751 libo_FUZZ_ARG_ENABLE(sdremote,
1752 AS_HELP_STRING([--disable-sdremote],
1753 [Determines whether to enable Impress remote control (i.e. the server component).]),
1754 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1756 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1757 AS_HELP_STRING([--disable-sdremote-bluetooth],
1758 [Determines whether to build sdremote with bluetooth support.
1759 Requires dbus on Linux.]))
1761 libo_FUZZ_ARG_ENABLE(gio,
1762 AS_HELP_STRING([--disable-gio],
1763 [Determines whether to use the GIO support.]),
1764 ,test "${enable_gio+set}" = set || enable_gio=yes)
1767 AS_HELP_STRING([--enable-qt5],
1768 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1773 AS_HELP_STRING([--enable-qt6],
1774 [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1779 AS_HELP_STRING([--enable-kf5],
1780 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1781 KF5 are available.]),
1784 AC_ARG_ENABLE(gtk3_kde5,
1785 AS_HELP_STRING([--enable-gtk3-kde5],
1786 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1787 platforms where Gtk3, Qt5 and Plasma is available.]),
1791 AS_HELP_STRING([--enable-gen],
1792 [To select the gen backend in case of --disable-dynamic-loading.
1793 Per default auto-enabled when X11 is used.]),
1794 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1797 AS_HELP_STRING([--disable-gui],
1798 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1801 libo_FUZZ_ARG_ENABLE(randr,
1802 AS_HELP_STRING([--disable-randr],
1803 [Disable RandR support in the vcl project.]),
1804 ,test "${enable_randr+set}" = set || enable_randr=yes)
1806 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1807 AS_HELP_STRING([--disable-gstreamer-1-0],
1808 [Disable building with the gstreamer 1.0 avmedia backend.]),
1809 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1811 libo_FUZZ_ARG_ENABLE([eot],
1812 [AS_HELP_STRING([--enable-eot],
1813 [Enable support for Embedded OpenType fonts.])],
1814 ,test "${enable_eot+set}" = set || enable_eot=no)
1816 libo_FUZZ_ARG_ENABLE(cve-tests,
1817 AS_HELP_STRING([--disable-cve-tests],
1818 [Prevent CVE tests to be executed]),
1821 AC_ARG_ENABLE(build-opensymbol,
1822 AS_HELP_STRING([--enable-build-opensymbol],
1823 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1824 fontforge installed.]),
1827 AC_ARG_ENABLE(dependency-tracking,
1828 AS_HELP_STRING([--enable-dependency-tracking],
1829 [Do not reject slow dependency extractors.])[
1830 --disable-dependency-tracking
1831 Disables generation of dependency information.
1832 Speed up one-time builds.],
1835 AC_ARG_ENABLE(icecream,
1836 AS_HELP_STRING([--enable-icecream],
1837 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1838 It defaults to /opt/icecream for the location of the icecream gcc/g++
1839 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1843 AS_HELP_STRING([--enable-ld=<linker>],
1844 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1845 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1846 If <linker> contains any ':', the part before the first ':' is used as the value of
1847 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1848 needed for Clang 12).]),
1851 libo_FUZZ_ARG_ENABLE(cups,
1852 AS_HELP_STRING([--disable-cups],
1853 [Do not build cups support.])
1856 AC_ARG_ENABLE(ccache,
1857 AS_HELP_STRING([--disable-ccache],
1858 [Do not try to use ccache automatically.
1859 By default we will try to detect if ccache is available; in that case if
1860 CC/CXX are not yet set, and --enable-icecream is not given, we
1861 attempt to use ccache. --disable-ccache disables ccache completely.
1862 Additionally ccache's depend mode is enabled if possible,
1863 use --enable-ccache=nodepend to enable ccache without depend mode.
1867 AC_ARG_ENABLE(z7-debug,
1868 AS_HELP_STRING([--enable-z7-debug],
1869 [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1870 more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1871 Enabled by default if ccache is detected.]))
1873 libo_FUZZ_ARG_ENABLE(online-update,
1874 AS_HELP_STRING([--enable-online-update],
1875 [Enable the online update service that will check for new versions of
1876 LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1877 If the value is "mar", the experimental Mozilla-like update will be
1878 enabled instead of the traditional update mechanism.]),
1881 AC_ARG_WITH(update-config,
1882 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1883 [Path to the update config ini file]))
1885 libo_FUZZ_ARG_ENABLE(extension-update,
1886 AS_HELP_STRING([--disable-extension-update],
1887 [Disable possibility to update installed extensions.]),
1890 libo_FUZZ_ARG_ENABLE(release-build,
1891 AS_HELP_STRING([--enable-release-build],
1892 [Enable release build. Note that the "release build" choice is orthogonal to
1893 whether symbols are present, debug info is generated, or optimization
1895 See https://wiki.documentfoundation.org/Development/DevBuild]),
1898 AC_ARG_ENABLE(windows-build-signing,
1899 AS_HELP_STRING([--enable-windows-build-signing],
1900 [Enable signing of windows binaries (*.exe, *.dll)]),
1903 AC_ARG_ENABLE(silent-msi,
1904 AS_HELP_STRING([--enable-silent-msi],
1905 [Enable MSI with LIMITUI=1 (silent install).]),
1908 AC_ARG_ENABLE(macosx-code-signing,
1909 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1910 [Sign executables, dylibs, frameworks and the app bundle. If you
1911 don't provide an identity the first suitable certificate
1912 in your keychain is used.]),
1915 AC_ARG_ENABLE(macosx-package-signing,
1916 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1917 [Create a .pkg suitable for uploading to the Mac App Store and sign
1918 it. If you don't provide an identity the first suitable certificate
1919 in your keychain is used.]),
1922 AC_ARG_ENABLE(macosx-sandbox,
1923 AS_HELP_STRING([--enable-macosx-sandbox],
1924 [Make the app bundle run in a sandbox. Requires code signing.
1925 Is required by apps distributed in the Mac App Store, and implies
1926 adherence to App Store rules.]),
1929 AC_ARG_WITH(macosx-bundle-identifier,
1930 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1931 [Define the macOS bundle identifier. Default is the somewhat weird
1932 org.libreoffice.script ("script", huh?).]),
1933 ,with_macosx_bundle_identifier=org.libreoffice.script)
1935 AC_ARG_WITH(macosx-provisioning-profile,
1936 AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1937 [Specify the path to a provisioning profile to use]),
1940 AC_ARG_WITH(product-name,
1941 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1942 [Define the product name. Default is AC_PACKAGE_NAME.]),
1943 ,with_product_name=$PRODUCTNAME)
1945 libo_FUZZ_ARG_ENABLE(community-flavor,
1946 AS_HELP_STRING([--disable-community-flavor],
1947 [Disable the Community branding.]),
1950 AC_ARG_WITH(package-version,
1951 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1952 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1955 libo_FUZZ_ARG_ENABLE(readonly-installset,
1956 AS_HELP_STRING([--enable-readonly-installset],
1957 [Prevents any attempts by LibreOffice to write into its installation. That means
1958 at least that no "system-wide" extensions can be added. Partly experimental work in
1959 progress, probably not fully implemented. Always enabled for macOS.]),
1962 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1963 AS_HELP_STRING([--disable-mariadb-sdbc],
1964 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1967 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1968 AS_HELP_STRING([--disable-postgresql-sdbc],
1969 [Disable the build of the PostgreSQL-SDBC driver.])
1972 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1973 AS_HELP_STRING([--disable-lotuswordpro],
1974 [Disable the build of the Lotus Word Pro filter.]),
1975 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1977 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1978 AS_HELP_STRING([--disable-firebird-sdbc],
1979 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1980 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1982 AC_ARG_ENABLE(bogus-pkg-config,
1983 AS_HELP_STRING([--enable-bogus-pkg-config],
1984 [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.]),
1987 AC_ARG_ENABLE(openssl,
1988 AS_HELP_STRING([--disable-openssl],
1989 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1990 components will use NSS. Work in progress,
1991 use only if you are hacking on it.]),
1992 ,enable_openssl=yes)
1994 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1995 AS_HELP_STRING([--enable-cipher-openssl-backend],
1996 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1997 Requires --enable-openssl.]))
2000 AS_HELP_STRING([--disable-nss],
2001 [Disable using NSS. If disabled,
2002 components will use openssl. Work in progress,
2003 use only if you are hacking on it.]),
2006 AC_ARG_ENABLE(library-bin-tar,
2007 AS_HELP_STRING([--enable-library-bin-tar],
2008 [Enable the building and reused of tarball of binary build for some 'external' libraries.
2009 Some libraries can save their build result in a tarball
2010 stored in TARFILE_LOCATION. That binary tarball is
2011 uniquely identified by the source tarball,
2012 the content of the config_host.mk file and the content
2013 of the top-level directory in core for that library
2014 If this option is enabled, then if such a tarfile exist, it will be untarred
2015 instead of the source tarfile, and the build step will be skipped for that
2017 If a proper tarfile does not exist, then the normal source-based
2018 build is done for that library and a proper binary tarfile is created
2019 for the next time.]),
2022 AC_ARG_ENABLE(dconf,
2023 AS_HELP_STRING([--disable-dconf],
2024 [Disable the dconf configuration backend (enabled by default where
2027 libo_FUZZ_ARG_ENABLE(formula-logger,
2029 [--enable-formula-logger],
2030 [Enable formula logger for logging formula calculation flow in Calc.]
2035 AS_HELP_STRING([--disable-ldap],
2036 [Disable LDAP support.]),
2039 AC_ARG_ENABLE(opencl,
2040 AS_HELP_STRING([--disable-opencl],
2041 [Disable OpenCL support.]),
2044 libo_FUZZ_ARG_ENABLE(librelogo,
2045 AS_HELP_STRING([--disable-librelogo],
2046 [Do not build LibreLogo.]),
2047 ,enable_librelogo=yes)
2049 AC_ARG_ENABLE(wasm-strip,
2050 AS_HELP_STRING([--enable-wasm-strip],
2051 [Strip the static build like for WASM/emscripten platform.]),
2054 AC_ARG_WITH(main-module,
2055 AS_HELP_STRING([--with-main-module=<writer/calc>],
2056 [Specify which main module to build for wasm.
2057 Default value is 'writer'.]),
2060 AC_ARG_ENABLE(wasm-exceptions,
2061 AS_HELP_STRING([--enable-wasm-exceptions],
2062 [Build with native WASM exceptions (AKA -fwasm-exceptions),
2063 matter of fact, this is currently not finished by any implementation)
2064 (see https://webassembly.org/roadmap/ for the current state]),
2067 AC_ARG_ENABLE(xmlhelp,
2068 AS_HELP_STRING([--disable-xmlhelp],
2069 [Disable XML help support]),
2070 ,enable_xmlhelp=yes)
2072 AC_ARG_ENABLE(customtarget-components,
2073 AS_HELP_STRING([--enable-customtarget-components],
2074 [Generates the static UNO object constructor mapping from the build.]))
2076 AC_ARG_ENABLE(float_device_pixel,
2077 AS_HELP_STRING([--enable-float-device-pixel],
2078 [Uses doubles for VCL device coordinates instead of 32-bit integers.]),
2081 dnl ===================================================================
2082 dnl Optional Packages (--with/without-)
2083 dnl ===================================================================
2085 AC_ARG_WITH(gcc-home,
2086 AS_HELP_STRING([--with-gcc-home],
2087 [Specify the location of gcc/g++ manually. This can be used in conjunction
2088 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2089 non-default path.]),
2092 AC_ARG_WITH(gnu-patch,
2093 AS_HELP_STRING([--with-gnu-patch],
2094 [Specify location of GNU patch on Solaris or FreeBSD.]),
2097 AC_ARG_WITH(build-platform-configure-options,
2098 AS_HELP_STRING([--with-build-platform-configure-options],
2099 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2103 AS_HELP_STRING([--with-gnu-cp],
2104 [Specify location of GNU cp on Solaris or FreeBSD.]),
2107 AC_ARG_WITH(external-tar,
2108 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2109 [Specify an absolute path of where to find (and store) tarfiles.]),
2110 TARFILE_LOCATION=$withval ,
2113 AC_ARG_WITH(referenced-git,
2114 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2115 [Specify another checkout directory to reference. This makes use of
2116 git submodule update --reference, and saves a lot of diskspace
2117 when having multiple trees side-by-side.]),
2118 GIT_REFERENCE_SRC=$withval ,
2121 AC_ARG_WITH(linked-git,
2122 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2123 [Specify a directory where the repositories of submodules are located.
2124 This uses a method similar to git-new-workdir to get submodules.]),
2125 GIT_LINK_SRC=$withval ,
2128 AC_ARG_WITH(galleries,
2129 AS_HELP_STRING([--with-galleries],
2130 [Specify how galleries should be built. It is possible either to
2131 build these internally from source ("build"),
2132 or to disable them ("no")]),
2136 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2137 [Choose which themes to include. By default those themes with an '*' are included.
2138 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2139 *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2140 *elementary, *elementary_svg,
2141 *karasa_jaga, *karasa_jaga_svg,
2142 *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2143 *sukapura, *sukapura_svg.]),
2146 libo_FUZZ_ARG_WITH(helppack-integration,
2147 AS_HELP_STRING([--without-helppack-integration],
2148 [It will not integrate the helppacks to the installer
2149 of the product. Please use this switch to use the online help
2150 or separate help packages.]),
2153 libo_FUZZ_ARG_WITH(fonts,
2154 AS_HELP_STRING([--without-fonts],
2155 [LibreOffice includes some third-party fonts to provide a reliable basis for
2156 help content, templates, samples, etc. When these fonts are already
2157 known to be available on the system then you should use this option.]),
2161 AS_HELP_STRING([--with-epm],
2162 [Decides which epm to use. Default is to use the one from the system if
2163 one is built. When either this is not there or you say =internal epm
2167 AC_ARG_WITH(package-format,
2168 AS_HELP_STRING([--with-package-format],
2169 [Specify package format(s) for LibreOffice installation sets. The
2170 implicit --without-package-format leads to no installation sets being
2171 generated. Possible values: aix, archive, bsd, deb, dmg,
2172 installed, msi, pkg, and rpm.
2173 Example: --with-package-format='deb rpm']),
2177 AS_HELP_STRING([--with-tls],
2178 [Decides which TLS/SSL and cryptographic implementations to use for
2179 LibreOffice's code. Default is to use NSS although OpenSSL is also
2180 possible. Notice that selecting NSS restricts the usage of OpenSSL
2181 in LO's code but selecting OpenSSL doesn't restrict by now the
2182 usage of NSS in LO's code. Possible values: openssl, nss.
2183 Example: --with-tls="nss"]),
2186 AC_ARG_WITH(system-libs,
2187 AS_HELP_STRING([--with-system-libs],
2188 [Use libraries already on system -- enables all --with-system-* flags.]),
2191 AC_ARG_WITH(system-bzip2,
2192 AS_HELP_STRING([--with-system-bzip2],
2193 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2194 [with_system_bzip2="$with_system_libs"])
2196 AC_ARG_WITH(system-headers,
2197 AS_HELP_STRING([--with-system-headers],
2198 [Use headers already on system -- enables all --with-system-* flags for
2199 external packages whose headers are the only entities used i.e.
2200 boost/odbc/sane-header(s).]),,
2201 [with_system_headers="$with_system_libs"])
2203 AC_ARG_WITH(system-jars,
2204 AS_HELP_STRING([--without-system-jars],
2205 [When building with --with-system-libs, also the needed jars are expected
2206 on the system. Use this to disable that]),,
2207 [with_system_jars="$with_system_libs"])
2209 AC_ARG_WITH(system-cairo,
2210 AS_HELP_STRING([--with-system-cairo],
2211 [Use cairo libraries already on system. Happens automatically for
2212 (implicit) --enable-gtk3.]))
2214 AC_ARG_WITH(system-epoxy,
2215 AS_HELP_STRING([--with-system-epoxy],
2216 [Use epoxy libraries already on system. Happens automatically for
2217 (implicit) --enable-gtk3.]),,
2218 [with_system_epoxy="$with_system_libs"])
2220 AC_ARG_WITH(myspell-dicts,
2221 AS_HELP_STRING([--with-myspell-dicts],
2222 [Adds myspell dictionaries to the LibreOffice installation set]),
2225 AC_ARG_WITH(system-dicts,
2226 AS_HELP_STRING([--without-system-dicts],
2227 [Do not use dictionaries from system paths.]),
2230 AC_ARG_WITH(external-dict-dir,
2231 AS_HELP_STRING([--with-external-dict-dir],
2232 [Specify external dictionary dir.]),
2235 AC_ARG_WITH(external-hyph-dir,
2236 AS_HELP_STRING([--with-external-hyph-dir],
2237 [Specify external hyphenation pattern dir.]),
2240 AC_ARG_WITH(external-thes-dir,
2241 AS_HELP_STRING([--with-external-thes-dir],
2242 [Specify external thesaurus dir.]),
2245 AC_ARG_WITH(system-zlib,
2246 AS_HELP_STRING([--with-system-zlib],
2247 [Use zlib already on system.]),,
2248 [with_system_zlib=auto])
2250 AC_ARG_WITH(system-jpeg,
2251 AS_HELP_STRING([--with-system-jpeg],
2252 [Use jpeg already on system.]),,
2253 [with_system_jpeg="$with_system_libs"])
2255 AC_ARG_WITH(system-expat,
2256 AS_HELP_STRING([--with-system-expat],
2257 [Use expat already on system.]),,
2258 [with_system_expat="$with_system_libs"])
2260 AC_ARG_WITH(system-libxml,
2261 AS_HELP_STRING([--with-system-libxml],
2262 [Use libxml/libxslt already on system.]),,
2263 [with_system_libxml=auto])
2265 AC_ARG_WITH(system-openldap,
2266 AS_HELP_STRING([--with-system-openldap],
2267 [Use the OpenLDAP LDAP SDK already on system.]),,
2268 [with_system_openldap="$with_system_libs"])
2270 libo_FUZZ_ARG_ENABLE(poppler,
2271 AS_HELP_STRING([--disable-poppler],
2272 [Disable building Poppler.])
2275 AC_ARG_WITH(system-poppler,
2276 AS_HELP_STRING([--with-system-poppler],
2277 [Use system poppler (only needed for PDF import).]),,
2278 [with_system_poppler="$with_system_libs"])
2280 AC_ARG_WITH(system-abseil,
2281 AS_HELP_STRING([--with-system-abseil],
2282 [Use the abseil libraries already on system.]),,
2283 [with_system_abseil="$with_system_libs"])
2285 AC_ARG_WITH(system-openjpeg,
2286 AS_HELP_STRING([--with-system-openjpeg],
2287 [Use the OpenJPEG library already on system.]),,
2288 [with_system_openjpeg="$with_system_libs"])
2290 libo_FUZZ_ARG_ENABLE(gpgmepp,
2291 AS_HELP_STRING([--disable-gpgmepp],
2292 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2295 AC_ARG_WITH(system-gpgmepp,
2296 AS_HELP_STRING([--with-system-gpgmepp],
2297 [Use gpgmepp already on system]),,
2298 [with_system_gpgmepp="$with_system_libs"])
2300 AC_ARG_WITH(system-mariadb,
2301 AS_HELP_STRING([--with-system-mariadb],
2302 [Use MariaDB/MySQL libraries already on system.]),,
2303 [with_system_mariadb="$with_system_libs"])
2305 AC_ARG_ENABLE(bundle-mariadb,
2306 AS_HELP_STRING([--enable-bundle-mariadb],
2307 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2310 AC_ARG_WITH(system-postgresql,
2311 AS_HELP_STRING([--with-system-postgresql],
2312 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2313 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2314 [with_system_postgresql="$with_system_libs"])
2316 AC_ARG_WITH(libpq-path,
2317 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2318 [Use this PostgreSQL C interface (libpq) installation for building
2319 the PostgreSQL-SDBC extension.]),
2322 AC_ARG_WITH(system-firebird,
2323 AS_HELP_STRING([--with-system-firebird],
2324 [Use Firebird libraries already on system, for building the Firebird-SDBC
2325 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2326 [with_system_firebird="$with_system_libs"])
2328 AC_ARG_WITH(system-libtommath,
2329 AS_HELP_STRING([--with-system-libtommath],
2330 [Use libtommath already on system]),,
2331 [with_system_libtommath="$with_system_libs"])
2333 AC_ARG_WITH(system-hsqldb,
2334 AS_HELP_STRING([--with-system-hsqldb],
2335 [Use hsqldb already on system.]))
2337 AC_ARG_WITH(hsqldb-jar,
2338 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2339 [Specify path to jarfile manually.]),
2340 HSQLDB_JAR=$withval)
2342 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2343 AS_HELP_STRING([--disable-scripting-beanshell],
2344 [Disable support for scripts in BeanShell.]),
2348 AC_ARG_WITH(system-beanshell,
2349 AS_HELP_STRING([--with-system-beanshell],
2350 [Use beanshell already on system.]),,
2351 [with_system_beanshell="$with_system_jars"])
2353 AC_ARG_WITH(beanshell-jar,
2354 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2355 [Specify path to jarfile manually.]),
2358 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2359 AS_HELP_STRING([--disable-scripting-javascript],
2360 [Disable support for scripts in JavaScript.]),
2364 AC_ARG_WITH(system-rhino,
2365 AS_HELP_STRING([--with-system-rhino],
2366 [Use rhino already on system.]),,)
2367 # [with_system_rhino="$with_system_jars"])
2368 # Above is not used as we have different debug interface
2369 # patched into internal rhino. This code needs to be fixed
2370 # before we can enable it by default.
2372 AC_ARG_WITH(rhino-jar,
2373 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2374 [Specify path to jarfile manually.]),
2377 AC_ARG_WITH(system-jfreereport,
2378 AS_HELP_STRING([--with-system-jfreereport],
2379 [Use JFreeReport already on system.]),,
2380 [with_system_jfreereport="$with_system_jars"])
2382 AC_ARG_WITH(sac-jar,
2383 AS_HELP_STRING([--with-sac-jar=JARFILE],
2384 [Specify path to jarfile manually.]),
2387 AC_ARG_WITH(libxml-jar,
2388 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2389 [Specify path to jarfile manually.]),
2390 LIBXML_JAR=$withval)
2392 AC_ARG_WITH(flute-jar,
2393 AS_HELP_STRING([--with-flute-jar=JARFILE],
2394 [Specify path to jarfile manually.]),
2397 AC_ARG_WITH(jfreereport-jar,
2398 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2399 [Specify path to jarfile manually.]),
2400 JFREEREPORT_JAR=$withval)
2402 AC_ARG_WITH(liblayout-jar,
2403 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2404 [Specify path to jarfile manually.]),
2405 LIBLAYOUT_JAR=$withval)
2407 AC_ARG_WITH(libloader-jar,
2408 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2409 [Specify path to jarfile manually.]),
2410 LIBLOADER_JAR=$withval)
2412 AC_ARG_WITH(libformula-jar,
2413 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2414 [Specify path to jarfile manually.]),
2415 LIBFORMULA_JAR=$withval)
2417 AC_ARG_WITH(librepository-jar,
2418 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2419 [Specify path to jarfile manually.]),
2420 LIBREPOSITORY_JAR=$withval)
2422 AC_ARG_WITH(libfonts-jar,
2423 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2424 [Specify path to jarfile manually.]),
2425 LIBFONTS_JAR=$withval)
2427 AC_ARG_WITH(libserializer-jar,
2428 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2429 [Specify path to jarfile manually.]),
2430 LIBSERIALIZER_JAR=$withval)
2432 AC_ARG_WITH(libbase-jar,
2433 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2434 [Specify path to jarfile manually.]),
2435 LIBBASE_JAR=$withval)
2437 AC_ARG_WITH(system-odbc,
2438 AS_HELP_STRING([--with-system-odbc],
2439 [Use the odbc headers already on system.]),,
2440 [with_system_odbc="auto"])
2442 AC_ARG_WITH(system-sane,
2443 AS_HELP_STRING([--with-system-sane],
2444 [Use sane.h already on system.]),,
2445 [with_system_sane="$with_system_headers"])
2447 AC_ARG_WITH(system-bluez,
2448 AS_HELP_STRING([--with-system-bluez],
2449 [Use bluetooth.h already on system.]),,
2450 [with_system_bluez="$with_system_headers"])
2452 AC_ARG_WITH(system-boost,
2453 AS_HELP_STRING([--with-system-boost],
2454 [Use boost already on system.]),,
2455 [with_system_boost="$with_system_headers"])
2457 AC_ARG_WITH(system-dragonbox,
2458 AS_HELP_STRING([--with-system-dragonbox],
2459 [Use dragonbox already on system.]),,
2460 [with_system_dragonbox="$with_system_headers"])
2462 AC_ARG_WITH(system-libfixmath,
2463 AS_HELP_STRING([--with-system-libfixmath],
2464 [Use libfixmath already on system.]),,
2465 [with_system_libfixmath="$with_system_libs"])
2467 AC_ARG_WITH(system-glm,
2468 AS_HELP_STRING([--with-system-glm],
2469 [Use glm already on system.]),,
2470 [with_system_glm="$with_system_headers"])
2472 AC_ARG_WITH(system-hunspell,
2473 AS_HELP_STRING([--with-system-hunspell],
2474 [Use libhunspell already on system.]),,
2475 [with_system_hunspell="$with_system_libs"])
2477 libo_FUZZ_ARG_ENABLE(zxing,
2478 AS_HELP_STRING([--disable-zxing],
2479 [Disable use of zxing external library.]))
2481 AC_ARG_WITH(system-zxing,
2482 AS_HELP_STRING([--with-system-zxing],
2483 [Use libzxing already on system.]),,
2484 [with_system_zxing="$with_system_libs"])
2486 AC_ARG_WITH(system-box2d,
2487 AS_HELP_STRING([--with-system-box2d],
2488 [Use box2d already on system.]),,
2489 [with_system_box2d="$with_system_libs"])
2491 AC_ARG_WITH(system-mythes,
2492 AS_HELP_STRING([--with-system-mythes],
2493 [Use mythes already on system.]),,
2494 [with_system_mythes="$with_system_libs"])
2496 AC_ARG_WITH(system-altlinuxhyph,
2497 AS_HELP_STRING([--with-system-altlinuxhyph],
2498 [Use ALTLinuxhyph already on system.]),,
2499 [with_system_altlinuxhyph="$with_system_libs"])
2501 AC_ARG_WITH(system-lpsolve,
2502 AS_HELP_STRING([--with-system-lpsolve],
2503 [Use lpsolve already on system.]),,
2504 [with_system_lpsolve="$with_system_libs"])
2506 AC_ARG_WITH(system-coinmp,
2507 AS_HELP_STRING([--with-system-coinmp],
2508 [Use CoinMP already on system.]),,
2509 [with_system_coinmp="$with_system_libs"])
2511 AC_ARG_WITH(system-liblangtag,
2512 AS_HELP_STRING([--with-system-liblangtag],
2513 [Use liblangtag library already on system.]),,
2514 [with_system_liblangtag="$with_system_libs"])
2516 AC_ARG_WITH(system-lockfile,
2517 AS_HELP_STRING([--with-system-lockfile[=file]],
2518 [Detect a system lockfile program or use the \$file argument.]))
2521 AS_HELP_STRING([--without-webdav],
2522 [Disable WebDAV support in the UCB.]))
2524 AC_ARG_WITH(linker-hash-style,
2525 AS_HELP_STRING([--with-linker-hash-style],
2526 [Use linker with --hash-style=<style> when linking shared objects.
2527 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2528 if supported on the build system, and "sysv" otherwise.]))
2530 AC_ARG_WITH(jdk-home,
2531 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2532 [If you have installed JDK 9 or later on your system please supply the
2533 path here. Note that this is not the location of the java command but the
2534 location of the entire distribution. In case of cross-compiling, this
2535 is the JDK of the host os. Use --with-build-platform-configure-options
2536 to point to a different build platform JDK.]),
2540 AS_HELP_STRING([--with-help],
2541 [Enable the build of help. There is a special parameter "common" that
2542 can be used to bundle only the common part, .e.g help-specific icons.
2543 This is useful when you build the helpcontent separately.])
2545 Usage: --with-help build the old local help
2546 --without-help no local help (default)
2547 --with-help=html build the new HTML local help
2548 --with-help=online build the new HTML online help
2552 AC_ARG_WITH(omindex,
2553 AS_HELP_STRING([--with-omindex],
2554 [Enable the support of xapian-omega index for online help.])
2556 Usage: --with-omindex=server prepare the pages for omindex
2557 but let xapian-omega be built in server.
2558 --with-omindex=noxap do not prepare online pages
2563 libo_FUZZ_ARG_WITH(java,
2564 AS_HELP_STRING([--with-java=<java command>],
2565 [Specify the name of the Java interpreter command. Typically "java"
2566 which is the default.
2568 To build without support for Java components, applets, accessibility
2569 or the XML filters written in Java, use --without-java or --with-java=no.]),
2570 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2571 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2574 AC_ARG_WITH(jvm-path,
2575 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2576 [Use a specific JVM search path at runtime.
2577 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2580 AC_ARG_WITH(ant-home,
2581 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2582 [If you have installed Apache Ant on your system, please supply the path here.
2583 Note that this is not the location of the Ant binary but the location
2584 of the entire distribution.]),
2587 AC_ARG_WITH(symbol-config,
2588 AS_HELP_STRING([--with-symbol-config],
2589 [Configuration for the crashreport symbol upload]),
2591 [with_symbol_config=no])
2593 AC_ARG_WITH(export-validation,
2594 AS_HELP_STRING([--without-export-validation],
2595 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2596 ,with_export_validation=auto)
2598 AC_ARG_WITH(bffvalidator,
2599 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2600 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2601 Requires installed Microsoft Office Binary File Format Validator.
2602 Note: export-validation (--with-export-validation) is required to be turned on.
2603 See https://web.archive.org/web/20200804155745/https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2604 ,with_bffvalidator=no)
2606 libo_FUZZ_ARG_WITH(junit,
2607 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2608 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2609 --without-junit disables those tests. Not relevant in the --without-java case.]),
2612 AC_ARG_WITH(hamcrest,
2613 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2614 [Specifies the hamcrest jar file to use for JUnit-based tests.
2615 --without-junit disables those tests. Not relevant in the --without-java case.]),
2618 AC_ARG_WITH(perl-home,
2619 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2620 [If you have installed Perl 5 Distribution, on your system, please
2621 supply the path here. Note that this is not the location of the Perl
2622 binary but the location of the entire distribution.]),
2625 libo_FUZZ_ARG_WITH(doxygen,
2627 [--with-doxygen=<absolute path to doxygen executable>],
2628 [Specifies the doxygen executable to use when generating ODK C/C++
2629 documentation. --without-doxygen disables generation of ODK C/C++
2630 documentation. Not relevant in the --disable-odk case.]),
2633 AC_ARG_WITH(visual-studio,
2634 AS_HELP_STRING([--with-visual-studio=<2019/2022/2022preview>],
2635 [Specify which Visual Studio version to use in case several are
2636 installed. Currently 2019 (default) and 2022 are supported.]),
2639 AC_ARG_WITH(windows-sdk,
2640 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2641 [Specify which Windows SDK, or "Windows Kit", version to use
2642 in case the one that came with the selected Visual Studio
2643 is not what you want for some reason. Note that not all compiler/SDK
2644 combinations are supported. The intent is that this option should not
2649 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2650 [Use this option to build LibreOffice with additional UI language support.
2651 English (US) is always included by default.
2652 Separate multiple languages with space.
2653 For all languages, use --with-lang=ALL.]),
2656 AC_ARG_WITH(locales,
2657 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2658 [Use this option to limit the locale information built in.
2659 Separate multiple locales with space.
2660 Very experimental and might well break stuff.
2661 Just a desperate measure to shrink code and data size.
2662 By default all the locales available is included.
2663 Just works with --disable-dynloading. Defaults to "ALL".
2664 This option is completely unrelated to --with-lang.])
2666 Affects also our character encoding conversion
2667 tables for encodings mainly targeted for a
2668 particular locale, like EUC-CN and EUC-TW for
2669 zh, ISO-2022-JP for ja.
2671 Affects also our add-on break iterator data for
2674 For the default, all locales, don't use this switch at all.
2675 Specifying just the language part of a locale means all matching
2676 locales will be included.
2680 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2681 libo_FUZZ_ARG_WITH(krb5,
2682 AS_HELP_STRING([--with-krb5],
2683 [Enable MIT Kerberos 5 support in modules that support it.
2684 By default automatically enabled on platforms
2685 where a good system Kerberos 5 is available.]),
2688 libo_FUZZ_ARG_WITH(gssapi,
2689 AS_HELP_STRING([--with-gssapi],
2690 [Enable GSSAPI support in modules that support it.
2691 By default automatically enabled on platforms
2692 where a good system GSSAPI is available.]),
2695 libo_FUZZ_ARG_WITH(lxml,
2696 AS_HELP_STRING([--without-lxml],
2697 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2698 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2699 report widget classes and ids.]),
2702 libo_FUZZ_ARG_WITH(latest-c++,
2703 AS_HELP_STRING([--with-latest-c++],
2704 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2705 published standard. This option is ignored when CXXFLAGS_CXX11 is set explicitly.]),,
2706 [with_latest_c__=no])
2708 AC_ARG_WITH(gtk3-build,
2709 AS_HELP_STRING([--with-gtk3-build=<absolute path to GTK3 build>],
2710 [(Windows-only) In order to build GtkTiledViewer on Windows, pass the path
2711 to a GTK3 build, like '--with-gtk3-build=C:/gtk-build/gtk/x64/release'.]))
2713 dnl ===================================================================
2715 dnl ===================================================================
2717 AC_ARG_WITH(branding,
2718 AS_HELP_STRING([--with-branding=/path/to/images],
2719 [Use given path to retrieve branding images set.])
2721 Search for intro.png about.svg and logo.svg.
2722 If any is missing, default ones will be used instead.
2724 Search also progress.conf for progress
2725 settings on intro screen :
2727 PROGRESSBARCOLOR="255,255,255" Set color of
2728 progress bar. Comma separated RGB decimal values.
2729 PROGRESSSIZE="407,6" Set size of progress bar.
2730 Comma separated decimal values (width, height).
2731 PROGRESSPOSITION="61,317" Set position of progress
2732 bar from left,top. Comma separated decimal values.
2733 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2734 bar frame. Comma separated RGB decimal values.
2735 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2736 bar text. Comma separated RGB decimal values.
2737 PROGRESSTEXTBASELINE="287" Set vertical position of
2738 progress bar text from top. Decimal value.
2740 Default values will be used if not found.
2745 AC_ARG_WITH(extra-buildid,
2746 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2747 [Show addition build identification in about dialog.]),
2752 AS_HELP_STRING([--with-vendor="John the Builder"],
2753 [Set vendor of the build.]),
2756 AC_ARG_WITH(privacy-policy-url,
2757 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2758 [The URL to your privacy policy (needed when
2759 enabling online-update or crashreporting via breakpad)]),
2760 [if test "x$with_privacy_policy_url" = "xyes"; then
2761 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2762 elif test "x$with_privacy_policy_url" = "xno"; then
2763 with_privacy_policy_url="undefined"
2765 ,[with_privacy_policy_url="undefined"])
2767 AC_ARG_WITH(android-package-name,
2768 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2769 [Set Android package name of the build.]),
2772 AC_ARG_WITH(compat-oowrappers,
2773 AS_HELP_STRING([--with-compat-oowrappers],
2774 [Install oo* wrappers in parallel with
2775 lo* ones to keep backward compatibility.
2776 Has effect only with make distro-pack-install]),
2779 AC_ARG_WITH(os-version,
2780 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2781 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2784 AC_ARG_WITH(parallelism,
2785 AS_HELP_STRING([--with-parallelism],
2786 [Number of jobs to run simultaneously during build. Parallel builds can
2787 save a lot of time on multi-cpu machines. Defaults to the number of
2788 CPUs on the machine, unless you configure --enable-icecream - then to
2792 AC_ARG_WITH(all-tarballs,
2793 AS_HELP_STRING([--with-all-tarballs],
2794 [Download all external tarballs unconditionally]))
2796 AC_ARG_WITH(gdrive-client-id,
2797 AS_HELP_STRING([--with-gdrive-client-id],
2798 [Provides the client id of the application for OAuth2 authentication
2799 on Google Drive. If either this or --with-gdrive-client-secret is
2800 empty, the feature will be disabled]),
2803 AC_ARG_WITH(gdrive-client-secret,
2804 AS_HELP_STRING([--with-gdrive-client-secret],
2805 [Provides the client secret of the application for OAuth2
2806 authentication on Google Drive. If either this or
2807 --with-gdrive-client-id is empty, the feature will be disabled]),
2810 AC_ARG_WITH(alfresco-cloud-client-id,
2811 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2812 [Provides the client id of the application for OAuth2 authentication
2813 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2814 empty, the feature will be disabled]),
2817 AC_ARG_WITH(alfresco-cloud-client-secret,
2818 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2819 [Provides the client secret of the application for OAuth2
2820 authentication on Alfresco Cloud. If either this or
2821 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2824 AC_ARG_WITH(onedrive-client-id,
2825 AS_HELP_STRING([--with-onedrive-client-id],
2826 [Provides the client id of the application for OAuth2 authentication
2827 on OneDrive. If either this or --with-onedrive-client-secret is
2828 empty, the feature will be disabled]),
2831 AC_ARG_WITH(onedrive-client-secret,
2832 AS_HELP_STRING([--with-onedrive-client-secret],
2833 [Provides the client secret of the application for OAuth2
2834 authentication on OneDrive. If either this or
2835 --with-onedrive-client-id is empty, the feature will be disabled]),
2837 dnl ===================================================================
2838 dnl Do we want to use pre-build binary tarball for recompile
2839 dnl ===================================================================
2841 if test "$enable_library_bin_tar" = "yes" ; then
2842 USE_LIBRARY_BIN_TAR=TRUE
2844 USE_LIBRARY_BIN_TAR=
2846 AC_SUBST(USE_LIBRARY_BIN_TAR)
2848 dnl ===================================================================
2849 dnl Test whether build target is Release Build
2850 dnl ===================================================================
2851 AC_MSG_CHECKING([whether build target is Release Build])
2852 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2854 ENABLE_RELEASE_BUILD=
2855 GET_TASK_ALLOW_ENTITLEMENT='
2856 <!-- We want to be able to debug a hardened process when not building for release -->
2857 <key>com.apple.security.get-task-allow</key>
2860 AC_MSG_RESULT([yes])
2861 ENABLE_RELEASE_BUILD=TRUE
2862 GET_TASK_ALLOW_ENTITLEMENT=''
2864 AC_SUBST(ENABLE_RELEASE_BUILD)
2865 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2867 AC_MSG_CHECKING([whether to build a Community flavor])
2868 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2869 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2870 AC_MSG_RESULT([yes])
2875 dnl ===================================================================
2876 dnl Test whether to sign Windows Build
2877 dnl ===================================================================
2878 AC_MSG_CHECKING([whether to sign windows build])
2879 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2880 AC_MSG_RESULT([yes])
2881 WINDOWS_BUILD_SIGNING="TRUE"
2884 WINDOWS_BUILD_SIGNING="FALSE"
2886 AC_SUBST(WINDOWS_BUILD_SIGNING)
2888 dnl ===================================================================
2889 dnl MacOSX build and runtime environment options
2890 dnl ===================================================================
2892 AC_ARG_WITH(macosx-version-min-required,
2893 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2894 [set the minimum OS version needed to run the built LibreOffice])
2896 e. g.: --with-macosx-version-min-required=10.15
2900 dnl ===================================================================
2901 dnl Check for incompatible options set by fuzzing, and reset those
2902 dnl automatically to working combinations
2903 dnl ===================================================================
2905 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2906 "$enable_dbus" != "$enable_avahi"; then
2907 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2908 enable_avahi=$enable_dbus
2913 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2914 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2918 add_lopath_before ()
2923 for dir in $LO_PATH ; do
2924 if test "$dir" != "$1" ; then
2925 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2928 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2931 dnl ===================================================================
2932 dnl check for required programs (grep, awk, sed, bash)
2933 dnl ===================================================================
2938 if test -n "$1"; then
2939 if test "$build_os" = "cygwin"; then
2940 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2942 new_path=`cygpath -sm "$formatted_path"`
2945 new_path=`cygpath -u "$formatted_path"`
2950 if test "$2" = "after"; then
2951 add_lopath_after "$new_path"
2953 add_lopath_before "$new_path"
2959 AC_PATH_PROG( AWK, $AWK)
2960 if test -z "$AWK"; then
2961 AC_MSG_ERROR([install awk to run this script])
2964 AC_PATH_PROG(BASH, bash)
2965 if test -z "$BASH"; then
2966 AC_MSG_ERROR([bash not found in \$PATH])
2970 # prefer parallel compression tools, if available
2971 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2972 if test -z "$COMPRESSIONTOOL"; then
2973 AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2974 if test -z "$COMPRESSIONTOOL"; then
2975 AC_MSG_ERROR([gzip not found in \$PATH])
2978 AC_SUBST(COMPRESSIONTOOL)
2980 AC_MSG_CHECKING([for GNU or BSD tar])
2981 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
2982 $a --version 2> /dev/null | grep -E "GNU|bsdtar" 2>&1 > /dev/null
2983 if test $? -eq 0; then
2988 AC_MSG_RESULT($GNUTAR)
2989 if test -z "$GNUTAR"; then
2990 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2994 AC_MSG_CHECKING([for tar's option to strip components])
2995 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
2996 if test $? -eq 0; then
2997 STRIP_COMPONENTS="--strip-components"
2999 $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
3000 if test $? -eq 0; then
3001 STRIP_COMPONENTS="--strip-path"
3003 STRIP_COMPONENTS="unsupported"
3006 AC_MSG_RESULT($STRIP_COMPONENTS)
3007 if test x$STRIP_COMPONENTS = xunsupported; then
3008 AC_MSG_ERROR([you need a tar that is able to strip components.])
3010 AC_SUBST(STRIP_COMPONENTS)
3012 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
3013 dnl desktop OSes from "mobile" ones.
3015 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
3016 dnl In other words, that when building for an OS that is not a
3017 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
3019 dnl Note the direction of the implication; there is no assumption that
3020 dnl cross-compiling would imply a non-desktop OS.
3022 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
3023 BUILD_TYPE="$BUILD_TYPE DESKTOP"
3024 AC_DEFINE(HAVE_FEATURE_DESKTOP)
3025 if test "$_os" != Emscripten; then
3026 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
3030 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
3031 # also work with the default gtk3 plugin.
3032 if test "$enable_wasm_strip" = "yes"; then
3037 test "$_os" = Emscripten && enable_curl=no
3038 enable_database_connectivity=no
3041 test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3042 enable_extension_integration=no
3043 enable_extensions=no
3044 enable_extension_update=no
3048 enable_lotuswordpro=no
3052 enable_online_update=no
3056 enable_report_builder=no
3058 enable_sdremote_bluetooth=no
3068 test_libpagemaker=no
3077 test "${with_fonts+set}" = set || with_fonts=yes
3078 test "${with_locales+set}" = set || with_locales=en
3080 AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3081 AC_DEFINE(ENABLE_WASM_STRIP_WRITER)
3082 AC_DEFINE(ENABLE_WASM_STRIP_CALC)
3083 AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3084 # AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3085 AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3086 AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3087 AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3088 AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3089 # AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3090 AC_DEFINE(ENABLE_WASM_STRIP_LANGUAGETOOL)
3091 AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3092 AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3093 AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3094 AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3095 AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3096 AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3097 AC_DEFINE(ENABLE_WASM_STRIP_SCEXPORTS)
3100 EMSCRIPTEN_NEH_MAJOR=3
3101 EMSCRIPTEN_NEH_MINOR=1
3102 EMSCRIPTEN_NEH_TINY=3
3103 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3105 if test "$enable_wasm_exceptions" = yes; then
3106 AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3107 check_semantic_version_three_prefixed EMSCRIPTEN NEH
3108 if test $? -ne 0; then
3109 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3111 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3113 ENABLE_WASM_EXCEPTIONS=TRUE
3115 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3117 # Whether to build "avmedia" functionality or not.
3119 if test "$enable_avmedia" = yes; then
3120 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3121 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3123 test_gstreamer_1_0=no
3126 # Decide whether to build database connectivity stuff (including Base) or not.
3127 if test "$enable_database_connectivity" != no; then
3128 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3129 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3131 if test "$_os" = iOS; then
3132 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3134 disable_database_connectivity_dependencies
3137 if test -z "$enable_extensions"; then
3138 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3139 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3140 enable_extensions=yes
3144 DISABLE_SCRIPTING=''
3145 if test "$enable_scripting" = yes; then
3146 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3147 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3149 DISABLE_SCRIPTING='TRUE'
3150 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3153 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3154 # Disable dynamic_loading always for iOS and Android
3155 enable_dynamic_loading=no
3156 elif test -z "$enable_dynamic_loading"; then
3157 # Otherwise enable it unless specifically disabled
3158 enable_dynamic_loading=yes
3161 DISABLE_DYNLOADING=''
3162 if test "$enable_dynamic_loading" = yes; then
3163 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3165 DISABLE_DYNLOADING='TRUE'
3166 if test $_os != iOS -a $_os != Android; then
3167 enable_database_connectivity=no
3175 AC_SUBST(DISABLE_DYNLOADING)
3177 ENABLE_CUSTOMTARGET_COMPONENTS=
3178 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3179 ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3180 if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3181 AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3184 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3186 if test "$enable_extensions" = yes; then
3187 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3188 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3190 enable_extension_integration=no
3191 enable_extension_update=no
3194 # remember SYSBASE value
3197 dnl ===================================================================
3198 dnl Sort out various gallery compilation options
3199 dnl ===================================================================
3200 WITH_GALLERY_BUILD=TRUE
3201 AC_MSG_CHECKING([how to build and package galleries])
3202 if test -n "${with_galleries}"; then
3203 if test "$with_galleries" = "build"; then
3204 if test "$enable_database_connectivity" = no; then
3205 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3207 AC_MSG_RESULT([build from source images internally])
3208 elif test "$with_galleries" = "no"; then
3210 AC_MSG_RESULT([disable non-internal gallery build])
3212 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3215 if test $_os != iOS -a $_os != Android; then
3216 AC_MSG_RESULT([internal src images for desktop])
3219 AC_MSG_RESULT([disable src image build])
3222 AC_SUBST(WITH_GALLERY_BUILD)
3224 dnl ===================================================================
3225 dnl Checks if ccache is available
3226 dnl ===================================================================
3228 if test "$enable_ccache" = "no"; then
3230 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3231 case "%$CC%$CXX%" in
3232 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3233 # assume that's good then
3234 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3235 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3236 CCACHE_DEPEND_MODE=1
3239 # try to use our own ccache if it is available and CCACHE was not already defined
3240 if test -z "$CCACHE"; then
3241 if test "$_os" = "WINNT"; then
3242 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3244 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3245 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3246 elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3247 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3250 AC_PATH_PROG([CCACHE],[ccache],[not found])
3251 if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3252 CCACHE=`win_short_path_for_make "$CCACHE"`
3253 # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3255 AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3256 CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3257 if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3265 if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3266 # on windows/VC perhaps sccache is around?
3267 case "%$CC%$CXX%" in
3268 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3269 # assume that's good then
3270 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3271 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3272 CCACHE_DEPEND_MODE=1
3276 # for sharing code below, reuse CCACHE env var
3277 AC_PATH_PROG([CCACHE],[sccache],[not found])
3278 if test "$CCACHE" != "not found"; then
3279 CCACHE=`win_short_path_for_make "$CCACHE"`
3281 CCACHE_DEPEND_MODE=1
3286 if test "$CCACHE" = "not found"; then
3289 if test -n "$CCACHE" -a -z "$SCCACHE"; then
3290 CCACHE_DEPEND_MODE=1
3291 # Need to check for ccache version: otherwise prevents
3292 # caching of the results (like "-x objective-c++" for Mac)
3293 if test $_os = Darwin -o $_os = iOS; then
3294 # Check ccache version
3295 AC_MSG_CHECKING([whether version of ccache is suitable])
3296 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3297 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3298 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3299 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3301 AC_MSG_RESULT([no, $CCACHE_VERSION])
3312 if test "$enable_ccache" = "nodepend"; then
3313 CCACHE_DEPEND_MODE=""
3315 AC_SUBST(CCACHE_DEPEND_MODE)
3317 # sccache defaults are good enough
3318 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3319 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3320 # -p works with both 4.2 and 4.4
3321 ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3322 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3323 if test "$ccache_size" = ""; then
3324 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3325 if test "$ccache_size" = ""; then
3328 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3329 if test $ccache_size -lt 1024; then
3331 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3332 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3334 # warn that ccache may be too small for debug build
3335 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3336 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3339 if test $ccache_size -lt 5; then
3340 #warn that ccache may be too small for debug build
3341 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3342 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3348 if test "$enable_z7_debug" != no; then
3349 if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3350 ENABLE_Z7_DEBUG=TRUE
3353 AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3354 add_warning "ccache will not work with --disable-z7-debug"
3356 AC_SUBST(ENABLE_Z7_DEBUG)
3358 dnl ===================================================================
3359 dnl Checks for C compiler,
3360 dnl The check for the C++ compiler is later on.
3361 dnl ===================================================================
3362 if test "$_os" != "WINNT"; then
3364 AC_MSG_CHECKING([gcc home])
3365 if test -z "$with_gcc_home"; then
3366 if test "$enable_icecream" = "yes"; then
3367 if test -d "/usr/lib/icecc/bin"; then
3368 GCC_HOME="/usr/lib/icecc/"
3369 elif test -d "/usr/libexec/icecc/bin"; then
3370 GCC_HOME="/usr/libexec/icecc/"
3371 elif test -d "/opt/icecream/bin"; then
3372 GCC_HOME="/opt/icecream/"
3374 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3378 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3379 GCC_HOME_SET="false"
3382 GCC_HOME="$with_gcc_home"
3384 AC_MSG_RESULT($GCC_HOME)
3387 if test "$GCC_HOME_SET" = "true"; then
3388 if test -z "$CC"; then
3389 CC="$GCC_HOME/bin/gcc"
3392 if test -z "$CXX"; then
3393 CXX="$GCC_HOME/bin/g++"
3399 COMPATH=`dirname "$CC"`
3400 if test "$COMPATH" = "."; then
3401 AC_PATH_PROGS(COMPATH, $CC)
3402 dnl double square bracket to get single because of M4 quote...
3403 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3405 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3407 dnl ===================================================================
3409 dnl ===================================================================
3410 AC_MSG_CHECKING([whether to build with Java support])
3411 if test "$with_java" != "no"; then
3412 if test "$DISABLE_SCRIPTING" = TRUE; then
3413 AC_MSG_RESULT([no, overridden by --disable-scripting])
3417 AC_MSG_RESULT([yes])
3419 AC_DEFINE(HAVE_FEATURE_JAVA)
3426 AC_SUBST(ENABLE_JAVA)
3428 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3430 dnl ENABLE_JAVA="" indicate no Java support at all
3432 dnl ===================================================================
3433 dnl Check macOS SDK and compiler
3434 dnl ===================================================================
3436 if test $_os = Darwin; then
3438 # The SDK in the currently selected Xcode should be found.
3440 AC_MSG_CHECKING([what macOS SDK to use])
3441 # XCode only ships with a single SDK for a while now, and using older SDKs alongside is not
3442 # really supported anymore, instead you'd use different copies of Xcode, each with their own
3443 # SDK, and thus xcrun will pick the SDK that matches the currently selected Xcode version
3444 # also restricting the SDK version to "known good" versions doesn't seem necessary anymore, the
3445 # problems that existed in the PPC days with target versions not being respected or random
3446 # failures seems to be a thing of the past or rather: limiting either the Xcode version or the
3447 # SDK version is enough, no need to do both...
3448 MACOSX_SDK_PATH=`xcrun --sdk macosx --show-sdk-path 2> /dev/null`
3449 if test ! -d "$MACOSX_SDK_PATH"; then
3450 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3452 macosx_sdk=`xcodebuild -version -sdk "$MACOSX_SDK_PATH" SDKVersion`
3453 MACOSX_SDK_BUILD_VERSION=$(xcodebuild -version -sdk "$MACOSX_SDK_PATH" ProductBuildVersion)
3454 # format changed between 10.9 and 10.10 - up to 10.9 it was just four digits (1090), starting
3455 # with macOS 10.10 it was switched to account for x.y.z with six digits, 10.10 is 101000,
3457 # we don't target the lower versions anymore, so it doesn't matter that we don't generate the
3458 # correct version in case such an old SDK is specified, it will be rejected later anyway
3459 MACOSX_SDK_VERSION=$(echo $macosx_sdk | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3460 if test $MACOSX_SDK_VERSION -lt 101500; then
3461 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported, lowest supported version is 10.15])
3463 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3464 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon (need at least 11.0)])
3466 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3468 AC_MSG_CHECKING([what minimum version of macOS to require])
3469 if test "$with_macosx_version_min_required" = "" ; then
3470 if test "$host_cpu" = x86_64; then
3471 with_macosx_version_min_required="10.15";
3473 with_macosx_version_min_required="11.0";
3476 # see same notes about MACOSX_SDK_VERSION above
3477 MAC_OS_X_VERSION_MIN_REQUIRED=$(echo $with_macosx_version_min_required | $AWK -F. '{ print $1*10000+$2*100+$3 }')
3478 if test $MAC_OS_X_VERSION_MIN_REQUIRED -lt 101500; then
3479 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, minimum supported version is 10.15])
3481 AC_MSG_RESULT([$with_macosx_version_min_required])
3483 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3484 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3485 AC_MSG_ERROR([the version minimum required ($with_macosx_version_min_required) cannot be greater than the sdk level ($macosx_sdk)])
3487 AC_MSG_RESULT([yes])
3490 # export this so that "xcrun" invocations later return matching values
3491 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3492 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3493 export DEVELOPER_DIR
3494 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3495 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3497 AC_MSG_CHECKING([whether Xcode is new enough])
3498 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3499 my_xcode_ver2=${my_xcode_ver1#Xcode }
3500 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3501 if test "$my_xcode_ver3" -ge 1205; then
3502 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3504 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3507 my_xcode_ver1=$(xcrun xcodebuild -version | tail -n 1)
3508 MACOSX_XCODE_BUILD_VERSION=${my_xcode_ver1#Build version }
3510 LIBTOOL=/usr/bin/libtool
3511 INSTALL_NAME_TOOL=install_name_tool
3512 if test -z "$save_CC"; then
3513 stdlib=-stdlib=libc++
3515 AC_MSG_CHECKING([what C compiler to use])
3516 CC="`xcrun -find clang`"
3517 CC_BASE=`first_arg_basename "$CC"`
3518 if test "$host_cpu" = x86_64; then
3519 CC+=" -target x86_64-apple-macos"
3521 CC+=" -target arm64-apple-macos"
3523 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3524 AC_MSG_RESULT([$CC])
3526 AC_MSG_CHECKING([what C++ compiler to use])
3527 CXX="`xcrun -find clang++`"
3528 CXX_BASE=`first_arg_basename "$CXX"`
3529 if test "$host_cpu" = x86_64; then
3530 CXX+=" -target x86_64-apple-macos"
3532 CXX+=" -target arm64-apple-macos"
3534 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3535 AC_MSG_RESULT([$CXX])
3537 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3540 STRIP=`xcrun -find strip`
3541 LIBTOOL=`xcrun -find libtool`
3542 RANLIB=`xcrun -find ranlib`
3545 AC_MSG_CHECKING([whether to do code signing])
3547 if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3550 if test "$enable_macosx_code_signing" = yes; then
3551 # By default use the first suitable certificate (?).
3553 # https://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3554 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3555 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3556 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3557 # "Developer ID Application" one.
3558 identity="Developer ID Application:"
3560 identity=$enable_macosx_code_signing
3562 identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3563 if test -n "$identity"; then
3564 MACOSX_CODESIGNING_IDENTITY=$identity
3565 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3566 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3568 AC_MSG_ERROR([cannot determine identity to use])
3572 AC_MSG_CHECKING([whether to create a Mac App Store package])
3574 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3576 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3577 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3579 if test "$enable_macosx_package_signing" = yes; then
3580 # By default use the first suitable certificate.
3581 # It should be a "3rd Party Mac Developer Installer" one
3582 identity="3rd Party Mac Developer Installer:"
3584 identity=$enable_macosx_package_signing
3586 identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3587 if test -n "$identity"; then
3588 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3589 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3590 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3592 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3596 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3597 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3600 AC_MSG_CHECKING([whether to sandbox the application])
3602 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3603 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3604 elif test "$enable_macosx_sandbox" = yes; then
3605 ENABLE_MACOSX_SANDBOX=TRUE
3606 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3607 AC_MSG_RESULT([yes])
3612 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3613 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3614 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3616 if test -n "$with_macosx_provisioning_profile" ; then
3617 if test ! -f "$with_macosx_provisioning_profile"; then
3618 AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3620 MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3621 MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3622 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3623 | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3624 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
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)
3637 AC_SUBST(MACOSX_PROVISIONING_INFO)
3638 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3639 AC_SUBST(MACOSX_SDK_BUILD_VERSION)
3640 AC_SUBST(MACOSX_XCODE_BUILD_VERSION)
3642 dnl ===================================================================
3643 dnl Check iOS SDK and compiler
3644 dnl ===================================================================
3646 if test $_os = iOS; then
3647 AC_MSG_CHECKING([what iOS SDK to use])
3649 if test "$enable_ios_simulator" = "yes"; then
3650 platformlc=iphonesimulator
3651 versionmin=-mios-simulator-version-min=14.5
3654 versionmin=-miphoneos-version-min=14.5
3657 sysroot=`xcrun --sdk $platformlc --show-sdk-path`
3659 if ! test -d "$sysroot"; then
3660 AC_MSG_ERROR([Could not find iOS SDK $sysroot])
3663 AC_MSG_RESULT($sysroot)
3665 stdlib="-stdlib=libc++"
3667 AC_MSG_CHECKING([what C compiler to use])
3668 CC="`xcrun -find clang`"
3669 CC_BASE=`first_arg_basename "$CC"`
3670 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3671 AC_MSG_RESULT([$CC])
3673 AC_MSG_CHECKING([what C++ compiler to use])
3674 CXX="`xcrun -find clang++`"
3675 CXX_BASE=`first_arg_basename "$CXX"`
3676 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3677 AC_MSG_RESULT([$CXX])
3679 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3682 STRIP=`xcrun -find strip`
3683 LIBTOOL=`xcrun -find libtool`
3684 RANLIB=`xcrun -find ranlib`
3687 AC_MSG_CHECKING([whether to treat the installation as read-only])
3689 if test $_os = Darwin; then
3690 enable_readonly_installset=yes
3691 elif test "$enable_extensions" != yes; then
3692 enable_readonly_installset=yes
3694 if test "$enable_readonly_installset" = yes; then
3695 AC_MSG_RESULT([yes])
3696 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3701 dnl ===================================================================
3702 dnl Structure of install set
3703 dnl ===================================================================
3705 if test $_os = Darwin; then
3706 LIBO_BIN_FOLDER=MacOS
3707 LIBO_ETC_FOLDER=Resources
3708 LIBO_LIBEXEC_FOLDER=MacOS
3709 LIBO_LIB_FOLDER=Frameworks
3710 LIBO_LIB_PYUNO_FOLDER=Resources
3711 LIBO_SHARE_FOLDER=Resources
3712 LIBO_SHARE_HELP_FOLDER=Resources/help
3713 LIBO_SHARE_JAVA_FOLDER=Resources/java
3714 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3715 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3716 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3717 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3718 LIBO_URE_BIN_FOLDER=MacOS
3719 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3720 LIBO_URE_LIB_FOLDER=Frameworks
3721 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3722 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3723 elif test $_os = WINNT; then
3724 LIBO_BIN_FOLDER=program
3725 LIBO_ETC_FOLDER=program
3726 LIBO_LIBEXEC_FOLDER=program
3727 LIBO_LIB_FOLDER=program
3728 LIBO_LIB_PYUNO_FOLDER=program
3729 LIBO_SHARE_FOLDER=share
3730 LIBO_SHARE_HELP_FOLDER=help
3731 LIBO_SHARE_JAVA_FOLDER=program/classes
3732 LIBO_SHARE_PRESETS_FOLDER=presets
3733 LIBO_SHARE_READMES_FOLDER=readmes
3734 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3735 LIBO_SHARE_SHELL_FOLDER=program/shell
3736 LIBO_URE_BIN_FOLDER=program
3737 LIBO_URE_ETC_FOLDER=program
3738 LIBO_URE_LIB_FOLDER=program
3739 LIBO_URE_MISC_FOLDER=program
3740 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3742 LIBO_BIN_FOLDER=program
3743 LIBO_ETC_FOLDER=program
3744 LIBO_LIBEXEC_FOLDER=program
3745 LIBO_LIB_FOLDER=program
3746 LIBO_LIB_PYUNO_FOLDER=program
3747 LIBO_SHARE_FOLDER=share
3748 LIBO_SHARE_HELP_FOLDER=help
3749 LIBO_SHARE_JAVA_FOLDER=program/classes
3750 LIBO_SHARE_PRESETS_FOLDER=presets
3751 LIBO_SHARE_READMES_FOLDER=readmes
3752 if test "$enable_fuzzers" != yes; then
3753 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3755 LIBO_SHARE_RESOURCE_FOLDER=resource
3757 LIBO_SHARE_SHELL_FOLDER=program/shell
3758 LIBO_URE_BIN_FOLDER=program
3759 LIBO_URE_ETC_FOLDER=program
3760 LIBO_URE_LIB_FOLDER=program
3761 LIBO_URE_MISC_FOLDER=program
3762 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3764 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3765 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3766 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3767 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3768 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3769 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3770 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3771 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3772 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3773 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3774 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3775 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3776 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3777 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3778 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3779 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3781 # Not all of them needed in config_host.mk, add more if need arises
3782 AC_SUBST(LIBO_BIN_FOLDER)
3783 AC_SUBST(LIBO_ETC_FOLDER)
3784 AC_SUBST(LIBO_LIB_FOLDER)
3785 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3786 AC_SUBST(LIBO_SHARE_FOLDER)
3787 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3788 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3789 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3790 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3791 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3792 AC_SUBST(LIBO_URE_BIN_FOLDER)
3793 AC_SUBST(LIBO_URE_ETC_FOLDER)
3794 AC_SUBST(LIBO_URE_LIB_FOLDER)
3795 AC_SUBST(LIBO_URE_MISC_FOLDER)
3796 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3798 dnl ===================================================================
3799 dnl Windows specific tests and stuff
3800 dnl ===================================================================
3804 # Return value: $regvalue
3807 if test "$build_os" = "wsl"; then
3808 regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3812 local _regentry="/proc/registry${1}/${2}"
3813 if test -f "$_regentry"; then
3814 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3815 # Registry keys read via /proc/registry* are always \0 terminated!
3816 local _regvalue=$(tr -d '\0' < "$_regentry")
3817 if test $? -eq 0; then
3823 # Get a value from the 32-bit side of the Registry
3826 reg_get_value "32" "$1"
3829 # Get a value from the 64-bit side of the Registry
3832 reg_get_value "64" "$1"
3837 # Return value: $reglist
3840 if test "$build_os" = "wsl"; then
3841 reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3845 reglist=$(ls "/proc/registry${1}/${2}")
3848 # List values from the 32-bit side of the Registry
3849 reg_list_values_32()
3851 reg_list_values "32" "$1"
3854 # List values from the 64-bit side of the Registry
3855 reg_list_values_64()
3857 reg_list_values "64" "$1"
3865 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3874 PLATFORMID=windows_x86_64
3876 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3878 WIN_MULTI_ARCH="x86"
3884 PLATFORMID=windows_x86
3887 WIN_OTHER_ARCH="x64"
3892 PLATFORMID=windows_aarch64
3894 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3895 WIN_HOST_ARCH="arm64"
3900 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3904 case "$build_cpu" in
3905 x86_64) WIN_BUILD_ARCH="x64" ;;
3906 i*86) WIN_BUILD_ARCH="x86" ;;
3907 aarch64) WIN_BUILD_ARCH="arm64" ;;
3909 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3913 SCPDEFS="$SCPDEFS -D_MSC_VER"
3917 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3918 # other-arch won't, but wouldn't break the build (x64 on x86).
3919 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3920 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3924 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3925 # To allow building Windows multi-arch releases without cross-tooling
3926 if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3927 cross_compiling="yes"
3931 if test "$cross_compiling" = "yes"; then
3932 export CROSS_COMPILING=TRUE
3933 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3934 ENABLE_WASM_STRIP=TRUE
3936 if test "$_os" = "Emscripten"; then
3937 if test "$with_main_module" = "calc"; then
3938 ENABLE_WASM_STRIP_WRITER=TRUE
3939 elif test "$with_main_module" = "writer"; then
3940 ENABLE_WASM_STRIP_CALC=TRUE
3945 BUILD_TYPE="$BUILD_TYPE NATIVE"
3947 AC_SUBST(CROSS_COMPILING)
3948 AC_SUBST(ENABLE_WASM_STRIP)
3949 AC_SUBST(ENABLE_WASM_STRIP_WRITER)
3950 AC_SUBST(ENABLE_WASM_STRIP_CALC)
3952 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3953 # NOTE: must _not_ be used for bundled external libraries!
3955 if test "$GCC" = "yes"; then
3956 AC_MSG_CHECKING( for -isystem )
3958 CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3959 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3961 if test -n "$ISYSTEM"; then
3967 if test -z "$ISYSTEM"; then
3968 # fall back to using -I
3973 dnl ===================================================================
3974 dnl Check which Visual Studio compiler is used
3975 dnl ===================================================================
3977 map_vs_year_to_version()
3979 # Return value: $vsversion
3991 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3995 vs_versions_to_check()
3997 # Args: $1 (optional) : versions to check, in the order of preference
3998 # Return value: $vsversions
4002 if test -n "$1"; then
4003 map_vs_year_to_version "$1"
4004 vsversions=$vsversion
4006 # Default version is 2019
4011 win_get_env_from_vsdevcmdbat()
4013 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4014 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
4015 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4016 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4018 if test "$build_os" = "wsl"; then
4019 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4021 chmod +x $WRAPPERBATCHFILEPATH
4022 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4024 rm -f $WRAPPERBATCHFILEPATH
4025 printf '%s' "$result"
4030 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4031 if test -n "$regvalue"; then
4032 PathFormat "$regvalue"
4033 UCRTSDKDIR=$formatted_path_unix
4034 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4035 UCRTVERSION=$regvalue
4037 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4041 if test -z "$UCRTSDKDIR"; then
4042 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4043 ide_env_file="${ide_env_dir}VsDevCmd.bat"
4044 if test -f "$ide_env_file"; then
4045 PathFormat "$(win_get_env_from_vsdevcmdbat UniversalCRTSdkDir)"
4046 UCRTSDKDIR=$formatted_path
4047 UCRTVERSION=$(win_get_env_from_vsdevcmdbat UCRTVersion)
4048 dnl Hack needed at least by tml:
4049 if test "$UCRTVERSION" = 10.0.15063.0 \
4050 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4051 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4053 UCRTVERSION=10.0.14393.0
4056 AC_MSG_ERROR([No UCRT found])
4064 # Args: $1 (optional) : The VS version year
4065 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4067 unset vctest vctoolset vcnumwithdot vcbuildnumber
4069 vs_versions_to_check "$1"
4070 if test "$build_os" = wsl; then
4071 vswhere="$PROGRAMFILESX86"
4072 if test -z "$vswhere"; then
4073 vswhere="c:\\Program Files (x86)"
4076 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4078 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4079 PathFormat "$vswhere"
4080 vswhere=$formatted_path_unix
4081 for ver in $vsversions; do
4082 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4083 if test -z "$vswhereoutput"; then
4084 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4086 # Fall back to all MS products (this includes VC++ Build Tools)
4087 if ! test -n "$vswhereoutput"; then
4088 AC_MSG_CHECKING([VC++ Build Tools and similar])
4089 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr ${ver%%.*} + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4091 if test -n "$vswhereoutput"; then
4092 PathFormat "$vswhereoutput"
4093 vctest=$formatted_path_unix
4098 if test -n "$vctest"; then
4100 if test "${vcnumwithdot%%.*}" = "$vcnumwithdot"; then
4101 vcnumwithdot=$vcnumwithdot.0
4103 case "$vcnumwithdot" in
4113 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4120 AC_MSG_CHECKING([$1 compiler])
4122 CL_EXE_PATH="$2/cl.exe"
4124 if test ! -f "$CL_EXE_PATH"; then
4125 if test "$1" = "multi-arch"; then
4126 AC_MSG_WARN([no compiler (cl.exe) in $2])
4129 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4133 dnl ===========================================================
4134 dnl Check for the corresponding mspdb*.dll
4135 dnl ===========================================================
4137 # MSVC 15.0 has libraries from 14.0?
4140 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4141 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4144 # The compiles has to find its shared libraries
4146 TEMP_PATH=`cygpath -d "$2"`
4147 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4149 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4150 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4155 AC_MSG_RESULT([$CL_EXE_PATH])
4161 if test "$_os" = "WINNT"; then
4162 AC_MSG_CHECKING([Visual C++])
4163 find_msvc "$with_visual_studio"
4164 if test -z "$vctest"; then
4165 if test -n "$with_visual_studio"; then
4166 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4168 AC_MSG_ERROR([no Visual Studio installation found])
4173 VC_PRODUCT_DIR="$vctest/VC"
4174 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4176 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4177 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4178 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4179 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4180 if test $? -ne 0; then
4186 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4187 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4188 test_cl_exe "build" "$MSVC_BUILD_PATH"
4191 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4192 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4193 test_cl_exe "host" "$MSVC_HOST_PATH"
4195 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4198 AC_MSG_CHECKING([for short pathname of VC product directory])
4199 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4200 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4205 AC_MSG_CHECKING([for UCRT location])
4207 # find_ucrt errors out if it doesn't find it
4208 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4209 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4210 ucrtincpath_formatted=$formatted_path
4211 # SOLARINC is used for external modules and must be set too.
4212 # And no, it's not sufficient to set SOLARINC only, as configure
4213 # itself doesn't honour it.
4214 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4215 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4216 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4217 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4219 AC_SUBST(UCRTSDKDIR)
4220 AC_SUBST(UCRTVERSION)
4222 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4223 # Find the proper version of MSBuild.exe to use based on the VS version
4224 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4225 if test -z "$regvalue" ; then
4226 if test "$WIN_BUILD_ARCH" != "x64"; then
4227 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4229 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4232 if test -d "$regvalue" ; then
4233 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4234 AC_MSG_RESULT([$regvalue])
4236 AC_MSG_ERROR([MSBuild.exe location not found])
4239 # Find the version of devenv.exe
4240 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4241 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4242 DEVENV_unix=$(cygpath -u "$DEVENV")
4243 if test ! -e "$DEVENV_unix"; then
4244 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4247 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4248 dnl needed when building CLR code:
4249 if test -z "$MSVC_CXX"; then
4250 # This gives us a posix path with 8.3 filename restrictions
4251 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4254 if test -z "$CC"; then
4256 CC_BASE=`first_arg_basename "$CC"`
4258 if test -z "$CXX"; then
4260 CXX_BASE=`first_arg_basename "$CXX"`
4263 if test -n "$CC"; then
4264 # Remove /cl.exe from CC case insensitive
4265 AC_MSG_NOTICE([found Visual C++ $vcyear])
4267 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4268 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4270 PathFormat "$COMPATH"
4271 COMPATH=`win_short_path_for_make "$formatted_path"`
4274 VCTOOLSET=$vctoolset
4276 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4277 # are always "better", we list them in reverse chronological order.
4279 case "$vcnumwithdot" in
4281 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4285 # The expectation is that --with-windows-sdk should not need to be used
4286 if test -n "$with_windows_sdk"; then
4287 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4288 *" "$with_windows_sdk" "*)
4289 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4292 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4297 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4302 AC_MSG_ERROR([Visual C++ not found after all, huh])
4305 # ERROR if VS version < 16.5
4306 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4307 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4308 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4309 // between Visual Studio versions and _MSC_VER:
4313 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4315 # WARN if VS version < 16.10
4316 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4317 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4321 ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4323 if test $vs2019_recommended_version = yes; then
4324 AC_MSG_RESULT([yes])
4327 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."
4330 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4331 # version of the Explorer extension (and maybe other small
4332 # bits, too) needed when installing a 32-bit LibreOffice on a
4333 # 64-bit OS. The 64-bit Explorer extension is a feature that
4334 # has been present since long in OOo. Don't confuse it with
4335 # building LibreOffice itself as 64-bit code.
4340 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4341 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4342 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4343 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4346 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4347 AC_MSG_RESULT([found])
4349 AC_MSG_RESULT([not found])
4350 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4352 elif test "$WIN_HOST_ARCH" = "x64"; then
4357 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4358 AC_SUBST(CXX_X64_BINARY)
4360 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4361 # needed to support TWAIN scan on both 32- and 64-bit systems
4363 case "$WIN_HOST_ARCH" in
4365 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4366 if test -n "$CXX_X86_BINARY"; then
4368 AC_MSG_RESULT([preset])
4369 elif test -n "$WIN_MULTI_ARCH"; then
4371 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4372 AC_MSG_RESULT([found])
4374 AC_MSG_RESULT([not found])
4375 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4380 CXX_X86_BINARY=$MSVC_CXX
4384 AC_SUBST(CXX_X86_BINARY)
4392 AC_MSG_CHECKING([whether the compiler is actually Clang])
4393 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4399 [AC_MSG_RESULT([yes])
4401 [AC_MSG_RESULT([no])])
4402 AC_SUBST(COM_IS_CLANG)
4405 if test "$COM_IS_CLANG" = TRUE; then
4406 AC_MSG_CHECKING([whether Clang is new enough])
4407 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4408 #if !defined __apple_build_version__
4412 [my_apple_clang=yes],[my_apple_clang=])
4413 if test "$my_apple_clang" = yes; then
4414 AC_MSG_RESULT([assumed yes (Apple Clang)])
4415 elif test "$_os" = Emscripten; then
4416 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4418 if test "$_os" = WINNT; then
4419 dnl In which case, assume clang-cl:
4424 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4425 CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4426 CLANGVER=`echo $clang_version \
4427 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4428 if test "$CLANGVER" -ge 80001; then
4429 AC_MSG_RESULT([yes ($clang_version)])
4431 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 8.0.1])
4433 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4434 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4438 SHOWINCLUDES_PREFIX=
4439 if test "$_os" = WINNT; then
4440 dnl We need to guess the prefix of the -showIncludes output, it can be
4442 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4443 echo "#include <stdlib.h>" > conftest.c
4444 SHOWINCLUDES_PREFIX=`VSLANG=1033 $CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4445 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4446 rm -f conftest.c conftest.obj
4447 if test -z "$SHOWINCLUDES_PREFIX"; then
4448 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4450 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4453 AC_SUBST(SHOWINCLUDES_PREFIX)
4456 # prefix C with ccache if needed
4458 if test "$CCACHE" != ""; then
4459 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4463 CFLAGS="$CFLAGS --ccache-skip -O2"
4464 # msvc does not fail on unknown options, check stdout
4465 if test "$COM" = MSC; then
4466 CFLAGS="$CFLAGS -nologo"
4468 save_ac_c_werror_flag=$ac_c_werror_flag
4469 ac_c_werror_flag=yes
4470 dnl an empty program will do, we're checking the compiler flags
4471 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4472 [use_ccache=yes], [use_ccache=no])
4474 ac_c_werror_flag=$save_ac_c_werror_flag
4475 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4476 AC_MSG_RESULT([yes])
4479 CC_BASE="ccache $CC_BASE"
4485 # ===================================================================
4486 # check various GCC options that Clang does not support now but maybe
4487 # will somewhen in the future, check them even for GCC, so that the
4489 # ===================================================================
4492 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4493 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4495 CFLAGS="$CFLAGS -Werror -ggdb2"
4496 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4498 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4499 AC_MSG_RESULT([yes])
4504 if test "$host_cpu" = "m68k"; then
4505 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4507 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4508 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4510 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4511 AC_MSG_RESULT([yes])
4517 AC_SUBST(HAVE_GCC_GGDB2)
4519 dnl ===================================================================
4520 dnl Test the gcc version
4521 dnl ===================================================================
4522 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4523 AC_MSG_CHECKING([the GCC version])
4524 _gcc_version=`$CC -dumpfullversion`
4525 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4526 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4527 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4529 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4531 if test "$gcc_full_version" -lt 70000; then
4532 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4535 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4536 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4537 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4538 # (which reports itself as GCC 4.2.1).
4541 AC_SUBST(GCC_VERSION)
4543 dnl Set the ENABLE_DBGUTIL variable
4544 dnl ===================================================================
4545 AC_MSG_CHECKING([whether to build with additional debug utilities])
4546 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4547 ENABLE_DBGUTIL="TRUE"
4548 # this is an extra var so it can have different default on different MSVC
4549 # versions (in case there are version specific problems with it)
4550 MSVC_USE_DEBUG_RUNTIME="TRUE"
4552 AC_MSG_RESULT([yes])
4553 # cppunit and graphite expose STL in public headers
4554 if test "$with_system_cppunit" = "yes"; then
4555 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4557 with_system_cppunit=no
4559 if test "$with_system_graphite" = "yes"; then
4560 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4562 with_system_graphite=no
4564 if test "$with_system_orcus" = "yes"; then
4565 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4567 with_system_orcus=no
4569 if test "$with_system_libcmis" = "yes"; then
4570 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4572 with_system_libcmis=no
4574 if test "$with_system_hunspell" = "yes"; then
4575 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4577 with_system_hunspell=no
4579 if test "$with_system_gpgmepp" = "yes"; then
4580 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4582 with_system_gpgmepp=no
4584 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4585 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4586 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4587 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4588 # of those two is using the system variant:
4589 if test "$with_system_libnumbertext" = "yes"; then
4590 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4592 with_system_libnumbertext=no
4594 if test "$with_system_libwps" = "yes"; then
4595 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4597 with_system_libwps=no
4601 MSVC_USE_DEBUG_RUNTIME=""
4604 AC_SUBST(ENABLE_DBGUTIL)
4605 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4607 dnl Set the ENABLE_DEBUG variable.
4608 dnl ===================================================================
4609 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4610 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4612 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4613 if test -z "$libo_fuzzed_enable_debug"; then
4614 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4616 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4621 AC_MSG_CHECKING([whether to do a debug build])
4622 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4624 if test -n "$ENABLE_DBGUTIL" ; then
4625 AC_MSG_RESULT([yes (dbgutil)])
4627 AC_MSG_RESULT([yes])
4633 AC_SUBST(ENABLE_DEBUG)
4635 dnl ===================================================================
4636 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4637 dnl This is done only after compiler checks (need to know if Clang is
4638 dnl used, for different defaults) and after checking if a debug build
4639 dnl is wanted (non-debug builds get the default linker if not explicitly
4640 dnl specified otherwise).
4641 dnl All checks for linker features/options should come after this.
4642 dnl ===================================================================
4645 use_ld=-fuse-ld=${1%%:*}
4647 if test "$use_ld_path" != "$1"; then
4648 if test "$COM_IS_CLANG" = TRUE; then
4649 if test "$CLANGVER" -ge 120000; then
4650 use_ld="${use_ld} --ld-path=${use_ld_path}"
4652 use_ld="-fuse-ld=${use_ld_path}"
4655 # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4656 # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4657 # pickup the alternative linker, when called by libtool for linking.
4658 # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4659 AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4662 use_ld_fail_if_error=$2
4664 AC_MSG_CHECKING([for $use_ld linker support])
4665 use_ld_ldflags_save="$LDFLAGS"
4666 LDFLAGS="$LDFLAGS $use_ld"
4667 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4670 printf ("hello world\n");
4671 ])], USE_LD=$use_ld, [])
4672 if test -n "$USE_LD"; then
4673 AC_MSG_RESULT( yes )
4676 if test -n "$use_ld_fail_if_error"; then
4682 if test -n "$use_ld_ok"; then
4683 dnl keep the value of LDFLAGS
4686 LDFLAGS="$use_ld_ldflags_save"
4690 if test "$enable_ld" != "no"; then
4691 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4692 if test -n "$enable_ld"; then
4693 check_use_ld "$enable_ld" fail_if_error
4694 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4695 dnl non-debug builds default to the default linker
4697 elif test -n "$COM_IS_CLANG"; then
4699 if test $? -ne 0; then
4701 if test $? -ne 0; then
4706 # For gcc first try gold, new versions also support lld/mold.
4708 if test $? -ne 0; then
4710 if test $? -ne 0; then
4715 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4717 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4718 if test -z "$ld_used"; then
4721 AC_MSG_CHECKING([for linker that is used])
4722 AC_MSG_RESULT([$ld_used])
4723 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4724 if echo "$ld_used" | grep -q "^GNU ld"; then
4725 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4726 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4730 if test "$enable_ld" = "yes"; then
4731 AC_MSG_ERROR([--enable-ld not supported])
4738 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4739 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4740 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4741 bsymbolic_functions_ldflags_save=$LDFLAGS
4742 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4743 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4746 printf ("hello world\n");
4747 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4748 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4749 AC_MSG_RESULT( found )
4751 AC_MSG_RESULT( not found )
4753 LDFLAGS=$bsymbolic_functions_ldflags_save
4755 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4758 if test "$GCC" = "yes"; then
4759 for flag in "--gc-sections" "-dead_strip"; do
4760 AC_MSG_CHECKING([for $flag linker support])
4761 ldflags_save=$LDFLAGS
4762 LDFLAGS="$LDFLAGS -Wl,$flag"
4763 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4766 printf ("hello world\n");
4768 LD_GC_SECTIONS="-Wl,$flag"
4769 AC_MSG_RESULT( found )
4771 AC_MSG_RESULT( not found )
4773 LDFLAGS=$ldflags_save
4774 if test -n "$LD_GC_SECTIONS"; then
4779 AC_SUBST(LD_GC_SECTIONS)
4781 HAVE_EXTERNAL_DWARF=
4782 if test "$enable_split_debug" != no; then
4784 if test -n "$ENABLE_LTO"; then
4785 : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4786 elif test "$enable_split_debug" = yes; then
4788 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4789 elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4792 if test -n "$use_split_debug"; then
4793 if test "$_os" = "Emscripten"; then
4794 TEST_CC_FLAG=-gseparate-dwarf
4796 TEST_CC_FLAG=-gsplit-dwarf
4798 AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4800 CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4801 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4803 if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4804 AC_MSG_RESULT([yes])
4806 if test "$enable_split_debug" = yes; then
4813 if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4814 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4815 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4818 AC_SUBST(HAVE_EXTERNAL_DWARF)
4820 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4821 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4823 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4824 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4826 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4827 AC_MSG_RESULT([yes])
4831 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4834 if test "$enable_gdb_index" != "no"; then
4835 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4836 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4837 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4839 CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4841 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4842 if test "$have_ggnu_pubnames" != "TRUE"; then
4843 if test "$enable_gdb_index" = "yes"; then
4844 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4849 AC_MSG_RESULT( yes )
4850 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4851 ldflags_save=$LDFLAGS
4852 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4853 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4856 printf ("hello world\n");
4857 ])], ENABLE_GDB_INDEX=TRUE, [])
4858 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4859 AC_MSG_RESULT( yes )
4861 if test "$enable_gdb_index" = "yes"; then
4867 LDFLAGS=$ldflags_save
4871 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4872 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4873 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4876 AC_SUBST(ENABLE_GDB_INDEX)
4878 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4881 if test "$enable_sal_log" = yes; then
4884 AC_SUBST(ENABLE_SAL_LOG)
4886 dnl Check for enable symbols option
4887 dnl ===================================================================
4888 AC_MSG_CHECKING([whether to generate debug information])
4889 if test -z "$enable_symbols"; then
4890 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4896 if test "$enable_symbols" = yes; then
4897 ENABLE_SYMBOLS_FOR=all
4898 AC_MSG_RESULT([yes])
4899 elif test "$enable_symbols" = no; then
4903 # Selective debuginfo.
4904 ENABLE_SYMBOLS_FOR="$enable_symbols"
4905 AC_MSG_RESULT([for "$enable_symbols"])
4907 AC_SUBST(ENABLE_SYMBOLS_FOR)
4909 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4910 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4911 AC_MSG_CHECKING([whether enough memory is available for linking])
4912 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4913 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4914 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4915 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4917 AC_MSG_RESULT([yes])
4922 ENABLE_OPTIMIZED_DEBUG=
4923 AC_MSG_CHECKING([whether to compile with optimization flags])
4924 if test -z "$enable_optimized"; then
4925 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4928 enable_optimized=yes
4931 if test "$enable_optimized" = yes; then
4932 ENABLE_OPTIMIZED=TRUE
4933 AC_MSG_RESULT([yes])
4934 elif test "$enable_optimized" = debug; then
4935 ENABLE_OPTIMIZED_DEBUG=TRUE
4936 AC_MSG_RESULT([yes (debug)])
4938 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4939 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4941 CFLAGS="$CFLAGS -Werror -Og"
4942 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4944 if test "$HAVE_GCC_OG" = "TRUE"; then
4945 AC_MSG_RESULT([yes])
4950 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4951 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4956 AC_SUBST(ENABLE_OPTIMIZED)
4957 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4960 # determine CPUNAME, OS, ...
4970 PLATFORMID=aix_powerpc
4986 if test "$enable_ios_simulator" = "yes"; then
4991 PLATFORMID=macosx_aarch64
4995 if test "$enable_ios_simulator" = "yes"; then
5000 PLATFORMID=macosx_x86_64
5003 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5016 if test "$enable_ios_simulator" = "yes"; then
5017 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5021 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5026 PLATFORMID=ios_arm64
5039 PLATFORMID=dragonfly_x86
5044 PLATFORMID=dragonfly_x86_64
5047 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5061 PLATFORMID=freebsd_aarch64
5067 PLATFORMID=freebsd_x86
5072 PLATFORMID=freebsd_x86_64
5077 PLATFORMID=freebsd_powerpc64
5082 PLATFORMID=freebsd_powerpc
5085 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5101 PLATFORMID=haiku_x86
5106 PLATFORMID=haiku_x86_64
5109 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5125 PLATFORMID=kfreebsd_x86
5130 PLATFORMID=kfreebsd_x86_64
5133 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5138 linux-gnu*|linux-musl*)
5148 PLATFORMID=linux_aarch64
5150 EPM_FLAGS="-a arm64"
5155 PLATFORMID=linux_alpha
5161 PLATFORMID=linux_arm_eabi
5165 PLATFORMID=linux_arm_oabi
5173 PLATFORMID=linux_hppa
5178 PLATFORMID=linux_x86
5183 PLATFORMID=linux_ia64
5189 PLATFORMID=linux_mips_eb
5194 EPM_FLAGS="-a mips64"
5195 PLATFORMID=linux_mips64_eb
5200 EPM_FLAGS="-a mips64el"
5201 PLATFORMID=linux_mips64_el
5206 EPM_FLAGS="-a mipsel"
5207 PLATFORMID=linux_mips_el
5212 EPM_FLAGS="-a riscv64"
5213 PLATFORMID=linux_riscv64
5218 PLATFORMID=linux_m68k
5223 PLATFORMID=linux_powerpc
5228 PLATFORMID=linux_powerpc64
5232 RTL_ARCH=PowerPC_64_LE
5233 PLATFORMID=linux_powerpc64_le
5238 PLATFORMID=linux_sparc
5243 PLATFORMID=linux_sparc64
5248 PLATFORMID=linux_s390
5253 PLATFORMID=linux_s390x
5258 PLATFORMID=linux_x86_64
5262 RTL_ARCH=LOONGARCH64
5263 PLATFORMID=linux_loongarch64
5266 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5282 PLATFORMID=android_arm_eabi
5287 PLATFORMID=android_aarch64
5292 PLATFORMID=android_x86
5297 PLATFORMID=android_x86_64
5300 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5315 PLATFORMID=netbsd_x86
5320 PLATFORMID=netbsd_powerpc
5325 PLATFORMID=netbsd_sparc
5330 PLATFORMID=netbsd_x86_64
5333 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5348 PLATFORMID=openbsd_x86
5353 PLATFORMID=openbsd_x86_64
5356 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5359 SOLARINC="$SOLARINC -I/usr/local/include"
5372 PLATFORMID=solaris_x86
5377 PLATFORMID=solaris_sparc
5382 PLATFORMID=solaris_sparc64
5385 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5388 SOLARINC="$SOLARINC -I/usr/local/include"
5401 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5406 PLATFORMID=linux_x86
5410 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5415 if test "$enable_gui" = "no"; then
5416 if test "$using_x11" != yes; then
5417 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5423 AC_DEFINE(HAVE_FEATURE_UI)
5425 AC_SUBST(DISABLE_GUI)
5427 if test "$with_x" = "no"; then
5431 if test -z "$USING_X11" -a "$enable_qt5" = "yes" -a "$enable_gen" = "yes"; then
5432 AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5435 if test "$using_x11" = yes; then
5436 if test "$USING_X11" = TRUE; then
5437 AC_DEFINE(USING_X11)
5440 if test "$DISABLE_DYNLOADING" = TRUE; then
5445 if test "$USING_X11" = TRUE; then
5446 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5450 WORKDIR="${BUILDDIR}/workdir"
5451 INSTDIR="${BUILDDIR}/instdir"
5452 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5453 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5461 AC_SUBST([INSTROOT])
5462 AC_SUBST([INSTROOTBASE])
5466 AC_SUBST(PLATFORMID)
5467 AC_SUBST(WINDOWS_X64)
5468 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5469 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5471 if test "$OS" = WNT -a "$COM" = MSC; then
5473 INTEL) CPPU_ENV=msci ;;
5474 X86_64) CPPU_ENV=mscx ;;
5475 AARCH64) CPPU_ENV=msca ;;
5477 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5485 dnl ===================================================================
5486 dnl Test which package format to use
5487 dnl ===================================================================
5488 AC_MSG_CHECKING([which package format to use])
5489 if test -n "$with_package_format" -a "$with_package_format" != no; then
5490 for i in $with_package_format; do
5492 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5495 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5496 aix - AIX software distribution
5497 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5498 deb - Debian software distribution
5499 pkg - Solaris software distribution
5500 rpm - RedHat software distribution
5502 LibreOffice additionally supports:
5503 archive - .tar.gz or .zip
5505 installed - installation tree
5511 # fakeroot is needed to ensure correct file ownerships/permissions
5512 # inside deb packages and tar archives created on Linux and Solaris.
5513 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5514 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5515 if test "$FAKEROOT" = "no"; then
5517 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5520 PKGFORMAT="$with_package_format"
5521 AC_MSG_RESULT([$PKGFORMAT])
5524 AC_MSG_RESULT([none])
5528 dnl ===================================================================
5529 dnl handle help related options
5531 dnl If you change help related options, please update README.help
5532 dnl ===================================================================
5539 AC_MSG_CHECKING([which help to build])
5540 if test -n "$with_help" -a "$with_help" != "no"; then
5541 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5542 BUILD_TYPE="$BUILD_TYPE HELP"
5543 case "$with_help" in
5545 ENABLE_HTMLHELP=TRUE
5547 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5548 AC_MSG_RESULT([HTML (local)])
5551 ENABLE_HTMLHELP=TRUE
5553 AC_MSG_RESULT([HTML (online)])
5557 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5558 AC_MSG_RESULT([XML (local)])
5561 AC_MSG_ERROR([Unknown --with-help=$with_help])
5568 AC_MSG_CHECKING([if we need to build the help index tooling])
5569 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5570 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5572 AC_MSG_RESULT([yes])
5577 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5578 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5579 if test "$HELP_ONLINE" != TRUE; then
5580 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5582 case "$with_omindex" in
5584 HELP_OMINDEX_PAGE=TRUE
5585 AC_MSG_RESULT([SERVER])
5588 AC_MSG_RESULT([NOXAP])
5591 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5598 AC_MSG_CHECKING([whether to include the XML-help support])
5599 if test "$enable_xmlhelp" = yes; then
5600 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5602 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5603 AC_MSG_RESULT([yes])
5605 if test "$with_help" = yes; then
5606 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5611 dnl Test whether to integrate helppacks into the product's installer
5612 AC_MSG_CHECKING([for helppack integration])
5613 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5614 AC_MSG_RESULT([no integration])
5616 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5617 AC_MSG_RESULT([integration])
5620 AC_SUBST([ENABLE_HTMLHELP])
5621 AC_SUBST([HELP_OMINDEX_PAGE])
5622 AC_SUBST([HELP_ONLINE])
5623 # WITH_HELPPACKS is used only in configure
5625 dnl ===================================================================
5626 dnl Set up a different compiler to produce tools to run on the build
5627 dnl machine when doing cross-compilation
5628 dnl ===================================================================
5630 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5631 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5632 if test "$cross_compiling" = "yes"; then
5633 AC_MSG_CHECKING([for BUILD platform configuration])
5635 rm -rf CONF-FOR-BUILD config_build.mk
5636 mkdir CONF-FOR-BUILD
5637 # Here must be listed all files needed when running the configure script. In particular, also
5638 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5639 # keep them in the same order as there.
5640 (cd $SRC_ROOT && tar cf - \
5642 bin/get_config_variables \
5643 solenv/bin/getcompver.awk \
5644 solenv/inc/langlist.mk \
5647 config_host_lang.mk.in \
5650 bin/bffvalidator.sh.in \
5651 bin/odfvalidator.sh.in \
5652 bin/officeotron.sh.in \
5653 hardened_runtime.xcent.in \
5654 instsetoo_native/util/openoffice.lst.in \
5656 sysui/desktop/macosx/Info.plist.in \
5657 .vscode/vs-code-template.code-workspace.in \
5658 solenv/lockfile/autoconf.h.in \
5660 | (cd CONF-FOR-BUILD && tar xf -)
5661 cp configure CONF-FOR-BUILD
5662 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5664 unset COM USING_X11 OS CPUNAME
5665 unset CC CXX SYSBASE CFLAGS
5666 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5667 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5668 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5669 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5670 if test -n "$CC_FOR_BUILD"; then
5671 export CC="$CC_FOR_BUILD"
5672 CC_BASE=`first_arg_basename "$CC"`
5674 if test -n "$CXX_FOR_BUILD"; then
5675 export CXX="$CXX_FOR_BUILD"
5676 CXX_BASE=`first_arg_basename "$CXX"`
5678 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5681 # Handle host configuration, which affects the cross-toolset too
5683 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5684 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5685 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5686 # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5687 if test -n "$ENABLE_JAVA"; then
5690 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5691 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5694 if test -z "$with_jdk_home"; then
5695 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.])
5700 sub_conf_opts="$sub_conf_opts --without-java"
5702 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5703 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5704 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5705 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5706 test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5707 test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5708 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5709 test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5710 test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5711 if test "$_os" = "Emscripten"; then
5712 sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5713 if test "${with_main_module+set}" = set; then
5714 sub_conf_opts="$sub_conf_opts --with-main-module=${with_main_module}"
5716 sub_conf_opts="$sub_conf_opts --with-main-module=writer"
5720 # Don't bother having configure look for stuff not needed for the build platform anyway
5721 # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5722 sub_conf_defaults=" \
5723 --build="$build_alias" \
5724 --disable-cairo-canvas \
5726 --disable-customtarget-components \
5727 --disable-firebird-sdbc \
5729 --disable-gstreamer-1-0 \
5733 --disable-mariadb-sdbc \
5735 --disable-online-update \
5737 --disable-pdfimport \
5738 --disable-postgresql-sdbc \
5741 --enable-dynamic-loading \
5742 --enable-icecream="$enable_icecream" \
5746 --with-tls=openssl \
5748 # single quotes added for better readability in case of spaces
5749 echo " Running CONF-FOR-BUILD/configure" \
5750 $sub_conf_defaults \
5751 --with-parallelism="'$with_parallelism'" \
5752 --with-theme="'$with_theme'" \
5753 --with-vendor="'$with_vendor'" \
5755 $with_build_platform_configure_options \
5759 $sub_conf_defaults \
5760 --with-parallelism="$with_parallelism" \
5761 --with-theme="$with_theme" \
5762 "--with-vendor=$with_vendor" \
5764 $with_build_platform_configure_options \
5766 2>&1 | sed -e 's/^/ /'
5767 if test [${PIPESTATUS[0]}] -ne 0; then
5768 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5771 # filter permitted build targets
5772 PERMITTED_BUILD_TARGETS="
5807 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5808 # newlined lists, to use grep as a filter
5809 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5810 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5811 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5812 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5814 cp config_host.mk ../config_build.mk
5815 cp config_host_lang.mk ../config_build_lang.mk
5816 mv config.log ../config.Build.log
5817 mkdir -p ../config_build
5818 mv config_host/*.h ../config_build
5819 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5821 # all these will get a _FOR_BUILD postfix
5822 DIRECT_FOR_BUILD_SETTINGS="
5830 JDK_SECURITYMANAGER_DISALLOWED
5834 LIBO_URE_MISC_FOLDER
5840 # these overwrite host config with build config
5841 OVERWRITING_SETTINGS="
5845 JAVA_CLASSPATH_NOT_SET
5857 # these need some special handling
5858 EXTRA_HANDLED_SETTINGS="
5865 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5869 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5870 echo "$line" >>build-config
5872 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5874 VV=`eval "echo $VV"`
5875 if test -n "$VV"; then
5876 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5877 echo "$line" >>build-config
5881 for V in $OVERWRITING_SETTINGS; do
5883 VV=`eval "echo $VV"`
5884 if test -n "$VV"; then
5885 line=${V}='${'${V}:-$VV'}'
5886 echo "$line" >>build-config
5890 for V in INSTDIR INSTROOT WORKDIR; do
5892 VV=`eval "echo $VV"`
5893 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5894 if test -n "$VV"; then
5895 line="${V}_FOR_BUILD='$VV'"
5896 echo "$line" >>build-config
5901 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5902 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])
5903 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5904 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5906 eval `cat CONF-FOR-BUILD/build-config`
5908 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5910 rm -rf CONF-FOR-BUILD
5914 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5915 CXX_FOR_BUILD="$CXX"
5916 INSTDIR_FOR_BUILD="$INSTDIR"
5917 INSTROOT_FOR_BUILD="$INSTROOT"
5918 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5919 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5920 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5921 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5922 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5923 WORKDIR_FOR_BUILD="$WORKDIR"
5925 AC_SUBST(OS_FOR_BUILD)
5926 AC_SUBST(INSTDIR_FOR_BUILD)
5927 AC_SUBST(INSTROOT_FOR_BUILD)
5928 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5929 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5930 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5931 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5932 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5933 AC_SUBST(WORKDIR_FOR_BUILD)
5934 AC_SUBST(CC_FOR_BUILD)
5935 AC_SUBST(CXX_FOR_BUILD)
5936 AC_SUBST(CPPU_ENV_FOR_BUILD)
5938 dnl ===================================================================
5939 dnl Check for lockfile deps
5940 dnl ===================================================================
5941 if test -z "$CROSS_COMPILING"; then
5942 test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
5943 test "${with_system_lockfile+set}" = set || with_system_lockfile=no
5944 AC_MSG_CHECKING([which lockfile binary to use])
5945 case "$with_system_lockfile" in
5947 AC_MSG_RESULT([external])
5948 AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
5951 AC_MSG_RESULT([internal])
5954 if test -x "$with_system_lockfile"; then
5955 LOCKFILE="$with_system_lockfile"
5957 AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
5959 AC_MSG_RESULT([$with_system_lockfile])
5964 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
5965 add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
5968 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
5969 AC_CHECK_FUNCS([utime utimes])
5972 dnl ===================================================================
5973 dnl Check for syslog header
5974 dnl ===================================================================
5975 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5977 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5978 dnl ===================================================================
5979 AC_MSG_CHECKING([whether to turn warnings to errors])
5980 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5981 ENABLE_WERROR="TRUE"
5982 PYTHONWARNINGS="error"
5983 AC_MSG_RESULT([yes])
5985 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5986 ENABLE_WERROR="TRUE"
5987 PYTHONWARNINGS="error"
5988 AC_MSG_RESULT([yes])
5993 AC_SUBST(ENABLE_WERROR)
5994 AC_SUBST(PYTHONWARNINGS)
5996 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5997 dnl ===================================================================
5998 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5999 if test -z "$enable_assert_always_abort"; then
6000 if test "$ENABLE_DEBUG" = TRUE; then
6001 enable_assert_always_abort=yes
6003 enable_assert_always_abort=no
6006 if test "$enable_assert_always_abort" = "yes"; then
6007 ASSERT_ALWAYS_ABORT="TRUE"
6008 AC_MSG_RESULT([yes])
6010 ASSERT_ALWAYS_ABORT="FALSE"
6013 AC_SUBST(ASSERT_ALWAYS_ABORT)
6015 # Determine whether to use ooenv for the instdir installation
6016 # ===================================================================
6017 if test $_os != "WINNT" -a $_os != "Darwin"; then
6018 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6019 if test -z "$enable_ooenv"; then
6020 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6026 if test "$enable_ooenv" = "no"; then
6030 AC_MSG_RESULT([yes])
6033 AC_SUBST(ENABLE_OOENV)
6035 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6036 if test "$enable_qt5" = "no"; then
6037 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6043 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6044 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6045 AC_MSG_RESULT([yes])
6047 AC_DEFINE(HAVE_FEATURE_PAGEIN)
6051 AC_SUBST(ENABLE_PAGEIN)
6053 dnl ===================================================================
6054 dnl check for cups support
6055 dnl ===================================================================
6057 AC_MSG_CHECKING([whether to enable CUPS support])
6058 if test "$test_cups" = yes -a "$enable_cups" != no; then
6060 AC_MSG_RESULT([yes])
6062 AC_MSG_CHECKING([whether cups support is present])
6063 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6064 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6065 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6066 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6072 AC_SUBST(ENABLE_CUPS)
6074 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,system,TRUE)
6076 dnl whether to find & fetch external tarballs?
6077 dnl ===================================================================
6078 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6079 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6080 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6082 TARFILE_LOCATION="$LODE_HOME/ext_tar"
6085 if test -z "$TARFILE_LOCATION"; then
6086 if test -d "$SRC_ROOT/src" ; then
6087 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6088 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6090 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6092 AbsolutePath "$TARFILE_LOCATION"
6093 PathFormat "${absolute_path}"
6094 TARFILE_LOCATION="${formatted_path_unix}"
6096 AC_SUBST(TARFILE_LOCATION)
6098 AC_MSG_CHECKING([whether we want to fetch tarballs])
6099 if test "$enable_fetch_external" != "no"; then
6100 if test "$with_all_tarballs" = "yes"; then
6101 AC_MSG_RESULT([yes, all of them])
6102 DO_FETCH_TARBALLS="ALL"
6104 AC_MSG_RESULT([yes, if we use them])
6105 DO_FETCH_TARBALLS="TRUE"
6111 AC_SUBST(DO_FETCH_TARBALLS)
6113 dnl Test whether to include MySpell dictionaries
6114 dnl ===================================================================
6115 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6116 if test "$with_myspell_dicts" = "yes"; then
6117 AC_MSG_RESULT([yes])
6118 WITH_MYSPELL_DICTS=TRUE
6119 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6120 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6125 AC_SUBST(WITH_MYSPELL_DICTS)
6127 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6128 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6129 if test "$with_system_dicts" = yes; then
6130 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6132 with_system_dicts=no
6135 AC_MSG_CHECKING([whether to use dicts from external paths])
6136 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6137 AC_MSG_RESULT([yes])
6139 AC_MSG_CHECKING([for spelling dictionary directory])
6140 if test -n "$with_external_dict_dir"; then
6141 DICT_SYSTEM_DIR=file://$with_external_dict_dir
6143 DICT_SYSTEM_DIR=file:///usr/share/hunspell
6144 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6145 DICT_SYSTEM_DIR=file:///usr/share/myspell
6148 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6149 AC_MSG_CHECKING([for hyphenation patterns directory])
6150 if test -n "$with_external_hyph_dir"; then
6151 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6153 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6155 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6156 AC_MSG_CHECKING([for thesaurus directory])
6157 if test -n "$with_external_thes_dir"; then
6158 THES_SYSTEM_DIR=file://$with_external_thes_dir
6160 THES_SYSTEM_DIR=file:///usr/share/mythes
6162 AC_MSG_RESULT([$THES_SYSTEM_DIR])
6167 AC_SUBST(SYSTEM_DICTS)
6168 AC_SUBST(DICT_SYSTEM_DIR)
6169 AC_SUBST(HYPH_SYSTEM_DIR)
6170 AC_SUBST(THES_SYSTEM_DIR)
6172 dnl ===================================================================
6173 dnl Precompiled headers.
6175 AC_MSG_CHECKING([whether to enable pch feature])
6176 if test -z "$enable_pch"; then
6177 if test "$_os" = "WINNT"; then
6178 # Enabled by default on Windows.
6180 # never use sccache on auto-enabled PCH builds, except if requested explicitly
6181 if test -z "$enable_ccache" -a "$SCCACHE"; then
6188 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6189 AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6191 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6192 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6194 if test "$enable_pch" = "system"; then
6196 AC_MSG_RESULT([yes (system headers)])
6197 elif test "$enable_pch" = "base"; then
6199 AC_MSG_RESULT([yes (system and base headers)])
6200 elif test "$enable_pch" = "normal"; then
6202 AC_MSG_RESULT([yes (normal)])
6203 elif test "$enable_pch" = "full"; then
6205 AC_MSG_RESULT([yes (full)])
6206 elif test "$enable_pch" = "yes"; then
6207 # Pick a suitable default.
6208 if test "$GCC" = "yes"; then
6209 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6210 # while making the PCHs larger and rebuilds more likely.
6212 AC_MSG_RESULT([yes (system and base headers)])
6214 # With MSVC the highest level makes a significant difference,
6215 # and it was the default when there used to be no PCH levels.
6217 AC_MSG_RESULT([yes (full)])
6219 elif test "$enable_pch" = "no"; then
6222 AC_MSG_ERROR([Unknown value for --enable-pch])
6224 AC_SUBST(ENABLE_PCH)
6225 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6226 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6227 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6228 if test "$CCACHE_BIN" != "not found"; then
6229 AC_MSG_CHECKING([ccache version])
6230 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6231 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6232 AC_MSG_RESULT([$CCACHE_VERSION])
6233 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6234 if test "$CCACHE_NUMVER" -gt "030701"; then
6235 AC_MSG_RESULT([yes])
6237 AC_MSG_RESULT([no (not newer than 3.7.1)])
6243 PCH_INSTANTIATE_TEMPLATES=
6244 if test -n "$ENABLE_PCH"; then
6245 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6247 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6248 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6250 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6256 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6258 BUILDING_PCH_WITH_OBJ=
6259 if test -n "$ENABLE_PCH"; then
6260 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6262 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6263 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6265 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6271 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6276 if test "$COM" = MSC; then
6277 fpch_prefix="-Xclang "
6279 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6280 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6282 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6283 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6284 [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6286 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6287 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6288 [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6290 if test -n "$PCH_CODEGEN"; then
6296 AC_SUBST(PCH_CODEGEN)
6297 AC_SUBST(PCH_NO_CODEGEN)
6299 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6300 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6302 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6303 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6305 if test -n "$PCH_DEBUGINFO"; then
6311 AC_SUBST(PCH_DEBUGINFO)
6315 AC_MSG_CHECKING([the GNU Make version])
6316 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6317 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6318 if test "$_make_longver" -ge "040000"; then
6319 AC_MSG_RESULT([$GNUMAKE $_make_version])
6321 AC_MSG_ERROR([failed ($GNUMAKE version >= 4.0 needed)])
6324 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6326 if test "$_make_ver_check" = ""; then
6330 HAVE_LD_HASH_STYLE=FALSE
6331 WITH_LINKER_HASH_STYLE=
6332 AC_MSG_CHECKING([for --hash-style gcc linker support])
6333 if test "$GCC" = "yes"; then
6334 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6335 hash_styles="gnu sysv"
6336 elif test "$with_linker_hash_style" = "no"; then
6339 hash_styles="$with_linker_hash_style"
6342 for hash_style in $hash_styles; do
6343 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6344 hash_style_ldflags_save=$LDFLAGS
6345 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6347 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6354 HAVE_LD_HASH_STYLE=TRUE
6355 WITH_LINKER_HASH_STYLE=$hash_style
6357 [HAVE_LD_HASH_STYLE=FALSE],
6358 [HAVE_LD_HASH_STYLE=FALSE])
6359 LDFLAGS=$hash_style_ldflags_save
6362 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6363 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6367 LDFLAGS=$hash_style_ldflags_save
6371 AC_SUBST(HAVE_LD_HASH_STYLE)
6372 AC_SUBST(WITH_LINKER_HASH_STYLE)
6374 dnl ===================================================================
6375 dnl Check whether there's a Perl version available.
6376 dnl ===================================================================
6377 if test -z "$with_perl_home"; then
6378 AC_PATH_PROG(PERL, perl)
6380 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6381 _perl_path="$with_perl_home/bin/perl"
6382 if test -x "$_perl_path"; then
6385 AC_MSG_ERROR([$_perl_path not found])
6389 dnl ===================================================================
6390 dnl Testing for Perl version 5 or greater.
6391 dnl $] is the Perl version variable, it is returned as an integer
6392 dnl ===================================================================
6393 if test "$PERL"; then
6394 AC_MSG_CHECKING([the Perl version])
6395 ${PERL} -e "exit($]);"
6397 if test "$_perl_version" -lt 5; then
6398 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6400 AC_MSG_RESULT([Perl $_perl_version])
6402 AC_MSG_ERROR([Perl not found, install Perl 5])
6405 dnl ===================================================================
6406 dnl Testing for required Perl modules
6407 dnl ===================================================================
6409 AC_MSG_CHECKING([for required Perl modules])
6410 perl_use_string="use Cwd ; use Digest::MD5"
6411 if test "$_os" = "WINNT"; then
6412 if test -n "$PKGFORMAT"; then
6413 for i in $PKGFORMAT; do
6416 # for getting fonts versions to use in MSI
6417 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6423 if test "$with_system_hsqldb" = "yes"; then
6424 perl_use_string="$perl_use_string ; use Archive::Zip"
6426 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6427 # OpenSSL needs that to build
6428 perl_use_string="$perl_use_string ; use FindBin"
6430 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6431 AC_MSG_RESULT([all modules found])
6433 AC_MSG_RESULT([failed to find some modules])
6434 # Find out which modules are missing.
6435 for i in $perl_use_string; do
6436 if test "$i" != "use" -a "$i" != ";"; then
6437 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6438 missing_perl_modules="$missing_perl_modules $i"
6443 The missing Perl modules are: $missing_perl_modules
6444 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6447 dnl ===================================================================
6448 dnl Check for pkg-config
6449 dnl ===================================================================
6450 if test "$_os" != "WINNT"; then
6453 AC_SUBST(PKG_CONFIG)
6454 AC_SUBST(PKG_CONFIG_PATH)
6455 AC_SUBST(PKG_CONFIG_LIBDIR)
6457 if test "$_os" != "WINNT"; then
6459 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6460 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6461 # explicitly. Or put /path/to/compiler in PATH yourself.
6464 if test "$COM_IS_CLANG" = "TRUE"; then
6467 AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6468 AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6469 AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6470 AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6471 AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6472 AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6481 dnl ===================================================================
6482 dnl pkg-config checks on macOS
6483 dnl ===================================================================
6485 if test $_os = Darwin; then
6486 AC_MSG_CHECKING([for bogus pkg-config])
6487 if test -n "$PKG_CONFIG"; then
6488 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6489 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6491 if test "$enable_bogus_pkg_config" = "yes"; then
6492 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6494 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.])
6498 AC_MSG_RESULT([no, good])
6504 # Return value: $csctest
6508 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6509 if test -n "$regvalue"; then
6517 # Return value: $altest
6521 # We need this check to detect 4.6.1 or above.
6522 for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6523 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6524 PathFormat "$regvalue"
6525 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6531 reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6532 for x in $reglist; do
6533 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6534 PathFormat "$regvalue"
6535 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6546 for ver in 4.8.1 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6547 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6548 if test -n "$regvalue"; then
6555 find_winsdk_version()
6557 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6558 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6560 unset winsdktest winsdkbinsubdir winsdklibsubdir
6564 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6565 if test -n "$regvalue"; then
6566 winsdktest=$regvalue
6567 winsdklibsubdir=win8
6572 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6573 if test -n "$regvalue"; then
6574 winsdktest=$regvalue
6575 winsdklibsubdir=winv6.3
6580 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6581 if test -n "$regvalue"; then
6582 winsdktest=$regvalue
6583 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6584 if test -n "$regvalue"; then
6585 winsdkbinsubdir="$regvalue".0
6586 winsdklibsubdir=$winsdkbinsubdir
6587 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6588 local tmppath_unix=$(cygpath -u "$tmppath")
6589 # test exist the SDK path
6590 if test -d "$tmppath_unix"; then
6591 # when path is convertible to a short path then path is okay
6592 cygpath -d "$tmppath" >/dev/null 2>&1
6593 if test $? -ne 0; then
6594 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6597 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6608 # Return value: From find_winsdk_version
6612 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6613 find_winsdk_version $ver
6614 if test -n "$winsdktest"; then
6622 # Return value: $msmdir
6625 AC_MSG_CHECKING([for MSVC $version merge modules directory])
6626 local my_msm_file="Microsoft_VC${version}_CRT_x86.msm"
6629 echo "$as_me:$LINENO: searching for $my_msm_file" >&5
6634 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6635 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6636 echo "$as_me:$LINENO: looking for $my_msm_dir${my_msm_file}])" >&5
6637 if test -e "$my_msm_dir${my_msm_file}"; then
6644 if test -n "$msmdir"; then
6645 msmdir=`cygpath -m "$msmdir"`
6646 AC_MSG_RESULT([$msmdir])
6648 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6649 AC_MSG_FAILURE([not found])
6651 AC_MSG_WARN([not found (check config.log)])
6652 add_warning "MSM ${my_msm_file} not found"
6657 find_msvc_x64_dlls()
6659 # Return value: $msvcdllpath, $msvcdlls
6661 AC_MSG_CHECKING([for MSVC x64 DLL path])
6663 dnl Order crtver in increasing order. Then check the directories returned by
6664 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6665 dnl the result will be the highest CRT version found in the highest directory.
6667 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6670 for crtver in 141 142 143; do
6671 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6672 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6673 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6674 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6680 AC_MSG_RESULT([$msvcdllpath])
6681 AC_MSG_CHECKING([for MSVC x64 DLLs])
6682 msvcdlls="msvcp140.dll vcruntime140.dll"
6683 for dll in $msvcdlls; do
6684 if ! test -f "$msvcdllpath/$dll"; then
6685 AC_MSG_FAILURE([missing $dll])
6688 AC_MSG_RESULT([found all ($msvcdlls)])
6691 dnl =========================================
6692 dnl Check for the Windows SDK.
6693 dnl =========================================
6694 if test "$_os" = "WINNT"; then
6695 AC_MSG_CHECKING([for Windows SDK])
6696 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6698 WINDOWS_SDK_HOME=$winsdktest
6700 # normalize if found
6701 if test -n "$WINDOWS_SDK_HOME"; then
6702 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6703 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6706 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6709 if test -n "$WINDOWS_SDK_HOME"; then
6710 # Remove a possible trailing backslash
6711 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6713 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6714 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6715 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6716 have_windows_sdk_headers=yes
6717 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6718 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6719 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6720 have_windows_sdk_headers=yes
6721 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6722 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6723 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6724 have_windows_sdk_headers=yes
6726 have_windows_sdk_headers=no
6729 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6730 have_windows_sdk_libs=yes
6731 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6732 have_windows_sdk_libs=yes
6734 have_windows_sdk_libs=no
6737 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6738 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6739 the Windows SDK are installed.])
6743 if test -z "$WINDOWS_SDK_HOME"; then
6744 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6745 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6746 WINDOWS_SDK_VERSION=80
6747 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6748 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6749 WINDOWS_SDK_VERSION=81
6750 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6751 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6752 WINDOWS_SDK_VERSION=10
6753 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6755 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6757 PathFormat "$WINDOWS_SDK_HOME"
6758 WINDOWS_SDK_HOME="$formatted_path"
6759 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6760 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6761 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6762 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6763 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6764 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6765 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6769 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6770 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6771 dnl but not in v8.0), so allow this to be overridden with a
6772 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6773 dnl and configuration error if no WiLangId.vbs is found would arguably be
6774 dnl better, but I do not know under which conditions exactly it is needed by
6776 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6777 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6778 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6779 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6780 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6781 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6783 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6784 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6785 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6787 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6788 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6789 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6792 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6793 if test -n "$with_package_format" -a "$with_package_format" != no; then
6794 for i in "$with_package_format"; do
6795 if test "$i" = "msi"; then
6796 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6797 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6804 AC_SUBST(WINDOWS_SDK_HOME)
6805 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6806 AC_SUBST(WINDOWS_SDK_VERSION)
6807 AC_SUBST(WINDOWS_SDK_WILANGID)
6809 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6810 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6811 dnl dir, it also determines that dir's path w/o an arch segment if any,
6812 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6813 AC_MSG_CHECKING([for midl.exe])
6816 PathFormat "$winsdktest"
6817 winsdktest_unix="$formatted_path_unix"
6819 if test -n "$winsdkbinsubdir" \
6820 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6822 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6823 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6824 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6825 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6826 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6827 elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6828 MIDL_PATH=$winsdktest/Bin
6829 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6831 PathFormat "$MIDL_PATH"
6832 if test ! -f "$formatted_path_unix/midl.exe"; then
6833 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6835 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6838 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6839 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6841 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6842 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6843 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6844 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6845 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6846 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6847 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6848 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6849 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6850 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6851 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6852 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6854 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6858 AC_MSG_CHECKING([for csc.exe])
6860 PathFormat "$csctest"
6861 csctest_unix="$formatted_path_unix"
6862 if test -f "$csctest_unix/csc.exe"; then
6865 if test ! -f "$csctest_unix/csc.exe"; then
6866 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6868 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6871 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6874 AC_MSG_CHECKING([for al.exe])
6875 if test -n "$winsdkbinsubdir" \
6876 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6878 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6879 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6880 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6881 elif test -f "$winsdktest_unix/Bin/al.exe"; then
6882 AL_PATH="$winsdktest/Bin"
6885 if test -z "$AL_PATH"; then
6887 PathFormat "$altest"
6888 altest_unix="$formatted_path_unix"
6889 if test -f "$altest_unix/bin/al.exe"; then
6890 AL_PATH="$altest/bin"
6891 elif test -f "$altest_unix/al.exe"; then
6895 PathFormat "$AL_PATH"
6896 if test ! -f "$formatted_path_unix/al.exe"; then
6897 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6899 AC_MSG_RESULT([$AL_PATH/al.exe])
6902 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6904 dnl Check mscoree.lib / .NET Framework dir
6905 AC_MSG_CHECKING(.NET Framework)
6907 PathFormat "$frametest"
6908 frametest="$formatted_path_unix"
6909 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6910 DOTNET_FRAMEWORK_HOME="$frametest"
6912 if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6913 DOTNET_FRAMEWORK_HOME="$winsdktest"
6916 PathFormat "$DOTNET_FRAMEWORK_HOME"
6917 if test ! -f "$formatted_path_unix/lib/mscoree.lib" -a ! -f "$formatted_path_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib" -a ! -f "$formatted_path_unix/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6918 AC_MSG_ERROR([mscoree.lib not found])
6920 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6922 PathFormat "$MIDL_PATH"
6923 MIDL_PATH="$formatted_path"
6925 PathFormat "$AL_PATH"
6926 AL_PATH="$formatted_path"
6928 PathFormat "$DOTNET_FRAMEWORK_HOME"
6929 DOTNET_FRAMEWORK_HOME="$formatted_path"
6931 PathFormat "$CSC_PATH"
6932 CSC_PATH="$formatted_path"
6935 dnl ===================================================================
6936 dnl Testing for C++ compiler and version...
6937 dnl ===================================================================
6939 if test "$_os" != "WINNT"; then
6940 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6941 save_CXXFLAGS=$CXXFLAGS
6943 CXXFLAGS=$save_CXXFLAGS
6944 if test -z "$CXX_BASE"; then
6945 CXX_BASE=`first_arg_basename "$CXX"`
6949 dnl check for GNU C++ compiler version
6950 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6951 AC_MSG_CHECKING([the GNU C++ compiler version])
6953 _gpp_version=`$CXX -dumpversion`
6954 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6956 if test "$_gpp_majmin" -lt "700"; then
6957 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6959 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6962 dnl see https://issuetracker.google.com/issues/36962819
6966 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6967 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6968 #include <bits/c++config.h>]],[[
6969 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6970 && !defined(_GLIBCXX__PTHREADS) \
6971 && !defined(_GLIBCXX_HAS_GTHREADS)
6974 ]])],[AC_MSG_RESULT([yes])
6975 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6977 if test $glibcxx_threads = yes; then
6978 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6981 AC_SUBST(BOOST_CXXFLAGS)
6984 # prefx CXX with ccache if needed
6986 if test "$CCACHE" != ""; then
6987 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6989 save_CXXFLAGS=$CXXFLAGS
6990 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6991 # msvc does not fail on unknown options, check stdout
6992 if test "$COM" = MSC; then
6993 CXXFLAGS="$CXXFLAGS -nologo"
6995 save_ac_cxx_werror_flag=$ac_cxx_werror_flag
6996 ac_cxx_werror_flag=yes
6997 dnl an empty program will do, we're checking the compiler flags
6998 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6999 [use_ccache=yes], [use_ccache=no])
7000 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7001 AC_MSG_RESULT([yes])
7004 CXX_BASE="ccache $CXX_BASE"
7007 CXXFLAGS=$save_CXXFLAGS
7008 ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7012 dnl ===================================================================
7013 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7014 dnl ===================================================================
7016 if test "$_os" != "WINNT"; then
7019 dnl Check whether there's a C pre-processor.
7024 dnl ===================================================================
7025 dnl Find integral type sizes and alignments
7026 dnl ===================================================================
7028 if test "$_os" != "WINNT"; then
7030 AC_CHECK_SIZEOF(long)
7031 AC_CHECK_SIZEOF(short)
7032 AC_CHECK_SIZEOF(int)
7033 AC_CHECK_SIZEOF(long long)
7034 AC_CHECK_SIZEOF(double)
7035 AC_CHECK_SIZEOF(void*)
7036 AC_CHECK_SIZEOF(size_t)
7038 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7039 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7040 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7041 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7042 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7043 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7045 dnl Allow build without AC_CHECK_ALIGNOF, grrr
7046 m4_pattern_allow([AC_CHECK_ALIGNOF])
7047 m4_ifdef([AC_CHECK_ALIGNOF],
7049 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7050 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7051 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7052 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7055 case "$_os-$host_cpu" in
7057 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7058 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7059 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7060 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7063 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7064 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7065 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7066 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7069 if test -z "$ac_cv_alignof_short" -o \
7070 -z "$ac_cv_alignof_int" -o \
7071 -z "$ac_cv_alignof_long" -o \
7072 -z "$ac_cv_alignof_double"; then
7073 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.])
7079 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7080 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7081 if test $ac_cv_sizeof_long -eq 8; then
7082 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7083 elif test $ac_cv_sizeof_double -eq 8; then
7084 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7086 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7089 dnl Check for large file support
7091 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7092 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7094 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7095 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7099 SAL_TYPES_SIZEOFSHORT=2
7100 SAL_TYPES_SIZEOFINT=4
7101 SAL_TYPES_SIZEOFLONG=4
7102 SAL_TYPES_SIZEOFLONGLONG=8
7103 if test $WIN_HOST_BITS -eq 32; then
7104 SAL_TYPES_SIZEOFPOINTER=4
7107 SAL_TYPES_SIZEOFPOINTER=8
7110 SAL_TYPES_ALIGNMENT2=2
7111 SAL_TYPES_ALIGNMENT4=4
7112 SAL_TYPES_ALIGNMENT8=8
7115 AC_SUBST(LFS_CFLAGS)
7116 AC_SUBST(SIZEOF_SIZE_T)
7118 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7119 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7120 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7121 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7122 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7123 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7124 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7125 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7127 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7128 AC_MSG_CHECKING([whether jumbo sheets are supported])
7129 if test "$_os" != "WINNT"; then
7130 if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7131 AC_MSG_RESULT([yes])
7132 ENABLE_JUMBO_SHEETS=TRUE
7133 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7138 if test $WIN_HOST_BITS -gt 32; then
7139 # 64bit windows is special-cased for tools::Long because long is 32bit
7140 AC_MSG_RESULT([yes])
7141 ENABLE_JUMBO_SHEETS=TRUE
7142 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7147 AC_SUBST(ENABLE_JUMBO_SHEETS)
7149 dnl ===================================================================
7150 dnl Check whether to enable runtime optimizations
7151 dnl ===================================================================
7152 ENABLE_RUNTIME_OPTIMIZATIONS=
7153 AC_MSG_CHECKING([whether to enable runtime optimizations])
7154 if test -z "$enable_runtime_optimizations"; then
7158 enable_runtime_optimizations=no
7164 if test "$enable_runtime_optimizations" != no; then
7165 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7166 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7167 AC_MSG_RESULT([yes])
7171 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7173 dnl ===================================================================
7174 dnl Check if valgrind headers are available
7175 dnl ===================================================================
7177 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7178 prev_cppflags=$CPPFLAGS
7179 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7180 # or where does it come from?
7181 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7182 AC_CHECK_HEADER([valgrind/valgrind.h],
7183 [ENABLE_VALGRIND=TRUE])
7184 CPPFLAGS=$prev_cppflags
7186 AC_SUBST([ENABLE_VALGRIND])
7187 if test -z "$ENABLE_VALGRIND"; then
7188 if test "$with_valgrind" = yes; then
7189 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7193 AC_SUBST([VALGRIND_CFLAGS])
7196 dnl ===================================================================
7197 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7198 dnl ===================================================================
7200 # We need at least the sys/sdt.h include header.
7201 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7202 if test "$SDT_H_FOUND" = "TRUE"; then
7203 # Found sys/sdt.h header, now make sure the c++ compiler works.
7204 # Old g++ versions had problems with probes in constructors/destructors.
7205 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7207 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7208 #include <sys/sdt.h>
7216 ProbeClass(int& v, const char *n) : ref(v), name(n)
7218 DTRACE_PROBE2(_test_, cons, name, ref);
7221 void method(int min)
7223 DTRACE_PROBE3(_test_, meth, name, ref, min);
7229 DTRACE_PROBE2(_test_, dest, name, ref);
7234 DTRACE_PROBE1(_test_, call, i);
7235 ProbeClass inst = ProbeClass(i, "call");
7237 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7238 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7241 AC_CONFIG_HEADERS([config_host/config_probes.h])
7243 dnl ===================================================================
7245 dnl ===================================================================
7246 HAVE_GCC_STACK_CLASH_PROTECTION=
7247 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7248 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7250 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7252 [AC_LANG_PROGRAM(, [[return 0;]])],
7253 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7254 [AC_MSG_RESULT([no])])
7257 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7259 CFLAGS="$CFLAGS -Werror -mno-avx"
7260 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7262 if test "$HAVE_GCC_AVX" = "TRUE"; then
7263 AC_MSG_RESULT([yes])
7268 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7269 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7271 if (__sync_add_and_fetch(&v, 1) != 1 ||
7272 __sync_sub_and_fetch(&v, 1) != 0)
7274 __sync_synchronize();
7275 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7279 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7280 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7281 AC_MSG_RESULT([yes])
7282 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7287 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7289 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7292 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7294 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7295 AC_MSG_RESULT([yes])
7296 ], [AC_MSG_RESULT([no])])
7299 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7301 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7304 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7306 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7307 AC_MSG_RESULT([yes])
7308 ], [AC_MSG_RESULT([no])])
7311 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7313 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7315 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7317 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7318 AC_MSG_RESULT([yes])
7319 ], [AC_MSG_RESULT([no])])
7322 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7324 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7327 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7329 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7330 AC_MSG_RESULT([yes])
7331 ], [AC_MSG_RESULT([no])])
7334 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7336 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7339 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7341 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7342 AC_MSG_RESULT([yes])
7343 ], [AC_MSG_RESULT([no])])
7346 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7348 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7350 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7352 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7353 AC_MSG_RESULT([yes])
7354 ], [AC_MSG_RESULT([no])])
7357 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7359 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7361 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7363 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7364 AC_MSG_RESULT([yes])
7365 ], [AC_MSG_RESULT([no])])
7368 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7370 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7372 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7374 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7375 AC_MSG_RESULT([yes])
7376 ], [AC_MSG_RESULT([no])])
7379 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7381 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7384 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7386 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7387 AC_MSG_RESULT([yes])
7388 ], [AC_MSG_RESULT([no])])
7391 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7393 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7396 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7398 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7399 AC_MSG_RESULT([yes])
7400 ], [AC_MSG_RESULT([no])])
7404 AC_SUBST(HAVE_GCC_AVX)
7405 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7406 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7408 dnl ===================================================================
7409 dnl Identify the C++ library
7410 dnl ===================================================================
7412 AC_MSG_CHECKING([what the C++ library is])
7416 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7422 [CPP_LIBRARY=GLIBCXX
7423 cpp_library_name="GNU libstdc++"
7426 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7428 #ifndef _LIBCPP_VERSION
7433 cpp_library_name="LLVM libc++"
7434 AC_DEFINE([HAVE_LIBCPP])
7437 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7444 cpp_library_name="Microsoft"
7446 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7447 AC_MSG_RESULT([$cpp_library_name])
7449 AC_SUBST([HAVE_LIBSTDCPP])
7450 AC_SUBST([HAVE_LIBCPP])
7452 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7454 # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7455 # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7456 # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7457 # although there will be backwards compatibility).
7458 # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7459 # and there would be undefined references to debug functions.
7460 # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7461 # So check if debug mode can be used and disable or downgrade it to assertions
7463 AC_MSG_CHECKING([if libc++ has a usable debug mode])
7466 AC_LINK_IFELSE([AC_LANG_SOURCE([[
7467 #define _LIBCPP_DEBUG 0 // only assertions
7475 ]])], [libcpp_debug_links=1])
7476 if test -n "$libcpp_debug_links"; then
7477 # we can use at least assertions, check if debug mode works
7478 AC_RUN_IFELSE([AC_LANG_SOURCE([[
7479 #define _LIBCPP_DEBUG 1 // debug mode
7482 int foo(const std::vector<int>& v) { return *v.begin(); }
7487 std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7488 return (foo(v) + s.size()) != 0 ? 0 : 1;
7492 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7494 [AC_MSG_RESULT(no, using only assertions)
7495 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7503 AC_SUBST([LIBCPP_DEBUG])
7505 dnl ===================================================================
7507 dnl ===================================================================
7508 AC_PATH_PROG(GPERF, gperf)
7509 if test -z "$GPERF"; then
7510 AC_MSG_ERROR([gperf not found but needed. Install it.])
7512 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7513 GPERF=`cygpath -m $GPERF`
7515 AC_MSG_CHECKING([whether gperf is new enough])
7516 my_gperf_ver1=$($GPERF --version | head -n 1)
7517 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7518 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7519 if test "$my_gperf_ver3" -ge 301; then
7520 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7522 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7526 dnl ===================================================================
7527 dnl Check for system libcmis
7528 dnl ===================================================================
7529 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2],enabled)
7531 dnl ===================================================================
7533 dnl ===================================================================
7535 if test -z "${CXXFLAGS_CXX11+x}"; then
7536 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7537 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7538 if test "$with_latest_c__" = yes; then
7539 CXXFLAGS_CXX11=-std:c++latest
7541 CXXFLAGS_CXX11=-std:c++17
7543 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7544 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7545 my_flags='-std=c++17 -std=c++1z'
7546 if test "$with_latest_c__" = yes; then
7547 my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7549 for flag in $my_flags; do
7550 if test "$COM" = MSC; then
7551 flag="-Xclang $flag"
7553 save_CXXFLAGS=$CXXFLAGS
7554 CXXFLAGS="$CXXFLAGS $flag -Werror"
7555 if test "$SYSTEM_LIBCMIS" = TRUE; then
7556 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7559 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7560 #include <algorithm>
7561 #include <functional>
7564 #if defined SYSTEM_LIBCMIS
7565 // See ucb/source/ucp/cmis/auth_provider.hxx:
7566 #if !defined __clang__
7567 #pragma GCC diagnostic push
7568 #pragma GCC diagnostic ignored "-Wdeprecated"
7569 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7571 #include <libcmis/libcmis.hxx>
7572 #if !defined __clang__
7573 #pragma GCC diagnostic pop
7577 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7578 std::sort(v.begin(), v.end(), fn);
7580 ]])],[CXXFLAGS_CXX11=$flag])
7582 CXXFLAGS=$save_CXXFLAGS
7583 if test -n "$CXXFLAGS_CXX11"; then
7588 if test -n "$CXXFLAGS_CXX11"; then
7589 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7594 AC_SUBST(CXXFLAGS_CXX11)
7596 if test "$GCC" = "yes"; then
7597 save_CXXFLAGS=$CXXFLAGS
7598 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7600 CXXFLAGS=$save_CXXFLAGS
7601 AC_SUBST(ATOMIC_LIB)
7604 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7605 save_CXXFLAGS=$CXXFLAGS
7606 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7609 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7612 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7628 a thinga[]={{0,0}, {1,1}};
7629 b thingb[]={{0,0}, {1,1}};
7630 size_t i = sizeof(sal_n_array_size(thinga));
7631 size_t j = sizeof(sal_n_array_size(thingb));
7632 return !(i != 0 && j != 0);
7634 ], [ AC_MSG_RESULT(yes) ],
7635 [ AC_MSG_ERROR(no)])
7637 CXXFLAGS=$save_CXXFLAGS
7639 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7640 if test "$GCC" = yes; then
7641 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7643 save_CXXFLAGS=$CXXFLAGS
7644 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7645 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7646 CXXFLAGS=$save_CXXFLAGS
7648 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7649 AC_MSG_RESULT([yes])
7654 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7656 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7658 save_CXXFLAGS=$CXXFLAGS
7659 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7660 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7661 #include <algorithm>
7662 #include <initializer_list>
7664 template<typename T> class S {
7668 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7670 constinit S<int> s{3, 2, 1};
7672 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7673 AC_MSG_RESULT([yes])
7674 ], [AC_MSG_RESULT([no])])
7675 CXXFLAGS=$save_CXXFLAGS
7678 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7680 save_CXXFLAGS=$CXXFLAGS
7681 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7682 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7684 #include <type_traits>
7685 // Don't check size_type directly, as it was called index_type before P1872R0:
7686 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7688 AC_DEFINE([HAVE_CPP_SPAN],[1])
7689 AC_MSG_RESULT([yes])
7690 ], [AC_MSG_RESULT([no])])
7691 CXXFLAGS=$save_CXXFLAGS
7694 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7696 save_CXXFLAGS=$CXXFLAGS
7697 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7698 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7699 struct S1 { S1(S1 &&); };
7701 S1 f(S2 s) { return s; }
7703 AC_DEFINE([HAVE_P1155R3],[1])
7704 AC_MSG_RESULT([yes])
7705 ], [AC_MSG_RESULT([no])])
7706 CXXFLAGS=$save_CXXFLAGS
7709 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7710 HAVE_CXX20_ATOMIC_REF=
7712 save_CXXFLAGS=$CXXFLAGS
7713 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7714 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7717 std::atomic_ref<int> y(x);
7719 HAVE_CXX20_ATOMIC_REF=TRUE
7720 AC_MSG_RESULT([yes])
7721 ], [AC_MSG_RESULT([no])])
7722 CXXFLAGS=$save_CXXFLAGS
7724 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7726 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7727 dnl which is included in -Wextra anyway):
7728 HAVE_WDEPRECATED_COPY_DTOR=
7729 if test "$GCC" = yes; then
7730 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7732 save_CXXFLAGS=$CXXFLAGS
7733 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7734 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7735 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7736 AC_MSG_RESULT([yes])
7737 ], [AC_MSG_RESULT([no])])
7738 CXXFLAGS=$save_CXXFLAGS
7741 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7743 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7744 dnl uninitialized warning for code like
7747 dnl boost::optional<OString> * g(bool b) {
7748 dnl boost::optional<OString> o;
7750 dnl return new boost::optional<OString>(o);
7753 dnl (as is e.g. present, in a slightly more elaborate form, in
7754 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7755 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7756 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7757 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7758 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7760 save_CXXFLAGS=$CXXFLAGS
7761 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7762 if test "$ENABLE_OPTIMIZED" = TRUE; then
7763 CXXFLAGS="$CXXFLAGS -O2"
7765 CXXFLAGS="$CXXFLAGS -O0"
7767 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7776 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7777 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7783 char stg[sizeof (S1)];
7791 ]])], [AC_MSG_RESULT([no])], [
7792 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7793 AC_MSG_RESULT([yes])
7795 CXXFLAGS=$save_CXXFLAGS
7798 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7800 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7801 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7802 dnl hits us e.g. with GCC 10 and --enable-optimized at
7804 dnl In file included from include/rtl/string.hxx:49,
7805 dnl from include/rtl/ustring.hxx:43,
7806 dnl from include/osl/file.hxx:35,
7807 dnl from include/codemaker/global.hxx:28,
7808 dnl from include/codemaker/options.hxx:23,
7809 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7810 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7811 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,
7812 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,
7813 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,
7814 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7815 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7816 dnl 78 | memcpy( buffer, data, length );
7817 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7818 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7819 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7820 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7822 save_CXXFLAGS=$CXXFLAGS
7823 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7824 if test "$ENABLE_OPTIMIZED" = TRUE; then
7825 CXXFLAGS="$CXXFLAGS -O2"
7827 CXXFLAGS="$CXXFLAGS -O0"
7829 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7830 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7831 void fill(char const * begin, char const * end, char c);
7837 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7838 __builtin_strncpy(c.username, "root", sizeof(c.username));
7840 ]])], [AC_MSG_RESULT([no])], [
7841 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7842 AC_MSG_RESULT([yes])
7844 CXXFLAGS=$save_CXXFLAGS
7847 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7849 HAVE_DLLEXPORTINLINES=
7850 if test "$_os" = "WINNT"; then
7851 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7853 save_CXXFLAGS=$CXXFLAGS
7854 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7855 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7856 HAVE_DLLEXPORTINLINES=TRUE
7857 AC_MSG_RESULT([yes])
7858 ], [AC_MSG_RESULT([no])])
7859 CXXFLAGS=$save_CXXFLAGS
7862 AC_SUBST([HAVE_DLLEXPORTINLINES])
7864 dnl ===================================================================
7865 dnl CPU Intrinsics support - SSE, AVX
7866 dnl ===================================================================
7868 CXXFLAGS_INTRINSICS_SSE2=
7869 CXXFLAGS_INTRINSICS_SSSE3=
7870 CXXFLAGS_INTRINSICS_SSE41=
7871 CXXFLAGS_INTRINSICS_SSE42=
7872 CXXFLAGS_INTRINSICS_AVX=
7873 CXXFLAGS_INTRINSICS_AVX2=
7874 CXXFLAGS_INTRINSICS_AVX512=
7875 CXXFLAGS_INTRINSICS_AVX512F=
7876 CXXFLAGS_INTRINSICS_F16C=
7877 CXXFLAGS_INTRINSICS_FMA=
7879 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7880 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7887 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7888 flag_avx512f=-mavx512f
7892 # With MSVC using -arch is in fact not necessary for being able
7893 # to use CPU intrinsics, code using AVX512F intrinsics will compile
7894 # even if compiled with -arch:AVX, the -arch option really only affects
7895 # instructions generated for C/C++ code.
7896 # So use the matching same (or lower) -arch options, but only in order
7897 # to generate the best matching instructions for the C++ code surrounding
7899 # SSE2 is the default for x86/x64, so no need to specify the option.
7901 # No specific options for these, use the next lower.
7902 flag_ssse3="$flag_sse2"
7903 flag_sse41="$flag_sse2"
7904 flag_sse42="$flag_sse2"
7906 flag_avx2=-arch:AVX2
7907 flag_avx512=-arch:AVX512
7908 # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7909 flag_avx512f=-arch:AVX2
7910 # No MSVC options for these.
7911 flag_f16c="$flag_sse2"
7912 flag_fma="$flag_sse2"
7915 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7917 save_CXXFLAGS=$CXXFLAGS
7918 CXXFLAGS="$CXXFLAGS $flag_sse2"
7919 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7920 #include <emmintrin.h>
7922 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7923 c = _mm_xor_si128 (a, b);
7927 [can_compile_sse2=yes],
7928 [can_compile_sse2=no])
7930 CXXFLAGS=$save_CXXFLAGS
7931 AC_MSG_RESULT([${can_compile_sse2}])
7932 if test "${can_compile_sse2}" = "yes" ; then
7933 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7936 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7938 save_CXXFLAGS=$CXXFLAGS
7939 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7940 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7941 #include <tmmintrin.h>
7943 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7944 c = _mm_maddubs_epi16 (a, b);
7948 [can_compile_ssse3=yes],
7949 [can_compile_ssse3=no])
7951 CXXFLAGS=$save_CXXFLAGS
7952 AC_MSG_RESULT([${can_compile_ssse3}])
7953 if test "${can_compile_ssse3}" = "yes" ; then
7954 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7957 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7959 save_CXXFLAGS=$CXXFLAGS
7960 CXXFLAGS="$CXXFLAGS $flag_sse41"
7961 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7962 #include <smmintrin.h>
7964 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7965 c = _mm_cmpeq_epi64 (a, b);
7969 [can_compile_sse41=yes],
7970 [can_compile_sse41=no])
7972 CXXFLAGS=$save_CXXFLAGS
7973 AC_MSG_RESULT([${can_compile_sse41}])
7974 if test "${can_compile_sse41}" = "yes" ; then
7975 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
7978 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
7980 save_CXXFLAGS=$CXXFLAGS
7981 CXXFLAGS="$CXXFLAGS $flag_sse42"
7982 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7983 #include <nmmintrin.h>
7985 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7986 c = _mm_cmpgt_epi64 (a, b);
7990 [can_compile_sse42=yes],
7991 [can_compile_sse42=no])
7993 CXXFLAGS=$save_CXXFLAGS
7994 AC_MSG_RESULT([${can_compile_sse42}])
7995 if test "${can_compile_sse42}" = "yes" ; then
7996 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
7999 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8001 save_CXXFLAGS=$CXXFLAGS
8002 CXXFLAGS="$CXXFLAGS $flag_avx"
8003 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8004 #include <immintrin.h>
8006 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8007 c = _mm256_xor_ps(a, b);
8011 [can_compile_avx=yes],
8012 [can_compile_avx=no])
8014 CXXFLAGS=$save_CXXFLAGS
8015 AC_MSG_RESULT([${can_compile_avx}])
8016 if test "${can_compile_avx}" = "yes" ; then
8017 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8020 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8022 save_CXXFLAGS=$CXXFLAGS
8023 CXXFLAGS="$CXXFLAGS $flag_avx2"
8024 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8025 #include <immintrin.h>
8027 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8028 c = _mm256_maddubs_epi16(a, b);
8032 [can_compile_avx2=yes],
8033 [can_compile_avx2=no])
8035 CXXFLAGS=$save_CXXFLAGS
8036 AC_MSG_RESULT([${can_compile_avx2}])
8037 if test "${can_compile_avx2}" = "yes" ; then
8038 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8041 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8043 save_CXXFLAGS=$CXXFLAGS
8044 CXXFLAGS="$CXXFLAGS $flag_avx512"
8045 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8046 #include <immintrin.h>
8048 __m512i a = _mm512_loadu_si512(0);
8049 __m512d v1 = _mm512_load_pd(0);
8050 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8051 __m512d v2 = _mm512_abs_pd(v1);
8055 [can_compile_avx512=yes],
8056 [can_compile_avx512=no])
8058 CXXFLAGS=$save_CXXFLAGS
8059 AC_MSG_RESULT([${can_compile_avx512}])
8060 if test "${can_compile_avx512}" = "yes" ; then
8061 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8062 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8065 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8067 save_CXXFLAGS=$CXXFLAGS
8068 CXXFLAGS="$CXXFLAGS $flag_f16c"
8069 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8070 #include <immintrin.h>
8072 __m128i a = _mm_set1_epi32 (0);
8074 c = _mm_cvtph_ps(a);
8078 [can_compile_f16c=yes],
8079 [can_compile_f16c=no])
8081 CXXFLAGS=$save_CXXFLAGS
8082 AC_MSG_RESULT([${can_compile_f16c}])
8083 if test "${can_compile_f16c}" = "yes" ; then
8084 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8087 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8089 save_CXXFLAGS=$CXXFLAGS
8090 CXXFLAGS="$CXXFLAGS $flag_fma"
8091 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8092 #include <immintrin.h>
8094 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8095 d = _mm256_fmadd_ps(a, b, c);
8099 [can_compile_fma=yes],
8100 [can_compile_fma=no])
8102 CXXFLAGS=$save_CXXFLAGS
8103 AC_MSG_RESULT([${can_compile_fma}])
8104 if test "${can_compile_fma}" = "yes" ; then
8105 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8108 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8109 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8110 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8111 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8112 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8113 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8114 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8115 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8116 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8117 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8119 dnl ===================================================================
8120 dnl system stl sanity tests
8121 dnl ===================================================================
8122 if test "$_os" != "WINNT"; then
8126 save_CPPFLAGS="$CPPFLAGS"
8127 if test -n "$MACOSX_SDK_PATH"; then
8128 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8131 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8133 if test "$CPP_LIBRARY" = GLIBCXX; then
8134 dnl gcc#19664, gcc#22482, rhbz#162935
8135 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8136 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8137 AC_MSG_RESULT([$stlvisok])
8138 if test "$stlvisok" = "no"; then
8139 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8143 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8144 # when we don't make any dynamic libraries?
8145 if test "$DISABLE_DYNLOADING" = ""; then
8146 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8147 cat > conftestlib1.cc <<_ACEOF
8148 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8149 struct S2: S1<int> { virtual ~S2(); };
8152 cat > conftestlib2.cc <<_ACEOF
8153 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8154 struct S2: S1<int> { virtual ~S2(); };
8155 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8157 gccvisinlineshiddenok=yes
8158 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8159 gccvisinlineshiddenok=no
8161 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8162 dnl known to not work with -z defs (unsetting which makes the test
8164 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8165 if test "$COM_IS_CLANG" = TRUE; then
8166 for i in $CXX $CXXFLAGS; do
8169 my_linkflagsnoundefs=
8175 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8176 gccvisinlineshiddenok=no
8181 AC_MSG_RESULT([$gccvisinlineshiddenok])
8182 if test "$gccvisinlineshiddenok" = "no"; then
8183 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8187 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8188 cat >visibility.cxx <<_ACEOF
8189 #pragma GCC visibility push(hidden)
8190 struct __attribute__ ((visibility ("default"))) TestStruct {
8193 __attribute__ ((visibility ("default"))) void TestFunc() {
8197 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8202 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8205 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8217 rm -f visibility.s visibility.cxx
8219 AC_MSG_RESULT([$gccvisbroken])
8220 if test "$gccvisbroken" = "yes"; then
8221 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8224 CPPFLAGS="$save_CPPFLAGS"
8226 AC_MSG_CHECKING([if CET endbranch is recognized])
8227 cat > endbr.s <<_ACEOF
8230 HAVE_ASM_END_BRANCH_INS_SUPPORT=
8231 if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8232 AC_MSG_RESULT([yes])
8233 HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8237 rm -f endbr.s endbr.o
8238 AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8243 dnl ===================================================================
8245 dnl ===================================================================
8247 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8248 if test "$GCC" = "yes"; then
8249 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8251 save_CXXFLAGS=$CXXFLAGS
8252 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8253 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8254 CXXFLAGS=$save_CXXFLAGS
8256 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8257 AC_MSG_RESULT([yes])
8262 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8264 dnl ===================================================================
8265 dnl Compiler plugins
8266 dnl ===================================================================
8269 # currently only Clang
8271 if test "$COM_IS_CLANG" != "TRUE"; then
8272 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8273 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8274 enable_compiler_plugins=no
8278 COMPILER_PLUGINS_COM_IS_CLANG=
8279 if test "$COM_IS_CLANG" = "TRUE"; then
8280 if test -n "$enable_compiler_plugins"; then
8281 compiler_plugins="$enable_compiler_plugins"
8282 elif test -n "$ENABLE_DBGUTIL"; then
8283 compiler_plugins=test
8287 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8288 if test "$CLANGVER" -lt 120001; then
8289 if test "$compiler_plugins" = yes; then
8291 [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8297 if test "$compiler_plugins" != "no"; then
8298 dnl The prefix where Clang resides, override to where Clang resides if
8299 dnl using a source build:
8300 if test -z "$CLANGDIR"; then
8301 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8303 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8304 if test -z "$COMPILER_PLUGINS_CXX"; then
8305 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8307 clangbindir=$CLANGDIR/bin
8308 if test "$build_os" = "cygwin"; then
8309 clangbindir=$(cygpath -u "$clangbindir")
8311 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8312 if test -n "$LLVM_CONFIG"; then
8313 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8314 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8315 if test -z "$CLANGLIBDIR"; then
8316 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8318 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8319 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8320 if $LLVM_CONFIG --src-root >/dev/null 2>&1; then
8321 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8322 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8323 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8326 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8327 clangobjdir=$($LLVM_CONFIG --obj-root)
8328 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8329 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8332 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8336 save_CPPFLAGS=$CPPFLAGS
8337 save_CXXFLAGS=$CXXFLAGS
8338 save_LDFLAGS=$LDFLAGS
8340 CXX=$COMPILER_PLUGINS_CXX
8341 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8342 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8343 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8344 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8345 [COMPILER_PLUGINS=TRUE],
8347 if test "$compiler_plugins" = "yes"; then
8348 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8350 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8351 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8354 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8355 dnl comment in compilerplugins/Makefile-clang.mk:
8356 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8358 AC_MSG_CHECKING([for clang libraries to use])
8359 if test -z "$CLANGTOOLLIBS"; then
8360 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8362 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8363 [[ clang::FullSourceLoc().dump(); ]])
8364 ],[CLANGTOOLLIBS="$LIBS"],[])
8366 dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8367 dnl list of individual -lclang* (but note that that list can become outdated over time,
8368 dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8369 dnl needs to include -lclangSupport now"):
8370 if test -z "$CLANGTOOLLIBS"; then
8371 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8372 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8374 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8375 [[ clang::FullSourceLoc().dump(); ]])
8376 ],[CLANGTOOLLIBS="$LIBS"],[])
8378 AC_MSG_RESULT([$CLANGTOOLLIBS])
8379 if test -z "$CLANGTOOLLIBS"; then
8380 if test "$compiler_plugins" = "yes"; then
8381 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8383 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8384 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8388 if test -n "$COMPILER_PLUGINS"; then
8389 if test -z "$CLANGSYSINCLUDE"; then
8390 if test -n "$LLVM_CONFIG"; then
8391 # Path to the clang system headers (no idea if there's a better way to get it).
8392 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8399 CPPFLAGS=$save_CPPFLAGS
8400 CXXFLAGS=$save_CXXFLAGS
8401 LDFLAGS=$save_LDFLAGS
8405 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8406 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8412 [AC_MSG_RESULT([yes])
8413 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8414 [AC_MSG_RESULT([no])])
8415 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8418 if test "$enable_compiler_plugins" = "yes"; then
8419 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8422 COMPILER_PLUGINS_ANALYZER_PCH=
8423 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8424 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8426 AC_SUBST(COMPILER_PLUGINS)
8427 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8428 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8429 AC_SUBST(COMPILER_PLUGINS_CXX)
8430 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8431 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8432 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8433 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8435 AC_SUBST(CLANGLIBDIR)
8436 AC_SUBST(CLANGTOOLLIBS)
8437 AC_SUBST(CLANGSYSINCLUDE)
8439 # Plugin to help linker.
8440 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8441 # This makes --enable-lto build with clang work.
8444 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8445 AC_SUBST(HAVE_POSIX_FALLOCATE)
8447 JITC_PROCESSOR_TYPE=""
8448 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8449 # IBMs JDK needs this...
8450 JITC_PROCESSOR_TYPE=6
8451 export JITC_PROCESSOR_TYPE
8453 AC_SUBST([JITC_PROCESSOR_TYPE])
8455 # Misc Windows Stuff
8456 AC_ARG_WITH(ucrt-dir,
8457 AS_HELP_STRING([--with-ucrt-dir],
8458 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8459 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8460 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8461 Windows6.1-KB2999226-x64.msu
8462 Windows6.1-KB2999226-x86.msu
8463 Windows8.1-KB2999226-x64.msu
8464 Windows8.1-KB2999226-x86.msu
8465 Windows8-RT-KB2999226-x64.msu
8466 Windows8-RT-KB2999226-x86.msu
8467 A zip archive including those files is available from Microsoft site:
8468 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8471 UCRT_REDISTDIR="$with_ucrt_dir"
8472 if test $_os = "WINNT"; then
8474 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8475 MSVC_DLLS="$msvcdlls"
8476 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8478 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8480 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8483 for i in $PKGFORMAT; do
8484 if test "$i" = msi; then
8485 find_msms "$with_redist"
8486 if test -n "$msmdir"; then
8487 MSM_PATH=`win_short_path_for_make "$msmdir"`
8488 SCPDEFS="$SCPDEFS -DWITH_VC_REDIST=$with_redist"
8494 if test "$UCRT_REDISTDIR" = "no"; then
8495 dnl explicitly disabled
8498 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8499 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8500 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8501 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8502 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8503 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8505 if test -n "$PKGFORMAT"; then
8506 for i in $PKGFORMAT; do
8509 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8510 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8519 AC_SUBST(UCRT_REDISTDIR)
8520 AC_SUBST(MSVC_DLL_PATH)
8525 dnl ===================================================================
8527 dnl ===================================================================
8528 if test "$ENABLE_JAVA" != ""; then
8530 # Windows-specific tests
8531 if test "$build_os" = "cygwin"; then
8532 if test -z "$with_jdk_home"; then
8533 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8534 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8535 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8536 if test -n "$regvalue"; then
8538 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8539 with_jdk_home=$regvalue
8541 howfound="found automatically"
8543 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8544 howfound="you passed"
8547 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8548 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])
8552 # 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.
8553 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8554 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8555 with_jdk_home=`/usr/libexec/java_home`
8558 JAVA_HOME=; export JAVA_HOME
8559 if test -z "$with_jdk_home"; then
8560 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8562 _java_path="$with_jdk_home/bin/$with_java"
8563 dnl Check if there is a Java interpreter at all.
8564 if test -x "$_java_path"; then
8565 JAVAINTERPRETER=$_java_path
8567 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8571 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8572 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8573 dnl loaded by java to run JunitTests:
8574 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8575 shortjdkhome=`cygpath -d "$with_jdk_home"`
8576 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
8577 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8578 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8579 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
8580 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8581 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8584 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8585 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8587 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8588 elif test "$cross_compiling" != "yes"; then
8590 AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64|RISCV64)
8591 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8592 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8593 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8596 *) # assumption: everything else 32-bit
8597 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8598 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8599 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8606 dnl ===================================================================
8608 dnl ===================================================================
8610 # Whether all the complexity here actually is needed any more or not, no idea.
8612 JDK_SECURITYMANAGER_DISALLOWED=
8613 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8615 AC_MSG_CHECKING([the installed JDK])
8616 if test -n "$JAVAINTERPRETER"; then
8617 dnl java -version sends output to stderr!
8618 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8619 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8620 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8621 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8622 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8623 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8624 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8625 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8629 dnl Sun JDK specific tests
8630 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8631 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8633 if test "$_jdk_ver" -lt 10900; then
8634 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8636 if test "$_jdk_ver" -gt 10900; then
8637 JAVA_CLASSPATH_NOT_SET=TRUE
8639 dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8640 dnl completely removed in some Java version > 18 (see
8641 dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8642 if test "$_jdk_ver" -ge 180000; then
8643 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8646 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8647 if test "$_os" = "WINNT"; then
8648 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8650 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8652 # set to limit VM usage for JunitTests
8654 # set to limit VM usage for javac
8655 JAVACFLAGS=-J-Xmx128M
8658 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8661 if test -z "$ENABLE_JAVA"; then
8665 elif test "$cross_compiling" = "yes"; then
8666 # Just assume compatibility of build and host JDK
8668 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8672 dnl ===================================================================
8673 dnl Checks for javac
8674 dnl ===================================================================
8675 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8676 javacompiler="javac"
8677 : ${JAVA_SOURCE_VER=8}
8678 : ${JAVA_TARGET_VER=8}
8679 if test -z "$with_jdk_home"; then
8680 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8682 _javac_path="$with_jdk_home/bin/$javacompiler"
8683 dnl Check if there is a Java compiler at all.
8684 if test -x "$_javac_path"; then
8685 JAVACOMPILER=$_javac_path
8688 if test -z "$JAVACOMPILER"; then
8689 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8691 if test "$build_os" = "cygwin"; then
8692 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8693 JAVACOMPILER="${JAVACOMPILER}.exe"
8695 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8699 dnl ===================================================================
8700 dnl Checks for javadoc
8701 dnl ===================================================================
8702 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8703 if test -z "$with_jdk_home"; then
8704 AC_PATH_PROG(JAVADOC, javadoc)
8706 _javadoc_path="$with_jdk_home/bin/javadoc"
8707 dnl Check if there is a javadoc at all.
8708 if test -x "$_javadoc_path"; then
8709 JAVADOC=$_javadoc_path
8711 AC_PATH_PROG(JAVADOC, javadoc)
8714 if test -z "$JAVADOC"; then
8715 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8717 if test "$build_os" = "cygwin"; then
8718 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8719 JAVADOC="${JAVADOC}.exe"
8721 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8724 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8725 JAVADOCISGJDOC="yes"
8729 AC_SUBST(JAVADOCISGJDOC)
8731 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8732 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8733 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8734 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8735 # try to recover first by looking whether we have an alternative
8736 # system as in Debian or newer SuSEs where following /usr/bin/javac
8737 # over /etc/alternatives/javac leads to the right bindir where we
8738 # just need to strip a bit away to get a valid JAVA_HOME
8739 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8740 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8741 # maybe only one level of symlink (e.g. on Mac)
8742 JAVA_HOME=$(readlink $JAVACOMPILER)
8743 if test "$(dirname $JAVA_HOME)" = "."; then
8744 # we've got no path to trim back
8749 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8750 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8751 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8752 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8754 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8755 if test "$JAVA_HOME" != "/usr"; then
8756 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8757 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8758 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8759 dnl Tiger already returns a JDK path...
8760 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8762 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8763 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8764 dnl that checks which version to run
8765 if test -f "$JAVA_HOME"; then
8766 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8771 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8773 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8774 if test -z "$JAVA_HOME"; then
8775 if test "x$with_jdk_home" = "x"; then
8776 cat > findhome.java <<_ACEOF
8777 [import java.io.File;
8781 public static void main(String args[])
8783 String jrelocation = System.getProperty("java.home");
8784 File jre = new File(jrelocation);
8785 System.out.println(jre.getParent());
8789 AC_MSG_CHECKING([if javac works])
8790 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8791 AC_TRY_EVAL(javac_cmd)
8792 if test $? = 0 -a -f ./findhome.class; then
8793 AC_MSG_RESULT([javac works])
8795 echo "configure: javac test failed" >&5
8796 cat findhome.java >&5
8797 AC_MSG_ERROR([javac does not work - java projects will not build!])
8799 AC_MSG_CHECKING([if gij knows its java.home])
8800 JAVA_HOME=`$JAVAINTERPRETER findhome`
8801 if test $? = 0 -a "$JAVA_HOME" != ""; then
8802 AC_MSG_RESULT([$JAVA_HOME])
8804 echo "configure: java test failed" >&5
8805 cat findhome.java >&5
8806 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8808 # clean-up after ourselves
8809 rm -f ./findhome.java ./findhome.class
8811 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8815 # now check if $JAVA_HOME is really valid
8816 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8817 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8818 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8819 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8820 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8821 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8822 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8823 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8826 PathFormat "$JAVA_HOME"
8827 JAVA_HOME="$formatted_path"
8830 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8833 AC_MSG_CHECKING([for JAWT lib])
8834 if test "$_os" = WINNT; then
8835 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8840 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8841 JAVA_ARCH=$my_java_arch
8856 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8857 JAVA_ARCH=$my_java_arch
8860 my_java_arch=sparcv9
8866 my_java_arch=$host_cpu
8869 # This is where JDK9 puts the library
8870 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8871 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8873 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8875 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8877 AC_MSG_RESULT([$JAWTLIB])
8881 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8885 JAVAINC="-I$JAVA_HOME/include"
8886 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8887 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8891 JAVAINC="-I$JAVA_HOME/include/win32"
8892 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8896 if test -d "$JAVA_HOME/include/darwin"; then
8897 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8899 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8904 JAVAINC="-I$JAVA_HOME/include"
8905 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8909 JAVAINC="-I$JAVA_HOME/include"
8910 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8911 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8912 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8913 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8917 JAVAINC="-I$JAVA_HOME/include"
8918 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8919 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8923 JAVAINC="-I$JAVA_HOME/include"
8924 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8925 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8929 JAVAINC="-I$JAVA_HOME/include"
8930 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8931 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8935 JAVAINC="-I$JAVA_HOME/include"
8936 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8937 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8941 JAVAINC="-I$JAVA_HOME/include"
8942 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8943 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8947 SOLARINC="$SOLARINC $JAVAINC"
8949 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8950 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8951 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8953 JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
8956 AC_SUBST(JAVACFLAGS)
8957 AC_SUBST(JAVACOMPILER)
8958 AC_SUBST(JAVAINTERPRETER)
8959 AC_SUBST(JAVAIFLAGS)
8960 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8961 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8963 AC_SUBST(JAVA_HOME_FOR_BUILD)
8965 AC_SUBST(JDK_FOR_BUILD)
8966 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
8967 AC_SUBST(JAVA_SOURCE_VER)
8968 AC_SUBST(JAVA_TARGET_VER)
8971 dnl ===================================================================
8972 dnl Export file validation
8973 dnl ===================================================================
8974 AC_MSG_CHECKING([whether to enable export file validation])
8975 if test "$with_export_validation" != "no"; then
8976 if test -z "$ENABLE_JAVA"; then
8977 if test "$with_export_validation" = "yes"; then
8978 AC_MSG_ERROR([requested, but Java is disabled])
8980 AC_MSG_RESULT([no, as Java is disabled])
8982 elif ! test -d "${SRC_ROOT}/schema"; then
8983 if test "$with_export_validation" = "yes"; then
8984 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
8986 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
8989 AC_MSG_RESULT([yes])
8990 AC_DEFINE(HAVE_EXPORT_VALIDATION)
8992 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
8993 if test -z "$ODFVALIDATOR"; then
8994 # remember to download the ODF toolkit with validator later
8995 AC_MSG_NOTICE([no odfvalidator found, will download it])
8996 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
8997 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
8999 # and fetch name of odfvalidator jar name from download.lst
9000 ODFVALIDATOR_JAR=`$SED -n -e "s/^ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9001 AC_SUBST(ODFVALIDATOR_JAR)
9003 if test -z "$ODFVALIDATOR_JAR"; then
9004 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9007 if test "$build_os" = "cygwin"; then
9008 # In case of Cygwin it will be executed from Windows,
9009 # so we need to run bash and absolute path to validator
9010 # so instead of "odfvalidator" it will be
9011 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9012 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9014 ODFVALIDATOR="sh $ODFVALIDATOR"
9016 AC_SUBST(ODFVALIDATOR)
9019 AC_PATH_PROGS(OFFICEOTRON, officeotron)
9020 if test -z "$OFFICEOTRON"; then
9021 # remember to download the officeotron with validator later
9022 AC_MSG_NOTICE([no officeotron found, will download it])
9023 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9024 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9026 # and fetch name of officeotron jar name from download.lst
9027 OFFICEOTRON_JAR=`$SED -n -e "s/^OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9028 AC_SUBST(OFFICEOTRON_JAR)
9030 if test -z "$OFFICEOTRON_JAR"; then
9031 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9034 # check version of existing officeotron
9035 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9036 if test 0"$OFFICEOTRON_VER" -lt 704; then
9037 AC_MSG_ERROR([officeotron too old])
9040 if test "$build_os" = "cygwin"; then
9041 # In case of Cygwin it will be executed from Windows,
9042 # so we need to run bash and absolute path to validator
9043 # so instead of "odfvalidator" it will be
9044 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9045 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9047 OFFICEOTRON="sh $OFFICEOTRON"
9050 AC_SUBST(OFFICEOTRON)
9055 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9056 if test "$with_bffvalidator" != "no"; then
9057 AC_DEFINE(HAVE_BFFVALIDATOR)
9059 if test "$with_export_validation" = "no"; then
9060 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9063 if test "$with_bffvalidator" = "yes"; then
9064 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9066 BFFVALIDATOR="$with_bffvalidator"
9069 if test "$build_os" = "cygwin"; then
9070 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9071 AC_MSG_RESULT($BFFVALIDATOR)
9073 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9075 elif test -n "$BFFVALIDATOR"; then
9076 # We are not in Cygwin but need to run Windows binary with wine
9077 AC_PATH_PROGS(WINE, wine)
9079 # so swap in a shell wrapper that converts paths transparently
9080 BFFVALIDATOR_EXE="$BFFVALIDATOR"
9081 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9082 AC_SUBST(BFFVALIDATOR_EXE)
9083 AC_MSG_RESULT($BFFVALIDATOR)
9085 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9087 AC_SUBST(BFFVALIDATOR)
9092 dnl ===================================================================
9093 dnl Check for epm (not needed for Windows)
9094 dnl ===================================================================
9095 AC_MSG_CHECKING([whether to enable EPM for packing])
9096 if test "$enable_epm" = "yes"; then
9097 AC_MSG_RESULT([yes])
9098 if test "$_os" != "WINNT"; then
9099 if test $_os = Darwin; then
9101 elif test -n "$with_epm"; then
9104 AC_PATH_PROG(EPM, epm, no)
9106 if test "$EPM" = "no" -o "$EPM" = "internal"; then
9107 AC_MSG_NOTICE([EPM will be built.])
9108 BUILD_TYPE="$BUILD_TYPE EPM"
9109 EPM=${WORKDIR}/UnpackedTarball/epm/epm
9111 # Gentoo has some epm which is something different...
9112 AC_MSG_CHECKING([whether the found epm is the right epm])
9113 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9114 AC_MSG_RESULT([yes])
9116 AC_MSG_ERROR([no. Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9118 AC_MSG_CHECKING([epm version])
9119 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9120 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9121 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9122 AC_MSG_RESULT([OK, >= 3.7])
9124 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9125 AC_MSG_ERROR([Install ESP Package Manager (https://jimjag.github.io/epm/) and/or specify the path to the right epm])
9130 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9131 AC_MSG_CHECKING([for rpm])
9132 for a in "$RPM" rpmbuild rpm; do
9133 $a --usage >/dev/null 2> /dev/null
9134 if test $? -eq 0; then
9138 $a --version >/dev/null 2> /dev/null
9139 if test $? -eq 0; then
9145 if test -z "$RPM"; then
9146 AC_MSG_ERROR([not found])
9147 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9148 RPM_PATH=`which $RPM`
9149 AC_MSG_RESULT([$RPM_PATH])
9150 SCPDEFS="$SCPDEFS -DWITH_RPM"
9152 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9155 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9156 AC_PATH_PROG(DPKG, dpkg, no)
9157 if test "$DPKG" = "no"; then
9158 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9161 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9162 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9163 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9164 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9165 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9166 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9167 AC_MSG_RESULT([yes])
9170 if echo "$PKGFORMAT" | $GREP -q rpm; then
9172 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9173 add_warning "the rpms will need to be installed with --nodeps"
9177 AC_MSG_WARN([the ${_pt}s will not be relocatable])
9178 add_warning "the ${_pt}s will not be relocatable"
9179 AC_MSG_WARN([if you want to make sure installation without --nodeps and
9180 relocation will work, you need to patch your epm with the
9181 patch in epm/epm-3.7.patch or build with
9182 --with-epm=internal which will build a suitable epm])
9187 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9188 AC_PATH_PROG(PKGMK, pkgmk, no)
9189 if test "$PKGMK" = "no"; then
9190 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9197 for i in $PKGFORMAT; do
9199 aix | bsd | deb | pkg | rpm | native | portable)
9201 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9211 if test "$enable_lotuswordpro" = "yes"; then
9214 AC_SUBST(ENABLE_LWP)
9216 dnl ===================================================================
9217 dnl Check for building ODK
9218 dnl ===================================================================
9219 AC_MSG_CHECKING([whether to build the ODK])
9220 if test "$enable_odk" = yes; then
9221 if test "$DISABLE_DYNLOADING" = TRUE; then
9222 AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9224 AC_MSG_RESULT([yes])
9225 BUILD_TYPE="$BUILD_TYPE ODK"
9230 if test "$enable_odk" != yes; then
9233 if test "$with_doxygen" = no; then
9234 AC_MSG_CHECKING([for doxygen])
9238 if test "$with_doxygen" = yes; then
9239 AC_PATH_PROG([DOXYGEN], [doxygen])
9240 if test -z "$DOXYGEN"; then
9241 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9243 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9244 if ! dot -V 2>/dev/null; then
9245 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9249 AC_MSG_CHECKING([for doxygen])
9250 DOXYGEN=$with_doxygen
9251 AC_MSG_RESULT([$DOXYGEN])
9253 if test -n "$DOXYGEN"; then
9254 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9255 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9256 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9257 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9264 dnl ==================================================================
9266 dnl ==================================================================
9267 AC_MSG_CHECKING([whether to enable fuzzers])
9268 if test "$enable_fuzzers" != yes; then
9271 if test -z $LIB_FUZZING_ENGINE; then
9272 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9274 AC_MSG_RESULT([yes])
9275 ENABLE_FUZZERS="TRUE"
9276 AC_DEFINE([ENABLE_FUZZERS],1)
9277 AC_DEFINE([VCL_FLOAT_DEVICE_PIXEL],1)
9278 BUILD_TYPE="$BUILD_TYPE FUZZERS"
9280 AC_SUBST(LIB_FUZZING_ENGINE)
9282 dnl ===================================================================
9283 dnl Check for system zlib
9284 dnl ===================================================================
9285 if test "$with_system_zlib" = "auto"; then
9288 with_system_zlib="$with_system_libs"
9291 if test "$enable_fuzzers" != "yes"; then
9292 with_system_zlib=yes
9300 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9301 dnl and has no pkg-config for it at least on some tinderboxes,
9302 dnl so leaving that out for now
9303 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9304 AC_MSG_CHECKING([which zlib to use])
9305 if test "$with_system_zlib" = "yes"; then
9306 AC_MSG_RESULT([external])
9308 AC_CHECK_HEADER(zlib.h, [],
9309 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9310 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9311 [AC_MSG_ERROR(zlib not found or functional)], [])
9313 AC_MSG_RESULT([internal])
9315 BUILD_TYPE="$BUILD_TYPE ZLIB"
9316 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9317 if test "$COM" = "MSC"; then
9318 ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9320 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9323 AC_SUBST(ZLIB_CFLAGS)
9325 AC_SUBST(SYSTEM_ZLIB)
9327 dnl ===================================================================
9328 dnl Check for system jpeg
9329 dnl ===================================================================
9330 AC_MSG_CHECKING([which libjpeg to use])
9331 if test "$with_system_jpeg" = "yes"; then
9332 AC_MSG_RESULT([external])
9334 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9335 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9336 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9337 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9340 AC_MSG_RESULT([internal, libjpeg-turbo])
9341 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9344 x86_64 | amd64 | i*86 | x86 | ia32)
9345 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9346 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9347 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9348 NASM="$LODE_HOME/opt/bin/nasm"
9349 elif test -x "/opt/lo/bin/nasm"; then
9350 NASM="/opt/lo/bin/nasm"
9354 if test -n "$NASM"; then
9355 AC_MSG_CHECKING([for object file format of host system])
9357 cygwin* | mingw* | pw32* | wsl*)
9367 msdosdjgpp* | go32*)
9370 os2-emx*) # not tested
9371 objfmt='MSOMF' # obj
9373 linux*coff* | linux*oldld*)
9389 kfreebsd* | freebsd* | netbsd* | openbsd*)
9390 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9403 solaris* | sunos* | sysv* | sco*)
9413 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9428 AC_MSG_RESULT([$objfmt])
9429 if test "$objfmt" = 'ELF ?'; then
9431 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9434 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9436 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9437 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9438 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9439 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9440 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9441 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9442 ELF) NAFLAGS='-felf -DELF -DPIC';;
9443 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9444 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9445 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9446 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9448 AC_MSG_RESULT([$NAFLAGS])
9450 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9451 cat > conftest.asm << EOF
9452 [%line __oline__ "configure"
9460 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9461 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9464 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9465 cat conftest.asm >&AS_MESSAGE_LOG_FD
9468 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9474 if test -z "$NASM"; then
9476 ****************************************************************************
9477 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9481 if test "$build_os" = "cygwin"; then
9483 install a pre-compiled binary for Win32
9485 mkdir -p /opt/lo/bin
9487 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9490 or get and install one from https://www.nasm.us/
9492 Then re-run autogen.sh
9494 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9495 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9500 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/BUILDING.md
9504 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9505 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9513 AC_SUBST(LIBJPEG_CFLAGS)
9514 AC_SUBST(LIBJPEG_LIBS)
9515 AC_SUBST(SYSTEM_LIBJPEG)
9517 dnl ===================================================================
9518 dnl Check for system clucene
9519 dnl ===================================================================
9520 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9521 if test "$SYSTEM_CLUCENE" = TRUE; then
9523 save_CXXFLAGS=$CXXFLAGS
9524 save_CPPFLAGS=$CPPFLAGS
9525 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9526 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9527 dnl https://sourceforge.net/p/clucene/bugs/200/
9528 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9529 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9530 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9531 CXXFLAGS=$save_CXXFLAGS
9532 CPPFLAGS=$save_CPPFLAGS
9534 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9537 dnl ===================================================================
9538 dnl Check for system expat
9539 dnl ===================================================================
9540 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9542 dnl ===================================================================
9543 dnl Check for system xmlsec
9544 dnl ===================================================================
9545 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.35])
9547 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
9548 if test "$enable_eot" = "yes"; then
9550 AC_DEFINE([ENABLE_EOT])
9551 AC_MSG_RESULT([yes])
9553 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
9558 AC_SUBST([ENABLE_EOT])
9560 dnl ===================================================================
9561 dnl Check for DLP libs
9562 dnl ===================================================================
9563 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9564 AS_IF([test "$COM" = "MSC"],
9565 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9566 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9568 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9569 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9571 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9573 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9575 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9576 AS_IF([test "$COM" = "MSC"],
9577 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9578 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9580 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9581 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9583 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9585 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9586 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9588 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9590 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9592 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9594 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9595 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9597 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9598 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9600 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9602 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9603 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9605 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9607 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9609 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9611 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9613 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9614 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9616 dnl ===================================================================
9617 dnl Check for system lcms2
9618 dnl ===================================================================
9619 if test "$with_system_lcms2" != "yes"; then
9622 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9623 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9624 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9625 if test "$GCC" = "yes"; then
9626 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9628 if test "$COM" = "MSC"; then # override the above
9629 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9632 dnl ===================================================================
9633 dnl Check for system cppunit
9634 dnl ===================================================================
9635 if test "$_os" != "Android" ; then
9636 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9639 dnl ===================================================================
9640 dnl Check whether freetype is available
9642 dnl FreeType has 3 different kinds of versions
9643 dnl * release, like 2.4.10
9644 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9646 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9649 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9650 dnl ===================================================================
9651 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9652 if test "x$ac_config_site_64bit_host" = xYES; then
9653 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9655 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9657 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9659 # ===================================================================
9660 # Check for system libxslt
9661 # to prevent incompatibilities between internal libxml2 and external libxslt,
9662 # or vice versa, use with_system_libxml here
9663 # ===================================================================
9664 if test "$with_system_libxml" = "auto"; then
9667 with_system_libxml="$with_system_libs"
9670 with_system_libxml=no
9673 if test "$enable_fuzzers" != "yes"; then
9674 with_system_libxml=yes
9676 with_system_libxml=no
9682 AC_MSG_CHECKING([which libxslt to use])
9683 if test "$with_system_libxml" = "yes"; then
9684 AC_MSG_RESULT([external])
9686 if test "$_os" = "Darwin"; then
9687 dnl make sure to use SDK path
9688 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9689 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9691 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9692 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9694 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9695 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9696 FilterLibs "${LIBXSLT_LIBS}"
9697 LIBXSLT_LIBS="${filteredlibs}"
9698 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9699 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9700 FilterLibs "${LIBEXSLT_LIBS}"
9701 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9704 dnl Check for xsltproc
9705 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9706 if test "$XSLTPROC" = "no"; then
9707 AC_MSG_ERROR([xsltproc is required])
9710 AC_MSG_RESULT([internal])
9712 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9714 AC_SUBST(SYSTEM_LIBXSLT)
9715 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9716 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9718 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9720 AC_SUBST(LIBEXSLT_CFLAGS)
9721 AC_SUBST(LIBEXSLT_LIBS)
9722 AC_SUBST(LIBXSLT_CFLAGS)
9723 AC_SUBST(LIBXSLT_LIBS)
9726 # ===================================================================
9727 # Check for system libxml
9728 # ===================================================================
9729 AC_MSG_CHECKING([which libxml to use])
9730 if test "$with_system_libxml" = "yes"; then
9731 AC_MSG_RESULT([external])
9733 if test "$_os" = "Darwin"; then
9734 dnl make sure to use SDK path
9735 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9737 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9738 elif test $_os = iOS; then
9739 dnl make sure to use SDK path
9740 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9741 LIBXML_CFLAGS="-I$usr/include/libxml2"
9742 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9744 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9745 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9746 FilterLibs "${LIBXML_LIBS}"
9747 LIBXML_LIBS="${filteredlibs}"
9750 dnl Check for xmllint
9751 AC_PATH_PROG(XMLLINT, xmllint, no)
9752 if test "$XMLLINT" = "no"; then
9753 AC_MSG_ERROR([xmllint is required])
9756 AC_MSG_RESULT([internal])
9758 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9759 if test "$COM" = "MSC"; then
9760 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9762 if test "$COM" = "MSC"; then
9763 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9765 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9766 if test "$DISABLE_DYNLOADING" = TRUE; then
9767 LIBXML_LIBS="$LIBXML_LIBS -lm"
9770 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9772 AC_SUBST(SYSTEM_LIBXML)
9773 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9774 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9776 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9777 AC_SUBST(LIBXML_CFLAGS)
9778 AC_SUBST(LIBXML_LIBS)
9781 # =====================================================================
9782 # Checking for a Python interpreter with version >= 3.3.
9783 # Optionally user can pass an option to configure, i. e.
9784 # ./configure PYTHON=/usr/bin/python
9785 # =====================================================================
9786 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9787 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9788 # unless PYTHON is defined as above which allows 'system'
9789 enable_python=internal
9791 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9792 if test -n "$PYTHON"; then
9793 PYTHON_FOR_BUILD=$PYTHON
9795 # This allows a lack of system python with no error, we use internal one in that case.
9796 AM_PATH_PYTHON([3.3],, [:])
9797 # Clean PYTHON_VERSION checked below if cross-compiling
9799 if test "$PYTHON" != ":"; then
9800 PYTHON_FOR_BUILD=$PYTHON
9805 # Checks for Python to use for Pyuno
9806 AC_MSG_CHECKING([which Python to use for Pyuno])
9807 case "$enable_python" in
9809 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9810 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9811 # requirement from the choice whether to include Python stuff in the installer, but why
9813 AC_MSG_ERROR([Python is required at build time.])
9816 AC_MSG_RESULT([none])
9819 if test "$DISABLE_SCRIPTING" = TRUE; then
9820 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9821 AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9823 AC_MSG_RESULT([none, overridden by --disable-scripting])
9825 elif test $build_os = cygwin -o $build_os = wsl; then
9826 dnl When building on Windows we don't attempt to use any installed
9827 dnl "system" Python.
9828 AC_MSG_RESULT([fully internal])
9829 enable_python=internal
9830 elif test "$cross_compiling" = yes; then
9831 AC_MSG_RESULT([system])
9832 enable_python=system
9834 # Unset variables set by the above AM_PATH_PYTHON so that
9835 # we actually do check anew.
9837 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
9838 AM_PATH_PYTHON([3.3],, [:])
9839 AC_MSG_CHECKING([which Python to use for Pyuno])
9840 if test "$PYTHON" = ":"; then
9841 if test -z "$PYTHON_FOR_BUILD"; then
9842 AC_MSG_RESULT([fully internal])
9844 AC_MSG_RESULT([internal])
9846 enable_python=internal
9848 AC_MSG_RESULT([system])
9849 enable_python=system
9854 AC_MSG_RESULT([internal])
9857 AC_MSG_RESULT([fully internal])
9858 enable_python=internal
9861 AC_MSG_RESULT([system])
9862 if test "$_os" = Darwin -a -z "$PYTHON"; then
9863 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9867 AC_MSG_ERROR([Incorrect --enable-python option])
9871 if test $enable_python != no; then
9872 BUILD_TYPE="$BUILD_TYPE PYUNO"
9875 if test $enable_python = system; then
9876 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9877 # Fallback: Accept these in the environment, or as set above
9880 elif test "$cross_compiling" != yes; then
9881 # Unset variables set by the above AM_PATH_PYTHON so that
9882 # we actually do check anew.
9883 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
9884 # This causes an error if no python command is found
9885 AM_PATH_PYTHON([3.3])
9886 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9887 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9888 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9889 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9890 if test -z "$PKG_CONFIG"; then
9891 PYTHON_CFLAGS="-I$python_include"
9892 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9893 elif $PKG_CONFIG --exists python-$python_version-embed; then
9894 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9895 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9896 elif $PKG_CONFIG --exists python-$python_version; then
9897 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9898 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9900 PYTHON_CFLAGS="-I$python_include"
9901 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9903 FilterLibs "${PYTHON_LIBS}"
9904 PYTHON_LIBS="${filteredlibs}"
9906 dnl How to find out the cross-compilation Python installation path?
9907 AC_MSG_CHECKING([for python version])
9908 AS_IF([test -n "$PYTHON_VERSION"],
9909 [AC_MSG_RESULT([$PYTHON_VERSION])],
9910 [AC_MSG_RESULT([not found])
9911 AC_MSG_ERROR([no usable python found])])
9912 test -n "$PYTHON_CFLAGS" && break
9915 dnl Check if the headers really work
9916 save_CPPFLAGS="$CPPFLAGS"
9917 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9918 AC_CHECK_HEADER(Python.h)
9919 CPPFLAGS="$save_CPPFLAGS"
9921 # let the PYTHON_FOR_BUILD match the same python installation that
9922 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9923 # better for PythonTests.
9924 PYTHON_FOR_BUILD=$PYTHON
9927 if test "$with_lxml" != no; then
9928 if test -z "$PYTHON_FOR_BUILD"; then
9931 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9934 if test "$cross_compiling" != yes ; then
9935 BUILD_TYPE="$BUILD_TYPE LXML"
9940 AC_MSG_CHECKING([for python lxml])
9941 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9942 AC_MSG_RESULT([yes])
9946 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9949 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9950 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9951 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9953 BUILD_TYPE="$BUILD_TYPE LXML"
9954 AC_MSG_RESULT([no, using internal lxml])
9957 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9965 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
9967 PYTHON_VERSION_MAJOR=3
9968 PYTHON_VERSION_MINOR=8
9969 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.16
9970 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9971 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9973 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9975 # Embedded Python dies without Home set
9976 if test "$HOME" = ""; then
9981 dnl By now enable_python should be "system", "internal" or "no"
9982 case $enable_python in
9986 if test "x$ac_cv_header_Python_h" != "xyes"; then
9987 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
9991 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
9992 AC_MSG_CHECKING([for correct python library version])
9993 AC_RUN_IFELSE([AC_LANG_SOURCE([[
9996 int main(int argc, char **argv) {
9997 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10000 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10003 dnl FIXME Check if the Python library can be linked with, too?
10007 BUILD_TYPE="$BUILD_TYPE PYTHON"
10008 if test "$OS" = LINUX -o "$OS" = WNT ; then
10009 BUILD_TYPE="$BUILD_TYPE LIBFFI"
10013 DISABLE_PYTHON=TRUE
10017 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10021 AC_SUBST(DISABLE_PYTHON)
10022 AC_SUBST(SYSTEM_PYTHON)
10023 AC_SUBST(PYTHON_CFLAGS)
10024 AC_SUBST(PYTHON_FOR_BUILD)
10025 AC_SUBST(PYTHON_LIBS)
10026 AC_SUBST(PYTHON_VERSION)
10027 AC_SUBST(PYTHON_VERSION_MAJOR)
10028 AC_SUBST(PYTHON_VERSION_MINOR)
10030 AC_MSG_CHECKING([whether to build LibreLogo])
10031 case "$enable_python" in
10033 AC_MSG_RESULT([no; Python disabled])
10036 if test "${enable_librelogo}" = "no"; then
10037 AC_MSG_RESULT([no])
10039 AC_MSG_RESULT([yes])
10040 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10041 AC_DEFINE([ENABLE_LIBRELOGO],1)
10045 AC_SUBST(ENABLE_LIBRELOGO)
10051 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10052 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10053 ENABLE_MARIADBC=TRUE
10054 AC_MSG_RESULT([yes])
10055 BUILD_TYPE="$BUILD_TYPE MARIADBC"
10057 AC_MSG_RESULT([no])
10059 AC_SUBST(ENABLE_MARIADBC)
10060 AC_SUBST(MARIADBC_MAJOR)
10061 AC_SUBST(MARIADBC_MINOR)
10062 AC_SUBST(MARIADBC_MICRO)
10064 if test "$ENABLE_MARIADBC" = "TRUE"; then
10065 dnl ===================================================================
10066 dnl Check for system MariaDB
10067 dnl ===================================================================
10068 AC_MSG_CHECKING([which MariaDB to use])
10069 if test "$with_system_mariadb" = "yes"; then
10070 AC_MSG_RESULT([external])
10071 SYSTEM_MARIADB_CONNECTOR_C=TRUE
10072 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10073 if test -z "$MARIADBCONFIG"; then
10074 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10075 if test -z "$MARIADBCONFIG"; then
10076 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10077 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10080 AC_MSG_CHECKING([MariaDB version])
10081 MARIADB_VERSION=`$MARIADBCONFIG --version`
10082 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10083 if test "$MARIADB_MAJOR" -ge "5"; then
10084 AC_MSG_RESULT([OK])
10086 AC_MSG_ERROR([too old, use 5.0.x or later])
10088 AC_MSG_CHECKING([for MariaDB Client library])
10089 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10090 if test "$COM_IS_CLANG" = TRUE; then
10091 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10093 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10094 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10095 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10097 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10098 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10099 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10100 | sed -e 's|/lib64/|/lib/|')
10102 FilterLibs "${MARIADB_LIBS}"
10103 MARIADB_LIBS="${filteredlibs}"
10104 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10105 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10106 if test "$enable_bundle_mariadb" = "yes"; then
10107 AC_MSG_RESULT([yes])
10108 BUNDLE_MARIADB_CONNECTOR_C=TRUE
10109 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10111 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10113 /g' | grep -E '(mysqlclient|mariadb)')
10114 if test "$_os" = "Darwin"; then
10115 LIBMARIADB=${LIBMARIADB}.dylib
10116 elif test "$_os" = "WINNT"; then
10117 LIBMARIADB=${LIBMARIADB}.dll
10119 LIBMARIADB=${LIBMARIADB}.so
10121 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10122 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10123 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10124 AC_MSG_RESULT([found.])
10125 PathFormat "$LIBMARIADB_PATH"
10126 LIBMARIADB_PATH="$formatted_path"
10128 AC_MSG_ERROR([not found.])
10131 AC_MSG_RESULT([no])
10132 BUNDLE_MARIADB_CONNECTOR_C=
10135 AC_MSG_RESULT([internal])
10136 SYSTEM_MARIADB_CONNECTOR_C=
10137 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10138 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10139 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10142 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10143 AC_SUBST(MARIADB_CFLAGS)
10144 AC_SUBST(MARIADB_LIBS)
10145 AC_SUBST(LIBMARIADB)
10146 AC_SUBST(LIBMARIADB_PATH)
10147 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10150 dnl ===================================================================
10151 dnl Check for system hsqldb
10152 dnl ===================================================================
10153 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10154 AC_MSG_CHECKING([which hsqldb to use])
10155 if test "$with_system_hsqldb" = "yes"; then
10156 AC_MSG_RESULT([external])
10158 if test -z $HSQLDB_JAR; then
10159 HSQLDB_JAR=/usr/share/java/hsqldb.jar
10161 if ! test -f $HSQLDB_JAR; then
10162 AC_MSG_ERROR(hsqldb.jar not found.)
10164 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10168 my $file = "$ENV{'HSQLDB_JAR'}";
10169 my $zip = Archive::Zip->new( $file );
10170 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10171 if ( $mf =~ m/Specification-Version: 1.8.*/ )
10173 push @l, split(/\n/, $mf);
10174 foreach my $line (@l)
10176 if ($line =~ m/Specification-Version:/)
10178 ($t, $version) = split (/:/,$line);
10179 $version =~ s/^\s//;
10180 ($a, $b, $c, $d) = split (/\./,$version);
10181 if ($c == "0" && $d > "8")
10196 AC_MSG_RESULT([yes])
10198 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10201 AC_MSG_RESULT([internal])
10203 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10207 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10208 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10211 AC_SUBST(SYSTEM_HSQLDB)
10212 AC_SUBST(HSQLDB_JAR)
10214 dnl ===================================================================
10215 dnl Check for PostgreSQL stuff
10216 dnl ===================================================================
10217 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10218 if test "x$enable_postgresql_sdbc" != "xno"; then
10219 AC_MSG_RESULT([yes])
10220 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10222 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10223 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10225 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10226 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10229 postgres_interface=""
10230 if test "$with_system_postgresql" = "yes"; then
10231 postgres_interface="external PostgreSQL"
10232 SYSTEM_POSTGRESQL=TRUE
10233 if test "$_os" = Darwin; then
10235 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10236 pg_supp_path="$P_SEP$d$pg_supp_path"
10239 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10240 if test -n "$PGCONFIG"; then
10241 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10242 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10244 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10245 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10246 POSTGRESQL_LIB=$POSTGRESQL_LIBS
10248 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10251 FilterLibs "${POSTGRESQL_LIB}"
10252 POSTGRESQL_LIB="${filteredlibs}"
10254 # if/when anything else than PostgreSQL uses Kerberos,
10255 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10260 # macOS has system MIT Kerberos 5 since 10.4
10261 if test "$with_krb5" != "no"; then
10264 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10265 # that the libraries where these functions are located on macOS will change, is it?
10266 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10267 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10270 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10271 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10272 KRB5_LIBS="$KRB5_LIBS $LIBS"
10275 if test "$with_gssapi" != "no"; then
10278 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10279 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10285 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10286 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10289 Linux|GNU|*BSD|DragonFly)
10290 if test "$with_krb5" != "no"; then
10293 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10294 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10297 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10298 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10299 KRB5_LIBS="$KRB5_LIBS $LIBS"
10302 if test "$with_gssapi" != "no"; then
10305 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10306 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10312 if test "$with_krb5" = "yes"; then
10315 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10316 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10319 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10320 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10321 KRB5_LIBS="$KRB5_LIBS $LIBS"
10324 if test "$with_gssapi" = "yes"; then
10327 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10328 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10334 if test -n "$with_libpq_path"; then
10335 SYSTEM_POSTGRESQL=TRUE
10336 postgres_interface="external libpq"
10337 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10338 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10341 postgres_interface="internal"
10343 POSTGRESQL_INC="%OVERRIDE_ME%"
10344 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10348 AC_MSG_CHECKING([PostgreSQL C interface])
10349 AC_MSG_RESULT([$postgres_interface])
10351 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10352 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10353 save_CFLAGS=$CFLAGS
10354 save_CPPFLAGS=$CPPFLAGS
10356 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10357 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10358 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10359 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10360 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10361 CFLAGS=$save_CFLAGS
10362 CPPFLAGS=$save_CPPFLAGS
10365 BUILD_POSTGRESQL_SDBC=TRUE
10367 AC_MSG_RESULT([no])
10369 AC_SUBST(WITH_KRB5)
10370 AC_SUBST(WITH_GSSAPI)
10371 AC_SUBST(GSSAPI_LIBS)
10372 AC_SUBST(KRB5_LIBS)
10373 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10374 AC_SUBST(SYSTEM_POSTGRESQL)
10375 AC_SUBST(POSTGRESQL_INC)
10376 AC_SUBST(POSTGRESQL_LIB)
10378 dnl ===================================================================
10379 dnl Check for Firebird stuff
10380 dnl ===================================================================
10381 ENABLE_FIREBIRD_SDBC=
10382 if test "$enable_firebird_sdbc" = "yes" ; then
10383 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10385 dnl ===================================================================
10386 dnl Check for system Firebird
10387 dnl ===================================================================
10388 AC_MSG_CHECKING([which Firebird to use])
10389 if test "$with_system_firebird" = "yes"; then
10390 AC_MSG_RESULT([external])
10391 SYSTEM_FIREBIRD=TRUE
10392 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10393 if test -z "$FIREBIRDCONFIG"; then
10394 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10395 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10396 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10398 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10400 AC_MSG_NOTICE([fb_config found])
10401 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10402 AC_MSG_CHECKING([for Firebird Client library])
10403 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10404 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10405 FilterLibs "${FIREBIRD_LIBS}"
10406 FIREBIRD_LIBS="${filteredlibs}"
10408 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10409 AC_MSG_CHECKING([Firebird version])
10410 if test -n "${FIREBIRD_VERSION}"; then
10411 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10412 if test "$FIREBIRD_MAJOR" -ge "3"; then
10413 AC_MSG_RESULT([OK])
10415 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10418 save_CFLAGS="${CFLAGS}"
10419 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10420 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10421 #if defined(FB_API_VER) && FB_API_VER == 30
10422 int fb_api_is_30(void) { return 0; }
10424 #error "Wrong Firebird API version"
10425 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10426 CFLAGS="$save_CFLAGS"
10428 ENABLE_FIREBIRD_SDBC=TRUE
10429 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10430 elif test "$enable_database_connectivity" = no; then
10431 AC_MSG_RESULT([none])
10432 elif test "$cross_compiling" = "yes"; then
10433 AC_MSG_RESULT([none])
10435 dnl Embedded Firebird has version 3.0
10436 dnl We need libatomic_ops for any non X86/X64 system
10437 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10438 dnl ===================================================================
10439 dnl Check for system libatomic_ops
10440 dnl ===================================================================
10441 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10442 if test "$with_system_libatomic_ops" = "yes"; then
10443 SYSTEM_LIBATOMIC_OPS=TRUE
10444 AC_CHECK_HEADERS(atomic_ops.h, [],
10445 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10447 SYSTEM_LIBATOMIC_OPS=
10448 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10449 LIBATOMIC_OPS_LIBS="-latomic_ops"
10450 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10454 AC_MSG_RESULT([internal])
10456 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10457 FIREBIRD_LIBS="-lfbclient"
10459 if test "$with_system_libtommath" = "yes"; then
10460 SYSTEM_LIBTOMMATH=TRUE
10461 dnl check for tommath presence
10463 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10464 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10468 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10469 LIBTOMMATH_LIBS="-ltommath"
10470 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10473 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10474 ENABLE_FIREBIRD_SDBC=TRUE
10475 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10478 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10479 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10480 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10481 AC_SUBST(LIBATOMIC_OPS_LIBS)
10482 AC_SUBST(SYSTEM_FIREBIRD)
10483 AC_SUBST(FIREBIRD_CFLAGS)
10484 AC_SUBST(FIREBIRD_LIBS)
10485 AC_SUBST(SYSTEM_LIBTOMMATH)
10486 AC_SUBST(LIBTOMMATH_CFLAGS)
10487 AC_SUBST(LIBTOMMATH_LIBS)
10489 dnl ===================================================================
10490 dnl Check for system curl
10491 dnl ===================================================================
10492 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10494 dnl ===================================================================
10495 dnl Check for system boost
10496 dnl ===================================================================
10497 AC_MSG_CHECKING([which boost to use])
10498 if test "$with_system_boost" = "yes"; then
10499 AC_MSG_RESULT([external])
10501 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10503 AX_BOOST_FILESYSTEM
10506 AC_LANG_PUSH([C++])
10507 save_CXXFLAGS=$CXXFLAGS
10508 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10509 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10510 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10511 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10512 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10513 CXXFLAGS=$save_CXXFLAGS
10515 # this is in m4/ax_boost_base.m4
10516 FilterLibs "${BOOST_LDFLAGS}"
10517 BOOST_LDFLAGS="${filteredlibs}"
10519 AC_MSG_RESULT([internal])
10520 BUILD_TYPE="$BUILD_TYPE BOOST"
10522 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10523 # use warning-suppressing wrapper headers
10524 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10526 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10529 AC_SUBST(SYSTEM_BOOST)
10531 dnl ===================================================================
10532 dnl Check for system mdds
10533 dnl ===================================================================
10534 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10535 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.0 >= 2.0.0])
10537 dnl ===================================================================
10538 dnl Check for system dragonbox
10539 dnl ===================================================================
10540 AC_MSG_CHECKING([which dragonbox to use])
10541 if test "$with_system_dragonbox" = "yes"; then
10542 AC_MSG_RESULT([external])
10543 SYSTEM_DRAGONBOX=TRUE
10544 AC_LANG_PUSH([C++])
10545 save_CPPFLAGS=$CPPFLAGS
10546 # This is where upstream installs to, unfortunately no .pc or so...
10547 DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.0.0
10548 CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10549 AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10550 [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10552 CPPFLAGS=$save_CPPFLAGS
10554 AC_MSG_RESULT([internal])
10555 BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10558 AC_SUBST([SYSTEM_DRAGONBOX])
10559 AC_SUBST([DRAGONBOX_CFLAGS])
10561 dnl ===================================================================
10562 dnl Check for system libfixmath
10563 dnl ===================================================================
10564 AC_MSG_CHECKING([which libfixmath to use])
10565 if test "$with_system_libfixmath" = "yes"; then
10566 AC_MSG_RESULT([external])
10567 SYSTEM_LIBFIXMATH=TRUE
10568 AC_LANG_PUSH([C++])
10569 AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10570 [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10571 AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10574 AC_MSG_RESULT([internal])
10577 AC_SUBST([SYSTEM_LIBFIXMATH])
10579 dnl ===================================================================
10580 dnl Check for system glm
10581 dnl ===================================================================
10582 AC_MSG_CHECKING([which glm to use])
10583 if test "$with_system_glm" = "yes"; then
10584 AC_MSG_RESULT([external])
10586 AC_LANG_PUSH([C++])
10587 AC_CHECK_HEADER([glm/glm.hpp], [],
10588 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10591 AC_MSG_RESULT([internal])
10592 BUILD_TYPE="$BUILD_TYPE GLM"
10594 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10596 AC_SUBST([GLM_CFLAGS])
10597 AC_SUBST([SYSTEM_GLM])
10599 dnl ===================================================================
10600 dnl Check for system odbc
10601 dnl ===================================================================
10602 AC_MSG_CHECKING([which odbc headers to use])
10603 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
10604 AC_MSG_RESULT([external])
10605 SYSTEM_ODBC_HEADERS=TRUE
10607 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10608 save_CPPFLAGS=$CPPFLAGS
10610 PathFormat "$winsdktest"
10611 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"
10612 AC_CHECK_HEADER(sqlext.h, [],
10613 [AC_MSG_ERROR(odbc not found. install odbc)],
10614 [#include <windows.h>])
10615 CPPFLAGS=$save_CPPFLAGS
10617 AC_CHECK_HEADER(sqlext.h, [],
10618 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10620 elif test "$enable_database_connectivity" = no; then
10621 AC_MSG_RESULT([none])
10623 AC_MSG_RESULT([internal])
10624 SYSTEM_ODBC_HEADERS=
10626 AC_SUBST(SYSTEM_ODBC_HEADERS)
10628 dnl ===================================================================
10629 dnl Check for system NSS
10630 dnl ===================================================================
10631 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10632 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10633 AC_DEFINE(HAVE_FEATURE_NSS)
10635 elif test $_os != iOS ; then
10638 AC_SUBST(ENABLE_NSS)
10640 dnl ===================================================================
10641 dnl Enable LDAP support
10642 dnl ===================================================================
10644 if test "$test_openldap" = yes; then
10645 AC_MSG_CHECKING([whether to enable LDAP support])
10646 if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10647 AC_MSG_RESULT([yes])
10650 if test "$enable_ldap" != "yes"; then
10651 AC_MSG_RESULT([no])
10653 AC_MSG_RESULT([no (needs NSS or system openldap)])
10657 dnl ===================================================================
10658 dnl Check for system openldap
10659 dnl ===================================================================
10661 if test "$ENABLE_LDAP" = TRUE; then
10662 AC_MSG_CHECKING([which openldap library to use])
10663 if test "$with_system_openldap" = yes; then
10664 AC_MSG_RESULT([external])
10665 SYSTEM_OPENLDAP=TRUE
10666 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10667 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10668 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10670 AC_MSG_RESULT([internal])
10671 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10676 AC_SUBST(ENABLE_LDAP)
10677 AC_SUBST(SYSTEM_OPENLDAP)
10679 dnl ===================================================================
10680 dnl Check for TLS/SSL and cryptographic implementation to use
10681 dnl ===================================================================
10682 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10683 if test -n "$with_tls"; then
10686 AC_DEFINE(USE_TLS_OPENSSL)
10688 AC_MSG_RESULT([$TLS])
10690 if test "$enable_openssl" != "yes"; then
10691 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10694 # warn that OpenSSL has been selected but not all TLS code has this option
10695 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10696 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10699 AC_DEFINE(USE_TLS_NSS)
10701 AC_MSG_RESULT([$TLS])
10704 AC_MSG_RESULT([none])
10705 AC_MSG_WARN([Skipping TLS/SSL])
10709 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10711 nss - Mozilla's Network Security Services (NSS)
10716 # default to using NSS, it results in smaller oox lib
10717 AC_DEFINE(USE_TLS_NSS)
10719 AC_MSG_RESULT([$TLS])
10723 dnl ===================================================================
10724 dnl Check for system sane
10725 dnl ===================================================================
10726 AC_MSG_CHECKING([which sane header to use])
10727 if test "$with_system_sane" = "yes"; then
10728 AC_MSG_RESULT([external])
10729 AC_CHECK_HEADER(sane/sane.h, [],
10730 [AC_MSG_ERROR(sane not found. install sane)], [])
10732 AC_MSG_RESULT([internal])
10733 BUILD_TYPE="$BUILD_TYPE SANE"
10736 dnl ===================================================================
10737 dnl Check for system icu
10738 dnl ===================================================================
10741 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10742 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10743 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10744 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10745 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10746 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 4.6])
10747 if test "$SYSTEM_ICU" = TRUE; then
10748 AC_LANG_PUSH([C++])
10749 AC_MSG_CHECKING([for unicode/rbbi.h])
10750 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10753 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10754 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10755 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10757 if test "$ICU_MAJOR" -ge 50; then
10758 AC_MSG_NOTICE([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10762 if test "$CROSS_COMPILING" != TRUE; then
10763 # using the system icu tools can lead to version confusion, use the
10764 # ones from the build environment when cross-compiling
10765 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10766 if test -z "$SYSTEM_GENBRK"; then
10767 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10769 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10770 if test -z "$SYSTEM_GENCCODE"; then
10771 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10773 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10774 if test -z "$SYSTEM_GENCMN"; then
10775 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10777 if test "$ICU_MAJOR" -lt 49; then
10778 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10779 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10780 ICU_RECLASSIFIED_HEBREW_LETTER=
10784 if test "$ICU_MAJOR" -ge "59"; then
10785 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10786 # with -std=c++11 but not all external libraries can be built with that,
10787 # for those use a bit-compatible typedef uint16_t UChar; see
10788 # icu/source/common/unicode/umachine.h
10789 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10793 AC_SUBST(SYSTEM_GENBRK)
10794 AC_SUBST(SYSTEM_GENCCODE)
10795 AC_SUBST(SYSTEM_GENCMN)
10796 AC_SUBST(ICU_MAJOR)
10797 AC_SUBST(ICU_MINOR)
10798 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10799 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10800 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10801 AC_SUBST(ICU_UCHAR_TYPE)
10803 dnl ==================================================================
10805 dnl ==================================================================
10806 DEFAULT_CRASHDUMP_VALUE="true"
10807 AC_MSG_CHECKING([whether to enable breakpad])
10808 if test "$enable_breakpad" != yes; then
10809 AC_MSG_RESULT([no])
10811 AC_MSG_RESULT([yes])
10812 ENABLE_BREAKPAD="TRUE"
10813 AC_DEFINE(ENABLE_BREAKPAD)
10814 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10815 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10817 AC_MSG_CHECKING([for disable crash dump])
10818 if test "$enable_crashdump" = no; then
10819 DEFAULT_CRASHDUMP_VALUE="false"
10820 AC_MSG_RESULT([yes])
10822 AC_MSG_RESULT([no])
10825 AC_MSG_CHECKING([for crashreport config])
10826 if test "$with_symbol_config" = "no"; then
10827 BREAKPAD_SYMBOL_CONFIG="invalid"
10828 AC_MSG_RESULT([no])
10830 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10831 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10832 AC_MSG_RESULT([yes])
10834 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10836 AC_SUBST(ENABLE_BREAKPAD)
10837 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10839 dnl ===================================================================
10841 dnl ===================================================================
10842 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10843 if test "$with_system_orcus" != "yes"; then
10844 if test "$SYSTEM_BOOST" = "TRUE"; then
10845 dnl Link with Boost.System
10846 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10847 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10848 dnl in documentation has no effect.
10852 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10853 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10854 AC_SUBST([BOOST_SYSTEM_LIB])
10855 AC_SUBST(SYSTEM_LIBORCUS)
10857 dnl ===================================================================
10859 dnl ===================================================================
10861 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10862 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10863 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10865 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10866 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10867 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 2.6.0])
10869 if test "$COM" = "MSC"; then # override the above
10870 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10871 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10874 if test "$with_system_harfbuzz" = "yes"; then
10875 if test "$with_system_graphite" = "no"; then
10876 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10878 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10880 save_CFLAGS="$CFLAGS"
10881 LIBS="$LIBS $HARFBUZZ_LIBS"
10882 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10883 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10885 CFLAGS="$save_CFLAGS"
10887 if test "$with_system_graphite" = "yes"; then
10888 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10892 if test "$USING_X11" = TRUE; then
10895 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10897 if test -z "$x_includes"; then
10898 x_includes="default_x_includes"
10900 if test -z "$x_libraries"; then
10901 x_libraries="default_x_libraries"
10903 CFLAGS="$CFLAGS $X_CFLAGS"
10904 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10905 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10907 x_includes="no_x_includes"
10908 x_libraries="no_x_libraries"
10911 if test "$USING_X11" = TRUE; then
10912 dnl ===================================================================
10913 dnl Check for extension headers
10914 dnl ===================================================================
10915 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10916 [#include <X11/extensions/shape.h>])
10918 # vcl needs ICE and SM
10919 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10920 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10921 [AC_MSG_ERROR(ICE library not found)])
10922 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10923 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10924 [AC_MSG_ERROR(SM library not found)])
10927 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10928 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10929 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10932 dnl ===================================================================
10933 dnl Check for system Xrender
10934 dnl ===================================================================
10935 AC_MSG_CHECKING([whether to use Xrender])
10936 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10937 AC_MSG_RESULT([yes])
10938 PKG_CHECK_MODULES(XRENDER, xrender)
10939 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10940 FilterLibs "${XRENDER_LIBS}"
10941 XRENDER_LIBS="${filteredlibs}"
10942 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10943 [AC_MSG_ERROR(libXrender not found or functional)], [])
10944 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10945 [AC_MSG_ERROR(Xrender not found. install X)], [])
10947 AC_MSG_RESULT([no])
10949 AC_SUBST(XRENDER_CFLAGS)
10950 AC_SUBST(XRENDER_LIBS)
10952 dnl ===================================================================
10953 dnl Check for XRandr
10954 dnl ===================================================================
10955 AC_MSG_CHECKING([whether to enable RandR support])
10956 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10957 AC_MSG_RESULT([yes])
10958 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10959 if test "$ENABLE_RANDR" != "TRUE"; then
10960 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10961 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10963 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10964 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10965 XRANDR_LIBS="-lXrandr "
10966 ENABLE_RANDR="TRUE"
10968 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10969 FilterLibs "${XRANDR_LIBS}"
10970 XRANDR_LIBS="${filteredlibs}"
10973 AC_MSG_RESULT([no])
10975 AC_SUBST(XRANDR_CFLAGS)
10976 AC_SUBST(XRANDR_LIBS)
10977 AC_SUBST(ENABLE_RANDR)
10979 if test -z "$with_webdav"; then
10980 with_webdav=$test_webdav
10983 AC_MSG_CHECKING([for WebDAV support])
10984 case "$with_webdav" in
10986 AC_MSG_RESULT([no])
10990 AC_MSG_RESULT([yes])
10991 # curl is already mandatory (almost) and checked elsewhere
10992 if test "$enable_curl" = "no"; then
10993 AC_MSG_ERROR(["--with-webdav conflicts with --disable-curl"])
10998 AC_SUBST(WITH_WEBDAV)
11000 dnl ===================================================================
11001 dnl Check for disabling cve_tests
11002 dnl ===================================================================
11003 AC_MSG_CHECKING([whether to execute CVE tests])
11004 # If not explicitly enabled or disabled, default
11005 if test -z "$enable_cve_tests"; then
11008 # Default cves off for Windows with its wild and wonderful
11009 # variety of AV software kicking in and panicking
11010 enable_cve_tests=no
11014 enable_cve_tests=yes
11018 if test "$enable_cve_tests" = "no"; then
11019 AC_MSG_RESULT([no])
11020 DISABLE_CVE_TESTS=TRUE
11021 AC_SUBST(DISABLE_CVE_TESTS)
11023 AC_MSG_RESULT([yes])
11026 dnl ===================================================================
11027 dnl Check for system openssl
11028 dnl ===================================================================
11030 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11031 if test "$enable_openssl" = "yes"; then
11032 AC_MSG_RESULT([no])
11033 ENABLE_OPENSSL=TRUE
11034 if test "$_os" = Darwin ; then
11035 # OpenSSL is deprecated when building for 10.7 or later.
11037 # https://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11038 # https://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11040 with_system_openssl=no
11041 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11042 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11043 && test "$with_system_openssl" != "no"; then
11044 with_system_openssl=yes
11045 SYSTEM_OPENSSL=TRUE
11047 OPENSSL_LIBS="-lssl -lcrypto"
11049 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11051 if test "$with_system_openssl" = "yes"; then
11052 AC_MSG_CHECKING([whether openssl supports SHA512])
11054 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11055 SHA512_CTX context;
11056 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11060 AC_MSG_RESULT([yes])
11062 # warn that although OpenSSL is disabled, system libraries may depend on it
11063 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11064 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11067 AC_SUBST([ENABLE_OPENSSL])
11069 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11070 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11071 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11072 enable_cipher_openssl_backend=no
11074 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11077 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11078 ENABLE_CIPHER_OPENSSL_BACKEND=
11079 if test "$enable_cipher_openssl_backend" = yes; then
11080 AC_MSG_RESULT([yes])
11081 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11083 AC_MSG_RESULT([no])
11085 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11087 dnl ===================================================================
11088 dnl Select the crypto backends used by LO
11089 dnl ===================================================================
11091 if test "$build_crypto" = yes; then
11092 if test "$OS" = WNT; then
11093 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11094 AC_DEFINE([USE_CRYPTO_MSCAPI])
11095 elif test "$ENABLE_NSS" = TRUE; then
11096 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11097 AC_DEFINE([USE_CRYPTO_NSS])
11101 dnl ===================================================================
11102 dnl Check for system redland
11103 dnl ===================================================================
11104 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11105 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11106 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11107 if test "$with_system_redland" = "yes"; then
11108 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11109 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11115 AC_SUBST(RAPTOR_MAJOR)
11116 AC_SUBST(RASQAL_MAJOR)
11117 AC_SUBST(REDLAND_MAJOR)
11119 dnl ===================================================================
11120 dnl Check for system hunspell
11121 dnl ===================================================================
11122 AC_MSG_CHECKING([which libhunspell to use])
11123 if test "$with_system_hunspell" = "yes"; then
11124 AC_MSG_RESULT([external])
11125 SYSTEM_HUNSPELL=TRUE
11126 AC_LANG_PUSH([C++])
11127 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11128 if test "$HUNSPELL_PC" != "TRUE"; then
11129 AC_CHECK_HEADER(hunspell.hxx, [],
11131 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11132 [AC_MSG_ERROR(hunspell headers not found.)], [])
11134 AC_CHECK_LIB([hunspell], [main], [:],
11135 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11136 HUNSPELL_LIBS=-lhunspell
11139 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11140 FilterLibs "${HUNSPELL_LIBS}"
11141 HUNSPELL_LIBS="${filteredlibs}"
11143 AC_MSG_RESULT([internal])
11145 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11146 if test "$COM" = "MSC"; then
11147 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11149 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11151 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11153 AC_SUBST(SYSTEM_HUNSPELL)
11154 AC_SUBST(HUNSPELL_CFLAGS)
11155 AC_SUBST(HUNSPELL_LIBS)
11157 dnl ===================================================================
11158 dnl Check for system zxing
11159 dnl ===================================================================
11160 AC_MSG_CHECKING([whether to use zxing])
11161 if test "$enable_zxing" = "no"; then
11162 AC_MSG_RESULT([no])
11166 AC_MSG_RESULT([yes])
11168 AC_MSG_CHECKING([which libzxing to use])
11169 if test "$with_system_zxing" = "yes"; then
11170 AC_MSG_RESULT([external])
11173 AC_LANG_PUSH([C++])
11174 save_CXXFLAGS=$CXXFLAGS
11177 for i in $CPLUS_INCLUDE_PATH /usr/include; do
11178 dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11179 dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11180 dnl unsetting follows the advice at <https://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11181 dnl a=commitdiff;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11182 dnl unsetting IFS."):
11184 dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11185 dnl ignore them here:
11186 if test -z "$i"; then
11189 dnl TODO: White space in $i would cause problems:
11190 CXXFLAGS="$save_CXXFLAGS ${CXXFLAGS_CXX11} -I$i/ZXing"
11191 AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11192 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11194 CXXFLAGS=$save_CXXFLAGS
11195 if test -z "$ZXING_CFLAGS"; then
11196 AC_MSG_ERROR(zxing headers not found.)
11198 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11199 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11200 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11202 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11203 FilterLibs "${ZXING_LIBS}"
11204 ZXING_LIBS="${filteredlibs}"
11206 AC_MSG_RESULT([internal])
11208 BUILD_TYPE="$BUILD_TYPE ZXING"
11210 if test "$ENABLE_ZXING" = TRUE; then
11211 AC_DEFINE(ENABLE_ZXING)
11214 AC_SUBST(SYSTEM_ZXING)
11215 AC_SUBST(ENABLE_ZXING)
11216 AC_SUBST(ZXING_CFLAGS)
11217 AC_SUBST(ZXING_LIBS)
11219 dnl ===================================================================
11220 dnl Check for system box2d
11221 dnl ===================================================================
11222 AC_MSG_CHECKING([which box2d to use])
11223 if test "$with_system_box2d" = "yes"; then
11224 AC_MSG_RESULT([external])
11226 AC_LANG_PUSH([C++])
11227 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11228 [BOX2D_H_FOUND='FALSE'])
11229 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11231 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11233 # fail this. there's no other alternative to check when we are here.
11234 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11235 [AC_MSG_ERROR(box2d headers not found.)])
11237 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11239 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11240 [ AC_MSG_ERROR(box2d library not found.) ], [])
11241 BOX2D_LIBS=-l$_BOX2D_LIB
11243 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11244 FilterLibs "${BOX2D_LIBS}"
11245 BOX2D_LIBS="${filteredlibs}"
11247 AC_MSG_RESULT([internal])
11249 BUILD_TYPE="$BUILD_TYPE BOX2D"
11251 AC_SUBST(SYSTEM_BOX2D)
11252 AC_SUBST(BOX2D_CFLAGS)
11253 AC_SUBST(BOX2D_LIBS)
11255 dnl ===================================================================
11256 dnl Checking for altlinuxhyph
11257 dnl ===================================================================
11258 AC_MSG_CHECKING([which altlinuxhyph to use])
11259 if test "$with_system_altlinuxhyph" = "yes"; then
11260 AC_MSG_RESULT([external])
11262 AC_CHECK_HEADER(hyphen.h, [],
11263 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11264 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11265 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11266 [#include <hyphen.h>])
11267 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11268 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11269 if test -z "$HYPHEN_LIB"; then
11270 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11271 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11273 if test -z "$HYPHEN_LIB"; then
11274 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11275 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11278 AC_MSG_RESULT([internal])
11280 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11281 if test "$COM" = "MSC"; then
11282 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11284 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11287 AC_SUBST(SYSTEM_HYPH)
11288 AC_SUBST(HYPHEN_LIB)
11290 dnl ===================================================================
11291 dnl Checking for mythes
11292 dnl ===================================================================
11293 AC_MSG_CHECKING([which mythes to use])
11294 if test "$with_system_mythes" = "yes"; then
11295 AC_MSG_RESULT([external])
11297 AC_LANG_PUSH([C++])
11298 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11299 if test "$MYTHES_PKGCONFIG" = "no"; then
11300 AC_CHECK_HEADER(mythes.hxx, [],
11301 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11302 AC_CHECK_LIB([mythes-1.2], [main], [:],
11303 [ MYTHES_FOUND=no], [])
11304 if test "$MYTHES_FOUND" = "no"; then
11305 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11306 [ MYTHES_FOUND=no], [])
11308 if test "$MYTHES_FOUND" = "no"; then
11309 AC_MSG_ERROR([mythes library not found!.])
11313 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11314 FilterLibs "${MYTHES_LIBS}"
11315 MYTHES_LIBS="${filteredlibs}"
11317 AC_MSG_RESULT([internal])
11319 BUILD_TYPE="$BUILD_TYPE MYTHES"
11320 if test "$COM" = "MSC"; then
11321 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11323 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11326 AC_SUBST(SYSTEM_MYTHES)
11327 AC_SUBST(MYTHES_CFLAGS)
11328 AC_SUBST(MYTHES_LIBS)
11330 dnl ===================================================================
11331 dnl How should we build the linear programming solver ?
11332 dnl ===================================================================
11335 AC_MSG_CHECKING([whether to build with CoinMP])
11336 if test "$enable_coinmp" != "no"; then
11338 AC_MSG_RESULT([yes])
11339 if test "$with_system_coinmp" = "yes"; then
11341 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11342 FilterLibs "${COINMP_LIBS}"
11343 COINMP_LIBS="${filteredlibs}"
11345 BUILD_TYPE="$BUILD_TYPE COINMP"
11348 AC_MSG_RESULT([no])
11350 AC_SUBST(ENABLE_COINMP)
11351 AC_SUBST(SYSTEM_COINMP)
11352 AC_SUBST(COINMP_CFLAGS)
11353 AC_SUBST(COINMP_LIBS)
11356 AC_MSG_CHECKING([whether to build with lpsolve])
11357 if test "$enable_lpsolve" != "no"; then
11358 ENABLE_LPSOLVE=TRUE
11359 AC_MSG_RESULT([yes])
11361 AC_MSG_RESULT([no])
11363 AC_SUBST(ENABLE_LPSOLVE)
11365 if test "$ENABLE_LPSOLVE" = TRUE; then
11366 AC_MSG_CHECKING([which lpsolve to use])
11367 if test "$with_system_lpsolve" = "yes"; then
11368 AC_MSG_RESULT([external])
11369 SYSTEM_LPSOLVE=TRUE
11370 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11371 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11373 # some systems need this. Like Ubuntu...
11374 AC_CHECK_LIB(m, floor)
11375 AC_CHECK_LIB(dl, dlopen)
11376 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11377 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11380 AC_MSG_RESULT([internal])
11382 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11385 AC_SUBST(SYSTEM_LPSOLVE)
11387 dnl ===================================================================
11388 dnl Checking for libexttextcat
11389 dnl ===================================================================
11390 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11391 if test "$with_system_libexttextcat" = "yes"; then
11392 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11394 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11396 dnl ===================================================================
11397 dnl Checking for libnumbertext
11398 dnl ===================================================================
11399 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11400 if test "$with_system_libnumbertext" = "yes"; then
11401 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11402 SYSTEM_LIBNUMBERTEXT=YES
11404 SYSTEM_LIBNUMBERTEXT=
11406 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11407 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11409 dnl ***************************************
11410 dnl testing libc version for Linux...
11411 dnl ***************************************
11412 if test "$_os" = "Linux"; then
11413 AC_MSG_CHECKING([whether the libc is recent enough])
11414 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11415 #include <features.h>
11416 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11417 #error glibc >= 2.1 is required
11419 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11422 dnl =========================================
11423 dnl Check for uuidgen
11424 dnl =========================================
11425 if test "$_os" = "WINNT"; then
11426 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11427 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11428 UUIDGEN=uuidgen.exe
11431 AC_PATH_PROG([UUIDGEN], [uuidgen])
11432 if test -z "$UUIDGEN"; then
11433 AC_MSG_WARN([uuid is needed for building installation sets])
11437 dnl ***************************************
11438 dnl Checking for bison and flex
11439 dnl ***************************************
11440 AC_PATH_PROG(BISON, bison)
11441 if test -z "$BISON"; then
11442 AC_MSG_ERROR([no bison found in \$PATH, install it])
11444 AC_MSG_CHECKING([the bison version])
11445 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11446 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11447 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11450 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]
11451 dnl typedef union YYSTYPE
11454 dnl while at least 3.4.1 is know to be good:
11455 if test "$COMPILER_PLUGINS" = TRUE; then
11456 if test "$_bison_longver" -lt 2004; then
11457 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11460 if test "$_bison_longver" -lt 2000; then
11461 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11467 AC_PATH_PROG(FLEX, flex)
11468 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11469 FLEX=`cygpath -m $FLEX`
11471 if test -z "$FLEX"; then
11472 AC_MSG_ERROR([no flex found in \$PATH, install it])
11474 AC_MSG_CHECKING([the flex version])
11475 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11476 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11477 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11482 AC_PATH_PROG(DIFF, diff)
11483 if test -z "$DIFF"; then
11484 AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11488 AC_PATH_PROG(UNIQ, uniq)
11489 if test -z "$UNIQ"; then
11490 AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11494 dnl ***************************************
11495 dnl Checking for patch
11496 dnl ***************************************
11497 AC_PATH_PROG(PATCH, patch)
11498 if test -z "$PATCH"; then
11499 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11502 dnl On Solaris or macOS, check if --with-gnu-patch was used
11503 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11504 if test -z "$with_gnu_patch"; then
11507 if test -x "$with_gnu_patch"; then
11508 GNUPATCH=$with_gnu_patch
11510 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11514 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11515 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11516 AC_MSG_RESULT([yes])
11518 if $GNUPATCH --version | grep "2\.0-.*-Apple" >/dev/null 2>/dev/null; then
11519 AC_MSG_RESULT([no, but accepted (Apple patch)])
11520 add_warning "patch utility is not GNU patch. Apple's patch should work OK, but it might experience issues where GNU patch doesn't."
11522 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11529 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11530 GNUPATCH=`cygpath -m $GNUPATCH`
11533 dnl We also need to check for --with-gnu-cp
11535 if test -z "$with_gnu_cp"; then
11536 # check the place where the good stuff is hidden on Solaris...
11537 if test -x /usr/gnu/bin/cp; then
11538 GNUCP=/usr/gnu/bin/cp
11540 AC_PATH_PROGS(GNUCP, gnucp cp)
11542 if test -z $GNUCP; then
11543 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11546 if test -x "$with_gnu_cp"; then
11549 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11553 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11554 GNUCP=`cygpath -m $GNUCP`
11557 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11558 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11559 AC_MSG_RESULT([yes])
11560 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11561 AC_MSG_RESULT([yes])
11563 case "$build_os" in
11564 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11567 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11570 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11579 dnl ***************************************
11580 dnl testing assembler path
11581 dnl ***************************************
11583 if test "$_os" = "WINNT"; then
11584 case "$WIN_HOST_ARCH" in
11585 x86) assembler=ml.exe ;;
11586 x64) assembler=ml64.exe ;;
11587 arm64) assembler=armasm64.exe ;;
11590 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11591 if test -f "$MSVC_HOST_PATH/$assembler"; then
11592 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11593 AC_MSG_RESULT([$ML_EXE])
11595 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11601 dnl ===================================================================
11602 dnl We need zip and unzip
11603 dnl ===================================================================
11604 AC_PATH_PROG(ZIP, zip)
11605 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11606 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11607 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],,)
11610 AC_PATH_PROG(UNZIP, unzip)
11611 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11613 dnl ===================================================================
11614 dnl Zip must be a specific type for different build types.
11615 dnl ===================================================================
11616 if test $build_os = cygwin; then
11617 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11618 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11622 dnl ===================================================================
11623 dnl We need touch with -h option support.
11624 dnl ===================================================================
11625 AC_PATH_PROG(TOUCH, touch)
11626 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11627 touch "$WARNINGS_FILE"
11628 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11629 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],,)
11632 dnl ===================================================================
11633 dnl Check for system epoxy
11634 dnl ===================================================================
11635 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11636 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11638 dnl ===================================================================
11639 dnl Set vcl option: coordinate device in double or sal_Int32
11640 dnl ===================================================================
11642 AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11643 if test "$enable_float_device_pixel" = yes; then
11644 AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11645 AC_MSG_RESULT([double])
11647 AC_MSG_RESULT([sal_Int32])
11650 dnl ===================================================================
11651 dnl Show which vclplugs will be built.
11652 dnl ===================================================================
11655 libo_ENABLE_VCLPLUG([gen])
11656 libo_ENABLE_VCLPLUG([gtk3])
11657 libo_ENABLE_VCLPLUG([gtk3_kde5])
11658 libo_ENABLE_VCLPLUG([gtk4])
11659 libo_ENABLE_VCLPLUG([kf5])
11660 libo_ENABLE_VCLPLUG([qt5])
11661 libo_ENABLE_VCLPLUG([qt6])
11663 if test "$_os" = "WINNT"; then
11665 elif test "$_os" = "Darwin"; then
11667 elif test "$_os" = "iOS"; then
11669 elif test "$_os" = Android; then
11673 build_vcl_plugins="$R"
11674 if test -z "$build_vcl_plugins"; then
11675 build_vcl_plugins=" none"
11677 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11679 AC_SUBST([VCL_PLUGIN_INFO])
11681 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11682 AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11685 dnl ===================================================================
11686 dnl Check for GTK libraries
11687 dnl ===================================================================
11691 ENABLE_GTKTILEDVIEWER=""
11692 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11693 if test "$with_system_cairo" = no; then
11694 add_warning 'Non-system cairo combined with gtk3 is known to cause trouble (eg. broken image in the splashscreen). Use --with-system-cairo unless you know what you are doing.'
11696 : ${with_system_cairo:=yes}
11697 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)
11698 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11699 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11700 FilterLibs "${GTK3_LIBS}"
11701 GTK3_LIBS="${filteredlibs}"
11703 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11704 if test "$with_system_epoxy" != "yes"; then
11705 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11706 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11707 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11709 elif test -n "$with_gtk3_build" -a "$OS" = "WNT"; then
11710 PathFormat "${with_gtk3_build}/lib/pkgconfig"
11711 if test "$build_os" = "cygwin"; then
11712 dnl cygwin's pkg-config does not recognize "C:/..."-style paths, only "/cygdrive/c/..."
11713 formatted_path_unix=`cygpath -au "$formatted_path_unix"`
11716 PKG_CONFIG_PATH="$formatted_path_unix"; export PKG_CONFIG_PATH
11717 PKG_CHECK_MODULES(GTK3, cairo gdk-3.0 gio-2.0 glib-2.0 gobject-2.0 gtk+-3.0)
11718 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11719 FilterLibs "${GTK3_LIBS}"
11720 GTK3_LIBS="${filteredlibs}"
11721 ENABLE_GTKTILEDVIEWER="yes"
11723 AC_SUBST(GTK3_LIBS)
11724 AC_SUBST(GTK3_CFLAGS)
11725 AC_SUBST(ENABLE_GTKTILEDVIEWER)
11729 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11730 if test "$with_system_cairo" = no; then
11731 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11733 : ${with_system_cairo:=yes}
11734 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11735 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11736 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11737 FilterLibs "${GTK4_LIBS}"
11738 GTK4_LIBS="${filteredlibs}"
11740 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11741 if test "$with_system_epoxy" != "yes"; then
11742 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11743 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11744 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11747 AC_SUBST(GTK4_LIBS)
11748 AC_SUBST(GTK4_CFLAGS)
11750 if test "$enable_introspection" = yes; then
11751 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11752 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11754 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11758 dnl ===================================================================
11759 dnl check for dbus support
11760 dnl ===================================================================
11764 DBUS_GLIB_CFLAGS=""
11768 if test "$enable_dbus" = "no"; then
11772 AC_MSG_CHECKING([whether to enable DBUS support])
11773 if test "$test_dbus" = "yes"; then
11775 AC_MSG_RESULT([yes])
11776 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11777 AC_DEFINE(ENABLE_DBUS)
11778 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11779 FilterLibs "${DBUS_LIBS}"
11780 DBUS_LIBS="${filteredlibs}"
11782 # Glib is needed for BluetoothServer
11783 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11784 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11786 DBUS_HAVE_GLIB="TRUE"
11787 AC_DEFINE(DBUS_HAVE_GLIB,1)
11789 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11792 AC_MSG_RESULT([no])
11795 AC_SUBST(ENABLE_DBUS)
11796 AC_SUBST(DBUS_CFLAGS)
11797 AC_SUBST(DBUS_LIBS)
11798 AC_SUBST(DBUS_GLIB_CFLAGS)
11799 AC_SUBST(DBUS_GLIB_LIBS)
11800 AC_SUBST(DBUS_HAVE_GLIB)
11802 AC_MSG_CHECKING([whether to enable Impress remote control])
11803 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11804 AC_MSG_RESULT([yes])
11805 ENABLE_SDREMOTE=TRUE
11806 SDREMOTE_ENTITLEMENT=" <key>com.apple.security.network.server</key>
11808 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11810 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11811 # The Bluetooth code doesn't compile with macOS SDK 10.15
11812 if test "$enable_sdremote_bluetooth" = yes; then
11813 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11815 add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11816 enable_sdremote_bluetooth=no
11818 # If not explicitly enabled or disabled, default
11819 if test -z "$enable_sdremote_bluetooth"; then
11822 # Default to yes for these
11823 enable_sdremote_bluetooth=yes
11827 enable_sdremote_bluetooth=no
11831 # $enable_sdremote_bluetooth is guaranteed non-empty now
11833 if test "$enable_sdremote_bluetooth" != "no"; then
11834 if test "$OS" = "LINUX"; then
11835 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11836 AC_MSG_RESULT([yes])
11837 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11838 dnl ===================================================================
11839 dnl Check for system bluez
11840 dnl ===================================================================
11841 AC_MSG_CHECKING([which Bluetooth header to use])
11842 if test "$with_system_bluez" = "yes"; then
11843 AC_MSG_RESULT([external])
11844 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11845 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11848 AC_MSG_RESULT([internal])
11852 AC_MSG_RESULT([no, dbus disabled])
11853 ENABLE_SDREMOTE_BLUETOOTH=
11857 AC_MSG_RESULT([yes])
11858 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11860 SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11861 <key>com.apple.security.device.bluetooth</key>
11865 AC_MSG_RESULT([no])
11866 ENABLE_SDREMOTE_BLUETOOTH=
11872 AC_MSG_RESULT([no])
11874 AC_SUBST(ENABLE_SDREMOTE)
11875 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11876 AC_SUBST(SDREMOTE_ENTITLEMENT)
11877 AC_SUBST(SYSTEM_BLUEZ)
11879 dnl ===================================================================
11880 dnl Check whether to enable GIO support
11881 dnl ===================================================================
11882 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11883 AC_MSG_CHECKING([whether to enable GIO support])
11884 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11885 dnl Need at least 2.26 for the dbus support.
11886 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11887 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11888 if test "$ENABLE_GIO" = "TRUE"; then
11889 AC_DEFINE(ENABLE_GIO)
11890 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11891 FilterLibs "${GIO_LIBS}"
11892 GIO_LIBS="${filteredlibs}"
11895 AC_MSG_RESULT([no])
11898 AC_SUBST(ENABLE_GIO)
11899 AC_SUBST(GIO_CFLAGS)
11903 dnl ===================================================================
11905 SPLIT_APP_MODULES=""
11906 if test "$enable_split_app_modules" = "yes"; then
11907 SPLIT_APP_MODULES="TRUE"
11909 AC_SUBST(SPLIT_APP_MODULES)
11911 SPLIT_OPT_FEATURES=""
11912 if test "$enable_split_opt_features" = "yes"; then
11913 SPLIT_OPT_FEATURES="TRUE"
11915 AC_SUBST(SPLIT_OPT_FEATURES)
11917 dnl ===================================================================
11918 dnl Check whether the GStreamer libraries are available.
11919 dnl ===================================================================
11921 ENABLE_GSTREAMER_1_0=""
11923 if test "$test_gstreamer_1_0" = yes; then
11925 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11926 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11927 ENABLE_GSTREAMER_1_0="TRUE"
11928 AC_MSG_RESULT([yes])
11929 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11930 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11931 FilterLibs "${GSTREAMER_1_0_LIBS}"
11932 GSTREAMER_1_0_LIBS="${filteredlibs}"
11933 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11935 AC_MSG_RESULT([no])
11938 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11939 AC_SUBST(GSTREAMER_1_0_LIBS)
11940 AC_SUBST(ENABLE_GSTREAMER_1_0)
11942 ENABLE_OPENGL_TRANSITIONS=
11943 ENABLE_OPENGL_CANVAS=
11944 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11946 elif test "$_os" = "Darwin"; then
11947 # We use frameworks on macOS, no need for detail checks
11948 ENABLE_OPENGL_TRANSITIONS=TRUE
11949 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11950 ENABLE_OPENGL_CANVAS=TRUE
11951 elif test $_os = WINNT; then
11952 ENABLE_OPENGL_TRANSITIONS=TRUE
11953 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11954 ENABLE_OPENGL_CANVAS=TRUE
11956 if test "$USING_X11" = TRUE; then
11957 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11958 ENABLE_OPENGL_TRANSITIONS=TRUE
11959 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11960 ENABLE_OPENGL_CANVAS=TRUE
11964 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11965 AC_SUBST(ENABLE_OPENGL_CANVAS)
11967 dnl =================================================
11968 dnl Check whether to build with OpenCL support.
11969 dnl =================================================
11971 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11972 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11973 # platform (optional at run-time, used through clew).
11974 BUILD_TYPE="$BUILD_TYPE OPENCL"
11975 AC_DEFINE(HAVE_FEATURE_OPENCL)
11978 dnl =================================================
11979 dnl Check whether to build with dconf support.
11980 dnl =================================================
11982 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11983 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11984 if test "$enable_dconf" = yes; then
11985 AC_MSG_ERROR([dconf not found])
11990 AC_MSG_CHECKING([whether to enable dconf])
11991 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11995 AC_MSG_RESULT([no])
11998 AC_DEFINE(ENABLE_DCONF)
11999 AC_MSG_RESULT([yes])
12001 AC_SUBST([DCONF_CFLAGS])
12002 AC_SUBST([DCONF_LIBS])
12003 AC_SUBST([ENABLE_DCONF])
12006 AC_MSG_CHECKING([whether to build the PDF import feature])
12008 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12009 AC_MSG_RESULT([yes])
12010 ENABLE_PDFIMPORT=TRUE
12011 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12013 AC_MSG_RESULT([no])
12017 AC_MSG_CHECKING([whether to build PDFium])
12019 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12020 AC_MSG_RESULT([yes])
12022 BUILD_TYPE="$BUILD_TYPE PDFIUM"
12024 AC_MSG_RESULT([no])
12026 AC_SUBST(ENABLE_PDFIUM)
12028 if test "$ENABLE_PDFIUM" = "TRUE"; then
12029 AC_MSG_CHECKING([which OpenJPEG library to use])
12030 if test "$with_system_openjpeg" = "yes"; then
12031 SYSTEM_OPENJPEG2=TRUE
12032 AC_MSG_RESULT([external])
12033 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12034 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12035 FilterLibs "${OPENJPEG2_LIBS}"
12036 OPENJPEG2_LIBS="${filteredlibs}"
12038 SYSTEM_OPENJPEG2=FALSE
12039 AC_MSG_RESULT([internal])
12042 AC_MSG_CHECKING([which Abseil library to use])
12043 if test "$with_system_abseil" = "yes"; then
12044 AC_MSG_RESULT([external])
12046 AC_LANG_PUSH([C++])
12047 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12048 [AC_MSG_ERROR(abseil headers not found.)], [])
12049 AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12050 [AC_MSG_ERROR(abseil headers not found.)], [])
12051 AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12052 [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12053 AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12054 [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12055 ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12057 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12058 FilterLibs "${ABSEIL_LIBS}"
12059 ABSEIL_LIBS="${filteredlibs}"
12061 AC_MSG_RESULT([internal])
12064 AC_SUBST(SYSTEM_OPENJPEG2)
12065 AC_SUBST(SYSTEM_ABSEIL)
12066 AC_SUBST(ABSEIL_CFLAGS)
12067 AC_SUBST(ABSEIL_LIBS)
12069 dnl ===================================================================
12070 dnl Check for poppler
12071 dnl ===================================================================
12073 AC_MSG_CHECKING([whether to build Poppler])
12074 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12075 AC_MSG_RESULT([yes])
12076 ENABLE_POPPLER=TRUE
12077 AC_DEFINE(HAVE_FEATURE_POPPLER)
12079 AC_MSG_RESULT([no])
12081 AC_SUBST(ENABLE_POPPLER)
12083 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12084 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12087 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12088 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12091 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12092 dnl ===================================================================
12093 dnl Check for system poppler
12094 dnl ===================================================================
12095 AC_MSG_CHECKING([which PDF import poppler to use])
12096 if test "$with_system_poppler" = "yes"; then
12097 AC_MSG_RESULT([external])
12098 SYSTEM_POPPLER=TRUE
12099 PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12100 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12101 FilterLibs "${POPPLER_LIBS}"
12102 POPPLER_LIBS="${filteredlibs}"
12104 AC_MSG_RESULT([internal])
12106 BUILD_TYPE="$BUILD_TYPE POPPLER"
12108 AC_DEFINE([ENABLE_PDFIMPORT],1)
12110 AC_SUBST(ENABLE_PDFIMPORT)
12111 AC_SUBST(SYSTEM_POPPLER)
12112 AC_SUBST(POPPLER_CFLAGS)
12113 AC_SUBST(POPPLER_LIBS)
12117 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12118 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12119 if test "$SYSTEM_FREETYPE" = TRUE; then
12120 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12121 [skia_freetype_ok=yes],
12122 [skia_freetype_ok=no])
12123 else # internal is ok
12124 skia_freetype_ok=yes
12126 AC_MSG_CHECKING([whether to build Skia])
12127 if test "$skia_freetype_ok" = "yes"; then
12128 if test "$enable_skia" = "debug"; then
12129 AC_MSG_RESULT([yes (debug)])
12130 ENABLE_SKIA_DEBUG=TRUE
12132 AC_MSG_RESULT([yes])
12136 if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12137 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12140 AC_DEFINE(HAVE_FEATURE_SKIA)
12141 BUILD_TYPE="$BUILD_TYPE SKIA"
12143 if test "$OS" = "MACOSX"; then
12144 AC_DEFINE(SK_SUPPORT_GPU,1)
12145 AC_DEFINE(SK_METAL,1)
12149 AC_DEFINE(SK_SUPPORT_GPU,1)
12150 AC_DEFINE(SK_VULKAN,1)
12155 AC_MSG_RESULT([no (freetype too old)])
12156 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12160 AC_MSG_CHECKING([whether to build Skia])
12161 AC_MSG_RESULT([no])
12163 AC_SUBST(ENABLE_SKIA)
12164 AC_SUBST(ENABLE_SKIA_DEBUG)
12166 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12167 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12168 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12169 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12170 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12171 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12172 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12173 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12174 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12175 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12176 HAVE_LO_CLANG_DLLEXPORTINLINES=
12178 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12179 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12180 AC_MSG_CHECKING([for Clang])
12181 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12183 if test "$_os" = "WINNT"; then
12184 AC_MSG_CHECKING([for clang-cl])
12185 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12186 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12187 elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12188 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12189 elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12190 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12192 if test -n "$LO_CLANG_CC"; then
12193 dnl explicitly set -m32/-m64
12194 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12195 LO_CLANG_CXX="$LO_CLANG_CC"
12196 AC_MSG_RESULT([$LO_CLANG_CC])
12198 AC_MSG_RESULT([no])
12201 AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12202 echo "#include <stdlib.h>" > conftest.c
12203 LO_CLANG_SHOWINCLUDES_PREFIX=`VSLANG=1033 $LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12204 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12205 rm -f conftest.c conftest.obj
12206 if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12207 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12209 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12212 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12213 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12216 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12217 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12218 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12219 if test "$clang2_ver" -lt 50002; then
12220 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12225 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12227 CXX="$LO_CLANG_CXX"
12228 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12229 AC_LANG_PUSH([C++])
12230 save_CXXFLAGS=$CXXFLAGS
12231 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12232 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12233 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12234 AC_MSG_RESULT([yes])
12235 ], [AC_MSG_RESULT([no])])
12236 CXXFLAGS=$save_CXXFLAGS
12239 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12240 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.])
12243 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12244 # Skia is the default on Windows and Mac, so hard-require Clang.
12245 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12246 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12247 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12249 AC_MSG_WARN([Clang compiler not found.])
12254 CXX="$LO_CLANG_CXX"
12255 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12258 flag_sse41=-msse4.1
12259 flag_sse42=-msse4.2
12262 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12263 flag_avx512f=-mavx512f
12267 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12268 AC_LANG_PUSH([C++])
12269 save_CXXFLAGS=$CXXFLAGS
12270 CXXFLAGS="$CXXFLAGS $flag_sse2"
12271 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12272 #include <emmintrin.h>
12274 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12275 c = _mm_xor_si128 (a, b);
12279 [can_compile_sse2=yes],
12280 [can_compile_sse2=no])
12282 CXXFLAGS=$save_CXXFLAGS
12283 AC_MSG_RESULT([${can_compile_sse2}])
12284 if test "${can_compile_sse2}" = "yes" ; then
12285 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12288 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12289 AC_LANG_PUSH([C++])
12290 save_CXXFLAGS=$CXXFLAGS
12291 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12292 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12293 #include <tmmintrin.h>
12295 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12296 c = _mm_maddubs_epi16 (a, b);
12300 [can_compile_ssse3=yes],
12301 [can_compile_ssse3=no])
12303 CXXFLAGS=$save_CXXFLAGS
12304 AC_MSG_RESULT([${can_compile_ssse3}])
12305 if test "${can_compile_ssse3}" = "yes" ; then
12306 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12309 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12310 AC_LANG_PUSH([C++])
12311 save_CXXFLAGS=$CXXFLAGS
12312 CXXFLAGS="$CXXFLAGS $flag_sse41"
12313 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12314 #include <smmintrin.h>
12316 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12317 c = _mm_cmpeq_epi64 (a, b);
12321 [can_compile_sse41=yes],
12322 [can_compile_sse41=no])
12324 CXXFLAGS=$save_CXXFLAGS
12325 AC_MSG_RESULT([${can_compile_sse41}])
12326 if test "${can_compile_sse41}" = "yes" ; then
12327 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12330 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12331 AC_LANG_PUSH([C++])
12332 save_CXXFLAGS=$CXXFLAGS
12333 CXXFLAGS="$CXXFLAGS $flag_sse42"
12334 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12335 #include <nmmintrin.h>
12337 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12338 c = _mm_cmpgt_epi64 (a, b);
12342 [can_compile_sse42=yes],
12343 [can_compile_sse42=no])
12345 CXXFLAGS=$save_CXXFLAGS
12346 AC_MSG_RESULT([${can_compile_sse42}])
12347 if test "${can_compile_sse42}" = "yes" ; then
12348 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12351 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12352 AC_LANG_PUSH([C++])
12353 save_CXXFLAGS=$CXXFLAGS
12354 CXXFLAGS="$CXXFLAGS $flag_avx"
12355 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12356 #include <immintrin.h>
12358 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12359 c = _mm256_xor_ps(a, b);
12363 [can_compile_avx=yes],
12364 [can_compile_avx=no])
12366 CXXFLAGS=$save_CXXFLAGS
12367 AC_MSG_RESULT([${can_compile_avx}])
12368 if test "${can_compile_avx}" = "yes" ; then
12369 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12372 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12373 AC_LANG_PUSH([C++])
12374 save_CXXFLAGS=$CXXFLAGS
12375 CXXFLAGS="$CXXFLAGS $flag_avx2"
12376 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12377 #include <immintrin.h>
12379 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12380 c = _mm256_maddubs_epi16(a, b);
12384 [can_compile_avx2=yes],
12385 [can_compile_avx2=no])
12387 CXXFLAGS=$save_CXXFLAGS
12388 AC_MSG_RESULT([${can_compile_avx2}])
12389 if test "${can_compile_avx2}" = "yes" ; then
12390 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12393 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12394 AC_LANG_PUSH([C++])
12395 save_CXXFLAGS=$CXXFLAGS
12396 CXXFLAGS="$CXXFLAGS $flag_avx512"
12397 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12398 #include <immintrin.h>
12400 __m512i a = _mm512_loadu_si512(0);
12401 __m512d v1 = _mm512_load_pd(0);
12402 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12403 __m512d v2 = _mm512_abs_pd(v1);
12407 [can_compile_avx512=yes],
12408 [can_compile_avx512=no])
12410 CXXFLAGS=$save_CXXFLAGS
12411 AC_MSG_RESULT([${can_compile_avx512}])
12412 if test "${can_compile_avx512}" = "yes" ; then
12413 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12414 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12417 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12418 AC_LANG_PUSH([C++])
12419 save_CXXFLAGS=$CXXFLAGS
12420 CXXFLAGS="$CXXFLAGS $flag_f16c"
12421 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12422 #include <immintrin.h>
12424 __m128i a = _mm_set1_epi32 (0);
12426 c = _mm_cvtph_ps(a);
12430 [can_compile_f16c=yes],
12431 [can_compile_f16c=no])
12433 CXXFLAGS=$save_CXXFLAGS
12434 AC_MSG_RESULT([${can_compile_f16c}])
12435 if test "${can_compile_f16c}" = "yes" ; then
12436 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12439 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12440 AC_LANG_PUSH([C++])
12441 save_CXXFLAGS=$CXXFLAGS
12442 CXXFLAGS="$CXXFLAGS $flag_fma"
12443 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12444 #include <immintrin.h>
12446 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12447 d = _mm256_fmadd_ps(a, b, c);
12451 [can_compile_fma=yes],
12452 [can_compile_fma=no])
12454 CXXFLAGS=$save_CXXFLAGS
12455 AC_MSG_RESULT([${can_compile_fma}])
12456 if test "${can_compile_fma}" = "yes" ; then
12457 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12464 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12466 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12467 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12471 save_CFLAGS=$CFLAGS
12472 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12473 dnl an empty program will do, we're checking the compiler flags
12474 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12475 [use_ccache=yes], [use_ccache=no])
12476 CFLAGS=$save_CFLAGS
12478 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12479 AC_MSG_RESULT([yes])
12481 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12482 AC_MSG_RESULT([no])
12486 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12487 AC_LANG_PUSH([C++])
12489 CXX="$LO_CLANG_CXX"
12490 save_CXXFLAGS=$CXXFLAGS
12491 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12492 dnl an empty program will do, we're checking the compiler flags
12493 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12494 [use_ccache=yes], [use_ccache=no])
12495 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12496 AC_MSG_RESULT([yes])
12498 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12499 AC_MSG_RESULT([no])
12501 CXXFLAGS=$save_CXXFLAGS
12506 AC_SUBST(LO_CLANG_CC)
12507 AC_SUBST(LO_CLANG_CXX)
12508 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12509 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12510 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12511 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12512 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12513 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12514 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12515 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12516 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12517 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12518 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12519 AC_SUBST(CLANG_USE_LD)
12520 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12524 AC_MSG_CHECKING([whether to enable gpgmepp])
12525 if test "$enable_gpgmepp" = no; then
12526 AC_MSG_RESULT([no])
12527 elif test "$enable_mpl_subset" = "yes"; then
12528 AC_MSG_RESULT([no (MPL only])
12529 elif test "$enable_fuzzers" = "yes"; then
12530 AC_MSG_RESULT([no (oss-fuzz)])
12531 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12532 AC_MSG_RESULT([yes])
12533 dnl ===================================================================
12534 dnl Check for system gpgme
12535 dnl ===================================================================
12536 AC_MSG_CHECKING([which gpgmepp to use])
12537 if test "$with_system_gpgmepp" = "yes"; then
12538 AC_MSG_RESULT([external])
12539 SYSTEM_GPGMEPP=TRUE
12541 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12542 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12543 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12544 AC_CHECK_HEADER(gpgme.h, [],
12545 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12546 AC_CHECK_LIB(gpgmepp, main, [],
12547 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12548 GPGMEPP_LIBS=-lgpgmepp
12550 AC_MSG_RESULT([internal])
12551 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12553 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12554 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12555 if test "$_os" != "WINNT"; then
12556 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12557 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12560 ENABLE_GPGMEPP=TRUE
12561 AC_DEFINE([HAVE_FEATURE_GPGME])
12562 AC_PATH_PROG(GPG, gpg)
12563 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12564 # so let's exclude that manually for the moment
12565 if test -n "$GPG" -a "$_os" != "WINNT"; then
12566 # make sure we not only have a working gpgme, but a full working
12567 # gpg installation to run OpenPGP signature verification
12568 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12570 if test "$_os" = "Linux"; then
12572 AC_MSG_CHECKING([for /run/user/$uid])
12573 if test -d /run/user/$uid; then
12574 AC_MSG_RESULT([yes])
12575 AC_PATH_PROG(GPGCONF, gpgconf)
12577 # Older versions of gpgconf are not working as expected, since
12578 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12579 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12580 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12581 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12582 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12583 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12584 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12585 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12586 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12587 if $GPGCONF --dump-options > /dev/null ; then
12588 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12589 AC_MSG_RESULT([yes])
12590 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12591 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12593 AC_MSG_RESULT([no])
12596 AC_MSG_RESULT([no. missing or broken gpgconf?])
12599 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12602 AC_MSG_RESULT([no])
12606 AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12608 AC_SUBST(ENABLE_GPGMEPP)
12609 AC_SUBST(SYSTEM_GPGMEPP)
12610 AC_SUBST(GPG_ERROR_CFLAGS)
12611 AC_SUBST(GPG_ERROR_LIBS)
12612 AC_SUBST(LIBASSUAN_CFLAGS)
12613 AC_SUBST(LIBASSUAN_LIBS)
12614 AC_SUBST(GPGMEPP_CFLAGS)
12615 AC_SUBST(GPGMEPP_LIBS)
12617 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12618 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12619 AC_MSG_RESULT([yes])
12620 ENABLE_MEDIAWIKI=TRUE
12621 BUILD_TYPE="$BUILD_TYPE XSLTML"
12622 if test "x$with_java" = "xno"; then
12623 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12626 AC_MSG_RESULT([no])
12628 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12630 AC_SUBST(ENABLE_MEDIAWIKI)
12632 AC_MSG_CHECKING([whether to build the Report Builder])
12633 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12634 AC_MSG_RESULT([yes])
12635 ENABLE_REPORTBUILDER=TRUE
12636 AC_MSG_CHECKING([which jfreereport libs to use])
12637 if test "$with_system_jfreereport" = "yes"; then
12638 SYSTEM_JFREEREPORT=TRUE
12639 AC_MSG_RESULT([external])
12640 if test -z $SAC_JAR; then
12641 SAC_JAR=/usr/share/java/sac.jar
12643 if ! test -f $SAC_JAR; then
12644 AC_MSG_ERROR(sac.jar not found.)
12647 if test -z $LIBXML_JAR; then
12648 if test -f /usr/share/java/libxml-1.0.0.jar; then
12649 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12650 elif test -f /usr/share/java/libxml.jar; then
12651 LIBXML_JAR=/usr/share/java/libxml.jar
12653 AC_MSG_ERROR(libxml.jar replacement not found.)
12655 elif ! test -f $LIBXML_JAR; then
12656 AC_MSG_ERROR(libxml.jar not found.)
12659 if test -z $FLUTE_JAR; then
12660 if test -f /usr/share/java/flute-1.3.0.jar; then
12661 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12662 elif test -f /usr/share/java/flute.jar; then
12663 FLUTE_JAR=/usr/share/java/flute.jar
12665 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12667 elif ! test -f $FLUTE_JAR; then
12668 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12671 if test -z $JFREEREPORT_JAR; then
12672 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12673 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12674 elif test -f /usr/share/java/flow-engine.jar; then
12675 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12677 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12679 elif ! test -f $JFREEREPORT_JAR; then
12680 AC_MSG_ERROR(jfreereport.jar not found.)
12683 if test -z $LIBLAYOUT_JAR; then
12684 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12685 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12686 elif test -f /usr/share/java/liblayout.jar; then
12687 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12689 AC_MSG_ERROR(liblayout.jar replacement not found.)
12691 elif ! test -f $LIBLAYOUT_JAR; then
12692 AC_MSG_ERROR(liblayout.jar not found.)
12695 if test -z $LIBLOADER_JAR; then
12696 if test -f /usr/share/java/libloader-1.0.0.jar; then
12697 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12698 elif test -f /usr/share/java/libloader.jar; then
12699 LIBLOADER_JAR=/usr/share/java/libloader.jar
12701 AC_MSG_ERROR(libloader.jar replacement not found.)
12703 elif ! test -f $LIBLOADER_JAR; then
12704 AC_MSG_ERROR(libloader.jar not found.)
12707 if test -z $LIBFORMULA_JAR; then
12708 if test -f /usr/share/java/libformula-0.2.0.jar; then
12709 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12710 elif test -f /usr/share/java/libformula.jar; then
12711 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12713 AC_MSG_ERROR(libformula.jar replacement not found.)
12715 elif ! test -f $LIBFORMULA_JAR; then
12716 AC_MSG_ERROR(libformula.jar not found.)
12719 if test -z $LIBREPOSITORY_JAR; then
12720 if test -f /usr/share/java/librepository-1.0.0.jar; then
12721 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12722 elif test -f /usr/share/java/librepository.jar; then
12723 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12725 AC_MSG_ERROR(librepository.jar replacement not found.)
12727 elif ! test -f $LIBREPOSITORY_JAR; then
12728 AC_MSG_ERROR(librepository.jar not found.)
12731 if test -z $LIBFONTS_JAR; then
12732 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12733 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12734 elif test -f /usr/share/java/libfonts.jar; then
12735 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12737 AC_MSG_ERROR(libfonts.jar replacement not found.)
12739 elif ! test -f $LIBFONTS_JAR; then
12740 AC_MSG_ERROR(libfonts.jar not found.)
12743 if test -z $LIBSERIALIZER_JAR; then
12744 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12745 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12746 elif test -f /usr/share/java/libserializer.jar; then
12747 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12749 AC_MSG_ERROR(libserializer.jar replacement not found.)
12751 elif ! test -f $LIBSERIALIZER_JAR; then
12752 AC_MSG_ERROR(libserializer.jar not found.)
12755 if test -z $LIBBASE_JAR; then
12756 if test -f /usr/share/java/libbase-1.0.0.jar; then
12757 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12758 elif test -f /usr/share/java/libbase.jar; then
12759 LIBBASE_JAR=/usr/share/java/libbase.jar
12761 AC_MSG_ERROR(libbase.jar replacement not found.)
12763 elif ! test -f $LIBBASE_JAR; then
12764 AC_MSG_ERROR(libbase.jar not found.)
12768 AC_MSG_RESULT([internal])
12769 SYSTEM_JFREEREPORT=
12770 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12774 AC_MSG_RESULT([no])
12775 ENABLE_REPORTBUILDER=
12776 SYSTEM_JFREEREPORT=
12778 AC_SUBST(ENABLE_REPORTBUILDER)
12779 AC_SUBST(SYSTEM_JFREEREPORT)
12781 AC_SUBST(LIBXML_JAR)
12782 AC_SUBST(FLUTE_JAR)
12783 AC_SUBST(JFREEREPORT_JAR)
12784 AC_SUBST(LIBBASE_JAR)
12785 AC_SUBST(LIBLAYOUT_JAR)
12786 AC_SUBST(LIBLOADER_JAR)
12787 AC_SUBST(LIBFORMULA_JAR)
12788 AC_SUBST(LIBREPOSITORY_JAR)
12789 AC_SUBST(LIBFONTS_JAR)
12790 AC_SUBST(LIBSERIALIZER_JAR)
12792 # scripting provider for BeanShell?
12793 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12794 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12795 AC_MSG_RESULT([yes])
12796 ENABLE_SCRIPTING_BEANSHELL=TRUE
12798 dnl ===================================================================
12799 dnl Check for system beanshell
12800 dnl ===================================================================
12801 AC_MSG_CHECKING([which beanshell to use])
12802 if test "$with_system_beanshell" = "yes"; then
12803 AC_MSG_RESULT([external])
12805 if test -z $BSH_JAR; then
12806 BSH_JAR=/usr/share/java/bsh.jar
12808 if ! test -f $BSH_JAR; then
12809 AC_MSG_ERROR(bsh.jar not found.)
12812 AC_MSG_RESULT([internal])
12814 BUILD_TYPE="$BUILD_TYPE BSH"
12817 AC_MSG_RESULT([no])
12818 ENABLE_SCRIPTING_BEANSHELL=
12819 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12821 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12822 AC_SUBST(SYSTEM_BSH)
12825 # scripting provider for JavaScript?
12826 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12827 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12828 AC_MSG_RESULT([yes])
12829 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12831 dnl ===================================================================
12832 dnl Check for system rhino
12833 dnl ===================================================================
12834 AC_MSG_CHECKING([which rhino to use])
12835 if test "$with_system_rhino" = "yes"; then
12836 AC_MSG_RESULT([external])
12838 if test -z $RHINO_JAR; then
12839 RHINO_JAR=/usr/share/java/js.jar
12841 if ! test -f $RHINO_JAR; then
12842 AC_MSG_ERROR(js.jar not found.)
12845 AC_MSG_RESULT([internal])
12847 BUILD_TYPE="$BUILD_TYPE RHINO"
12851 AC_MSG_RESULT([no])
12852 ENABLE_SCRIPTING_JAVASCRIPT=
12853 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12855 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12856 AC_SUBST(SYSTEM_RHINO)
12857 AC_SUBST(RHINO_JAR)
12859 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12860 # paths should be added to library search path. So lets put all 64-bit
12863 case "$host_cpu" in
12864 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64 | riscv64)
12865 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12866 supports_multilib="yes"
12873 dnl ===================================================================
12874 dnl QT5 Integration
12875 dnl ===================================================================
12881 QT5_GOBJECT_CFLAGS=""
12882 QT5_GOBJECT_LIBS=""
12883 QT5_HAVE_GOBJECT=""
12884 QT5_PLATFORMS_SRCDIR=""
12885 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12886 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12887 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12889 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12890 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12892 if test -n "$supports_multilib"; then
12893 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12896 qt5_test_include="QtWidgets/qapplication.h"
12897 if test "$_os" = "Emscripten"; then
12898 qt5_test_library="libQt5Widgets.a"
12900 qt5_test_library="libQt5Widgets.so"
12903 dnl Check for qmake5
12904 if test -n "$QT5DIR"; then
12905 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12907 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12909 if test "$QMAKE5" = "no"; then
12910 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12912 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12913 if test -z "$qmake5_test_ver"; then
12914 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12916 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12917 qt5_minimal_minor="6"
12918 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12919 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12921 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12925 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12926 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12927 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12928 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12930 AC_MSG_CHECKING([for Qt5 headers])
12932 for inc_dir in $qt5_incdirs; do
12933 if test -r "$inc_dir/$qt5_test_include"; then
12934 qt5_incdir="$inc_dir"
12938 AC_MSG_RESULT([$qt5_incdir])
12939 if test "x$qt5_incdir" = "xno"; then
12940 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12942 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12943 AC_LANG_PUSH([C++])
12944 save_CPPFLAGS=$CPPFLAGS
12945 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12946 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12947 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12948 CPPFLAGS=$save_CPPFLAGS
12951 AC_MSG_CHECKING([for Qt5 libraries])
12953 for lib_dir in $qt5_libdirs; do
12954 if test -r "$lib_dir/$qt5_test_library"; then
12955 qt5_libdir="$lib_dir"
12959 AC_MSG_RESULT([$qt5_libdir])
12960 if test "x$qt5_libdir" = "xno"; then
12961 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12964 if test "$_os" = "Emscripten"; then
12965 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12966 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12968 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12969 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12972 EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
12973 if ! test -x "$EMSDK_LLVM_NM"; then
12974 AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
12976 if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
12977 AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
12979 QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
12980 if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
12981 AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
12983 if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
12984 AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
12988 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12989 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12990 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12991 if test "$_os" = "Emscripten"; then
12992 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12995 if test "$USING_X11" = TRUE; then
12996 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12997 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12998 QT5_HAVE_XCB_ICCCM=1
12999 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
13001 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)])
13002 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
13004 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13005 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13007 AC_DEFINE(QT5_USING_X11)
13010 dnl Check for Meta Object Compiler
13012 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13013 if test "$MOC5" = "no"; then
13014 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13015 the root of your Qt installation by exporting QT5DIR before running "configure".])
13018 if test "$test_gstreamer_1_0" = yes; then
13019 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13021 AC_DEFINE(QT5_HAVE_GOBJECT)
13023 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13027 AC_SUBST(QT5_CFLAGS)
13030 AC_SUBST(QT5_GOBJECT_CFLAGS)
13031 AC_SUBST(QT5_GOBJECT_LIBS)
13032 AC_SUBST(QT5_HAVE_GOBJECT)
13033 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13035 dnl ===================================================================
13036 dnl QT6 Integration
13037 dnl ===================================================================
13043 QT6_PLATFORMS_SRCDIR=""
13044 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13046 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13047 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13049 if test -n "$supports_multilib"; then
13050 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13053 qt6_test_include="QtWidgets/qapplication.h"
13054 if test "$_os" = "Emscripten"; then
13055 qt6_test_library="libQt6Widgets.a"
13057 qt6_test_library="libQt6Widgets.so"
13060 dnl Check for qmake6
13061 if test -n "$QT6DIR"; then
13062 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13064 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13066 if test "$QMAKE6" = "no"; then
13067 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13069 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13070 if test -z "$qmake6_test_ver"; then
13071 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13073 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13076 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13077 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13078 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13079 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13081 AC_MSG_CHECKING([for Qt6 headers])
13083 for inc_dir in $qt6_incdirs; do
13084 if test -r "$inc_dir/$qt6_test_include"; then
13085 qt6_incdir="$inc_dir"
13089 AC_MSG_RESULT([$qt6_incdir])
13090 if test "x$qt6_incdir" = "xno"; then
13091 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13093 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13094 AC_LANG_PUSH([C++])
13095 save_CPPFLAGS=$CPPFLAGS
13096 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13097 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13098 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13099 CPPFLAGS=$save_CPPFLAGS
13102 AC_MSG_CHECKING([for Qt6 libraries])
13104 for lib_dir in $qt6_libdirs; do
13105 if test -r "$lib_dir/$qt6_test_library"; then
13106 qt6_libdir="$lib_dir"
13110 AC_MSG_RESULT([$qt6_libdir])
13111 if test "x$qt6_libdir" = "xno"; then
13112 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13115 if test "$_os" = "Emscripten"; then
13116 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13117 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13119 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13120 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13124 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13125 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13126 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13127 if test "$_os" = "Emscripten"; then
13128 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13131 if test "$USING_X11" = TRUE; then
13132 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13133 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13134 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13136 AC_DEFINE(QT6_USING_X11)
13139 dnl Check for Meta Object Compiler
13141 for lib_dir in $qt6_libdirs; do
13142 if test -z "$qt6_libexec_dirs"; then
13143 qt6_libexec_dirs="$lib_dir/libexec"
13145 qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13148 AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$qt6_libexec_dirs:$PATH])
13149 if test "$MOC6" = "no"; then
13150 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13151 the root of your Qt installation by exporting QT6DIR before running "configure".])
13154 AC_SUBST(QT6_CFLAGS)
13157 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13159 dnl ===================================================================
13160 dnl KF5 Integration
13161 dnl ===================================================================
13165 KF5_CONFIG="kf5-config"
13166 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13167 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13169 if test "$OS" = "HAIKU"; then
13170 haiku_arch="`echo $RTL_ARCH | tr X x`"
13171 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13172 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13175 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13176 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13177 if test -n "$supports_multilib"; then
13178 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13181 kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13182 kf5_test_library="libKF5KIOFileWidgets.so"
13183 kf5_libdirs="$qt5_libdir $kf5_libdirs"
13185 dnl kf5 KDE4 support compatibility installed
13186 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13187 if test "$KF5_CONFIG" != "no"; then
13188 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13189 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13192 dnl Check for KF5 headers
13193 AC_MSG_CHECKING([for KF5 headers])
13195 for kf5_check in $kf5_incdirs; do
13196 if test -r "$kf5_check/$kf5_test_include"; then
13197 kf5_incdir="$kf5_check/KF5"
13201 AC_MSG_RESULT([$kf5_incdir])
13202 if test "x$kf5_incdir" = "xno"; then
13203 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13206 dnl Check for KF5 libraries
13207 AC_MSG_CHECKING([for KF5 libraries])
13209 for kf5_check in $kf5_libdirs; do
13210 if test -r "$kf5_check/$kf5_test_library"; then
13211 kf5_libdir="$kf5_check"
13216 AC_MSG_RESULT([$kf5_libdir])
13217 if test "x$kf5_libdir" = "xno"; then
13218 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13221 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"
13222 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13223 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13225 if test "$USING_X11" = TRUE; then
13226 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13229 AC_LANG_PUSH([C++])
13230 save_CXXFLAGS=$CXXFLAGS
13231 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13232 AC_MSG_CHECKING([whether KDE is >= 5.0])
13233 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13234 #include <kcoreaddons_version.h>
13236 int main(int argc, char **argv) {
13237 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13240 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13241 CXXFLAGS=$save_CXXFLAGS
13244 AC_SUBST(KF5_CFLAGS)
13247 dnl ===================================================================
13248 dnl Test whether to include Evolution 2 support
13249 dnl ===================================================================
13250 AC_MSG_CHECKING([whether to enable evolution 2 support])
13251 if test "$enable_evolution2" = yes; then
13252 AC_MSG_RESULT([yes])
13253 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13254 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13255 FilterLibs "${GOBJECT_LIBS}"
13256 GOBJECT_LIBS="${filteredlibs}"
13257 ENABLE_EVOAB2="TRUE"
13259 AC_MSG_RESULT([no])
13261 AC_SUBST(ENABLE_EVOAB2)
13262 AC_SUBST(GOBJECT_CFLAGS)
13263 AC_SUBST(GOBJECT_LIBS)
13265 dnl ===================================================================
13266 dnl Test which themes to include
13267 dnl ===================================================================
13268 AC_MSG_CHECKING([which themes to include])
13269 # if none given use default subset of available themes
13270 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13271 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"
13275 if test "x$with_theme" != "xno"; then
13276 for theme in $with_theme; do
13278 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" ;;
13279 default) real_theme=colibre ;;
13280 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13282 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13285 AC_MSG_RESULT([$WITH_THEMES])
13286 AC_SUBST([WITH_THEMES])
13287 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13288 for theme in $with_theme; do
13290 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13295 ###############################################################################
13296 # Extensions checking
13297 ###############################################################################
13298 AC_MSG_CHECKING([for extensions integration])
13299 if test "x$enable_extension_integration" != "xno"; then
13300 WITH_EXTENSION_INTEGRATION=TRUE
13301 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13302 AC_MSG_RESULT([yes, use integration])
13304 WITH_EXTENSION_INTEGRATION=
13305 AC_MSG_RESULT([no, do not integrate])
13307 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13309 dnl Should any extra extensions be included?
13310 dnl There are standalone tests for each of these below.
13311 WITH_EXTRA_EXTENSIONS=
13312 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13314 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13315 if test "x$with_java" != "xno"; then
13316 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13319 AC_MSG_CHECKING([whether to build opens___.ttf])
13320 if test "$enable_build_opensymbol" = "yes"; then
13321 AC_MSG_RESULT([yes])
13322 AC_PATH_PROG(FONTFORGE, fontforge)
13323 if test -z "$FONTFORGE"; then
13324 AC_MSG_ERROR([fontforge not installed])
13327 AC_MSG_RESULT([no])
13328 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13330 AC_SUBST(FONTFORGE)
13332 dnl ===================================================================
13333 dnl Test whether to include fonts
13334 dnl ===================================================================
13335 AC_MSG_CHECKING([whether to include third-party fonts])
13336 if test "$with_fonts" != "no"; then
13337 AC_MSG_RESULT([yes])
13339 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13340 AC_DEFINE(HAVE_MORE_FONTS)
13342 AC_MSG_RESULT([no])
13344 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13346 AC_SUBST(WITH_FONTS)
13349 dnl ===================================================================
13350 dnl Test whether to enable online update service
13351 dnl ===================================================================
13352 AC_MSG_CHECKING([whether to enable online update])
13353 ENABLE_ONLINE_UPDATE=
13354 ENABLE_ONLINE_UPDATE_MAR=
13356 if test "$enable_online_update" = ""; then
13357 AC_MSG_RESULT([no])
13359 if test "$enable_online_update" = "mar"; then
13360 AC_MSG_RESULT([yes - MAR-based online update])
13361 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13362 if test "$with_update_config" = ""; then
13363 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13365 UPDATE_CONFIG="$with_update_config"
13366 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13367 elif test "$enable_online_update" = "yes"; then
13368 AC_MSG_RESULT([yes])
13369 ENABLE_ONLINE_UPDATE="TRUE"
13371 AC_MSG_RESULT([no])
13374 AC_SUBST(ENABLE_ONLINE_UPDATE)
13375 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13376 AC_SUBST(UPDATE_CONFIG)
13379 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13380 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13381 if test "x$with_privacy_policy_url" = "xundefined"; then
13382 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13385 AC_SUBST(PRIVACY_POLICY_URL)
13386 dnl ===================================================================
13387 dnl Test whether we need bzip2
13388 dnl ===================================================================
13390 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13391 AC_MSG_CHECKING([whether to use system bzip2])
13392 if test "$with_system_bzip2" = yes; then
13394 AC_MSG_RESULT([yes])
13395 PKG_CHECK_MODULES(BZIP2, bzip2)
13396 FilterLibs "${BZIP2_LIBS}"
13397 BZIP2_LIBS="${filteredlibs}"
13399 AC_MSG_RESULT([no])
13400 BUILD_TYPE="$BUILD_TYPE BZIP2"
13403 AC_SUBST(SYSTEM_BZIP2)
13404 AC_SUBST(BZIP2_CFLAGS)
13405 AC_SUBST(BZIP2_LIBS)
13407 dnl ===================================================================
13408 dnl Test whether to enable extension update
13409 dnl ===================================================================
13410 AC_MSG_CHECKING([whether to enable extension update])
13411 ENABLE_EXTENSION_UPDATE=
13412 if test "x$enable_extension_update" = "xno"; then
13413 AC_MSG_RESULT([no])
13415 AC_MSG_RESULT([yes])
13416 ENABLE_EXTENSION_UPDATE="TRUE"
13417 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13418 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13420 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13423 dnl ===================================================================
13424 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13425 dnl ===================================================================
13426 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13427 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13428 AC_MSG_RESULT([no])
13431 AC_MSG_RESULT([yes])
13432 ENABLE_SILENT_MSI=TRUE
13433 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13435 AC_SUBST(ENABLE_SILENT_MSI)
13437 AC_MSG_CHECKING([whether and how to use Xinerama])
13438 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13439 if test "$x_libraries" = "default_x_libraries"; then
13440 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13441 if test "x$XINERAMALIB" = x; then
13442 XINERAMALIB="/usr/lib"
13445 XINERAMALIB="$x_libraries"
13447 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13448 # we have both versions, let the user decide but use the dynamic one
13451 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13452 XINERAMA_LINK=dynamic
13454 XINERAMA_LINK=static
13456 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13457 # we have only the dynamic version
13459 XINERAMA_LINK=dynamic
13460 elif test -e "$XINERAMALIB/libXinerama.a"; then
13462 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13464 XINERAMA_LINK=static
13474 if test "$USE_XINERAMA" = "TRUE"; then
13475 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13476 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13477 [AC_MSG_ERROR(Xinerama header not found.)], [])
13478 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13479 if test "x$XEXTLIB" = x; then
13480 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13482 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13483 if test "$_os" = "FreeBSD"; then
13484 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13486 if test "$_os" = "Linux"; then
13487 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13489 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13490 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13492 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13497 AC_MSG_RESULT([no])
13499 AC_SUBST(USE_XINERAMA)
13500 AC_SUBST(XINERAMA_LINK)
13502 dnl ===================================================================
13503 dnl Test whether to build cairo or rely on the system version
13504 dnl ===================================================================
13506 if test "$test_cairo" = "yes"; then
13507 AC_MSG_CHECKING([whether to use the system cairo])
13509 : ${with_system_cairo:=$with_system_libs}
13510 if test "$with_system_cairo" = "yes"; then
13512 AC_MSG_RESULT([yes])
13514 PKG_CHECK_MODULES( CAIRO, cairo >= 1.12.0 )
13515 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13516 FilterLibs "${CAIRO_LIBS}"
13517 CAIRO_LIBS="${filteredlibs}"
13519 if test "$test_xrender" = "yes"; then
13520 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13522 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13523 #ifdef PictStandardA8
13527 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13532 AC_MSG_RESULT([no])
13533 BUILD_TYPE="$BUILD_TYPE CAIRO"
13536 if test "$enable_cairo_canvas" != no; then
13537 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13538 ENABLE_CAIRO_CANVAS=TRUE
13542 AC_SUBST(CAIRO_CFLAGS)
13543 AC_SUBST(CAIRO_LIBS)
13544 AC_SUBST(ENABLE_CAIRO_CANVAS)
13545 AC_SUBST(SYSTEM_CAIRO)
13547 dnl ===================================================================
13548 dnl Test whether to use avahi
13549 dnl ===================================================================
13550 if test "$_os" = "WINNT"; then
13551 # Windows uses bundled mDNSResponder
13552 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13553 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13554 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13555 [ENABLE_AVAHI="TRUE"])
13556 AC_DEFINE(HAVE_FEATURE_AVAHI)
13557 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13558 FilterLibs "${AVAHI_LIBS}"
13559 AVAHI_LIBS="${filteredlibs}"
13562 AC_SUBST(ENABLE_AVAHI)
13563 AC_SUBST(AVAHI_CFLAGS)
13564 AC_SUBST(AVAHI_LIBS)
13566 dnl ===================================================================
13567 dnl Test whether to use liblangtag
13568 dnl ===================================================================
13570 AC_MSG_CHECKING([whether to use system liblangtag])
13571 if test "$with_system_liblangtag" = yes; then
13572 SYSTEM_LIBLANGTAG=TRUE
13573 AC_MSG_RESULT([yes])
13574 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13575 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13576 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13577 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13578 FilterLibs "${LIBLANGTAG_LIBS}"
13579 LIBLANGTAG_LIBS="${filteredlibs}"
13582 AC_MSG_RESULT([no])
13583 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13584 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13585 if test "$COM" = "MSC"; then
13586 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13588 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13591 AC_SUBST(SYSTEM_LIBLANGTAG)
13592 AC_SUBST(LIBLANGTAG_CFLAGS)
13593 AC_SUBST(LIBLANGTAG_LIBS)
13595 dnl ===================================================================
13596 dnl Test whether to build libpng or rely on the system version
13597 dnl ===================================================================
13599 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13600 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13601 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13603 dnl ===================================================================
13604 dnl Test whether to build libtiff or rely on the system version
13605 dnl ===================================================================
13607 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13609 dnl ===================================================================
13610 dnl Test whether to build libwebp or rely on the system version
13611 dnl ===================================================================
13613 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13615 dnl ===================================================================
13616 dnl Check for runtime JVM search path
13617 dnl ===================================================================
13618 if test "$ENABLE_JAVA" != ""; then
13619 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13620 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13621 AC_MSG_RESULT([yes])
13622 if ! test -d "$with_jvm_path"; then
13623 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13625 if ! test -d "$with_jvm_path"jvm; then
13626 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13628 JVM_ONE_PATH_CHECK="$with_jvm_path"
13629 AC_SUBST(JVM_ONE_PATH_CHECK)
13631 AC_MSG_RESULT([no])
13635 dnl ===================================================================
13636 dnl Test for the presence of Ant and that it works
13637 dnl ===================================================================
13639 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13640 ANT_HOME=; export ANT_HOME
13641 WITH_ANT_HOME=; export WITH_ANT_HOME
13642 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13643 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13644 if test "$_os" = "WINNT"; then
13645 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13647 with_ant_home="$LODE_HOME/opt/ant"
13649 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13650 with_ant_home="$LODE_HOME/opt/ant"
13653 if test -z "$with_ant_home"; then
13654 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13656 if test "$_os" = "WINNT"; then
13657 # AC_PATH_PROGS needs unix path
13658 with_ant_home=`cygpath -u "$with_ant_home"`
13660 AbsolutePath "$with_ant_home"
13661 with_ant_home=$absolute_path
13662 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13663 WITH_ANT_HOME=$with_ant_home
13664 ANT_HOME=$with_ant_home
13667 if test -z "$ANT"; then
13668 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13670 # resolve relative or absolute symlink
13671 while test -h "$ANT"; do
13673 a_basename=`basename "$ANT"`
13674 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13675 cd "`dirname "$ANT"`"
13676 cd "`dirname "$a_script"`"
13677 ANT="`pwd`"/"`basename "$a_script"`"
13681 AC_MSG_CHECKING([if $ANT works])
13682 mkdir -p conftest.dir
13685 cat > conftest.java << EOF
13686 public class conftest {
13687 int testmethod(int a, int b) {
13693 cat > conftest.xml << EOF
13694 <project name="conftest" default="conftest">
13695 <target name="conftest">
13696 <javac srcdir="." includes="conftest.java">
13702 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13703 if test $? = 0 -a -f ./conftest.class; then
13704 AC_MSG_RESULT([Ant works])
13705 if test -z "$WITH_ANT_HOME"; then
13706 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13707 if test -z "$ANT_HOME"; then
13708 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13711 ANT_HOME="$WITH_ANT_HOME"
13714 echo "configure: Ant test failed" >&5
13715 cat conftest.java >&5
13716 cat conftest.xml >&5
13717 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13720 rm -fr conftest.dir
13722 if test -z "$ANT_HOME"; then
13723 ANT_HOME="NO_ANT_HOME"
13725 PathFormat "$ANT_HOME"
13726 ANT_HOME="$formatted_path"
13728 ANT="$formatted_path"
13731 dnl Checking for ant.jar
13732 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13733 AC_MSG_CHECKING([Ant lib directory])
13734 if test -f $ANT_HOME/lib/ant.jar; then
13735 ANT_LIB="$ANT_HOME/lib"
13737 if test -f $ANT_HOME/ant.jar; then
13738 ANT_LIB="$ANT_HOME"
13740 if test -f /usr/share/java/ant.jar; then
13741 ANT_LIB=/usr/share/java
13743 if test -f /usr/share/ant-core/lib/ant.jar; then
13744 ANT_LIB=/usr/share/ant-core/lib
13746 if test -f $ANT_HOME/lib/ant/ant.jar; then
13747 ANT_LIB="$ANT_HOME/lib/ant"
13749 if test -f /usr/share/lib/ant/ant.jar; then
13750 ANT_LIB=/usr/share/lib/ant
13752 AC_MSG_ERROR([Ant libraries not found!])
13759 PathFormat "$ANT_LIB"
13760 ANT_LIB="$formatted_path"
13761 AC_MSG_RESULT([Ant lib directory found.])
13765 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13767 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13768 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13769 ant_version_major=`echo $ant_version | cut -d. -f1`
13770 ant_version_minor=`echo $ant_version | cut -d. -f2`
13771 echo "configure: ant_version $ant_version " >&5
13772 echo "configure: ant_version_major $ant_version_major " >&5
13773 echo "configure: ant_version_minor $ant_version_minor " >&5
13774 if test "$ant_version_major" -ge "2"; then
13775 AC_MSG_RESULT([yes, $ant_version])
13776 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13777 AC_MSG_RESULT([yes, $ant_version])
13779 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13782 rm -f conftest* core core.* *.core
13790 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13791 AC_MSG_CHECKING([for JUnit 4])
13792 if test "$with_junit" = "yes"; then
13793 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13794 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13795 elif test -e /usr/share/java/junit4.jar; then
13796 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13798 if test -e /usr/share/lib/java/junit.jar; then
13799 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13801 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13805 OOO_JUNIT_JAR=$with_junit
13807 if test "$_os" = "WINNT"; then
13808 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13810 printf 'import org.junit.Before;' > conftest.java
13811 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13812 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13815 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13816 specify its pathname via --with-junit=..., or disable it via --without-junit])
13818 rm -f conftest.class conftest.java
13819 if test $OOO_JUNIT_JAR != ""; then
13820 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13823 AC_MSG_CHECKING([for included Hamcrest])
13824 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13825 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13826 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13828 AC_MSG_RESULT([Not included])
13829 AC_MSG_CHECKING([for standalone hamcrest jar.])
13830 if test "$with_hamcrest" = "yes"; then
13831 if test -e /usr/share/lib/java/hamcrest.jar; then
13832 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13833 elif test -e /usr/share/java/hamcrest/core.jar; then
13834 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13835 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13836 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13838 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13841 HAMCREST_JAR=$with_hamcrest
13843 if test "$_os" = "WINNT"; then
13844 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13846 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13847 AC_MSG_RESULT([$HAMCREST_JAR])
13849 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),
13850 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13853 rm -f conftest.class conftest.java
13855 AC_SUBST(OOO_JUNIT_JAR)
13856 AC_SUBST(HAMCREST_JAR)
13862 # check for wget and curl
13867 if test "$enable_fetch_external" != "no"; then
13869 CURL=`which curl 2>/dev/null`
13871 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13873 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13874 if test $? -eq 0; then
13880 if test -z "$WGET" -a -z "$CURL"; then
13881 AC_MSG_ERROR([neither wget nor curl found!])
13890 # check for sha256sum
13894 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13895 eval "$i -a 256 --version" > /dev/null 2>&1
13897 if test $ret -eq 0; then
13898 SHA256SUM="$i -a 256"
13903 if test -z "$SHA256SUM"; then
13904 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13905 eval "$i --version" > /dev/null 2>&1
13907 if test $ret -eq 0; then
13914 if test -z "$SHA256SUM"; then
13915 AC_MSG_ERROR([no sha256sum found!])
13918 AC_SUBST(SHA256SUM)
13920 dnl ===================================================================
13921 dnl Dealing with l10n options
13922 dnl ===================================================================
13923 AC_MSG_CHECKING([which languages to be built])
13924 # get list of all languages
13925 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13926 # the sed command does the following:
13927 # + if a line ends with a backslash, append the next line to it
13928 # + adds " on the beginning of the value (after =)
13929 # + adds " at the end of the value
13930 # + removes en-US; we want to put it on the beginning
13931 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13932 [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)]
13933 ALL_LANGS="en-US $completelangiso"
13934 # check the configured localizations
13935 WITH_LANG="$with_lang"
13937 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13938 # (Norwegian is "nb" and "nn".)
13939 if test "$WITH_LANG" = "no"; then
13943 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13944 AC_MSG_RESULT([en-US])
13946 AC_MSG_RESULT([$WITH_LANG])
13947 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13948 if test -z "$MSGFMT"; then
13949 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13950 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13951 elif test -x "/opt/lo/bin/msgfmt"; then
13952 MSGFMT="/opt/lo/bin/msgfmt"
13954 AC_CHECK_PROGS(MSGFMT, [msgfmt])
13955 if test -z "$MSGFMT"; then
13956 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13960 if test -z "$MSGUNIQ"; then
13961 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13962 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13963 elif test -x "/opt/lo/bin/msguniq"; then
13964 MSGUNIQ="/opt/lo/bin/msguniq"
13966 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13967 if test -z "$MSGUNIQ"; then
13968 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13975 # check that the list is valid
13976 for lang in $WITH_LANG; do
13977 test "$lang" = "ALL" && continue
13978 # need to check for the exact string, so add space before and after the list of all languages
13979 for vl in $ALL_LANGS; do
13980 if test "$vl" = "$lang"; then
13984 if test "$vl" != "$lang"; then
13985 # if you're reading this - you prolly quoted your languages remove the quotes ...
13986 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13989 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13990 echo $WITH_LANG | grep -q en-US
13991 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13993 # list with substituted ALL
13994 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13995 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13996 test "$WITH_LANG" = "en-US" && WITH_LANG=
13997 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13998 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13999 ALL_LANGS=`echo $ALL_LANGS qtz`
14001 AC_SUBST(ALL_LANGS)
14002 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14003 AC_SUBST(WITH_LANG)
14004 AC_SUBST(WITH_LANG_LIST)
14005 AC_SUBST(GIT_NEEDED_SUBMODULES)
14007 WITH_POOR_HELP_LOCALIZATIONS=
14008 if test -d "$SRC_ROOT/translations/source"; then
14009 for l in `ls -1 $SRC_ROOT/translations/source`; do
14010 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14011 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14015 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14017 if test -n "$with_locales" -a "$with_locales" != ALL; then
14018 WITH_LOCALES="$with_locales"
14020 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14021 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14022 # config_host/config_locales.h.in
14023 for locale in $WITH_LOCALES; do
14026 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14030 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14033 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14038 AC_DEFINE(WITH_LOCALE_ALL)
14040 AC_SUBST(WITH_LOCALES)
14042 dnl git submodule update --reference
14043 dnl ===================================================================
14044 if test -n "${GIT_REFERENCE_SRC}"; then
14045 for repo in ${GIT_NEEDED_SUBMODULES}; do
14046 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14047 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14051 AC_SUBST(GIT_REFERENCE_SRC)
14053 dnl git submodules linked dirs
14054 dnl ===================================================================
14055 if test -n "${GIT_LINK_SRC}"; then
14056 for repo in ${GIT_NEEDED_SUBMODULES}; do
14057 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14058 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14062 AC_SUBST(GIT_LINK_SRC)
14065 dnl ===================================================================
14066 AC_MSG_CHECKING([for alternative branding images directory])
14067 # initialize mapped arrays
14068 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14069 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14071 if test -z "$with_branding" -o "$with_branding" = "no"; then
14072 AC_MSG_RESULT([none])
14073 DEFAULT_BRAND_IMAGES="$brand_files"
14075 if ! test -d $with_branding ; then
14076 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14078 AC_MSG_RESULT([$with_branding])
14079 CUSTOM_BRAND_DIR="$with_branding"
14080 for lfile in $brand_files
14082 if ! test -f $with_branding/$lfile ; then
14083 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14084 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14086 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14089 check_for_progress="yes"
14092 AC_SUBST([BRAND_INTRO_IMAGES])
14093 AC_SUBST([CUSTOM_BRAND_DIR])
14094 AC_SUBST([CUSTOM_BRAND_IMAGES])
14095 AC_SUBST([DEFAULT_BRAND_IMAGES])
14098 AC_MSG_CHECKING([for 'intro' progress settings])
14102 PROGRESSFRAMECOLOR=
14104 PROGRESSTEXTBASELINE=
14106 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14107 source "$with_branding/progress.conf"
14108 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14110 AC_MSG_RESULT([none])
14113 AC_SUBST(PROGRESSBARCOLOR)
14114 AC_SUBST(PROGRESSSIZE)
14115 AC_SUBST(PROGRESSPOSITION)
14116 AC_SUBST(PROGRESSFRAMECOLOR)
14117 AC_SUBST(PROGRESSTEXTCOLOR)
14118 AC_SUBST(PROGRESSTEXTBASELINE)
14121 dnl ===================================================================
14122 dnl Custom build version
14123 dnl ===================================================================
14124 AC_MSG_CHECKING([for extra build ID])
14125 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14126 EXTRA_BUILDID="$with_extra_buildid"
14128 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14129 if test -n "$EXTRA_BUILDID" ; then
14130 AC_MSG_RESULT([$EXTRA_BUILDID])
14132 AC_MSG_RESULT([not set])
14134 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14137 AC_MSG_CHECKING([for vendor])
14138 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14139 OOO_VENDOR="$USERNAME"
14141 if test -z "$OOO_VENDOR"; then
14145 if test -z "$OOO_VENDOR"; then
14146 OOO_VENDOR="`id -u -n`"
14149 AC_MSG_RESULT([not set, using $OOO_VENDOR])
14151 OOO_VENDOR="$with_vendor"
14152 AC_MSG_RESULT([$OOO_VENDOR])
14154 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14155 AC_SUBST(OOO_VENDOR)
14157 if test "$_os" = "Android" ; then
14158 ANDROID_PACKAGE_NAME=
14159 AC_MSG_CHECKING([for Android package name])
14160 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14161 if test -n "$ENABLE_DEBUG"; then
14162 # Default to the package name that makes ndk-gdb happy.
14163 ANDROID_PACKAGE_NAME="org.libreoffice"
14165 ANDROID_PACKAGE_NAME="org.example.libreoffice"
14168 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14170 ANDROID_PACKAGE_NAME="$with_android_package_name"
14171 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14173 AC_SUBST(ANDROID_PACKAGE_NAME)
14176 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14177 if test "$with_compat_oowrappers" = "yes"; then
14178 WITH_COMPAT_OOWRAPPERS=TRUE
14181 WITH_COMPAT_OOWRAPPERS=
14184 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14186 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14187 AC_MSG_CHECKING([for install dirname])
14188 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14189 INSTALLDIRNAME="$with_install_dirname"
14191 AC_MSG_RESULT([$INSTALLDIRNAME])
14192 AC_SUBST(INSTALLDIRNAME)
14194 AC_MSG_CHECKING([for prefix])
14195 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14196 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14197 PREFIXDIR="$prefix"
14198 AC_MSG_RESULT([$PREFIXDIR])
14199 AC_SUBST(PREFIXDIR)
14201 LIBDIR=[$(eval echo $(eval echo $libdir))]
14204 DATADIR=[$(eval echo $(eval echo $datadir))]
14207 MANDIR=[$(eval echo $(eval echo $mandir))]
14210 DOCDIR=[$(eval echo $(eval echo $docdir))]
14213 BINDIR=[$(eval echo $(eval echo $bindir))]
14216 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14217 AC_SUBST(INSTALLDIR)
14219 TESTINSTALLDIR="${BUILDDIR}/test-install"
14220 AC_SUBST(TESTINSTALLDIR)
14223 # ===================================================================
14224 # OAuth2 id and secrets
14225 # ===================================================================
14227 AC_MSG_CHECKING([for Google Drive client id and secret])
14228 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14229 AC_MSG_RESULT([not set])
14230 GDRIVE_CLIENT_ID="\"\""
14231 GDRIVE_CLIENT_SECRET="\"\""
14233 AC_MSG_RESULT([set])
14234 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14235 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14237 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14238 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14240 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14241 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14242 AC_MSG_RESULT([not set])
14243 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14244 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14246 AC_MSG_RESULT([set])
14247 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14248 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14250 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14251 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14253 AC_MSG_CHECKING([for OneDrive client id and secret])
14254 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14255 AC_MSG_RESULT([not set])
14256 ONEDRIVE_CLIENT_ID="\"\""
14257 ONEDRIVE_CLIENT_SECRET="\"\""
14259 AC_MSG_RESULT([set])
14260 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14261 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14263 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14264 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14267 dnl ===================================================================
14268 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14269 dnl --enable-dependency-tracking configure option
14270 dnl ===================================================================
14271 AC_MSG_CHECKING([whether to enable dependency tracking])
14272 if test "$enable_dependency_tracking" = "no"; then
14274 AC_MSG_RESULT([no])
14276 AC_MSG_RESULT([yes])
14280 dnl ===================================================================
14281 dnl Number of CPUs to use during the build
14282 dnl ===================================================================
14283 AC_MSG_CHECKING([for number of processors to use])
14284 # plain --with-parallelism is just the default
14285 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14286 if test "$with_parallelism" = "no"; then
14289 PARALLELISM=$with_parallelism
14292 if test "$enable_icecream" = "yes"; then
14297 Darwin|FreeBSD|NetBSD|OpenBSD)
14298 PARALLELISM=`sysctl -n hw.ncpu`
14302 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14304 # what else than above does profit here *and* has /proc?
14306 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14310 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14311 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14315 if test $PARALLELISM -eq 0; then
14316 AC_MSG_RESULT([explicit make -j option needed])
14318 AC_MSG_RESULT([$PARALLELISM])
14320 AC_SUBST(PARALLELISM)
14323 # Set up ILIB for MSVC build
14326 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14328 if test -n "$JAVA_HOME"; then
14329 ILIB="$ILIB;$JAVA_HOME/lib"
14332 PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14333 ILIB="$ILIB;$formatted_path"
14334 ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14335 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14336 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14337 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14338 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14339 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14341 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14342 ucrtlibpath_formatted=$formatted_path
14343 ILIB="$ILIB;$ucrtlibpath_formatted"
14344 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14345 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14346 PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14347 ILIB="$ILIB;$formatted_path"
14349 PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14350 ILIB="$ILIB;$formatted_path"
14353 if test "$cross_compiling" != "yes"; then
14354 ILIB_FOR_BUILD="$ILIB"
14358 AC_SUBST(ILIB_FOR_BUILD)
14360 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14361 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14362 dnl from consteval constructor initializing const variable",
14363 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14364 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14365 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14366 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'",
14367 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14368 dnl constructor in ternary expression (/std:c++latest)", or
14369 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14370 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14371 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14372 dnl && "Ptr must be a pointer to Val type!"' failed.":
14373 AC_LANG_PUSH([C++])
14375 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14376 CXX="env LIB=$ILIB $CXX"
14378 save_CXXFLAGS=$CXXFLAGS
14379 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14380 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14382 consteval S() { i = 1; }
14387 struct S1 { consteval S1(int) {} };
14402 struct S4 { consteval S4() = default; };
14403 void f4(bool b) { b ? S4() : S4(); }
14406 consteval S5() { c = 0; }
14407 char * f() { return &c; }
14413 auto s5 = S5().f();
14415 return (s.i == 1) ? 0 : 1;
14417 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14418 AC_MSG_RESULT([yes])
14419 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14421 CXXFLAGS=$save_CXXFLAGS
14424 # ===================================================================
14425 # Creating bigger shared library to link against
14426 # ===================================================================
14427 AC_MSG_CHECKING([whether to create huge library])
14430 if test $_os = iOS -o $_os = Android; then
14431 # Never any point in mergelibs for these as we build just static
14432 # libraries anyway...
14433 enable_mergelibs=no
14436 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14437 if test $_os != Linux -a $_os != WINNT; then
14438 add_warning "--enable-mergelibs is not tested for this platform"
14441 AC_MSG_RESULT([yes])
14442 AC_DEFINE(ENABLE_MERGELIBS)
14444 AC_MSG_RESULT([no])
14446 AC_SUBST([MERGELIBS])
14448 dnl ===================================================================
14449 dnl icerun is a wrapper that stops us spawning tens of processes
14450 dnl locally - for tools that can't be executed on the compile cluster
14451 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14452 dnl ===================================================================
14453 AC_MSG_CHECKING([whether to use icerun wrapper])
14455 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14456 ICECREAM_RUN=icerun
14457 AC_MSG_RESULT([yes])
14459 AC_MSG_RESULT([no])
14461 AC_SUBST(ICECREAM_RUN)
14463 dnl ===================================================================
14464 dnl Setup the ICECC_VERSION for the build the same way it was set for
14465 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14466 dnl ===================================================================
14467 x_ICECC_VERSION=[\#]
14468 if test -n "$ICECC_VERSION" ; then
14471 AC_SUBST(x_ICECC_VERSION)
14472 AC_SUBST(ICECC_VERSION)
14474 dnl ===================================================================
14476 AC_MSG_CHECKING([MPL subset])
14479 if test "$enable_mpl_subset" = "yes"; then
14481 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14483 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14486 if test "$warn_report" = "true"; then
14487 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14489 if test "x$enable_postgresql_sdbc" != "xno"; then
14490 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14492 if test "$enable_lotuswordpro" = "yes"; then
14493 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14495 if test -n "$ENABLE_POPPLER"; then
14496 if test "x$SYSTEM_POPPLER" = "x"; then
14497 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14500 # cf. m4/libo_check_extension.m4
14501 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14502 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14504 for theme in $WITH_THEMES; do
14506 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14507 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14512 ENABLE_OPENGL_TRANSITIONS=
14514 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14515 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14519 AC_DEFINE(MPL_HAVE_SUBSET)
14520 AC_MSG_RESULT([only])
14522 AC_MSG_RESULT([no restrictions])
14524 AC_SUBST(MPL_SUBSET)
14526 dnl ===================================================================
14528 AC_MSG_CHECKING([formula logger])
14529 ENABLE_FORMULA_LOGGER=
14531 if test "x$enable_formula_logger" = "xyes"; then
14532 AC_MSG_RESULT([yes])
14533 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14534 ENABLE_FORMULA_LOGGER=TRUE
14535 elif test -n "$ENABLE_DBGUTIL" ; then
14536 AC_MSG_RESULT([yes])
14537 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14538 ENABLE_FORMULA_LOGGER=TRUE
14540 AC_MSG_RESULT([no])
14543 AC_SUBST(ENABLE_FORMULA_LOGGER)
14545 dnl ===================================================================
14546 dnl Checking for active Antivirus software.
14547 dnl ===================================================================
14549 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14550 AC_MSG_CHECKING([for active Antivirus software])
14551 PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14552 ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14553 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14554 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14555 AC_MSG_RESULT([found])
14556 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14557 echo $EICAR_STRING > $SRC_ROOT/eicar
14558 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14560 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14561 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14563 echo $EICAR_STRING > $BUILDDIR/eicar
14564 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14566 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14567 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14569 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"
14571 AC_MSG_RESULT([not found])
14574 AC_MSG_RESULT([n/a])
14578 dnl ===================================================================
14579 dnl Setting up the environment.
14580 dnl ===================================================================
14581 AC_MSG_NOTICE([setting up the build environment variables...])
14585 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
14586 if test -d "$COMPATH/atlmfc/lib/spectre"; then
14587 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14588 ATL_INCLUDE="$COMPATH/atlmfc/include"
14589 elif test -d "$COMPATH/atlmfc/lib"; then
14590 ATL_LIB="$COMPATH/atlmfc/lib"
14591 ATL_INCLUDE="$COMPATH/atlmfc/include"
14593 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14594 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14596 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14597 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14598 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14601 if test "$build_os" = "cygwin"; then
14602 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14603 PathFormat "/usr/bin/find.exe"
14604 FIND="$formatted_path"
14605 PathFormat "/usr/bin/sort.exe"
14606 SORT="$formatted_path"
14607 PathFormat "/usr/bin/grep.exe"
14608 WIN_GREP="$formatted_path"
14609 PathFormat "/usr/bin/ls.exe"
14610 WIN_LS="$formatted_path"
14611 PathFormat "/usr/bin/touch.exe"
14612 WIN_TOUCH="$formatted_path"
14618 AC_SUBST(ATL_INCLUDE)
14624 AC_SUBST(WIN_TOUCH)
14626 AC_SUBST(BUILD_TYPE)
14631 PERL="$formatted_path"
14634 if test -n "$TMPDIR"; then
14635 TEMP_DIRECTORY="$TMPDIR"
14637 TEMP_DIRECTORY="/tmp"
14639 if test "$build_os" = "cygwin"; then
14640 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14642 AC_SUBST(TEMP_DIRECTORY)
14644 # setup the PATH for the environment
14645 if test -n "$LO_PATH_FOR_BUILD"; then
14646 LO_PATH="$LO_PATH_FOR_BUILD"
14649 pathmunge "$MSVC_HOST_PATH" "before"
14657 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14658 if test "$ENABLE_JAVA" != ""; then
14659 pathmunge "$JAVA_HOME/bin" "after"
14664 # Win32 make needs native paths
14665 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14666 LO_PATH=`cygpath -p -m "$PATH"`
14668 if test "$WIN_BUILD_ARCH" = "x64"; then
14669 # needed for msi packaging
14670 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14672 # .NET 4.6 and higher don't have bin directory
14673 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14674 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14676 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14677 pathmunge "$CSC_PATH" "before"
14678 pathmunge "$MIDL_PATH" "before"
14679 pathmunge "$AL_PATH" "before"
14680 pathmunge "$MSVC_MULTI_PATH" "before"
14681 pathmunge "$MSVC_BUILD_PATH" "before"
14682 if test -n "$MSBUILD_PATH" ; then
14683 pathmunge "$MSBUILD_PATH" "before"
14685 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14686 if test "$ENABLE_JAVA" != ""; then
14687 if test -d "$JAVA_HOME/jre/bin/client"; then
14688 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14690 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14691 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14693 pathmunge "$JAVA_HOME/bin" "before"
14695 pathmunge "$MSVC_HOST_PATH" "before"
14699 pathmunge "/usr/css/bin" "before"
14700 if test "$ENABLE_JAVA" != ""; then
14701 pathmunge "$JAVA_HOME/bin" "after"
14709 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14710 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14711 x_LO_ELFCHECK_ALLOWLIST=
14713 x_LO_ELFCHECK_ALLOWLIST=[\#]
14715 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14716 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14720 # Generate a configuration sha256 we can use for deps
14721 if test -f config_host.mk; then
14722 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14724 if test -f config_host_lang.mk; then
14725 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14728 CFLAGS=$my_original_CFLAGS
14729 CXXFLAGS=$my_original_CXXFLAGS
14730 CPPFLAGS=$my_original_CPPFLAGS
14732 AC_CONFIG_LINKS([include:include])
14734 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14735 # BUILD platform configuration] - otherwise breaks cross building
14736 AC_CONFIG_FILES([config_host.mk
14737 config_host_lang.mk
14740 bin/bffvalidator.sh
14741 bin/odfvalidator.sh
14743 hardened_runtime.xcent
14744 instsetoo_native/util/openoffice.lst
14745 sysui/desktop/macosx/Info.plist
14746 vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14748 AC_CONFIG_HEADERS([config_host/config_buildconfig.h])
14749 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14750 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14751 AC_CONFIG_HEADERS([config_host/config_clang.h])
14752 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14753 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14754 AC_CONFIG_HEADERS([config_host/config_eot.h])
14755 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14756 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14757 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14758 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14759 AC_CONFIG_HEADERS([config_host/config_features.h])
14760 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14761 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14762 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14763 AC_CONFIG_HEADERS([config_host/config_folders.h])
14764 AC_CONFIG_HEADERS([config_host/config_fonts.h])
14765 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14766 AC_CONFIG_HEADERS([config_host/config_gio.h])
14767 AC_CONFIG_HEADERS([config_host/config_global.h])
14768 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14769 AC_CONFIG_HEADERS([config_host/config_java.h])
14770 AC_CONFIG_HEADERS([config_host/config_langs.h])
14771 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14772 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14773 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14774 AC_CONFIG_HEADERS([config_host/config_locales.h])
14775 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14776 AC_CONFIG_HEADERS([config_host/config_oox.h])
14777 AC_CONFIG_HEADERS([config_host/config_options.h])
14778 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14779 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14780 AC_CONFIG_HEADERS([config_host/config_skia.h])
14781 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14782 AC_CONFIG_HEADERS([config_host/config_validation.h])
14783 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14784 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14785 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14786 AC_CONFIG_HEADERS([config_host/config_version.h])
14787 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14788 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14789 AC_CONFIG_HEADERS([config_host/config_python.h])
14790 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14791 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
14792 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14795 if test "$CROSS_COMPILING" = TRUE; then
14796 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14799 # touch the config timestamp file
14800 if test ! -f config_host.mk.stamp; then
14801 echo > config_host.mk.stamp
14802 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14803 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14805 echo > config_host.mk.stamp
14808 # touch the config lang timestamp file
14809 if test ! -f config_host_lang.mk.stamp; then
14810 echo > config_host_lang.mk.stamp
14811 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14812 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14814 echo > config_host_lang.mk.stamp
14818 if test \( "$STALE_MAKE" = "TRUE" \) \
14819 -a "$build_os" = "cygwin"; then
14822 ****************************************************************************
14824 Your make version is known to be horribly slow, and hard to debug
14825 problems with. To get a reasonably functional make please do:
14827 to install a pre-compiled binary make for Win32
14829 mkdir -p /opt/lo/bin
14831 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14832 cp make-4.2.1-msvc.exe make
14835 to install from source:
14836 place yourself in a working directory of you choice.
14838 git clone git://git.savannah.gnu.org/make.git
14840 [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"]
14841 set PATH=%PATH%;C:\Cygwin\bin
14842 [or Cygwin64, if that is what you have]
14843 cd path-to-make-repo-you-cloned-above
14844 build_w32.bat --without-guile
14846 should result in a WinRel/gnumake.exe.
14847 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14849 Then re-run autogen.sh
14851 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14852 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14859 ****************************************************************************
14861 To show information on various make targets and make flags, run:
14864 To just build, run:
14869 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14871 After the build has finished successfully, you can immediately run what you built using the command:
14874 if test $_os = Darwin; then
14875 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14877 echo instdir/program/soffice
14881 If you want to run the unit tests, run:
14887 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14888 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14889 cat "$WARNINGS_FILE_FOR_BUILD"
14893 if test -s "$WARNINGS_FILE"; then
14894 echo "HOST config ($WARNINGS_FILE)"
14895 cat "$WARNINGS_FILE"
14898 # Remove unneeded emconfigure artifacts
14899 rm -f a.out a.wasm a.out.js a.out.wasm
14901 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: