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.5.0.0.alpha0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19 [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22 AC_MSG_ERROR([You have sourced config_host.mk in this shell. This may lead to trouble, please run in a fresh (login) shell.])
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
46 # Return value: $filteredlibs
51 # let's start with Fedora's paths for now
52 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
53 # ignore it: on UNIXoids it is searched by default anyway
54 # but if it's given explicitly then it may override other paths
55 # (on macOS it would be an error to use it instead of SDK)
58 filteredlibs="$filteredlibs $f"
66 # Args: $1: A pathname. On Cygwin and WSL, in either the Unix or the Windows format. Note that this
67 # function is called also on Unix.
69 # Return value: $formatted_path and $formatted_path_unix.
71 # $formatted_path is the argument in Windows format, but using forward slashes instead of
72 # backslashes, using 8.3 pathname components if necessary (if it otherwise would contains spaces
73 # or shell metacharacters).
75 # $formatted_path_unix is the argument in a form usable in Cygwin or WSL, using 8.3 components if
76 # necessary. On Cygwin, it is the same as $formatted_path, but on WSL it is $formatted_path as a
79 # Errors out if 8.3 names are needed but aren't present for some of the path components.
83 # /home/tml/lo/master-optimised => C:/cygwin64/home/tml/lo/master-optimised
85 # C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe => C:/PROGRA~2/MICROS~3/INSTAL~1/vswhere.exe
87 # C:\Program Files (x86)\Microsoft Visual Studio\2019\Community => C:/PROGRA~2/MICROS~3/2019/COMMUN~1
89 # C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt => C:/PROGRA~2/WI3CF2~1/10/Include/10.0.18362.0/ucrt
91 # /cygdrive/c/PROGRA~2/WI3CF2~1/10 => C:/PROGRA~2/WI3CF2~1/10
93 # C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\ => C:/PROGRA~2/WI3CF2~1/NETFXSDK/4.8/
95 # /usr/bin/find.exe => C:/cygwin64/bin/find.exe
97 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
98 printf "PathFormat $1 ==> "
102 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
103 if test "$build_os" = "wsl"; then
104 formatted_path=$(echo "$formatted_path" | tr -d '\r')
108 # spaces,parentheses,brackets,braces are problematic in pathname
110 case "$formatted_path" in
111 *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
115 if test "$pf_conv_to_dos" = "yes"; then
116 if test "$build_os" = "wsl"; then
117 case "$formatted_path" in
119 formatted_path=$(wslpath -w "$formatted_path")
122 formatted_path=$($WSL_LO_HELPER --8.3 "$formatted_path")
123 elif test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
124 formatted_path=`cygpath -sm "$formatted_path"`
126 formatted_path=`cygpath -d "$formatted_path"`
128 if test $? -ne 0; then
129 AC_MSG_ERROR([path conversion failed for "$1".])
132 fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
133 fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
134 if test "$fp_count_slash$fp_count_colon" != "00"; then
135 if test "$fp_count_colon" = "0"; then
136 new_formatted_path=`realpath "$formatted_path"`
137 if test $? -ne 0; then
138 AC_MSG_WARN([realpath failed for "$formatted_path", not necessarily a problem.])
140 formatted_path="$new_formatted_path"
143 if test "$build_os" = "wsl"; then
144 if test "$fp_count_colon" != "0"; then
145 formatted_path=$(wslpath "$formatted_path")
147 case "$formatted_path" in
152 formatted_path=$(wslpath -m $formatted_path)
153 case "$formatted_path" in
157 formatted_path="$formatted_path"$final_slash
161 formatted_path=$(wslpath -m "$formatted_path")
164 formatted_path=`cygpath -m "$formatted_path"`
166 if test $? -ne 0; then
167 AC_MSG_ERROR([path conversion failed for "$1".])
170 fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
171 if test "$fp_count_space" != "0"; then
172 AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
175 if test "$build_os" = "wsl"; then
176 # WSL can't run Windows binaries from Windows pathnames so we need a separate return value in Unix format
177 formatted_path_unix=$(wslpath "$formatted_path")
180 formatted_path_unix="$formatted_path"
186 # There appears to be no simple and portable method to get an absolute and
187 # canonical path, so we try creating the directory if does not exist and
188 # utilizing the shell and pwd.
190 # Args: $1: A possibly relative pathname
191 # Return value: $absolute_path
193 # Convert to unix path, mkdir would treat c:/path as a relative path.
195 local rel="$formatted_path_unix"
197 test ! -e "$rel" && mkdir -p "$rel"
198 if test -d "$rel" ; then
199 cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
200 absolute_path="$(pwd)"
203 AC_MSG_ERROR([Failed to resolve absolute path. "$rel" does not exist or is not a directory.])
207 WARNINGS_FILE=config.warn
208 WARNINGS_FILE_FOR_BUILD=config.Build.warn
209 rm -f "$WARNINGS_FILE" "$WARNINGS_FILE_FOR_BUILD"
213 if test "$have_WARNINGS" = "no"; then
214 echo "*************************************" > "$WARNINGS_FILE"
216 if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
217 dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
218 COLORWARN='*
\e@<:@1;33;40m WARNING
\e@<:@0m:'
220 COLORWARN="* WARNING :"
223 echo "$COLORWARN $@" >> "$WARNINGS_FILE"
226 dnl Some Mac User have the bad habit of letting a lot of crap
227 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
228 dnl that confuse the build.
229 dnl For the ones that use LODE, let's be nice and protect them
234 mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
235 dnl a common but nevertheless necessary thing that may be in a fancy
236 dnl path location is git, so make sure we have it
237 mac_git_path=`which git 2>/dev/null`
238 if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
239 mac_path="$mac_path:`dirname $mac_git_path`"
241 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
242 dnl path location is gpg, so make sure we find it
243 mac_gpg_path=`which gpg 2>/dev/null`
244 if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
245 mac_path="$mac_path:`dirname $mac_gpg_path`"
253 dnl semantically test a three digits version
254 dnl $1 - $3 = minimal version
255 dnl $4 - $6 = current version
257 check_semantic_version_three()
260 -o \( "$4" -eq "$1" -a "$5" -gt "$2" \) \
261 -o \( "$4" -eq "$1" -a "$5" -eq "$2" -a "$6" -ge "$3" \)
265 dnl calls check_semantic_version_three with digits in named variables $1_MAJOR, $1_MINOR, $1_TINY
266 dnl $1 = current version prefix, e.g. EMSCRIPTEN => EMSCRIPTEN_
267 dnl $2 = postfix to $1, e.g. MIN => EMSCRIPTEN_MIN_
269 check_semantic_version_three_prefixed()
271 eval local MIN_MAJOR="\$${1}_${2}_MAJOR"
272 eval local MIN_MINOR="\$${1}_${2}_MINOR"
273 eval local MIN_TINY="\$${1}_${2}_TINY"
274 eval local CUR_MAJOR="\$${1}_MAJOR"
275 eval local CUR_MINOR="\$${1}_MINOR"
276 eval local CUR_TINY="\$${1}_TINY"
277 check_semantic_version_three $MIN_MAJOR $MIN_MINOR $MIN_TINY $CUR_MAJOR $CUR_MINOR $CUR_TINY
281 echo "********************************************************************"
283 echo "* Running ${PACKAGE_NAME} build configuration."
285 echo "********************************************************************"
288 dnl ===================================================================
289 dnl checks build and host OSes
290 dnl do this before argument processing to allow for platform dependent defaults
291 dnl ===================================================================
293 # Check for WSL. But if --host is explicitly specified (to really do build for
294 # Linux on WSL) trust that.
295 if test -z "$host" -a -z "$build" -a "$(uname -r | grep -i Microsoft 2>/dev/null)" != ""; then
296 ac_cv_host="x86_64-pc-wsl"
297 ac_cv_host_cpu="x86_64"
299 ac_cv_build="$ac_cv_host"
300 ac_cv_build_cpu="$ac_cv_host_cpu"
301 ac_cv_build_os="$ac_cv_host_os"
303 # Emulation of Cygwin's cygpath command for WSL.
306 if test -n "$UNITTEST_WSL_CYGPATH"; then
307 echo -n cygpath "$@" "==> "
310 # Cygwin's real cygpath has a plethora of options but we use only a few here.
313 local opt_d opt_m opt_u opt_w opt_l opt_s opt_p
316 while getopts dmuwlsp opt; do
319 AC_MSG_ERROR([Unimplemented cygpath emulation option in invocation: cygpath $args])
329 if test $# -ne 1; then
330 AC_MSG_ERROR([Invalid cygpath emulation invocation: Pathname missing]);
337 if test -n "$opt_d" -o -n "$opt_m" -o -n "$opt_w"; then
338 # Print Windows path, possibly in 8.3 form (-d) or with forward slashes (-m)
340 if test -n "$opt_u"; then
341 AC_MSG_ERROR([Invalid cygpath invocation: Both Windows and Unix path output requested])
346 # A Windows file in WSL format
347 input=$(wslpath -w "$input")
349 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
350 # Already in Windows format
353 input=$(wslpath -w "$input")
356 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
359 if test -n "$opt_d" -o -n "$opt_s"; then
360 input=$($WSL_LO_HELPER --8.3 "$input")
362 if test -n "$opt_m"; then
363 input="${input//\\//}"
370 [[a-zA-Z]]:\\* | \\* | [[a-zA-Z]]:/* | /*)
377 AC_MSG_ERROR([Invalid cygpath invocation: Path '$input' is not absolute])
383 if test -n "$UNITTEST_WSL_CYGPATH"; then
386 # Nothing special with these file names, just arbitrary ones picked to test with
387 cygpath -d /usr/lib64/ld-linux-x86-64.so.2
388 cygpath -w /usr/lib64/ld-linux-x86-64.so.2
389 cygpath -m /usr/lib64/ld-linux-x86-64.so.2
390 cygpath -m -s /usr/lib64/ld-linux-x86-64.so.2
391 # At least on my machine for instance this file does have an 8.3 name
392 cygpath -d /mnt/c/windows/WindowsUpdate.log
393 # But for instance this one doesn't
394 cygpath -w /mnt/c/windows/system32/AboutSettingsHandlers.dll
395 cygpath -ws /mnt/c/windows/WindowsUpdate.log
396 cygpath -m /mnt/c/windows/system32/AboutSettingsHandlers.dll
397 cygpath -ms /mnt/c/windows/WindowsUpdate.log
399 cygpath -u 'c:\windows\system32\AboutSettingsHandlers.dll'
400 cygpath -u 'c:/windows/system32/AboutSettingsHandlers.dll'
405 if test -z "$WSL_LO_HELPER"; then
406 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/wsl-lo-helper" ; then
407 WSL_LO_HELPER="$LODE_HOME/opt/bin/wsl-lo-helper"
408 elif test -x "/opt/lo/bin/wsl-lo-helper"; then
409 WSL_LO_HELPER="/opt/lo/bin/wsl-lo-helper"
412 if test -z "$WSL_LO_HELPER"; then
413 AC_MSG_ERROR([wsl-lo-helper not found. See solenv/wsl/README.])
420 if test -n "$UNITTEST_WSL_PATHFORMAT"; then
424 # Use of PathFormat must be after AC_CANONICAL_BUILD above
426 printf "$formatted_path , $formatted_path_unix\n"
429 printf "$formatted_path , $formatted_path_unix\n"
431 PathFormat "$PROGRAMFILESX86"
432 printf "$formatted_path , $formatted_path_unix\n"
437 AC_MSG_CHECKING([for product name])
438 PRODUCTNAME="AC_PACKAGE_NAME"
439 if test -n "$with_product_name" -a "$with_product_name" != no; then
440 PRODUCTNAME="$with_product_name"
442 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
443 PRODUCTNAME="${PRODUCTNAME}Dev"
445 AC_MSG_RESULT([$PRODUCTNAME])
446 AC_SUBST(PRODUCTNAME)
447 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
448 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
450 dnl ===================================================================
451 dnl Our version is defined by the AC_INIT() at the top of this script.
452 dnl ===================================================================
454 AC_MSG_CHECKING([for package version])
455 if test -n "$with_package_version" -a "$with_package_version" != no; then
456 PACKAGE_VERSION="$with_package_version"
458 AC_MSG_RESULT([$PACKAGE_VERSION])
460 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
462 LIBO_VERSION_MAJOR=$1
463 LIBO_VERSION_MINOR=$2
464 LIBO_VERSION_MICRO=$3
465 LIBO_VERSION_PATCH=$4
467 LIBO_VERSION_SUFFIX=$5
469 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
470 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
471 # they get undoubled before actually passed to sed.
472 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
473 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
474 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
475 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
477 # The value for key CFBundleVersion in the Info.plist file must be a period-separated list of at most
478 # three non-negative integers. Please find more information about CFBundleVersion at
479 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion
481 # The value for key CFBundleShortVersionString in the Info.plist file must be a period-separated list
482 # of at most three non-negative integers. Please find more information about
483 # CFBundleShortVersionString at
484 # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
486 # But that is enforced only in the App Store, and we apparently want to break the rules otherwise.
488 if test "$enable_macosx_sandbox" = yes; then
489 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
490 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION
492 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.$LIBO_VERSION_MICRO.$LIBO_VERSION_PATCH
493 MACOSX_BUNDLE_VERSION=$MACOSX_BUNDLE_SHORTVERSION$LIBO_VERSION_SUFFIX
496 AC_SUBST(LIBO_VERSION_MAJOR)
497 AC_SUBST(LIBO_VERSION_MINOR)
498 AC_SUBST(LIBO_VERSION_MICRO)
499 AC_SUBST(LIBO_VERSION_PATCH)
500 AC_SUBST(LIBO_VERSION_SUFFIX)
501 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
502 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
503 AC_SUBST(MACOSX_BUNDLE_VERSION)
505 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
506 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
507 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
508 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
510 LIBO_THIS_YEAR=`date +%Y`
511 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
513 dnl ===================================================================
515 dnl ===================================================================
516 AC_MSG_CHECKING([for product version])
517 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
518 AC_MSG_RESULT([$PRODUCTVERSION])
519 AC_SUBST(PRODUCTVERSION)
522 # AC_PROG_EGREP doesn't set GREP on all systems as well
523 AC_PATH_PROG(GREP, grep)
531 dnl ======================================
532 dnl Required GObject introspection version
533 dnl ======================================
534 INTROSPECTION_REQUIRED_VERSION=1.32.0
536 dnl ===================================================================
537 dnl Search all the common names for GNU Make
538 dnl ===================================================================
539 AC_MSG_CHECKING([for GNU Make])
541 # try to use our own make if it is available and GNUMAKE was not already defined
542 if test -z "$GNUMAKE"; then
543 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
544 GNUMAKE="$LODE_HOME/opt/bin/make"
545 elif test -x "/opt/lo/bin/make"; then
546 GNUMAKE="/opt/lo/bin/make"
551 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
552 if test -n "$a"; then
553 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null
554 if test $? -eq 0; then
555 if test "$build_os" = "cygwin"; then
556 if test -n "$($a -v | grep 'Built for Windows')" ; then
557 GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
558 GNUMAKE_WIN_NATIVE="TRUE"
569 AC_MSG_RESULT($GNUMAKE)
570 if test -z "$GNUMAKE"; then
571 AC_MSG_ERROR([not found. install GNU Make.])
573 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
574 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
578 win_short_path_for_make()
580 local short_path="$1"
581 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
582 cygpath -sm "$short_path"
584 cygpath -u "$(cygpath -d "$short_path")"
589 if test "$build_os" = "cygwin"; then
590 PathFormat "$SRC_ROOT"
591 SRC_ROOT="$formatted_path"
592 PathFormat "$BUILDDIR"
593 BUILDDIR="$formatted_path"
595 AC_MSG_CHECKING(for explicit COMSPEC)
596 if test -z "$COMSPEC"; then
597 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
599 AC_MSG_RESULT([found: $COMSPEC])
606 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
607 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
608 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
610 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
611 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
614 # need sed in os checks...
615 AC_PATH_PROGS(SED, sed)
616 if test -z "$SED"; then
617 AC_MSG_ERROR([install sed to run this script])
620 # Set the ENABLE_LTO variable
621 # ===================================================================
622 AC_MSG_CHECKING([whether to use link-time optimization])
623 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
632 AC_ARG_ENABLE(fuzz-options,
633 AS_HELP_STRING([--enable-fuzz-options],
634 [Randomly enable or disable each of those configurable options
635 that are supposed to be freely selectable without interdependencies,
636 or where bad interaction from interdependencies is automatically avoided.])
639 dnl ===================================================================
640 dnl When building for Android, --with-android-ndk,
641 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
643 dnl ===================================================================
645 AC_ARG_WITH(android-ndk,
646 AS_HELP_STRING([--with-android-ndk],
647 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
650 AC_ARG_WITH(android-ndk-toolchain-version,
651 AS_HELP_STRING([--with-android-ndk-toolchain-version],
652 [Specify which toolchain version to use, of those present in the
653 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
654 with_android_ndk_toolchain_version=clang5.0)
656 AC_ARG_WITH(android-sdk,
657 AS_HELP_STRING([--with-android-sdk],
658 [Specify location of the Android SDK. Mandatory when building for Android.]),
661 AC_ARG_WITH(android-api-level,
662 AS_HELP_STRING([--with-android-api-level],
663 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
667 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
668 with_android_ndk="$SRC_ROOT/external/android-ndk"
670 if test -n "$with_android_ndk"; then
671 eval ANDROID_NDK_DIR=$with_android_ndk
673 # Set up a lot of pre-canned defaults
675 if test ! -f $ANDROID_NDK_DIR/RELEASE.TXT; then
676 if test ! -f $ANDROID_NDK_DIR/source.properties; then
677 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_DIR.])
679 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_DIR/source.properties`
681 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_DIR/RELEASE.TXT`
683 if test -z "$ANDROID_NDK_VERSION"; then
684 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
686 case $ANDROID_NDK_VERSION in
688 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
690 11.1.*|12.1.*|13.1.*|14.1.*)
691 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
693 16.*|17.*|18.*|19.*|20.*)
696 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
697 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
702 if test -n "$with_android_api_level" ; then
703 ANDROID_API_LEVEL="$with_android_api_level"
706 android_cpu=$host_cpu
707 if test $host_cpu = arm; then
708 android_platform_prefix=arm-linux-androideabi
709 android_gnu_prefix=$android_platform_prefix
710 LLVM_TRIPLE=armv7a-linux-androideabi
711 ANDROID_APP_ABI=armeabi-v7a
712 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
713 elif test $host_cpu = aarch64; then
714 android_platform_prefix=aarch64-linux-android
715 android_gnu_prefix=$android_platform_prefix
716 LLVM_TRIPLE=$android_platform_prefix
717 # minimum android version that supports aarch64
718 if test "$ANDROID_API_LEVEL" -lt "21" ; then
721 ANDROID_APP_ABI=arm64-v8a
722 elif test $host_cpu = x86_64; then
723 android_platform_prefix=x86_64-linux-android
724 android_gnu_prefix=$android_platform_prefix
725 LLVM_TRIPLE=$android_platform_prefix
726 # minimum android version that supports x86_64
728 ANDROID_APP_ABI=x86_64
730 # host_cpu is something like "i386" or "i686" I guess, NDK uses
731 # "x86" in some contexts
733 android_platform_prefix=$android_cpu
734 android_gnu_prefix=i686-linux-android
735 LLVM_TRIPLE=$android_gnu_prefix
739 case "$with_android_ndk_toolchain_version" in
741 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
744 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
747 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
749 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
750 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
751 # manage to link the (app-specific) single huge .so that is built for the app in
752 # android/source/ if there is debug information in a significant part of the object files.
753 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
754 # all objects have been built with debug information.)
757 android_HOST_TAG=linux-x86_64
760 android_HOST_TAG=darwin-x86_64
763 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
764 # ndk would also support windows and windows-x86_64
767 android_TOOLCHAIN=$ANDROID_NDK_DIR/toolchains/llvm/prebuilt/$android_HOST_TAG
768 ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
769 dnl TODO: NSS build uses it...
770 ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_DIR/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
771 AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
773 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
774 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
775 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
776 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
777 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
779 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
780 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
781 if test "$ENABLE_LTO" = TRUE; then
782 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
783 # $CC and $CXX when building external libraries
784 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
787 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
789 if test -z "$CC"; then
790 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
793 if test -z "$CXX"; then
794 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
798 AC_SUBST(ANDROID_NDK_DIR)
799 AC_SUBST(ANDROID_APP_ABI)
800 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
802 dnl ===================================================================
803 dnl --with-android-sdk
804 dnl ===================================================================
806 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
807 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
809 if test -n "$with_android_sdk"; then
810 eval ANDROID_SDK_DIR=$with_android_sdk
811 PATH="$ANDROID_SDK_DIR/platform-tools:$ANDROID_SDK_DIR/tools:$PATH"
813 AC_SUBST(ANDROID_SDK_DIR)
815 AC_ARG_ENABLE([android-lok],
816 AS_HELP_STRING([--enable-android-lok],
817 [The Android app from the android/ subdir needs several tweaks all
818 over the place that break the LOK when used in the Online-based
819 Android app. This switch indicates that the intent of this build is
820 actually the Online-based, non-modified LOK.])
823 if test -n "$ANDROID_NDK_DIR" ; then
824 if test "$enable_android_lok" = yes; then
825 ENABLE_ANDROID_LOK=TRUE
826 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
827 AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
829 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
832 AC_SUBST([ENABLE_ANDROID_LOK])
834 libo_FUZZ_ARG_ENABLE([android-editing],
835 AS_HELP_STRING([--enable-android-editing],
836 [Enable the experimental editing feature on Android.])
838 ENABLE_ANDROID_EDITING=
839 if test "$enable_android_editing" = yes; then
840 ENABLE_ANDROID_EDITING=TRUE
842 AC_SUBST([ENABLE_ANDROID_EDITING])
844 disable_database_connectivity_dependencies()
847 enable_firebird_sdbc=no
848 enable_mariadb_sdbc=no
849 enable_postgresql_sdbc=no
850 enable_report_builder=no
853 # ===================================================================
855 # Start initial platform setup
857 # The using_* variables reflect platform support and should not be
858 # changed after the "End initial platform setup" block.
859 # This is also true for most test_* variables.
860 # ===================================================================
869 # There is currently just iOS not using salplug, so this explicitly enables it.
870 # must: using_freetype_fontconfig
871 # may: using_headless_plugin defaults to $using_freetype_fontconfig
874 # Default values, as such probably valid just for Linux, set
875 # differently below just for Mac OSX, but at least better than
876 # hardcoding these as we used to do. Much of this is duplicated also
877 # in solenv for old build system and for gbuild, ideally we should
878 # perhaps define stuff like this only here in configure.ac?
880 LINKFLAGSSHL="-shared"
884 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
887 INSTROOTCONTENTSUFFIX=
890 HOST_PLATFORM="$host"
892 host_cpu_for_clang="$host_cpu"
897 using_freetype_fontconfig=yes
902 dnl ===========================================================
903 dnl Check whether we're using Solaris 10 - SPARC or Intel.
904 dnl ===========================================================
905 AC_MSG_CHECKING([the Solaris operating system release])
906 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
907 if test "$_os_release" -lt "10"; then
908 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
910 AC_MSG_RESULT([ok ($_os_release)])
913 dnl Check whether we're using a SPARC or i386 processor
914 AC_MSG_CHECKING([the processor type])
915 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
916 AC_MSG_RESULT([ok ($host_cpu)])
918 AC_MSG_ERROR([only SPARC and i386 processors are supported])
922 linux-gnu*|k*bsd*-gnu*|linux-musl*)
923 using_freetype_fontconfig=yes
928 if test "$enable_fuzzers" = yes; then
929 test_system_freetype=no
935 using_freetype_fontconfig=yes
941 # When building on Windows normally with MSVC under Cygwin,
942 # configure thinks that the host platform (the platform the
943 # built code will run on) is Cygwin, even if it obviously is
944 # Windows, which in Autoconf terminology is called
945 # "mingw32". (Which is misleading as MinGW is the name of the
946 # tool-chain, not an operating system.)
948 # Somewhat confusing, yes. But this configure script doesn't
949 # look at $host etc that much, it mostly uses its own $_os
950 # variable, set here in this case statement.
952 using_freetype_fontconfig=no
964 if test "$host_cpu" = "aarch64"; then
968 enable_firebird_sdbc=no
973 using_freetype_fontconfig=no
978 if test -n "$LODE_HOME" ; then
980 AC_MSG_NOTICE([sanitized the PATH to $PATH])
983 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
984 INSTROOTCONTENTSUFFIX=/Contents
985 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
986 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
987 LINKFLAGSSHL="-dynamiclib -single_module"
994 # -undefined error is the default
998 # Apple's Clang uses "arm64"
999 host_cpu_for_clang=arm64
1004 using_freetype_fontconfig=no
1010 if test -n "$LODE_HOME" ; then
1012 AC_MSG_NOTICE([sanitized the PATH to $PATH])
1016 enable_mpl_subset=yes
1017 enable_lotuswordpro=no
1018 disable_database_connectivity_dependencies
1021 enable_extension_integration=no
1024 if test "$enable_ios_simulator" = "yes"; then
1025 host=x86_64-apple-darwin
1027 # See "Default values, as such probably valid just for Linux" comment above the case "$host_os"
1028 LINKFLAGSSHL="-dynamiclib -single_module"
1035 # -undefined error is the default
1036 LINKFLAGSNOUNDEFS=""
1038 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
1039 # part, so use aarch64-apple-darwin for now.
1040 HOST_PLATFORM=aarch64-apple-darwin
1042 # Apple's Clang uses "arm64"
1043 host_cpu_for_clang=arm64
1047 using_freetype_fontconfig=yes
1050 AC_MSG_CHECKING([the FreeBSD operating system release])
1051 if test -n "$with_os_version"; then
1052 OSVERSION="$with_os_version"
1054 OSVERSION=`/sbin/sysctl -n kern.osreldate`
1056 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
1057 AC_MSG_CHECKING([which thread library to use])
1058 if test "$OSVERSION" -lt "500016"; then
1059 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1060 PTHREAD_LIBS="-pthread"
1061 elif test "$OSVERSION" -lt "502102"; then
1062 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1063 PTHREAD_LIBS="-lc_r"
1066 PTHREAD_LIBS="-pthread"
1068 AC_MSG_RESULT([$PTHREAD_LIBS])
1073 using_freetype_fontconfig=yes
1077 PTHREAD_LIBS="-pthread -lpthread"
1082 using_freetype_fontconfig=yes
1085 test_gstreamer_1_0=no
1086 PTHREAD_LIBS=-pthread
1091 using_freetype_fontconfig=yes
1093 PTHREAD_CFLAGS="-D_THREAD_SAFE"
1094 PTHREAD_LIBS="-pthread"
1099 using_freetype_fontconfig=yes
1102 PTHREAD_LIBS="-pthread"
1107 # API exists, but seems not really usable since Android 7 AFAIK
1109 using_freetype_fontconfig=yes
1110 using_headless_plugin=no
1114 test_system_freetype=no
1116 disable_database_connectivity_dependencies
1117 enable_lotuswordpro=no
1118 enable_mpl_subset=yes
1119 enable_cairo_canvas=no
1129 using_freetype_fontconfig=yes
1138 enable_postgresql_sdbc=no
1139 enable_firebird_sdbc=no
1144 # API currently just exists in headers, not code
1146 using_freetype_fontconfig=yes
1150 test_split_debug=yes
1151 test_system_freetype=no
1152 enable_compiler_plugins=no
1153 enable_customtarget_components=yes
1156 enable_split_debug=yes
1157 enable_wasm_strip=yes
1159 with_theme="colibre"
1164 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
1168 AC_SUBST(HOST_PLATFORM)
1170 if test -z "$using_x11" -o -z "$using_freetype_fontconfig"; then
1171 AC_MSG_ERROR([You must set \$using_freetype_fontconfig and \$using_x11 for your platform])
1174 # Set defaults, if not set by platform
1175 test "${test_cups+set}" = set || test_cups="$using_x11"
1176 test "${test_dbus+set}" = set || test_dbus="$using_x11"
1177 test "${test_gen+set}" = set || test_gen="$using_x11"
1178 test "${test_gstreamer_1_0+set}" = set || test_gstreamer_1_0="$using_x11"
1179 test "${test_gtk3+set}" = set || test_gtk3="$using_x11"
1180 test "${test_gtk4+set}" = set || test_gtk4="$using_x11"
1181 test "${test_kf5+set}" = set || test_kf5="$using_x11"
1182 # don't handle test_qt5, so it can disable test_kf5 later
1183 test "${test_qt6+set}" = set || test_qt6="$using_x11"
1184 test "${test_randr+set}" = set || test_randr="$using_x11"
1185 test "${test_xrender+set}" = set || test_xrender="$using_x11"
1186 test "${using_headless_plugin+set}" = set || using_headless_plugin="$using_freetype_fontconfig"
1188 test "${test_gtk3_kde5+set}" != set -a "$test_kf5" = yes -a "$test_gtk3" = yes && test_gtk3_kde5="yes"
1189 # Make sure fontconfig and freetype test both either system or not
1190 test "${test_system_fontconfig+set}" != set -a "${test_system_freetype+set}" = set && test_system_fontconfig="$test_system_freetype"
1191 test "${test_system_freetype+set}" != set -a "${test_system_fontconfig+set}" = set && test_system_freetype="$test_system_fontconfig"
1193 # convenience / platform overriding "fixes"
1195 test "$test_kf5" = yes -a "$test_qt5" = no && test_kf5=no
1196 test "$test_kf5" = yes && test_qt5=yes
1197 test "$test_gtk3" != yes && enable_gtk3=no
1198 test "$test_gtk3" != yes -o "$test_kf5" != yes && test_gtk3_kde5=no
1199 test "$using_freetype_fontconfig" = no && using_headless_plugin=no
1200 test "$using_freetype_fontconfig" = yes && test_cairo=yes
1202 # Keep in sync with the above $using_x11 depending test default list
1208 test_gstreamer_1_0=no
1219 test "$using_x11" = yes && USING_X11=TRUE
1221 if test "$using_freetype_fontconfig" = yes; then
1222 USE_HEADLESS_CODE=TRUE
1223 if test "$using_headless_plugin" = yes; then
1224 AC_DEFINE(ENABLE_HEADLESS)
1225 ENABLE_HEADLESS=TRUE
1232 AC_SUBST(ENABLE_HEADLESS)
1233 AC_SUBST(USE_HEADLESS_CODE)
1235 AC_MSG_NOTICE([VCL platform has a usable dynamic loading API: $usable_dlapi])
1236 AC_MSG_NOTICE([VCL platform uses freetype+fontconfig: $using_freetype_fontconfig])
1237 AC_MSG_NOTICE([VCL platform uses headless plugin: $using_headless_plugin])
1238 AC_MSG_NOTICE([VCL platform uses X11: $using_x11])
1240 # ===================================================================
1242 # End initial platform setup
1244 # ===================================================================
1246 if test "$_os" = "Android" ; then
1247 # Verify that the NDK and SDK options are proper
1248 if test -z "$with_android_ndk"; then
1249 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
1250 elif test ! -f "$ANDROID_NDK_DIR/meta/abis.json"; then
1251 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
1254 if test -z "$ANDROID_SDK_DIR"; then
1255 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
1256 elif test ! -d "$ANDROID_SDK_DIR/platforms"; then
1257 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
1261 if test "$_os" = "AIX"; then
1262 AC_PATH_PROG(GAWK, gawk)
1263 if test -z "$GAWK"; then
1264 AC_MSG_ERROR([gawk not found in \$PATH])
1268 AC_SUBST(SDKDIRNAME)
1270 AC_SUBST(PTHREAD_CFLAGS)
1271 AC_SUBST(PTHREAD_LIBS)
1273 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
1274 # By default use the ones specified by our build system,
1275 # but explicit override is possible.
1276 AC_MSG_CHECKING(for explicit AFLAGS)
1277 if test -n "$AFLAGS"; then
1278 AC_MSG_RESULT([$AFLAGS])
1284 AC_MSG_CHECKING(for explicit CFLAGS)
1285 if test -n "$CFLAGS"; then
1286 AC_MSG_RESULT([$CFLAGS])
1292 AC_MSG_CHECKING(for explicit CXXFLAGS)
1293 if test -n "$CXXFLAGS"; then
1294 AC_MSG_RESULT([$CXXFLAGS])
1300 AC_MSG_CHECKING(for explicit OBJCFLAGS)
1301 if test -n "$OBJCFLAGS"; then
1302 AC_MSG_RESULT([$OBJCFLAGS])
1308 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
1309 if test -n "$OBJCXXFLAGS"; then
1310 AC_MSG_RESULT([$OBJCXXFLAGS])
1316 AC_MSG_CHECKING(for explicit LDFLAGS)
1317 if test -n "$LDFLAGS"; then
1318 AC_MSG_RESULT([$LDFLAGS])
1328 AC_SUBST(OBJCXXFLAGS)
1332 AC_SUBST(x_CXXFLAGS)
1333 AC_SUBST(x_OBJCFLAGS)
1334 AC_SUBST(x_OBJCXXFLAGS)
1337 dnl These are potentially set for MSVC, in the code checking for UCRT below:
1338 my_original_CFLAGS=$CFLAGS
1339 my_original_CXXFLAGS=$CXXFLAGS
1340 my_original_CPPFLAGS=$CPPFLAGS
1342 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
1343 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
1344 dnl AC_PROG_CC internally.
1345 if test "$_os" != "WINNT"; then
1346 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
1350 if test -z "$CC_BASE"; then
1351 CC_BASE=`first_arg_basename "$CC"`
1355 if test "$_os" != "WINNT"; then
1356 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1360 AC_SUBST(ENDIANNESS)
1362 if test "$usable_dlapi" != no; then
1363 AC_DEFINE([HAVE_DLAPI])
1364 if test "$test_unix_dlapi" != no; then
1366 AC_SEARCH_LIBS([dlsym], [dl],
1367 [case "$ac_cv_search_dlsym" in -l*) UNIX_DLAPI_LIBS="$ac_cv_search_dlsym";; esac],
1368 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1370 AC_DEFINE([HAVE_UNIX_DLAPI])
1373 AC_SUBST(UNIX_DLAPI_LIBS)
1375 # Check for a (GNU) backtrace implementation
1376 AC_ARG_VAR([BACKTRACE_CFLAGS], [Compiler flags needed to use backtrace(3)])
1377 AC_ARG_VAR([BACKTRACE_LIBS], [Linker flags needed to use backtrace(3)])
1378 AS_IF([test "x$BACKTRACE_LIBS$BACKTRACE_CFLAGS" = x], [
1380 AC_SEARCH_LIBS([backtrace], [libexecinfo],
1381 [case "$ac_cv_search_backtrace" in -l*) BACKTRACE_LIBS="$ac_cv_search_backtrace";; esac],
1382 [PKG_CHECK_MODULES([BACKTRACE], [libexecinfo], [ac_cv_search_backtrace=], [:])])
1385 AS_IF([test "x$ac_cv_search_backtrace" != xno ], [
1386 AC_DEFINE([HAVE_FEATURE_BACKTRACE])
1389 dnl ===================================================================
1390 dnl Sanity checks for Emscripten SDK setup
1391 dnl ===================================================================
1393 EMSCRIPTEN_MIN_MAJOR=2
1394 EMSCRIPTEN_MIN_MINOR=0
1395 EMSCRIPTEN_MIN_TINY=31
1396 EMSCRIPTEN_MIN_VERSION="${EMSCRIPTEN_MIN_MAJOR}.${EMSCRIPTEN_MIN_MINOR}.${EMSCRIPTEN_MIN_TINY}"
1398 if test "$_os" = "Emscripten"; then
1399 AC_MSG_CHECKING([if Emscripten is at least $EMSCRIPTEN_MIN_VERSION])
1400 EMSCRIPTEN_DEFINES=$(echo | emcc -dM -E - | $GREP __EMSCRIPTEN_)
1401 EMSCRIPTEN_MAJOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_major__ //p')
1402 EMSCRIPTEN_MINOR=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_minor__ //p')
1403 EMSCRIPTEN_TINY=$(echo "$EMSCRIPTEN_DEFINES" | $SED -ne 's/.*__EMSCRIPTEN_tiny__ //p')
1404 EMSCRIPTEN_VERSION="${EMSCRIPTEN_MAJOR}.${EMSCRIPTEN_MINOR}.${EMSCRIPTEN_TINY}"
1406 check_semantic_version_three_prefixed EMSCRIPTEN MIN
1407 if test $? -eq 0; then
1408 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
1410 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
1414 if ! which emconfigure >/dev/null 2>&1; then
1415 AC_MSG_WARN([emconfigure must be in your \$PATH])
1418 if test -z "$EMMAKEN_JUST_CONFIGURE"; then
1419 AC_MSG_WARN(["\$EMMAKEN_JUST_CONFIGURE wasn't set by emconfigure. Prefix configure or use autogen.sh])
1422 EMSDK_FILE_PACKAGER="$(em-config EMSCRIPTEN_ROOT)"/tools/file_packager
1423 if ! test -x "$EMSDK_FILE_PACKAGER"; then
1424 AC_MSG_WARN([No file_packager found in $(em-config EMSCRIPTEN_ROOT)/tools/file_packager.])
1427 if test $EMSCRIPTEN_ERROR -ne 0; then
1428 AC_MSG_ERROR(["Please fix your EMSDK setup to build with Emscripten!"])
1431 AC_SUBST(EMSDK_FILE_PACKAGER)
1433 ###############################################################################
1434 # Extensions switches --enable/--disable
1435 ###############################################################################
1436 # By default these should be enabled unless having extra dependencies.
1437 # If there is extra dependency over configure options then the enable should
1438 # be automagic based on whether the requiring feature is enabled or not.
1439 # All this options change anything only with --enable-extension-integration.
1441 # The name of this option and its help string makes it sound as if
1442 # extensions are built anyway, just not integrated in the installer,
1443 # if you use --disable-extension-integration. Is that really the
1446 AC_ARG_ENABLE(ios-simulator,
1447 AS_HELP_STRING([--enable-ios-simulator],
1448 [build for iOS simulator])
1451 libo_FUZZ_ARG_ENABLE(extension-integration,
1452 AS_HELP_STRING([--disable-extension-integration],
1453 [Disable integration of the built extensions in the installer of the
1454 product. Use this switch to disable the integration.])
1457 AC_ARG_ENABLE(avmedia,
1458 AS_HELP_STRING([--disable-avmedia],
1459 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.]),
1460 ,test "${enable_avmedia+set}" = set || enable_avmedia=yes)
1462 AC_ARG_ENABLE(database-connectivity,
1463 AS_HELP_STRING([--disable-database-connectivity],
1464 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1467 # This doesn't mean not building (or "integrating") extensions
1468 # (although it probably should; i.e. it should imply
1469 # --disable-extension-integration I guess), it means not supporting
1470 # any extension mechanism at all
1471 libo_FUZZ_ARG_ENABLE(extensions,
1472 AS_HELP_STRING([--disable-extensions],
1473 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1476 AC_ARG_ENABLE(scripting,
1477 AS_HELP_STRING([--disable-scripting],
1478 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.]),
1479 ,test "${enable_scripting+set}" = set || enable_scripting=yes)
1481 # This is mainly for Android and iOS, but could potentially be used in some
1482 # special case otherwise, too, so factored out as a separate setting
1484 AC_ARG_ENABLE(dynamic-loading,
1485 AS_HELP_STRING([--disable-dynamic-loading],
1486 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1489 libo_FUZZ_ARG_ENABLE(report-builder,
1490 AS_HELP_STRING([--disable-report-builder],
1491 [Disable the Report Builder.])
1494 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1495 AS_HELP_STRING([--enable-ext-wiki-publisher],
1496 [Enable the Wiki Publisher extension.])
1499 libo_FUZZ_ARG_ENABLE(lpsolve,
1500 AS_HELP_STRING([--disable-lpsolve],
1501 [Disable compilation of the lp solve solver ])
1503 libo_FUZZ_ARG_ENABLE(coinmp,
1504 AS_HELP_STRING([--disable-coinmp],
1505 [Disable compilation of the CoinMP solver ])
1508 libo_FUZZ_ARG_ENABLE(pdfimport,
1509 AS_HELP_STRING([--disable-pdfimport],
1510 [Disable building the PDF import feature.])
1513 libo_FUZZ_ARG_ENABLE(pdfium,
1514 AS_HELP_STRING([--disable-pdfium],
1515 [Disable building PDFium. Results in unsecure PDF signature verification.])
1518 libo_FUZZ_ARG_ENABLE(skia,
1519 AS_HELP_STRING([--disable-skia],
1520 [Disable building Skia. Use --enable-skia=debug to build without optimizations.])
1523 ###############################################################################
1525 dnl ---------- *** ----------
1527 libo_FUZZ_ARG_ENABLE(mergelibs,
1528 AS_HELP_STRING([--enable-mergelibs],
1529 [Merge several of the smaller libraries into one big, "merged", one.])
1532 libo_FUZZ_ARG_ENABLE(breakpad,
1533 AS_HELP_STRING([--enable-breakpad],
1534 [Enables breakpad for crash reporting.])
1537 libo_FUZZ_ARG_ENABLE(crashdump,
1538 AS_HELP_STRING([--disable-crashdump],
1539 [Disable dump.ini and dump-file, when --enable-breakpad])
1542 AC_ARG_ENABLE(fetch-external,
1543 AS_HELP_STRING([--disable-fetch-external],
1544 [Disables fetching external tarballs from web sources.])
1547 AC_ARG_ENABLE(fuzzers,
1548 AS_HELP_STRING([--enable-fuzzers],
1549 [Enables building libfuzzer targets for fuzz testing.])
1552 libo_FUZZ_ARG_ENABLE(pch,
1553 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1554 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1555 Using 'system' will include only external headers, 'base' will add also headers
1556 from base modules, 'normal' will also add all headers except from the module built,
1557 'full' will use all suitable headers even from a module itself.])
1560 libo_FUZZ_ARG_ENABLE(epm,
1561 AS_HELP_STRING([--enable-epm],
1562 [LibreOffice includes self-packaging code, that requires epm, however epm is
1563 useless for large scale package building.])
1566 libo_FUZZ_ARG_ENABLE(odk,
1567 AS_HELP_STRING([--enable-odk],
1568 [Enable building the Office Development Kit, the part that extensions need to build against])
1571 AC_ARG_ENABLE(mpl-subset,
1572 AS_HELP_STRING([--enable-mpl-subset],
1573 [Don't compile any pieces which are not MPL or more liberally licensed])
1576 libo_FUZZ_ARG_ENABLE(evolution2,
1577 AS_HELP_STRING([--enable-evolution2],
1578 [Allows the built-in evolution 2 addressbook connectivity build to be
1582 AC_ARG_ENABLE(avahi,
1583 AS_HELP_STRING([--enable-avahi],
1584 [Determines whether to use Avahi to advertise Impress to remote controls.])
1587 libo_FUZZ_ARG_ENABLE(werror,
1588 AS_HELP_STRING([--enable-werror],
1589 [Turn warnings to errors. (Has no effect in modules where the treating
1590 of warnings as errors is disabled explicitly.)]),
1593 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1594 AS_HELP_STRING([--enable-assert-always-abort],
1595 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1598 libo_FUZZ_ARG_ENABLE(dbgutil,
1599 AS_HELP_STRING([--enable-dbgutil],
1600 [Provide debugging support from --enable-debug and include additional debugging
1601 utilities such as object counting or more expensive checks.
1602 This is the recommended option for developers.
1603 Note that this makes the build ABI incompatible, it is not possible to mix object
1604 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1606 libo_FUZZ_ARG_ENABLE(debug,
1607 AS_HELP_STRING([--enable-debug],
1608 [Include debugging information, disable compiler optimization and inlining plus
1609 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1611 libo_FUZZ_ARG_ENABLE(split-debug,
1612 AS_HELP_STRING([--disable-split-debug],
1613 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1614 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1616 libo_FUZZ_ARG_ENABLE(gdb-index,
1617 AS_HELP_STRING([--disable-gdb-index],
1618 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1619 The feature requires a linker that supports the --gdb-index option.]))
1621 libo_FUZZ_ARG_ENABLE(sal-log,
1622 AS_HELP_STRING([--enable-sal-log],
1623 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1625 libo_FUZZ_ARG_ENABLE(symbols,
1626 AS_HELP_STRING([--enable-symbols],
1627 [Generate debug information.
1628 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1629 otherwise. It is possible to explicitly specify gbuild build targets
1630 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1631 everything in the directory; there is no ordering, more specific overrides
1632 more general, and disabling takes precedence).
1633 Example: --enable-symbols="all -sw/ -Library_sc".]))
1635 libo_FUZZ_ARG_ENABLE(optimized,
1636 AS_HELP_STRING([--enable-optimized=<yes/no/debug>],
1637 [Whether to compile with optimization flags.
1638 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1639 otherwise. Using 'debug' will try to use only optimizations that should
1640 not interfere with debugging. For Emscripten we default to optimized (-O1)
1641 debug build, as otherwise binaries become too large.]))
1643 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1644 AS_HELP_STRING([--disable-runtime-optimizations],
1645 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1646 JVM JIT) that are known to interact badly with certain dynamic analysis
1647 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1648 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1649 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1651 AC_ARG_WITH(valgrind,
1652 AS_HELP_STRING([--with-valgrind],
1653 [Make availability of Valgrind headers a hard requirement.]))
1655 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1656 AS_HELP_STRING([--enable-compiler-plugins],
1657 [Enable compiler plugins that will perform additional checks during
1658 building. Enabled automatically by --enable-dbgutil.
1659 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1660 COMPILER_PLUGINS_DEBUG=
1661 if test "$enable_compiler_plugins" = debug; then
1662 enable_compiler_plugins=yes
1663 COMPILER_PLUGINS_DEBUG=TRUE
1666 libo_FUZZ_ARG_ENABLE(compiler-plugins-analyzer-pch,
1667 AS_HELP_STRING([--disable-compiler-plugins-analyzer-pch],
1668 [Disable use of precompiled headers when running the Clang compiler plugin analyzer. Not
1669 relevant in the --disable-compiler-plugins case.]))
1671 libo_FUZZ_ARG_ENABLE(ooenv,
1672 AS_HELP_STRING([--enable-ooenv],
1673 [Enable ooenv for the instdir installation.]))
1676 AS_HELP_STRING([--enable-lto],
1677 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1678 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1681 AC_ARG_ENABLE(python,
1682 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1683 [Enables or disables Python support at run-time.
1684 Also specifies what Python to use at build-time.
1685 'fully-internal' even forces the internal version for uses of Python
1687 On macOS the only choices are
1688 'internal' (default) or 'fully-internal'. Otherwise the default is 'auto'.
1691 libo_FUZZ_ARG_ENABLE(gtk3,
1692 AS_HELP_STRING([--disable-gtk3],
1693 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1694 ,test "${test_gtk3}" = no -o "${enable_gtk3+set}" = set || enable_gtk3=yes)
1697 AS_HELP_STRING([--enable-gtk4],
1698 [Determines whether to use Gtk+ 4.0 vclplug on platforms where Gtk+ 4.0 is available.]))
1700 AC_ARG_ENABLE(introspection,
1701 AS_HELP_STRING([--enable-introspection],
1702 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1703 Linux distributions.)]))
1705 AC_ARG_ENABLE(split-app-modules,
1706 AS_HELP_STRING([--enable-split-app-modules],
1707 [Split file lists for app modules, e.g. base, calc.
1708 Has effect only with make distro-pack-install]),
1711 AC_ARG_ENABLE(split-opt-features,
1712 AS_HELP_STRING([--enable-split-opt-features],
1713 [Split file lists for some optional features, e.g. pyuno, testtool.
1714 Has effect only with make distro-pack-install]),
1717 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1718 AS_HELP_STRING([--disable-cairo-canvas],
1719 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1722 libo_FUZZ_ARG_ENABLE(dbus,
1723 AS_HELP_STRING([--disable-dbus],
1724 [Determines whether to enable features that depend on dbus.
1725 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1726 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1728 libo_FUZZ_ARG_ENABLE(sdremote,
1729 AS_HELP_STRING([--disable-sdremote],
1730 [Determines whether to enable Impress remote control (i.e. the server component).]),
1731 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1733 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1734 AS_HELP_STRING([--disable-sdremote-bluetooth],
1735 [Determines whether to build sdremote with bluetooth support.
1736 Requires dbus on Linux.]))
1738 libo_FUZZ_ARG_ENABLE(gio,
1739 AS_HELP_STRING([--disable-gio],
1740 [Determines whether to use the GIO support.]),
1741 ,test "${enable_gio+set}" = set || enable_gio=yes)
1744 AS_HELP_STRING([--enable-qt5],
1745 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1750 AS_HELP_STRING([--enable-qt6],
1751 [Determines whether to use Qt6 vclplug on platforms where Qt6 is
1756 AS_HELP_STRING([--enable-kf5],
1757 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1758 KF5 are available.]),
1761 AC_ARG_ENABLE(gtk3_kde5,
1762 AS_HELP_STRING([--enable-gtk3-kde5],
1763 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1764 platforms where Gtk3, Qt5 and Plasma is available.]),
1768 AS_HELP_STRING([--enable-gen],
1769 [To select the gen backend in case of --disable-dynamic-loading.
1770 Per default auto-enabled when X11 is used.]),
1771 ,test "${test_gen}" = no -o "${enable_gen+set}" = set || enable_gen=yes)
1774 AS_HELP_STRING([--disable-gui],
1775 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1778 libo_FUZZ_ARG_ENABLE(randr,
1779 AS_HELP_STRING([--disable-randr],
1780 [Disable RandR support in the vcl project.]),
1781 ,test "${enable_randr+set}" = set || enable_randr=yes)
1783 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1784 AS_HELP_STRING([--disable-gstreamer-1-0],
1785 [Disable building with the gstreamer 1.0 avmedia backend.]),
1786 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1788 libo_FUZZ_ARG_ENABLE(cve-tests,
1789 AS_HELP_STRING([--disable-cve-tests],
1790 [Prevent CVE tests to be executed]),
1793 AC_ARG_ENABLE(build-opensymbol,
1794 AS_HELP_STRING([--enable-build-opensymbol],
1795 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1796 fontforge installed.]),
1799 AC_ARG_ENABLE(dependency-tracking,
1800 AS_HELP_STRING([--enable-dependency-tracking],
1801 [Do not reject slow dependency extractors.])[
1802 --disable-dependency-tracking
1803 Disables generation of dependency information.
1804 Speed up one-time builds.],
1807 AC_ARG_ENABLE(icecream,
1808 AS_HELP_STRING([--enable-icecream],
1809 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1810 It defaults to /opt/icecream for the location of the icecream gcc/g++
1811 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1815 AS_HELP_STRING([--enable-ld=<linker>],
1816 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1817 By default tries to use the best linker possible, use --disable-ld to use the default linker.
1818 If <linker> contains any ':', the part before the first ':' is used as the value of
1819 -fuse-ld, while the part after the first ':' is used as the value of --ld-path (which is
1820 needed for Clang 12).]),
1823 libo_FUZZ_ARG_ENABLE(cups,
1824 AS_HELP_STRING([--disable-cups],
1825 [Do not build cups support.])
1828 AC_ARG_ENABLE(ccache,
1829 AS_HELP_STRING([--disable-ccache],
1830 [Do not try to use ccache automatically.
1831 By default we will try to detect if ccache is available; in that case if
1832 CC/CXX are not yet set, and --enable-icecream is not given, we
1833 attempt to use ccache. --disable-ccache disables ccache completely.
1834 Additionally ccache's depend mode is enabled if possible,
1835 use --enable-ccache=nodepend to enable ccache without depend mode.
1839 AC_ARG_ENABLE(z7-debug,
1840 AS_HELP_STRING([--enable-z7-debug],
1841 [Makes the MSVC compiler use -Z7 for debugging instead of the default -Zi. Using this option takes
1842 more disk spaces but allows to use ccache. Final PDB files are created even with this option enabled.
1843 Enabled by default if ccache is detected.]))
1845 libo_FUZZ_ARG_ENABLE(online-update,
1846 AS_HELP_STRING([--enable-online-update],
1847 [Enable the online update service that will check for new versions of
1848 LibreOffice. Disabled by default. Requires --with-privacy-policy-url to be set.
1849 If the value is "mar", the experimental Mozilla-like update will be
1850 enabled instead of the traditional update mechanism.]),
1853 AC_ARG_WITH(update-config,
1854 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1855 [Path to the update config ini file]))
1857 libo_FUZZ_ARG_ENABLE(extension-update,
1858 AS_HELP_STRING([--disable-extension-update],
1859 [Disable possibility to update installed extensions.]),
1862 libo_FUZZ_ARG_ENABLE(release-build,
1863 AS_HELP_STRING([--enable-release-build],
1864 [Enable release build. Note that the "release build" choice is orthogonal to
1865 whether symbols are present, debug info is generated, or optimization
1867 See http://wiki.documentfoundation.org/Development/DevBuild]),
1870 AC_ARG_ENABLE(windows-build-signing,
1871 AS_HELP_STRING([--enable-windows-build-signing],
1872 [Enable signing of windows binaries (*.exe, *.dll)]),
1875 AC_ARG_ENABLE(silent-msi,
1876 AS_HELP_STRING([--enable-silent-msi],
1877 [Enable MSI with LIMITUI=1 (silent install).]),
1880 AC_ARG_ENABLE(macosx-code-signing,
1881 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1882 [Sign executables, dylibs, frameworks and the app bundle. If you
1883 don't provide an identity the first suitable certificate
1884 in your keychain is used.]),
1887 AC_ARG_ENABLE(macosx-package-signing,
1888 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1889 [Create a .pkg suitable for uploading to the Mac App Store and sign
1890 it. If you don't provide an identity the first suitable certificate
1891 in your keychain is used.]),
1894 AC_ARG_ENABLE(macosx-sandbox,
1895 AS_HELP_STRING([--enable-macosx-sandbox],
1896 [Make the app bundle run in a sandbox. Requires code signing.
1897 Is required by apps distributed in the Mac App Store, and implies
1898 adherence to App Store rules.]),
1901 AC_ARG_WITH(macosx-bundle-identifier,
1902 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1903 [Define the macOS bundle identifier. Default is the somewhat weird
1904 org.libreoffice.script ("script", huh?).]),
1905 ,with_macosx_bundle_identifier=org.libreoffice.script)
1907 AC_ARG_WITH(macosx-provisioning-profile,
1908 AS_HELP_STRING([--with-macosx-provisioning-profile=/path/to/mac.provisionprofile],
1909 [Specify the path to a provisioning profile to use]),
1912 AC_ARG_WITH(product-name,
1913 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1914 [Define the product name. Default is AC_PACKAGE_NAME.]),
1915 ,with_product_name=$PRODUCTNAME)
1917 libo_FUZZ_ARG_ENABLE(community-flavor,
1918 AS_HELP_STRING([--disable-community-flavor],
1919 [Disable the Community branding.]),
1922 AC_ARG_WITH(package-version,
1923 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1924 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1927 libo_FUZZ_ARG_ENABLE(readonly-installset,
1928 AS_HELP_STRING([--enable-readonly-installset],
1929 [Prevents any attempts by LibreOffice to write into its installation. That means
1930 at least that no "system-wide" extensions can be added. Partly experimental work in
1931 progress, probably not fully implemented. Always enabled for macOS.]),
1934 libo_FUZZ_ARG_ENABLE(mariadb-sdbc,
1935 AS_HELP_STRING([--disable-mariadb-sdbc],
1936 [Disable the build of the MariaDB/MySQL-SDBC driver.])
1939 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1940 AS_HELP_STRING([--disable-postgresql-sdbc],
1941 [Disable the build of the PostgreSQL-SDBC driver.])
1944 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1945 AS_HELP_STRING([--disable-lotuswordpro],
1946 [Disable the build of the Lotus Word Pro filter.]),
1947 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1949 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1950 AS_HELP_STRING([--disable-firebird-sdbc],
1951 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1952 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1954 AC_ARG_ENABLE(bogus-pkg-config,
1955 AS_HELP_STRING([--enable-bogus-pkg-config],
1956 [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.]),
1959 AC_ARG_ENABLE(openssl,
1960 AS_HELP_STRING([--disable-openssl],
1961 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1962 components will use NSS. Work in progress,
1963 use only if you are hacking on it.]),
1964 ,enable_openssl=yes)
1966 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1967 AS_HELP_STRING([--enable-cipher-openssl-backend],
1968 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1969 Requires --enable-openssl.]))
1972 AS_HELP_STRING([--disable-nss],
1973 [Disable using NSS. If disabled,
1974 components will use openssl. Work in progress,
1975 use only if you are hacking on it.]),
1978 AC_ARG_ENABLE(library-bin-tar,
1979 AS_HELP_STRING([--enable-library-bin-tar],
1980 [Enable the building and reused of tarball of binary build for some 'external' libraries.
1981 Some libraries can save their build result in a tarball
1982 stored in TARFILE_LOCATION. That binary tarball is
1983 uniquely identified by the source tarball,
1984 the content of the config_host.mk file and the content
1985 of the top-level directory in core for that library
1986 If this option is enabled, then if such a tarfile exist, it will be untarred
1987 instead of the source tarfile, and the build step will be skipped for that
1989 If a proper tarfile does not exist, then the normal source-based
1990 build is done for that library and a proper binary tarfile is created
1991 for the next time.]),
1994 AC_ARG_ENABLE(dconf,
1995 AS_HELP_STRING([--disable-dconf],
1996 [Disable the dconf configuration backend (enabled by default where
1999 libo_FUZZ_ARG_ENABLE(formula-logger,
2001 [--enable-formula-logger],
2002 [Enable formula logger for logging formula calculation flow in Calc.]
2007 AS_HELP_STRING([--disable-ldap],
2008 [Disable LDAP support.]),
2011 AC_ARG_ENABLE(opencl,
2012 AS_HELP_STRING([--disable-opencl],
2013 [Disable OpenCL support.]),
2016 libo_FUZZ_ARG_ENABLE(librelogo,
2017 AS_HELP_STRING([--disable-librelogo],
2018 [Do not build LibreLogo.]),
2019 ,enable_librelogo=yes)
2021 AC_ARG_ENABLE(wasm-strip,
2022 AS_HELP_STRING([--enable-wasm-strip],
2023 [Strip the static build like for WASM/emscripten platform.]),
2026 AC_ARG_ENABLE(wasm-exceptions,
2027 AS_HELP_STRING([--enable-wasm-exceptions],
2028 [Build with native WASM exceptions (AKA -fwasm-exceptions),
2029 matter of fact, this is currently not finished by any implementation)
2030 (see https://webassembly.org/roadmap/ for the current state]),
2033 AC_ARG_ENABLE(xmlhelp,
2034 AS_HELP_STRING([--disable-xmlhelp],
2035 [Disable XML help support]),
2036 ,enable_xmlhelp=yes)
2038 AC_ARG_ENABLE(customtarget-components,
2039 AS_HELP_STRING([--enable-customtarget-components],
2040 [Generates the static UNO object constructor mapping from the build.]))
2042 AC_ARG_ENABLE(float_device_pixel,
2043 AS_HELP_STRING([--enable-float-device-pixel],
2044 [Uses doubles for VCL device coordinates instead of 32-bit integers.]),
2047 dnl ===================================================================
2048 dnl Optional Packages (--with/without-)
2049 dnl ===================================================================
2051 AC_ARG_WITH(gcc-home,
2052 AS_HELP_STRING([--with-gcc-home],
2053 [Specify the location of gcc/g++ manually. This can be used in conjunction
2054 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
2055 non-default path.]),
2058 AC_ARG_WITH(gnu-patch,
2059 AS_HELP_STRING([--with-gnu-patch],
2060 [Specify location of GNU patch on Solaris or FreeBSD.]),
2063 AC_ARG_WITH(build-platform-configure-options,
2064 AS_HELP_STRING([--with-build-platform-configure-options],
2065 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
2069 AS_HELP_STRING([--with-gnu-cp],
2070 [Specify location of GNU cp on Solaris or FreeBSD.]),
2073 AC_ARG_WITH(external-tar,
2074 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
2075 [Specify an absolute path of where to find (and store) tarfiles.]),
2076 TARFILE_LOCATION=$withval ,
2079 AC_ARG_WITH(referenced-git,
2080 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
2081 [Specify another checkout directory to reference. This makes use of
2082 git submodule update --reference, and saves a lot of diskspace
2083 when having multiple trees side-by-side.]),
2084 GIT_REFERENCE_SRC=$withval ,
2087 AC_ARG_WITH(linked-git,
2088 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
2089 [Specify a directory where the repositories of submodules are located.
2090 This uses a method similar to git-new-workdir to get submodules.]),
2091 GIT_LINK_SRC=$withval ,
2094 AC_ARG_WITH(galleries,
2095 AS_HELP_STRING([--with-galleries],
2096 [Specify how galleries should be built. It is possible either to
2097 build these internally from source ("build"),
2098 or to disable them ("no")]),
2102 AS_HELP_STRING([--with-theme="theme1 theme2..."],
2103 [Choose which themes to include. By default those themes with an '*' are included.
2104 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg,
2105 *colibre, *colibre_svg, *colibre_dark, *colibre_dark_svg,
2106 *elementary, *elementary_svg,
2107 *karasa_jaga, *karasa_jaga_svg,
2108 *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg,
2109 *sukapura, *sukapura_svg.]),
2112 libo_FUZZ_ARG_WITH(helppack-integration,
2113 AS_HELP_STRING([--without-helppack-integration],
2114 [It will not integrate the helppacks to the installer
2115 of the product. Please use this switch to use the online help
2116 or separate help packages.]),
2119 libo_FUZZ_ARG_WITH(fonts,
2120 AS_HELP_STRING([--without-fonts],
2121 [LibreOffice includes some third-party fonts to provide a reliable basis for
2122 help content, templates, samples, etc. When these fonts are already
2123 known to be available on the system then you should use this option.]),
2127 AS_HELP_STRING([--with-epm],
2128 [Decides which epm to use. Default is to use the one from the system if
2129 one is built. When either this is not there or you say =internal epm
2133 AC_ARG_WITH(package-format,
2134 AS_HELP_STRING([--with-package-format],
2135 [Specify package format(s) for LibreOffice installation sets. The
2136 implicit --without-package-format leads to no installation sets being
2137 generated. Possible values: aix, archive, bsd, deb, dmg,
2138 installed, msi, pkg, and rpm.
2139 Example: --with-package-format='deb rpm']),
2143 AS_HELP_STRING([--with-tls],
2144 [Decides which TLS/SSL and cryptographic implementations to use for
2145 LibreOffice's code. Notice that this doesn't apply for depending
2146 libraries like "curl", for example. Default is to use NSS
2147 although OpenSSL is also possible. Notice that selecting NSS restricts
2148 the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
2149 restrict by now the usage of NSS in LO's code. Possible values:
2150 openssl, nss. Example: --with-tls="nss"]),
2153 AC_ARG_WITH(system-libs,
2154 AS_HELP_STRING([--with-system-libs],
2155 [Use libraries already on system -- enables all --with-system-* flags.]),
2158 AC_ARG_WITH(system-bzip2,
2159 AS_HELP_STRING([--with-system-bzip2],
2160 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
2161 [with_system_bzip2="$with_system_libs"])
2163 AC_ARG_WITH(system-headers,
2164 AS_HELP_STRING([--with-system-headers],
2165 [Use headers already on system -- enables all --with-system-* flags for
2166 external packages whose headers are the only entities used i.e.
2167 boost/odbc/sane-header(s).]),,
2168 [with_system_headers="$with_system_libs"])
2170 AC_ARG_WITH(system-jars,
2171 AS_HELP_STRING([--without-system-jars],
2172 [When building with --with-system-libs, also the needed jars are expected
2173 on the system. Use this to disable that]),,
2174 [with_system_jars="$with_system_libs"])
2176 AC_ARG_WITH(system-cairo,
2177 AS_HELP_STRING([--with-system-cairo],
2178 [Use cairo libraries already on system. Happens automatically for
2179 (implicit) --enable-gtk3.]))
2181 AC_ARG_WITH(system-epoxy,
2182 AS_HELP_STRING([--with-system-epoxy],
2183 [Use epoxy libraries already on system. Happens automatically for
2184 (implicit) --enable-gtk3.]),,
2185 [with_system_epoxy="$with_system_libs"])
2187 AC_ARG_WITH(myspell-dicts,
2188 AS_HELP_STRING([--with-myspell-dicts],
2189 [Adds myspell dictionaries to the LibreOffice installation set]),
2192 AC_ARG_WITH(system-dicts,
2193 AS_HELP_STRING([--without-system-dicts],
2194 [Do not use dictionaries from system paths.]),
2197 AC_ARG_WITH(external-dict-dir,
2198 AS_HELP_STRING([--with-external-dict-dir],
2199 [Specify external dictionary dir.]),
2202 AC_ARG_WITH(external-hyph-dir,
2203 AS_HELP_STRING([--with-external-hyph-dir],
2204 [Specify external hyphenation pattern dir.]),
2207 AC_ARG_WITH(external-thes-dir,
2208 AS_HELP_STRING([--with-external-thes-dir],
2209 [Specify external thesaurus dir.]),
2212 AC_ARG_WITH(system-zlib,
2213 AS_HELP_STRING([--with-system-zlib],
2214 [Use zlib already on system.]),,
2215 [with_system_zlib=auto])
2217 AC_ARG_WITH(system-jpeg,
2218 AS_HELP_STRING([--with-system-jpeg],
2219 [Use jpeg already on system.]),,
2220 [with_system_jpeg="$with_system_libs"])
2222 AC_ARG_WITH(system-expat,
2223 AS_HELP_STRING([--with-system-expat],
2224 [Use expat already on system.]),,
2225 [with_system_expat="$with_system_libs"])
2227 AC_ARG_WITH(system-libxml,
2228 AS_HELP_STRING([--with-system-libxml],
2229 [Use libxml/libxslt already on system.]),,
2230 [with_system_libxml=auto])
2232 AC_ARG_WITH(system-openldap,
2233 AS_HELP_STRING([--with-system-openldap],
2234 [Use the OpenLDAP LDAP SDK already on system.]),,
2235 [with_system_openldap="$with_system_libs"])
2237 libo_FUZZ_ARG_ENABLE(poppler,
2238 AS_HELP_STRING([--disable-poppler],
2239 [Disable building Poppler.])
2242 AC_ARG_WITH(system-poppler,
2243 AS_HELP_STRING([--with-system-poppler],
2244 [Use system poppler (only needed for PDF import).]),,
2245 [with_system_poppler="$with_system_libs"])
2247 AC_ARG_WITH(system-abseil,
2248 AS_HELP_STRING([--with-system-abseil],
2249 [Use the abseil libraries already on system.]),,
2250 [with_system_abseil="$with_system_libs"])
2252 AC_ARG_WITH(system-openjpeg,
2253 AS_HELP_STRING([--with-system-openjpeg],
2254 [Use the OpenJPEG library already on system.]),,
2255 [with_system_openjpeg="$with_system_libs"])
2257 libo_FUZZ_ARG_ENABLE(gpgmepp,
2258 AS_HELP_STRING([--disable-gpgmepp],
2259 [Disable building gpgmepp. Do not use in normal cases unless you want to fix potential problems it causes.])
2262 AC_ARG_WITH(system-gpgmepp,
2263 AS_HELP_STRING([--with-system-gpgmepp],
2264 [Use gpgmepp already on system]),,
2265 [with_system_gpgmepp="$with_system_libs"])
2267 AC_ARG_WITH(system-mariadb,
2268 AS_HELP_STRING([--with-system-mariadb],
2269 [Use MariaDB/MySQL libraries already on system.]),,
2270 [with_system_mariadb="$with_system_libs"])
2272 AC_ARG_ENABLE(bundle-mariadb,
2273 AS_HELP_STRING([--enable-bundle-mariadb],
2274 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
2277 AC_ARG_WITH(system-postgresql,
2278 AS_HELP_STRING([--with-system-postgresql],
2279 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
2280 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
2281 [with_system_postgresql="$with_system_libs"])
2283 AC_ARG_WITH(libpq-path,
2284 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
2285 [Use this PostgreSQL C interface (libpq) installation for building
2286 the PostgreSQL-SDBC extension.]),
2289 AC_ARG_WITH(system-firebird,
2290 AS_HELP_STRING([--with-system-firebird],
2291 [Use Firebird libraries already on system, for building the Firebird-SDBC
2292 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
2293 [with_system_firebird="$with_system_libs"])
2295 AC_ARG_WITH(system-libtommath,
2296 AS_HELP_STRING([--with-system-libtommath],
2297 [Use libtommath already on system]),,
2298 [with_system_libtommath="$with_system_libs"])
2300 AC_ARG_WITH(system-hsqldb,
2301 AS_HELP_STRING([--with-system-hsqldb],
2302 [Use hsqldb already on system.]))
2304 AC_ARG_WITH(hsqldb-jar,
2305 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
2306 [Specify path to jarfile manually.]),
2307 HSQLDB_JAR=$withval)
2309 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
2310 AS_HELP_STRING([--disable-scripting-beanshell],
2311 [Disable support for scripts in BeanShell.]),
2315 AC_ARG_WITH(system-beanshell,
2316 AS_HELP_STRING([--with-system-beanshell],
2317 [Use beanshell already on system.]),,
2318 [with_system_beanshell="$with_system_jars"])
2320 AC_ARG_WITH(beanshell-jar,
2321 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
2322 [Specify path to jarfile manually.]),
2325 libo_FUZZ_ARG_ENABLE(scripting-javascript,
2326 AS_HELP_STRING([--disable-scripting-javascript],
2327 [Disable support for scripts in JavaScript.]),
2331 AC_ARG_WITH(system-rhino,
2332 AS_HELP_STRING([--with-system-rhino],
2333 [Use rhino already on system.]),,)
2334 # [with_system_rhino="$with_system_jars"])
2335 # Above is not used as we have different debug interface
2336 # patched into internal rhino. This code needs to be fixed
2337 # before we can enable it by default.
2339 AC_ARG_WITH(rhino-jar,
2340 AS_HELP_STRING([--with-rhino-jar=JARFILE],
2341 [Specify path to jarfile manually.]),
2344 AC_ARG_WITH(system-jfreereport,
2345 AS_HELP_STRING([--with-system-jfreereport],
2346 [Use JFreeReport already on system.]),,
2347 [with_system_jfreereport="$with_system_jars"])
2349 AC_ARG_WITH(sac-jar,
2350 AS_HELP_STRING([--with-sac-jar=JARFILE],
2351 [Specify path to jarfile manually.]),
2354 AC_ARG_WITH(libxml-jar,
2355 AS_HELP_STRING([--with-libxml-jar=JARFILE],
2356 [Specify path to jarfile manually.]),
2357 LIBXML_JAR=$withval)
2359 AC_ARG_WITH(flute-jar,
2360 AS_HELP_STRING([--with-flute-jar=JARFILE],
2361 [Specify path to jarfile manually.]),
2364 AC_ARG_WITH(jfreereport-jar,
2365 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
2366 [Specify path to jarfile manually.]),
2367 JFREEREPORT_JAR=$withval)
2369 AC_ARG_WITH(liblayout-jar,
2370 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
2371 [Specify path to jarfile manually.]),
2372 LIBLAYOUT_JAR=$withval)
2374 AC_ARG_WITH(libloader-jar,
2375 AS_HELP_STRING([--with-libloader-jar=JARFILE],
2376 [Specify path to jarfile manually.]),
2377 LIBLOADER_JAR=$withval)
2379 AC_ARG_WITH(libformula-jar,
2380 AS_HELP_STRING([--with-libformula-jar=JARFILE],
2381 [Specify path to jarfile manually.]),
2382 LIBFORMULA_JAR=$withval)
2384 AC_ARG_WITH(librepository-jar,
2385 AS_HELP_STRING([--with-librepository-jar=JARFILE],
2386 [Specify path to jarfile manually.]),
2387 LIBREPOSITORY_JAR=$withval)
2389 AC_ARG_WITH(libfonts-jar,
2390 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
2391 [Specify path to jarfile manually.]),
2392 LIBFONTS_JAR=$withval)
2394 AC_ARG_WITH(libserializer-jar,
2395 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
2396 [Specify path to jarfile manually.]),
2397 LIBSERIALIZER_JAR=$withval)
2399 AC_ARG_WITH(libbase-jar,
2400 AS_HELP_STRING([--with-libbase-jar=JARFILE],
2401 [Specify path to jarfile manually.]),
2402 LIBBASE_JAR=$withval)
2404 AC_ARG_WITH(system-odbc,
2405 AS_HELP_STRING([--with-system-odbc],
2406 [Use the odbc headers already on system.]),,
2407 [with_system_odbc="auto"])
2409 AC_ARG_WITH(system-sane,
2410 AS_HELP_STRING([--with-system-sane],
2411 [Use sane.h already on system.]),,
2412 [with_system_sane="$with_system_headers"])
2414 AC_ARG_WITH(system-bluez,
2415 AS_HELP_STRING([--with-system-bluez],
2416 [Use bluetooth.h already on system.]),,
2417 [with_system_bluez="$with_system_headers"])
2419 AC_ARG_WITH(system-boost,
2420 AS_HELP_STRING([--with-system-boost],
2421 [Use boost already on system.]),,
2422 [with_system_boost="$with_system_headers"])
2424 AC_ARG_WITH(system-dragonbox,
2425 AS_HELP_STRING([--with-system-dragonbox],
2426 [Use dragonbox already on system.]),,
2427 [with_system_dragonbox="$with_system_headers"])
2429 AC_ARG_WITH(system-libfixmath,
2430 AS_HELP_STRING([--with-system-libfixmath],
2431 [Use libfixmath already on system.]),,
2432 [with_system_libfixmath="$with_system_libs"])
2434 AC_ARG_WITH(system-glm,
2435 AS_HELP_STRING([--with-system-glm],
2436 [Use glm already on system.]),,
2437 [with_system_glm="$with_system_headers"])
2439 AC_ARG_WITH(system-hunspell,
2440 AS_HELP_STRING([--with-system-hunspell],
2441 [Use libhunspell already on system.]),,
2442 [with_system_hunspell="$with_system_libs"])
2444 libo_FUZZ_ARG_ENABLE(zxing,
2445 AS_HELP_STRING([--disable-zxing],
2446 [Disable use of zxing external library.]))
2448 AC_ARG_WITH(system-zxing,
2449 AS_HELP_STRING([--with-system-zxing],
2450 [Use libzxing already on system.]),,
2451 [with_system_zxing="$with_system_libs"])
2453 AC_ARG_WITH(system-box2d,
2454 AS_HELP_STRING([--with-system-box2d],
2455 [Use box2d already on system.]),,
2456 [with_system_box2d="$with_system_libs"])
2458 AC_ARG_WITH(system-mythes,
2459 AS_HELP_STRING([--with-system-mythes],
2460 [Use mythes already on system.]),,
2461 [with_system_mythes="$with_system_libs"])
2463 AC_ARG_WITH(system-altlinuxhyph,
2464 AS_HELP_STRING([--with-system-altlinuxhyph],
2465 [Use ALTLinuxhyph already on system.]),,
2466 [with_system_altlinuxhyph="$with_system_libs"])
2468 AC_ARG_WITH(system-lpsolve,
2469 AS_HELP_STRING([--with-system-lpsolve],
2470 [Use lpsolve already on system.]),,
2471 [with_system_lpsolve="$with_system_libs"])
2473 AC_ARG_WITH(system-coinmp,
2474 AS_HELP_STRING([--with-system-coinmp],
2475 [Use CoinMP already on system.]),,
2476 [with_system_coinmp="$with_system_libs"])
2478 AC_ARG_WITH(system-liblangtag,
2479 AS_HELP_STRING([--with-system-liblangtag],
2480 [Use liblangtag library already on system.]),,
2481 [with_system_liblangtag="$with_system_libs"])
2483 AC_ARG_WITH(system-lockfile,
2484 AS_HELP_STRING([--with-system-lockfile[=file]],
2485 [Detect a system lockfile program or use the \$file argument.]))
2488 AS_HELP_STRING([--without-webdav],
2489 [Disable WebDAV support in the UCB.]))
2491 AC_ARG_WITH(linker-hash-style,
2492 AS_HELP_STRING([--with-linker-hash-style],
2493 [Use linker with --hash-style=<style> when linking shared objects.
2494 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2495 if supported on the build system, and "sysv" otherwise.]))
2497 AC_ARG_WITH(jdk-home,
2498 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2499 [If you have installed JDK 9 or later on your system please supply the
2500 path here. Note that this is not the location of the java command but the
2501 location of the entire distribution. In case of cross-compiling, this
2502 is the JDK of the host os. Use --with-build-platform-configure-options
2503 to point to a different build platform JDK.]),
2507 AS_HELP_STRING([--with-help],
2508 [Enable the build of help. There is a special parameter "common" that
2509 can be used to bundle only the common part, .e.g help-specific icons.
2510 This is useful when you build the helpcontent separately.])
2512 Usage: --with-help build the old local help
2513 --without-help no local help (default)
2514 --with-help=html build the new HTML local help
2515 --with-help=online build the new HTML online help
2519 AC_ARG_WITH(omindex,
2520 AS_HELP_STRING([--with-omindex],
2521 [Enable the support of xapian-omega index for online help.])
2523 Usage: --with-omindex=server prepare the pages for omindex
2524 but let xapian-omega be built in server.
2525 --with-omindex=noxap do not prepare online pages
2530 libo_FUZZ_ARG_WITH(java,
2531 AS_HELP_STRING([--with-java=<java command>],
2532 [Specify the name of the Java interpreter command. Typically "java"
2533 which is the default.
2535 To build without support for Java components, applets, accessibility
2536 or the XML filters written in Java, use --without-java or --with-java=no.]),
2537 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2538 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2541 AC_ARG_WITH(jvm-path,
2542 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2543 [Use a specific JVM search path at runtime.
2544 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2547 AC_ARG_WITH(ant-home,
2548 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2549 [If you have installed Apache Ant on your system, please supply the path here.
2550 Note that this is not the location of the Ant binary but the location
2551 of the entire distribution.]),
2554 AC_ARG_WITH(symbol-config,
2555 AS_HELP_STRING([--with-symbol-config],
2556 [Configuration for the crashreport symbol upload]),
2558 [with_symbol_config=no])
2560 AC_ARG_WITH(export-validation,
2561 AS_HELP_STRING([--without-export-validation],
2562 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2563 ,with_export_validation=auto)
2565 AC_ARG_WITH(bffvalidator,
2566 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2567 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2568 Requires installed Microsoft Office Binary File Format Validator.
2569 Note: export-validation (--with-export-validation) is required to be turned on.
2570 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2571 ,with_bffvalidator=no)
2573 libo_FUZZ_ARG_WITH(junit,
2574 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2575 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2576 --without-junit disables those tests. Not relevant in the --without-java case.]),
2579 AC_ARG_WITH(hamcrest,
2580 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2581 [Specifies the hamcrest jar file to use for JUnit-based tests.
2582 --without-junit disables those tests. Not relevant in the --without-java case.]),
2585 AC_ARG_WITH(perl-home,
2586 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2587 [If you have installed Perl 5 Distribution, on your system, please
2588 supply the path here. Note that this is not the location of the Perl
2589 binary but the location of the entire distribution.]),
2592 libo_FUZZ_ARG_WITH(doxygen,
2594 [--with-doxygen=<absolute path to doxygen executable>],
2595 [Specifies the doxygen executable to use when generating ODK C/C++
2596 documentation. --without-doxygen disables generation of ODK C/C++
2597 documentation. Not relevant in the --disable-odk case.]),
2600 AC_ARG_WITH(visual-studio,
2601 AS_HELP_STRING([--with-visual-studio=<2019/2022>],
2602 [Specify which Visual Studio version to use in case several are
2603 installed. Currently 2019 (default) and 2022 are supported.]),
2606 AC_ARG_WITH(windows-sdk,
2607 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10.0>],
2608 [Specify which Windows SDK, or "Windows Kit", version to use
2609 in case the one that came with the selected Visual Studio
2610 is not what you want for some reason. Note that not all compiler/SDK
2611 combinations are supported. The intent is that this option should not
2616 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2617 [Use this option to build LibreOffice with additional UI language support.
2618 English (US) is always included by default.
2619 Separate multiple languages with space.
2620 For all languages, use --with-lang=ALL.]),
2623 AC_ARG_WITH(locales,
2624 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2625 [Use this option to limit the locale information built in.
2626 Separate multiple locales with space.
2627 Very experimental and might well break stuff.
2628 Just a desperate measure to shrink code and data size.
2629 By default all the locales available is included.
2630 Just works with --disable-dynloading. Defaults to "ALL".
2631 This option is completely unrelated to --with-lang.])
2633 Affects also our character encoding conversion
2634 tables for encodings mainly targeted for a
2635 particular locale, like EUC-CN and EUC-TW for
2636 zh, ISO-2022-JP for ja.
2638 Affects also our add-on break iterator data for
2641 For the default, all locales, don't use this switch at all.
2642 Specifying just the language part of a locale means all matching
2643 locales will be included.
2647 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2648 libo_FUZZ_ARG_WITH(krb5,
2649 AS_HELP_STRING([--with-krb5],
2650 [Enable MIT Kerberos 5 support in modules that support it.
2651 By default automatically enabled on platforms
2652 where a good system Kerberos 5 is available.]),
2655 libo_FUZZ_ARG_WITH(gssapi,
2656 AS_HELP_STRING([--with-gssapi],
2657 [Enable GSSAPI support in modules that support it.
2658 By default automatically enabled on platforms
2659 where a good system GSSAPI is available.]),
2662 libo_FUZZ_ARG_WITH(lxml,
2663 AS_HELP_STRING([--without-lxml],
2664 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2665 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2666 report widget classes and ids.]),
2669 libo_FUZZ_ARG_WITH(latest-c++,
2670 AS_HELP_STRING([--with-latest-c++],
2671 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2672 published standard.]),,
2673 [with_latest_c__=no])
2675 dnl ===================================================================
2677 dnl ===================================================================
2679 AC_ARG_WITH(branding,
2680 AS_HELP_STRING([--with-branding=/path/to/images],
2681 [Use given path to retrieve branding images set.])
2683 Search for intro.png about.svg and logo.svg.
2684 If any is missing, default ones will be used instead.
2686 Search also progress.conf for progress
2687 settings on intro screen :
2689 PROGRESSBARCOLOR="255,255,255" Set color of
2690 progress bar. Comma separated RGB decimal values.
2691 PROGRESSSIZE="407,6" Set size of progress bar.
2692 Comma separated decimal values (width, height).
2693 PROGRESSPOSITION="61,317" Set position of progress
2694 bar from left,top. Comma separated decimal values.
2695 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2696 bar frame. Comma separated RGB decimal values.
2697 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2698 bar text. Comma separated RGB decimal values.
2699 PROGRESSTEXTBASELINE="287" Set vertical position of
2700 progress bar text from top. Decimal value.
2702 Default values will be used if not found.
2707 AC_ARG_WITH(extra-buildid,
2708 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2709 [Show addition build identification in about dialog.]),
2714 AS_HELP_STRING([--with-vendor="John the Builder"],
2715 [Set vendor of the build.]),
2718 AC_ARG_WITH(privacy-policy-url,
2719 AS_HELP_STRING([--with-privacy-policy-url="https://yourdomain/privacy-policy"],
2720 [The URL to your privacy policy (needed when
2721 enabling online-update or crashreporting via breakpad)]),
2722 [if test "x$with_privacy_policy_url" = "xyes"; then
2723 AC_MSG_FAILURE([you need to specify an argument when using --with-privacy-policy-url])
2724 elif test "x$with_privacy_policy_url" = "xno"; then
2725 with_privacy_policy_url="undefined"
2727 ,[with_privacy_policy_url="undefined"])
2729 AC_ARG_WITH(android-package-name,
2730 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2731 [Set Android package name of the build.]),
2734 AC_ARG_WITH(compat-oowrappers,
2735 AS_HELP_STRING([--with-compat-oowrappers],
2736 [Install oo* wrappers in parallel with
2737 lo* ones to keep backward compatibility.
2738 Has effect only with make distro-pack-install]),
2741 AC_ARG_WITH(os-version,
2742 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2743 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2746 AC_ARG_WITH(parallelism,
2747 AS_HELP_STRING([--with-parallelism],
2748 [Number of jobs to run simultaneously during build. Parallel builds can
2749 save a lot of time on multi-cpu machines. Defaults to the number of
2750 CPUs on the machine, unless you configure --enable-icecream - then to
2754 AC_ARG_WITH(all-tarballs,
2755 AS_HELP_STRING([--with-all-tarballs],
2756 [Download all external tarballs unconditionally]))
2758 AC_ARG_WITH(gdrive-client-id,
2759 AS_HELP_STRING([--with-gdrive-client-id],
2760 [Provides the client id of the application for OAuth2 authentication
2761 on Google Drive. If either this or --with-gdrive-client-secret is
2762 empty, the feature will be disabled]),
2765 AC_ARG_WITH(gdrive-client-secret,
2766 AS_HELP_STRING([--with-gdrive-client-secret],
2767 [Provides the client secret of the application for OAuth2
2768 authentication on Google Drive. If either this or
2769 --with-gdrive-client-id is empty, the feature will be disabled]),
2772 AC_ARG_WITH(alfresco-cloud-client-id,
2773 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2774 [Provides the client id of the application for OAuth2 authentication
2775 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2776 empty, the feature will be disabled]),
2779 AC_ARG_WITH(alfresco-cloud-client-secret,
2780 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2781 [Provides the client secret of the application for OAuth2
2782 authentication on Alfresco Cloud. If either this or
2783 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2786 AC_ARG_WITH(onedrive-client-id,
2787 AS_HELP_STRING([--with-onedrive-client-id],
2788 [Provides the client id of the application for OAuth2 authentication
2789 on OneDrive. If either this or --with-onedrive-client-secret is
2790 empty, the feature will be disabled]),
2793 AC_ARG_WITH(onedrive-client-secret,
2794 AS_HELP_STRING([--with-onedrive-client-secret],
2795 [Provides the client secret of the application for OAuth2
2796 authentication on OneDrive. If either this or
2797 --with-onedrive-client-id is empty, the feature will be disabled]),
2799 dnl ===================================================================
2800 dnl Do we want to use pre-build binary tarball for recompile
2801 dnl ===================================================================
2803 if test "$enable_library_bin_tar" = "yes" ; then
2804 USE_LIBRARY_BIN_TAR=TRUE
2806 USE_LIBRARY_BIN_TAR=
2808 AC_SUBST(USE_LIBRARY_BIN_TAR)
2810 dnl ===================================================================
2811 dnl Test whether build target is Release Build
2812 dnl ===================================================================
2813 AC_MSG_CHECKING([whether build target is Release Build])
2814 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2816 ENABLE_RELEASE_BUILD=
2817 GET_TASK_ALLOW_ENTITLEMENT='
2818 <!-- We want to be able to debug a hardened process when not building for release -->
2819 <key>com.apple.security.get-task-allow</key>
2822 AC_MSG_RESULT([yes])
2823 ENABLE_RELEASE_BUILD=TRUE
2824 GET_TASK_ALLOW_ENTITLEMENT=''
2826 AC_SUBST(ENABLE_RELEASE_BUILD)
2827 AC_SUBST(GET_TASK_ALLOW_ENTITLEMENT)
2829 AC_MSG_CHECKING([whether to build a Community flavor])
2830 if test -z "$enable_community_flavor" -o "$enable_community_flavor" = "yes"; then
2831 AC_DEFINE(HAVE_FEATURE_COMMUNITY_FLAVOR)
2832 AC_MSG_RESULT([yes])
2837 dnl ===================================================================
2838 dnl Test whether to sign Windows Build
2839 dnl ===================================================================
2840 AC_MSG_CHECKING([whether to sign windows build])
2841 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2842 AC_MSG_RESULT([yes])
2843 WINDOWS_BUILD_SIGNING="TRUE"
2846 WINDOWS_BUILD_SIGNING="FALSE"
2848 AC_SUBST(WINDOWS_BUILD_SIGNING)
2850 dnl ===================================================================
2851 dnl MacOSX build and runtime environment options
2852 dnl ===================================================================
2854 AC_ARG_WITH(macosx-version-min-required,
2855 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2856 [set the minimum OS version needed to run the built LibreOffice])
2858 e. g.: --with-macosx-version-min-required=10.14
2862 dnl ===================================================================
2863 dnl Check for incompatible options set by fuzzing, and reset those
2864 dnl automatically to working combinations
2865 dnl ===================================================================
2867 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2868 "$enable_dbus" != "$enable_avahi"; then
2869 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2870 enable_avahi=$enable_dbus
2875 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2876 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2880 add_lopath_before ()
2885 for dir in $LO_PATH ; do
2886 if test "$dir" != "$1" ; then
2887 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2890 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2893 dnl ===================================================================
2894 dnl check for required programs (grep, awk, sed, bash)
2895 dnl ===================================================================
2900 if test -n "$1"; then
2901 if test "$build_os" = "cygwin"; then
2902 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2904 new_path=`cygpath -sm "$formatted_path"`
2907 new_path=`cygpath -u "$formatted_path"`
2912 if test "$2" = "after"; then
2913 add_lopath_after "$new_path"
2915 add_lopath_before "$new_path"
2921 AC_PATH_PROG( AWK, $AWK)
2922 if test -z "$AWK"; then
2923 AC_MSG_ERROR([install awk to run this script])
2926 AC_PATH_PROG(BASH, bash)
2927 if test -z "$BASH"; then
2928 AC_MSG_ERROR([bash not found in \$PATH])
2932 # prefer parallel compression tools, if available
2933 AC_PATH_PROG(COMPRESSIONTOOL, pigz)
2934 if test -z "$COMPRESSIONTOOL"; then
2935 AC_PATH_PROG(COMPRESSIONTOOL, gzip)
2936 if test -z "$COMPRESSIONTOOL"; then
2937 AC_MSG_ERROR([gzip not found in \$PATH])
2940 AC_SUBST(COMPRESSIONTOOL)
2942 # use GNU parallel for packaging, if available
2943 AC_PATH_PROG(GNUPARALLEL, parallel)
2944 AC_SUBST(GNUPARALLEL)
2946 AC_MSG_CHECKING([for GNU or BSD tar])
2947 for a in $GNUTAR gtar gnutar tar bsdtar /usr/sfw/bin/gtar; do
2948 $a --version 2> /dev/null | grep -E "GNU|bsdtar" 2>&1 > /dev/null
2949 if test $? -eq 0; then
2954 AC_MSG_RESULT($GNUTAR)
2955 if test -z "$GNUTAR"; then
2956 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2960 AC_MSG_CHECKING([for tar's option to strip components])
2961 $GNUTAR --help 2> /dev/null | grep -E "bsdtar|strip-components" 2>&1 >/dev/null
2962 if test $? -eq 0; then
2963 STRIP_COMPONENTS="--strip-components"
2965 $GNUTAR --help 2> /dev/null | grep -E "strip-path" 2>&1 >/dev/null
2966 if test $? -eq 0; then
2967 STRIP_COMPONENTS="--strip-path"
2969 STRIP_COMPONENTS="unsupported"
2972 AC_MSG_RESULT($STRIP_COMPONENTS)
2973 if test x$STRIP_COMPONENTS = xunsupported; then
2974 AC_MSG_ERROR([you need a tar that is able to strip components.])
2976 AC_SUBST(STRIP_COMPONENTS)
2978 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2979 dnl desktop OSes from "mobile" ones.
2981 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2982 dnl In other words, that when building for an OS that is not a
2983 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2985 dnl Note the direction of the implication; there is no assumption that
2986 dnl cross-compiling would imply a non-desktop OS.
2988 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
2989 BUILD_TYPE="$BUILD_TYPE DESKTOP"
2990 AC_DEFINE(HAVE_FEATURE_DESKTOP)
2991 if test "$_os" != Emscripten; then
2992 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2996 # explicitly doesn't include enable_gtk3=no and enable_qt5=yes, so it should
2997 # also work with the default gtk3 plugin.
2998 if test "$enable_wasm_strip" = "yes"; then
3003 test "$_os" = Emscripten && enable_curl=no
3004 enable_database_connectivity=no
3007 test "${enable_dynamic_loading+set}" = set -o "$_os" != Emscripten || enable_dynamic_loading=no
3008 enable_extension_integration=no
3009 enable_extensions=no
3010 enable_extension_update=no
3014 enable_lotuswordpro=no
3018 enable_online_update=no
3022 enable_report_builder=no
3024 enable_sdremote_bluetooth=no
3034 test_libpagemaker=no
3043 test "${with_fonts+set}" = set || with_fonts=yes
3044 test "${with_locales+set}" = set || with_locales=en
3046 AC_DEFINE(ENABLE_WASM_STRIP_ACCESSIBILITY)
3047 AC_DEFINE(ENABLE_WASM_STRIP_CANVAS)
3048 # AC_DEFINE(ENABLE_WASM_STRIP_CHART)
3049 AC_DEFINE(ENABLE_WASM_STRIP_DBACCESS)
3050 AC_DEFINE(ENABLE_WASM_STRIP_EPUB)
3051 AC_DEFINE(ENABLE_WASM_STRIP_EXTRA)
3052 AC_DEFINE(ENABLE_WASM_STRIP_GUESSLANG)
3053 # AC_DEFINE(ENABLE_WASM_STRIP_HUNSPELL)
3054 AC_DEFINE(ENABLE_WASM_STRIP_PINGUSER)
3055 AC_DEFINE(ENABLE_WASM_STRIP_PREMULTIPLY)
3056 AC_DEFINE(ENABLE_WASM_STRIP_RECENT)
3057 AC_DEFINE(ENABLE_WASM_STRIP_RECOVERYUI)
3058 AC_DEFINE(ENABLE_WASM_STRIP_SPLASH)
3059 AC_DEFINE(ENABLE_WASM_STRIP_SWEXPORTS)
3062 EMSCRIPTEN_NEH_MAJOR=3
3063 EMSCRIPTEN_NEH_MINOR=1
3064 EMSCRIPTEN_NEH_TINY=3
3065 EMSCRIPTEN_NEH_VERSION="${EMSCRIPTEN_NEH_MAJOR}.${EMSCRIPTEN_NEH_MINOR}.${EMSCRIPTEN_NEH_TINY}"
3067 if test "$enable_wasm_exceptions" = yes; then
3068 AC_MSG_CHECKING([if Emscripten version is at least $EMSCRIPTEN_NEH_VERSION for SjLj + native EH])
3069 check_semantic_version_three_prefixed EMSCRIPTEN NEH
3070 if test $? -ne 0; then
3071 AC_MSG_ERROR([no, found $EMSCRIPTEN_VERSION])
3073 AC_MSG_RESULT([yes ($EMSCRIPTEN_VERSION)])
3075 ENABLE_WASM_EXCEPTIONS=TRUE
3077 AC_SUBST(ENABLE_WASM_EXCEPTIONS)
3079 # Whether to build "avmedia" functionality or not.
3081 if test "$enable_avmedia" = yes; then
3082 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
3083 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
3085 test_gstreamer_1_0=no
3088 # Decide whether to build database connectivity stuff (including Base) or not.
3089 if test "$enable_database_connectivity" != no; then
3090 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
3091 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
3093 if test "$_os" = iOS; then
3094 AC_MSG_ERROR([Presumly can't disable DB connectivity on iOS.])
3096 disable_database_connectivity_dependencies
3099 if test -z "$enable_extensions"; then
3100 # For iOS and Android Viewer, disable extensions unless specifically overridden with --enable-extensions.
3101 if test $_os != iOS && test $_os != Android -o "$ENABLE_ANDROID_LOK" = TRUE ; then
3102 enable_extensions=yes
3106 DISABLE_SCRIPTING=''
3107 if test "$enable_scripting" = yes; then
3108 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
3109 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
3111 DISABLE_SCRIPTING='TRUE'
3112 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
3115 if test $_os = iOS -o $_os = Android -o $_os = Emscripten; then
3116 # Disable dynamic_loading always for iOS and Android
3117 enable_dynamic_loading=no
3118 elif test -z "$enable_dynamic_loading"; then
3119 # Otherwise enable it unless specifically disabled
3120 enable_dynamic_loading=yes
3123 DISABLE_DYNLOADING=''
3124 if test "$enable_dynamic_loading" = yes; then
3125 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
3127 DISABLE_DYNLOADING='TRUE'
3128 if test $_os != iOS -a $_os != Android; then
3129 enable_database_connectivity=no
3137 AC_SUBST(DISABLE_DYNLOADING)
3139 ENABLE_CUSTOMTARGET_COMPONENTS=
3140 if test "$enable_customtarget_components" = yes -a "$DISABLE_DYNLOADING" = TRUE; then
3141 ENABLE_CUSTOMTARGET_COMPONENTS=TRUE
3142 if test -n "$with_locales" -a "$with_locales" != en -a "$with_locales" != ALL; then
3143 AC_MSG_ERROR([Currently just --with-locales=all or en is supported with --enable-customtarget-components])
3146 AC_SUBST(ENABLE_CUSTOMTARGET_COMPONENTS)
3148 if test "$enable_extensions" = yes; then
3149 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
3150 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
3152 enable_extension_integration=no
3153 enable_extension_update=no
3156 # remember SYSBASE value
3159 dnl ===================================================================
3160 dnl Sort out various gallery compilation options
3161 dnl ===================================================================
3162 WITH_GALLERY_BUILD=TRUE
3163 AC_MSG_CHECKING([how to build and package galleries])
3164 if test -n "${with_galleries}"; then
3165 if test "$with_galleries" = "build"; then
3166 if test "$enable_database_connectivity" = no; then
3167 AC_MSG_ERROR([DB connectivity is needed for gengal / svx])
3169 AC_MSG_RESULT([build from source images internally])
3170 elif test "$with_galleries" = "no"; then
3172 AC_MSG_RESULT([disable non-internal gallery build])
3174 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
3177 if test $_os != iOS -a $_os != Android; then
3178 AC_MSG_RESULT([internal src images for desktop])
3181 AC_MSG_RESULT([disable src image build])
3184 AC_SUBST(WITH_GALLERY_BUILD)
3186 dnl ===================================================================
3187 dnl Checks if ccache is available
3188 dnl ===================================================================
3190 if test "$enable_ccache" = "no"; then
3192 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
3193 case "%$CC%$CXX%" in
3194 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
3195 # assume that's good then
3196 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
3197 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
3198 CCACHE_DEPEND_MODE=1
3201 # try to use our own ccache if it is available and CCACHE was not already defined
3202 if test -z "$CCACHE"; then
3203 if test "$_os" = "WINNT"; then
3204 ccache_ext=.exe # e.g. openssl build needs ccache.exe, not just ccache
3206 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/ccache$ccache_ext" ; then
3207 CCACHE="$LODE_HOME/opt/bin/ccache$ccache_ext"
3208 elif test -x "/opt/lo/bin/ccache$ccache_ext"; then
3209 CCACHE="/opt/lo/bin/ccache$ccache_ext"
3212 AC_PATH_PROG([CCACHE],[ccache],[not found])
3213 if test "$CCACHE" != "not found" -a "$_os" = "WINNT"; then
3214 CCACHE=`win_short_path_for_make "$CCACHE"`
3215 # check that it has MSVC support (it should recognize it in CCACHE_COMPILERTYPE)
3217 AC_MSG_CHECKING([whether $CCACHE has MSVC support])
3218 CCACHE_COMPILERTYPE=cl CCACHE_LOGFILE=conftest.txt $CCACHE echo >/dev/null 2>/dev/null
3219 if grep -q 'Config: (environment) compiler_type = cl' conftest.txt; then
3227 if test "$CCACHE" = "not found" -a "$_os" = "WINNT"; then
3228 # on windows/VC perhaps sccache is around?
3229 case "%$CC%$CXX%" in
3230 # If $CC and/or $CXX already contain "sccache" (possibly suffixed with some version number etc),
3231 # assume that's good then
3232 *%sccache[[-_' ']]*|*/sccache[[-_' ']]*)
3233 AC_MSG_NOTICE([sccache seems to be included in a pre-defined CC and/or CXX])
3234 CCACHE_DEPEND_MODE=1
3238 # for sharing code below, reuse CCACHE env var
3239 AC_PATH_PROG([CCACHE],[sccache],[not found])
3240 if test "$CCACHE" != "not found"; then
3241 CCACHE=`win_short_path_for_make "$CCACHE"`
3243 CCACHE_DEPEND_MODE=1
3248 if test "$CCACHE" = "not found"; then
3251 if test -n "$CCACHE" -a -z "$SCCACHE"; then
3252 CCACHE_DEPEND_MODE=1
3253 # Need to check for ccache version: otherwise prevents
3254 # caching of the results (like "-x objective-c++" for Mac)
3255 if test $_os = Darwin -o $_os = iOS; then
3256 # Check ccache version
3257 AC_MSG_CHECKING([whether version of ccache is suitable])
3258 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
3259 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
3260 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
3261 AC_MSG_RESULT([yes, $CCACHE_VERSION])
3263 AC_MSG_RESULT([no, $CCACHE_VERSION])
3274 if test "$enable_ccache" = "nodepend"; then
3275 CCACHE_DEPEND_MODE=""
3277 AC_SUBST(CCACHE_DEPEND_MODE)
3279 # sccache defaults are good enough
3280 if test "$CCACHE" != "" -a -z "$SCCACHE"; then
3281 # e.g. (/home/rene/.config/ccache/ccache.conf) max_size = 20.0G
3282 # -p works with both 4.2 and 4.4
3283 ccache_size_msg=$([$CCACHE -p | $AWK /max_size/'{ print $4 }' | sed -e 's/\.[0-9]*//'])
3284 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
3285 if test "$ccache_size" = ""; then
3286 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
3287 if test "$ccache_size" = ""; then
3290 # we could not determine the size or it was less than 1GB -> disable auto-ccache
3291 if test $ccache_size -lt 1024; then
3293 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
3294 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
3296 # warn that ccache may be too small for debug build
3297 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3298 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3301 if test $ccache_size -lt 5; then
3302 #warn that ccache may be too small for debug build
3303 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
3304 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
3310 if test "$enable_z7_debug" != no; then
3311 if test "$enable_z7_debug" = yes -o -n "$CCACHE"; then
3312 ENABLE_Z7_DEBUG=TRUE
3315 AC_MSG_WARN([ccache will not work with --disable-z7-debug])
3316 add_warning "ccache will not work with --disable-z7-debug"
3318 AC_SUBST(ENABLE_Z7_DEBUG)
3320 dnl ===================================================================
3321 dnl Checks for C compiler,
3322 dnl The check for the C++ compiler is later on.
3323 dnl ===================================================================
3324 if test "$_os" != "WINNT"; then
3326 AC_MSG_CHECKING([gcc home])
3327 if test -z "$with_gcc_home"; then
3328 if test "$enable_icecream" = "yes"; then
3329 if test -d "/usr/lib/icecc/bin"; then
3330 GCC_HOME="/usr/lib/icecc/"
3331 elif test -d "/usr/libexec/icecc/bin"; then
3332 GCC_HOME="/usr/libexec/icecc/"
3333 elif test -d "/opt/icecream/bin"; then
3334 GCC_HOME="/opt/icecream/"
3336 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
3340 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
3341 GCC_HOME_SET="false"
3344 GCC_HOME="$with_gcc_home"
3346 AC_MSG_RESULT($GCC_HOME)
3349 if test "$GCC_HOME_SET" = "true"; then
3350 if test -z "$CC"; then
3351 CC="$GCC_HOME/bin/gcc"
3354 if test -z "$CXX"; then
3355 CXX="$GCC_HOME/bin/g++"
3361 COMPATH=`dirname "$CC"`
3362 if test "$COMPATH" = "."; then
3363 AC_PATH_PROGS(COMPATH, $CC)
3364 dnl double square bracket to get single because of M4 quote...
3365 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
3367 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
3369 dnl ===================================================================
3371 dnl ===================================================================
3372 AC_MSG_CHECKING([whether to build with Java support])
3373 if test "$with_java" != "no"; then
3374 if test "$DISABLE_SCRIPTING" = TRUE; then
3375 AC_MSG_RESULT([no, overridden by --disable-scripting])
3379 AC_MSG_RESULT([yes])
3381 AC_DEFINE(HAVE_FEATURE_JAVA)
3388 AC_SUBST(ENABLE_JAVA)
3390 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
3392 dnl ENABLE_JAVA="" indicate no Java support at all
3394 dnl ===================================================================
3395 dnl Check macOS SDK and compiler
3396 dnl ===================================================================
3398 if test $_os = Darwin; then
3400 # The SDK in the currently selected Xcode should be found.
3402 AC_MSG_CHECKING([what macOS SDK to use])
3403 for macosx_sdk in 12.3 12.1 12.0 11.3 11.1 11.0 10.15 10.14 10.13; do
3404 MACOSX_SDK_PATH=`xcrun --sdk macosx${macosx_sdk} --show-sdk-path 2> /dev/null`
3405 if test -d "$MACOSX_SDK_PATH"; then
3408 MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${macosx_sdk}.sdk"
3409 if test -d "$MACOSX_SDK_PATH"; then
3414 if test ! -d "$MACOSX_SDK_PATH"; then
3415 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
3418 AC_MSG_RESULT([macOS SDK $macosx_sdk at $MACOSX_SDK_PATH])
3422 MACOSX_SDK_VERSION=101300
3425 MACOSX_SDK_VERSION=101400
3428 MACOSX_SDK_VERSION=101500
3431 MACOSX_SDK_VERSION=110000
3434 MACOSX_SDK_VERSION=110100
3437 MACOSX_SDK_VERSION=110300
3440 MACOSX_SDK_VERSION=120000
3443 MACOSX_SDK_VERSION=120100
3446 MACOSX_SDK_VERSION=120300
3449 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported])
3453 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
3454 AC_MSG_ERROR([macOS SDK $macosx_sdk is not supported for Apple Silicon])
3457 if test "$with_macosx_version_min_required" = "" ; then
3458 if test "$host_cpu" = x86_64; then
3459 with_macosx_version_min_required="10.14";
3461 with_macosx_version_min_required="11.0";
3465 # export this so that "xcrun" invocations later return matching values
3466 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
3467 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
3468 export DEVELOPER_DIR
3469 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
3470 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
3472 AC_MSG_CHECKING([whether Xcode is new enough])
3473 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
3474 my_xcode_ver2=${my_xcode_ver1#Xcode }
3475 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
3476 if test "$my_xcode_ver3" -ge 1205; then
3477 AC_MSG_RESULT([yes ($my_xcode_ver2)])
3479 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 12.5])
3482 case "$with_macosx_version_min_required" in
3484 MAC_OS_X_VERSION_MIN_REQUIRED="101400"
3487 MAC_OS_X_VERSION_MIN_REQUIRED="101500"
3490 MAC_OS_X_VERSION_MIN_REQUIRED="101600"
3493 MAC_OS_X_VERSION_MIN_REQUIRED="110000"
3496 MAC_OS_X_VERSION_MIN_REQUIRED="110100"
3499 MAC_OS_X_VERSION_MIN_REQUIRED="110300"
3502 MAC_OS_X_VERSION_MIN_REQUIRED="120000"
3505 MAC_OS_X_VERSION_MIN_REQUIRED="120100"
3508 MAC_OS_X_VERSION_MIN_REQUIRED="120300"
3511 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.14--12.3])
3515 LIBTOOL=/usr/bin/libtool
3516 INSTALL_NAME_TOOL=install_name_tool
3517 if test -z "$save_CC"; then
3518 stdlib=-stdlib=libc++
3520 AC_MSG_CHECKING([what C compiler to use])
3521 CC="`xcrun -find clang`"
3522 CC_BASE=`first_arg_basename "$CC"`
3523 if test "$host_cpu" = x86_64; then
3524 CC+=" -target x86_64-apple-macos"
3526 CC+=" -target arm64-apple-macos"
3528 CC+=" -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3529 AC_MSG_RESULT([$CC])
3531 AC_MSG_CHECKING([what C++ compiler to use])
3532 CXX="`xcrun -find clang++`"
3533 CXX_BASE=`first_arg_basename "$CXX"`
3534 if test "$host_cpu" = x86_64; then
3535 CXX+=" -target x86_64-apple-macos"
3537 CXX+=" -target arm64-apple-macos"
3539 CXX+=" $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
3540 AC_MSG_RESULT([$CXX])
3542 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3545 STRIP=`xcrun -find strip`
3546 LIBTOOL=`xcrun -find libtool`
3547 RANLIB=`xcrun -find ranlib`
3550 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macos-with-sdk])
3551 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MACOSX_SDK_VERSION; then
3552 AC_MSG_ERROR([the version minimum required cannot be greater than the sdk level])
3556 AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3558 AC_MSG_CHECKING([whether to do code signing])
3560 if test -z "$enable_macosx_code_signing" -o "$enable_macosx_code_signing" == "no" ; then
3563 if test "$enable_macosx_code_signing" = yes; then
3564 # By default use the first suitable certificate (?).
3566 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3567 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3568 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3569 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3570 # "Developer ID Application" one.
3571 identity="Developer ID Application:"
3573 identity=$enable_macosx_code_signing
3575 identity=`security find-identity -p codesigning -v 2>/dev/null | $AWK "/$identity/{print \\$2; exit}"`
3576 if test -n "$identity"; then
3577 MACOSX_CODESIGNING_IDENTITY=$identity
3578 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3579 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3581 AC_MSG_ERROR([cannot determine identity to use])
3585 AC_MSG_CHECKING([whether to create a Mac App Store package])
3587 if test -z "$enable_macosx_package_signing" || test "$enable_macosx_package_signing" == no; then
3589 elif test -z "$MACOSX_CODESIGNING_IDENTITY"; then
3590 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3592 if test "$enable_macosx_package_signing" = yes; then
3593 # By default use the first suitable certificate.
3594 # It should be a "3rd Party Mac Developer Installer" one
3595 identity="3rd Party Mac Developer Installer:"
3597 identity=$enable_macosx_package_signing
3599 identity=`security find-identity -v 2>/dev/null | $AWK "/$identity/ {print \\$2; exit}"`
3600 if test -n "$identity"; then
3601 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3602 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3603 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3605 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3609 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3610 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3613 AC_MSG_CHECKING([whether to sandbox the application])
3615 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3616 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3617 elif test "$enable_macosx_sandbox" = yes; then
3618 ENABLE_MACOSX_SANDBOX=TRUE
3619 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3620 AC_MSG_RESULT([yes])
3625 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3626 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3627 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3629 if test -n "$with_macosx_provisioning_profile" ; then
3630 if test ! -f "$with_macosx_provisioning_profile"; then
3631 AC_MSG_ERROR([provisioning profile not found at $with_macosx_provisioning_profile])
3633 MACOSX_PROVISIONING_PROFILE=$with_macosx_provisioning_profile
3634 MACOSX_PROVISIONING_INFO=$([security cms -D -i "$MACOSX_PROVISIONING_PROFILE" | \
3635 xmllint --xpath "//key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier'] \
3636 | //key[.='com.apple.application-identifier' or .='com.apple.developer.team-identifier']/following-sibling::string[1]" - | \
3637 sed -e 's#><#>\n\t<#g' -e 's#^#\t#'])
3641 AC_SUBST(MACOSX_SDK_PATH)
3642 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3643 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3644 AC_SUBST(INSTALL_NAME_TOOL)
3645 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3646 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3647 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3648 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3649 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3650 AC_SUBST(MACOSX_PROVISIONING_INFO)
3651 AC_SUBST(MACOSX_PROVISIONING_PROFILE)
3653 dnl ===================================================================
3654 dnl Check iOS SDK and compiler
3655 dnl ===================================================================
3657 if test $_os = iOS; then
3658 AC_MSG_CHECKING([what iOS SDK to use])
3659 current_sdk_ver=16.0
3660 older_sdk_vers="15.6"
3661 if test "$enable_ios_simulator" = "yes"; then
3662 platform=iPhoneSimulator
3663 versionmin=-mios-simulator-version-min=14.5
3666 versionmin=-miphoneos-version-min=14.5
3668 xcode_developer=`xcode-select -print-path`
3670 for sdkver in $current_sdk_ver $older_sdk_vers; do
3671 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3678 if test -z "$sysroot"; then
3679 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3682 AC_MSG_RESULT($sysroot)
3684 stdlib="-stdlib=libc++"
3686 AC_MSG_CHECKING([what C compiler to use])
3687 CC="`xcrun -find clang`"
3688 CC_BASE=`first_arg_basename "$CC"`
3689 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $versionmin"
3690 AC_MSG_RESULT([$CC])
3692 AC_MSG_CHECKING([what C++ compiler to use])
3693 CXX="`xcrun -find clang++`"
3694 CXX_BASE=`first_arg_basename "$CXX"`
3695 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $versionmin"
3696 AC_MSG_RESULT([$CXX])
3698 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3701 STRIP=`xcrun -find strip`
3702 LIBTOOL=`xcrun -find libtool`
3703 RANLIB=`xcrun -find ranlib`
3706 AC_MSG_CHECKING([whether to treat the installation as read-only])
3708 if test $_os = Darwin; then
3709 enable_readonly_installset=yes
3710 elif test "$enable_extensions" != yes; then
3711 enable_readonly_installset=yes
3713 if test "$enable_readonly_installset" = yes; then
3714 AC_MSG_RESULT([yes])
3715 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3720 dnl ===================================================================
3721 dnl Structure of install set
3722 dnl ===================================================================
3724 if test $_os = Darwin; then
3725 LIBO_BIN_FOLDER=MacOS
3726 LIBO_ETC_FOLDER=Resources
3727 LIBO_LIBEXEC_FOLDER=MacOS
3728 LIBO_LIB_FOLDER=Frameworks
3729 LIBO_LIB_PYUNO_FOLDER=Resources
3730 LIBO_SHARE_FOLDER=Resources
3731 LIBO_SHARE_HELP_FOLDER=Resources/help
3732 LIBO_SHARE_JAVA_FOLDER=Resources/java
3733 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3734 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3735 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3736 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3737 LIBO_URE_BIN_FOLDER=MacOS
3738 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3739 LIBO_URE_LIB_FOLDER=Frameworks
3740 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3741 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3742 elif test $_os = WINNT; then
3743 LIBO_BIN_FOLDER=program
3744 LIBO_ETC_FOLDER=program
3745 LIBO_LIBEXEC_FOLDER=program
3746 LIBO_LIB_FOLDER=program
3747 LIBO_LIB_PYUNO_FOLDER=program
3748 LIBO_SHARE_FOLDER=share
3749 LIBO_SHARE_HELP_FOLDER=help
3750 LIBO_SHARE_JAVA_FOLDER=program/classes
3751 LIBO_SHARE_PRESETS_FOLDER=presets
3752 LIBO_SHARE_READMES_FOLDER=readmes
3753 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3754 LIBO_SHARE_SHELL_FOLDER=program/shell
3755 LIBO_URE_BIN_FOLDER=program
3756 LIBO_URE_ETC_FOLDER=program
3757 LIBO_URE_LIB_FOLDER=program
3758 LIBO_URE_MISC_FOLDER=program
3759 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3761 LIBO_BIN_FOLDER=program
3762 LIBO_ETC_FOLDER=program
3763 LIBO_LIBEXEC_FOLDER=program
3764 LIBO_LIB_FOLDER=program
3765 LIBO_LIB_PYUNO_FOLDER=program
3766 LIBO_SHARE_FOLDER=share
3767 LIBO_SHARE_HELP_FOLDER=help
3768 LIBO_SHARE_JAVA_FOLDER=program/classes
3769 LIBO_SHARE_PRESETS_FOLDER=presets
3770 LIBO_SHARE_READMES_FOLDER=readmes
3771 if test "$enable_fuzzers" != yes; then
3772 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3774 LIBO_SHARE_RESOURCE_FOLDER=resource
3776 LIBO_SHARE_SHELL_FOLDER=program/shell
3777 LIBO_URE_BIN_FOLDER=program
3778 LIBO_URE_ETC_FOLDER=program
3779 LIBO_URE_LIB_FOLDER=program
3780 LIBO_URE_MISC_FOLDER=program
3781 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3783 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3784 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3785 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3786 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3787 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3788 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3789 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3790 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3791 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3792 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3793 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3794 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3795 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3796 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3797 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3798 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3800 # Not all of them needed in config_host.mk, add more if need arises
3801 AC_SUBST(LIBO_BIN_FOLDER)
3802 AC_SUBST(LIBO_ETC_FOLDER)
3803 AC_SUBST(LIBO_LIB_FOLDER)
3804 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3805 AC_SUBST(LIBO_SHARE_FOLDER)
3806 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3807 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3808 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3809 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3810 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3811 AC_SUBST(LIBO_URE_BIN_FOLDER)
3812 AC_SUBST(LIBO_URE_ETC_FOLDER)
3813 AC_SUBST(LIBO_URE_LIB_FOLDER)
3814 AC_SUBST(LIBO_URE_MISC_FOLDER)
3815 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3817 dnl ===================================================================
3818 dnl Windows specific tests and stuff
3819 dnl ===================================================================
3823 # Return value: $regvalue
3826 if test "$build_os" = "wsl"; then
3827 regvalue=$($WSL_LO_HELPER --read-registry $1 "$2" 2>/dev/null)
3831 local _regentry="/proc/registry${1}/${2}"
3832 if test -f "$_regentry"; then
3833 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3834 # Registry keys read via /proc/registry* are always \0 terminated!
3835 local _regvalue=$(tr -d '\0' < "$_regentry")
3836 if test $? -eq 0; then
3842 # Get a value from the 32-bit side of the Registry
3845 reg_get_value "32" "$1"
3848 # Get a value from the 64-bit side of the Registry
3851 reg_get_value "64" "$1"
3856 # Return value: $reglist
3859 if test "$build_os" = "wsl"; then
3860 reglist=$($WSL_LO_HELPER --list-registry $1 "$2" 2>/dev/null | tr -d '\r')
3864 reglist=$(ls "/proc/registry${1}/${2}")
3867 # List values from the 32-bit side of the Registry
3868 reg_list_values_32()
3870 reg_list_values "32" "$1"
3873 # List values from the 64-bit side of the Registry
3874 reg_list_values_64()
3876 reg_list_values "64" "$1"
3884 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
3893 PLATFORMID=windows_x86_64
3895 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
3897 WIN_MULTI_ARCH="x86"
3903 PLATFORMID=windows_x86
3906 WIN_OTHER_ARCH="x64"
3911 PLATFORMID=windows_aarch64
3913 SCPDEFS="$SCPDEFS -DWINDOWS_AARCH64"
3914 WIN_HOST_ARCH="arm64"
3919 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
3923 case "$build_cpu" in
3924 x86_64) WIN_BUILD_ARCH="x64" ;;
3925 i*86) WIN_BUILD_ARCH="x86" ;;
3926 aarch64) WIN_BUILD_ARCH="arm64" ;;
3928 AC_MSG_ERROR([Unsupported build_cpu $build_cpu for host_os $host_os])
3932 SCPDEFS="$SCPDEFS -D_MSC_VER"
3936 # multi-arch is an arch, which can execute on the host (x86 on x64), while
3937 # other-arch won't, but wouldn't break the build (x64 on x86).
3938 if test -n "$WIN_MULTI_ARCH" -a -n "$WIN_OTHER_ARCH"; then
3939 AC_MSG_ERROR([Broken configure.ac file: can't have set \$WIN_MULTI_ARCH and $WIN_OTHER_ARCH])
3943 if test "$build_cpu" != "$host_cpu" -o "$DISABLE_DYNLOADING" = TRUE; then
3944 # To allow building Windows multi-arch releases without cross-tooling
3945 if test "$DISABLE_DYNLOADING" = TRUE -o \( -z "$WIN_MULTI_ARCH" -a -z "$WIN_OTHER_ARCH" \); then
3946 cross_compiling="yes"
3950 if test "$cross_compiling" = "yes"; then
3951 export CROSS_COMPILING=TRUE
3952 if test "$enable_dynamic_loading" != yes -a "$enable_wasm_strip" = yes; then
3953 ENABLE_WASM_STRIP=TRUE
3957 BUILD_TYPE="$BUILD_TYPE NATIVE"
3959 AC_SUBST(CROSS_COMPILING)
3960 AC_SUBST(ENABLE_WASM_STRIP)
3962 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3963 # NOTE: must _not_ be used for bundled external libraries!
3965 if test "$GCC" = "yes"; then
3966 AC_MSG_CHECKING( for -isystem )
3968 CFLAGS="$CFLAGS -isystem /usr/include -Werror"
3969 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3971 if test -n "$ISYSTEM"; then
3977 if test -z "$ISYSTEM"; then
3978 # fall back to using -I
3983 dnl ===================================================================
3984 dnl Check which Visual Studio compiler is used
3985 dnl ===================================================================
3987 map_vs_year_to_version()
3989 # Return value: $vsversion
3999 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
4003 vs_versions_to_check()
4005 # Args: $1 (optional) : versions to check, in the order of preference
4006 # Return value: $vsversions
4010 if test -n "$1"; then
4011 map_vs_year_to_version "$1"
4012 vsversions=$vsversion
4014 # Default version is 2019
4019 win_get_env_from_vsvars32bat()
4021 local WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
4022 # Also seems to be located in another directory under the same name: vsvars32.bat
4023 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
4024 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
4025 # use 'echo.%ENV%' syntax (instead of 'echo %ENV%') to avoid outputting "ECHO is off." in case when ENV is empty or a space
4026 printf '@setlocal\r\n@echo.%%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
4028 if test "$build_os" = "wsl"; then
4029 result=$(cd /mnt/c && cmd.exe /c $(wslpath -w $WRAPPERBATCHFILEPATH) | tr -d '\r')
4031 chmod +x $WRAPPERBATCHFILEPATH
4032 result=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
4034 rm -f $WRAPPERBATCHFILEPATH
4035 printf '%s' "$result"
4040 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
4041 if test -n "$regvalue"; then
4042 PathFormat "$regvalue"
4043 UCRTSDKDIR=$formatted_path_unix
4044 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
4045 UCRTVERSION=$regvalue
4047 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
4051 if test -z "$UCRTSDKDIR"; then
4052 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
4053 ide_env_file="${ide_env_dir}VsDevCmd.bat"
4054 if test -f "$ide_env_file"; then
4055 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
4056 UCRTSDKDIR=$formatted_path
4057 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
4058 dnl Hack needed at least by tml:
4059 if test "$UCRTVERSION" = 10.0.15063.0 \
4060 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
4061 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
4063 UCRTVERSION=10.0.14393.0
4066 AC_MSG_ERROR([No UCRT found])
4074 # Args: $1 (optional) : The VS version year
4075 # Return values: $vctest, $vcyear, $vctoolset, $vcnumwithdot, $vcbuildnumber
4077 unset vctest vctoolset vcnumwithdot vcbuildnumber
4079 vs_versions_to_check "$1"
4080 if test "$build_os" = wsl; then
4081 vswhere="$PROGRAMFILESX86"
4082 if test -z "$vswhere"; then
4083 vswhere="c:\\Program Files (x86)"
4086 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
4088 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
4089 PathFormat "$vswhere"
4090 vswhere=$formatted_path_unix
4091 for ver in $vsversions; do
4092 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4093 if test -z "$vswhereoutput"; then
4094 vswhereoutput=`$vswhere -prerelease -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4096 # Fall back to all MS products (this includes VC++ Build Tools)
4097 if ! test -n "$vswhereoutput"; then
4098 AC_MSG_CHECKING([VC++ Build Tools and similar])
4099 vswhereoutput=`$vswhere -products \* -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
4101 if test -n "$vswhereoutput"; then
4102 PathFormat "$vswhereoutput"
4103 vctest=$formatted_path_unix
4108 if test -n "$vctest"; then
4109 vcnumwithdot="$ver.0"
4110 case "$vcnumwithdot" in
4120 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
4127 AC_MSG_CHECKING([$1 compiler])
4129 CL_EXE_PATH="$2/cl.exe"
4131 if test ! -f "$CL_EXE_PATH"; then
4132 if test "$1" = "multi-arch"; then
4133 AC_MSG_WARN([no compiler (cl.exe) in $2])
4136 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4140 dnl ===========================================================
4141 dnl Check for the corresponding mspdb*.dll
4142 dnl ===========================================================
4144 # MSVC 15.0 has libraries from 14.0?
4147 if test ! -e "$2/mspdb${mspdbnum}.dll"; then
4148 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $2, Visual Studio installation broken?])
4151 # The compiles has to find its shared libraries
4153 TEMP_PATH=`cygpath -d "$2"`
4154 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
4156 if ! "$CL_EXE_PATH" -? </dev/null >/dev/null 2>&1; then
4157 AC_MSG_ERROR([no compiler (cl.exe) in $2])
4162 AC_MSG_RESULT([$CL_EXE_PATH])
4168 if test "$_os" = "WINNT"; then
4169 AC_MSG_CHECKING([Visual C++])
4170 find_msvc "$with_visual_studio"
4171 if test -z "$vctest"; then
4172 if test -n "$with_visual_studio"; then
4173 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
4175 AC_MSG_ERROR([no Visual Studio installation found])
4180 VC_PRODUCT_DIR="$vctest/VC"
4181 COMPATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber"
4183 # $WIN_OTHER_ARCH is a hack to test the x64 compiler on x86, even if it's not multi-arch
4184 if test -n "$WIN_MULTI_ARCH" -o -n "$WIN_OTHER_ARCH"; then
4185 MSVC_MULTI_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/${WIN_MULTI_ARCH}${WIN_OTHER_ARCH}"
4186 test_cl_exe "multi-arch" "$MSVC_MULTI_PATH"
4187 if test $? -ne 0; then
4193 if test "$WIN_BUILD_ARCH" = "$WIN_HOST_ARCH"; then
4194 MSVC_BUILD_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_BUILD_ARCH"
4195 test_cl_exe "build" "$MSVC_BUILD_PATH"
4198 if test "$WIN_BUILD_ARCH" != "$WIN_HOST_ARCH"; then
4199 MSVC_HOST_PATH="$COMPATH/bin/Host$WIN_BUILD_ARCH/$WIN_HOST_ARCH"
4200 test_cl_exe "host" "$MSVC_HOST_PATH"
4202 MSVC_HOST_PATH="$MSVC_BUILD_PATH"
4205 AC_MSG_CHECKING([for short pathname of VC product directory])
4206 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
4207 AC_MSG_RESULT([$VC_PRODUCT_DIR])
4212 AC_MSG_CHECKING([for UCRT location])
4214 # find_ucrt errors out if it doesn't find it
4215 AC_MSG_RESULT([$UCRTSDKDIR ($UCRTVERSION)])
4216 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
4217 ucrtincpath_formatted=$formatted_path
4218 # SOLARINC is used for external modules and must be set too.
4219 # And no, it's not sufficient to set SOLARINC only, as configure
4220 # itself doesn't honour it.
4221 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
4222 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
4223 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
4224 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
4226 AC_SUBST(UCRTSDKDIR)
4227 AC_SUBST(UCRTVERSION)
4229 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
4230 # Find the proper version of MSBuild.exe to use based on the VS version
4231 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
4232 if test -z "$regvalue" ; then
4233 if test "$WIN_BUILD_ARCH" != "x64"; then
4234 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
4236 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
4239 if test -d "$regvalue" ; then
4240 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
4241 AC_MSG_RESULT([$regvalue])
4243 AC_MSG_ERROR([MSBuild.exe location not found])
4246 # Find the version of devenv.exe
4247 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
4248 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
4249 DEVENV_unix=$(cygpath -u "$DEVENV")
4250 if test ! -e "$DEVENV_unix"; then
4251 AC_MSG_WARN([No devenv.exe found - this is expected for VC++ Build Tools])
4254 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
4255 dnl needed when building CLR code:
4256 if test -z "$MSVC_CXX"; then
4257 # This gives us a posix path with 8.3 filename restrictions
4258 MSVC_CXX=`win_short_path_for_make "$MSVC_HOST_PATH/cl.exe"`
4261 if test -z "$CC"; then
4263 CC_BASE=`first_arg_basename "$CC"`
4265 if test -z "$CXX"; then
4267 CXX_BASE=`first_arg_basename "$CXX"`
4270 if test -n "$CC"; then
4271 # Remove /cl.exe from CC case insensitive
4272 AC_MSG_NOTICE([found Visual C++ $vcyear])
4274 main_include_dir=`cygpath -d -m "$COMPATH/Include"`
4275 CPPFLAGS="$CPPFLAGS -I$main_include_dir"
4277 PathFormat "$COMPATH"
4278 COMPATH=`win_short_path_for_make "$formatted_path"`
4281 VCTOOLSET=$vctoolset
4283 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
4284 # are always "better", we list them in reverse chronological order.
4286 case "$vcnumwithdot" in
4288 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
4292 # The expectation is that --with-windows-sdk should not need to be used
4293 if test -n "$with_windows_sdk"; then
4294 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
4295 *" "$with_windows_sdk" "*)
4296 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
4299 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $vcyear])
4304 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
4309 AC_MSG_ERROR([Visual C++ not found after all, huh])
4312 # ERROR if VS version < 16.5
4313 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.5])
4314 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4315 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
4316 // between Visual Studio versions and _MSC_VER:
4320 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
4322 # WARN if VS version < 16.10
4323 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2019 version 16.10])
4324 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4328 ]])],[vs2019_recommended_version=yes],[vs2019_recommended_version=no])
4330 if test $vs2019_recommended_version = yes; then
4331 AC_MSG_RESULT([yes])
4334 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."
4337 # Check for 64-bit (cross-)compiler to use to build the 64-bit
4338 # version of the Explorer extension (and maybe other small
4339 # bits, too) needed when installing a 32-bit LibreOffice on a
4340 # 64-bit OS. The 64-bit Explorer extension is a feature that
4341 # has been present since long in OOo. Don't confuse it with
4342 # building LibreOffice itself as 64-bit code.
4347 if test "$WIN_HOST_ARCH" = "x86" -a -n "$WIN_OTHER_ARCH"; then
4348 AC_MSG_CHECKING([for the libraries to build the 64-bit Explorer extensions])
4349 if test -f "$COMPATH/atlmfc/lib/x64/atls.lib" -o \
4350 -f "$COMPATH/atlmfc/lib/spectre/x64/atls.lib"
4353 CXX_X64_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4354 AC_MSG_RESULT([found])
4356 AC_MSG_RESULT([not found])
4357 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
4359 elif test "$WIN_HOST_ARCH" = "x64"; then
4364 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
4365 AC_SUBST(CXX_X64_BINARY)
4367 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
4368 # needed to support TWAIN scan on both 32- and 64-bit systems
4370 case "$WIN_HOST_ARCH" in
4372 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
4373 if test -n "$CXX_X86_BINARY"; then
4375 AC_MSG_RESULT([preset])
4376 elif test -n "$WIN_MULTI_ARCH"; then
4378 CXX_X86_BINARY=`win_short_path_for_make "$MSVC_MULTI_PATH/cl.exe"`
4379 AC_MSG_RESULT([found])
4381 AC_MSG_RESULT([not found])
4382 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
4387 CXX_X86_BINARY=$MSVC_CXX
4391 AC_SUBST(CXX_X86_BINARY)
4399 AC_MSG_CHECKING([whether the compiler is actually Clang])
4400 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4406 [AC_MSG_RESULT([yes])
4408 [AC_MSG_RESULT([no])])
4409 AC_SUBST(COM_IS_CLANG)
4412 if test "$COM_IS_CLANG" = TRUE; then
4413 AC_MSG_CHECKING([whether Clang is new enough])
4414 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
4415 #if !defined __apple_build_version__
4419 [my_apple_clang=yes],[my_apple_clang=])
4420 if test "$my_apple_clang" = yes; then
4421 AC_MSG_RESULT([assumed yes (Apple Clang)])
4422 elif test "$_os" = Emscripten; then
4423 AC_MSG_RESULT([assumed yes (Emscripten Clang)])
4425 if test "$_os" = WINNT; then
4426 dnl In which case, assume clang-cl:
4431 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC $my_args - | sed 's/ //g'`
4432 CLANG_FULL_VERSION=`echo __clang_version__ | $CC $my_args -`
4433 CLANGVER=`echo $clang_version \
4434 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
4435 if test "$CLANGVER" -ge 80001; then
4436 AC_MSG_RESULT([yes ($clang_version)])
4438 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 8.0.1])
4440 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
4441 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
4445 SHOWINCLUDES_PREFIX=
4446 if test "$_os" = WINNT; then
4447 dnl We need to guess the prefix of the -showIncludes output, it can be
4449 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
4450 echo "#include <stdlib.h>" > conftest.c
4451 SHOWINCLUDES_PREFIX=`$CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
4452 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
4453 rm -f conftest.c conftest.obj
4454 if test -z "$SHOWINCLUDES_PREFIX"; then
4455 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
4457 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
4460 AC_SUBST(SHOWINCLUDES_PREFIX)
4463 # prefix C with ccache if needed
4465 if test "$CCACHE" != ""; then
4466 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
4470 CFLAGS="$CFLAGS --ccache-skip -O2"
4471 # msvc does not fail on unknown options, check stdout
4472 if test "$COM" = MSC; then
4473 CFLAGS="$CFLAGS -nologo"
4475 save_ac_c_werror_flag=$ac_c_werror_flag
4476 ac_c_werror_flag=yes
4477 dnl an empty program will do, we're checking the compiler flags
4478 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
4479 [use_ccache=yes], [use_ccache=no])
4481 ac_c_werror_flag=$save_ac_c_werror_flag
4482 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
4483 AC_MSG_RESULT([yes])
4486 CC_BASE="ccache $CC_BASE"
4492 # ===================================================================
4493 # check various GCC options that Clang does not support now but maybe
4494 # will somewhen in the future, check them even for GCC, so that the
4496 # ===================================================================
4499 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4500 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
4502 CFLAGS="$CFLAGS -Werror -ggdb2"
4503 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
4505 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
4506 AC_MSG_RESULT([yes])
4511 if test "$host_cpu" = "m68k"; then
4512 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
4514 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
4515 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
4517 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
4518 AC_MSG_RESULT([yes])
4524 AC_SUBST(HAVE_GCC_GGDB2)
4526 dnl ===================================================================
4527 dnl Test the gcc version
4528 dnl ===================================================================
4529 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
4530 AC_MSG_CHECKING([the GCC version])
4531 _gcc_version=`$CC -dumpfullversion`
4532 gcc_full_version=$(printf '%s' "$_gcc_version" | \
4533 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
4534 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
4536 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
4538 if test "$gcc_full_version" -lt 70000; then
4539 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
4542 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
4543 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
4544 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
4545 # (which reports itself as GCC 4.2.1).
4548 AC_SUBST(GCC_VERSION)
4550 dnl Set the ENABLE_DBGUTIL variable
4551 dnl ===================================================================
4552 AC_MSG_CHECKING([whether to build with additional debug utilities])
4553 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
4554 ENABLE_DBGUTIL="TRUE"
4555 # this is an extra var so it can have different default on different MSVC
4556 # versions (in case there are version specific problems with it)
4557 MSVC_USE_DEBUG_RUNTIME="TRUE"
4559 AC_MSG_RESULT([yes])
4560 # cppunit and graphite expose STL in public headers
4561 if test "$with_system_cppunit" = "yes"; then
4562 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
4564 with_system_cppunit=no
4566 if test "$with_system_graphite" = "yes"; then
4567 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
4569 with_system_graphite=no
4571 if test "$with_system_orcus" = "yes"; then
4572 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
4574 with_system_orcus=no
4576 if test "$with_system_libcmis" = "yes"; then
4577 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
4579 with_system_libcmis=no
4581 if test "$with_system_hunspell" = "yes"; then
4582 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4584 with_system_hunspell=no
4586 if test "$with_system_gpgmepp" = "yes"; then
4587 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4589 with_system_gpgmepp=no
4591 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4592 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4593 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4594 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4595 # of those two is using the system variant:
4596 if test "$with_system_libnumbertext" = "yes"; then
4597 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4599 with_system_libnumbertext=no
4601 if test "$with_system_libwps" = "yes"; then
4602 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4604 with_system_libwps=no
4608 MSVC_USE_DEBUG_RUNTIME=""
4611 AC_SUBST(ENABLE_DBGUTIL)
4612 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4614 dnl Set the ENABLE_DEBUG variable.
4615 dnl ===================================================================
4616 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4617 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4619 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4620 if test -z "$libo_fuzzed_enable_debug"; then
4621 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4623 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4628 AC_MSG_CHECKING([whether to do a debug build])
4629 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4631 if test -n "$ENABLE_DBGUTIL" ; then
4632 AC_MSG_RESULT([yes (dbgutil)])
4634 AC_MSG_RESULT([yes])
4640 AC_SUBST(ENABLE_DEBUG)
4642 dnl ===================================================================
4643 dnl Select the linker to use (gold/lld/ld.bfd/mold).
4644 dnl This is done only after compiler checks (need to know if Clang is
4645 dnl used, for different defaults) and after checking if a debug build
4646 dnl is wanted (non-debug builds get the default linker if not explicitly
4647 dnl specified otherwise).
4648 dnl All checks for linker features/options should come after this.
4649 dnl ===================================================================
4652 use_ld=-fuse-ld=${1%%:*}
4654 if test "$use_ld_path" != "$1"; then
4655 if test "$COM_IS_CLANG" = TRUE; then
4656 if test "$CLANGVER" -ge 120000; then
4657 use_ld="${use_ld} --ld-path=${use_ld_path}"
4659 use_ld="-fuse-ld=${use_ld_path}"
4662 # I tried to use gcc's '-B<path>' and a directory + symlink setup in
4663 # $BUILDDIR, but libtool always filtered-out that option, so gcc wouldn't
4664 # pickup the alternative linker, when called by libtool for linking.
4665 # For mold, one can use LD_PRELOAD=/usr/lib/mold/mold-wrapper.so instead.
4666 AC_MSG_ERROR([A linker path is just supported with clang, because of libtool's -B filtering!])
4669 use_ld_fail_if_error=$2
4671 AC_MSG_CHECKING([for $use_ld linker support])
4672 use_ld_ldflags_save="$LDFLAGS"
4673 LDFLAGS="$LDFLAGS $use_ld"
4674 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4677 printf ("hello world\n");
4678 ])], USE_LD=$use_ld, [])
4679 if test -n "$USE_LD"; then
4680 AC_MSG_RESULT( yes )
4683 if test -n "$use_ld_fail_if_error"; then
4689 if test -n "$use_ld_ok"; then
4690 dnl keep the value of LDFLAGS
4693 LDFLAGS="$use_ld_ldflags_save"
4697 if test "$enable_ld" != "no"; then
4698 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4699 if test -n "$enable_ld"; then
4700 check_use_ld "$enable_ld" fail_if_error
4701 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4702 dnl non-debug builds default to the default linker
4704 elif test -n "$COM_IS_CLANG"; then
4706 if test $? -ne 0; then
4708 if test $? -ne 0; then
4713 # For gcc first try gold, new versions also support lld/mold.
4715 if test $? -ne 0; then
4717 if test $? -ne 0; then
4722 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4724 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD|^mold)')
4725 if test -z "$ld_used"; then
4728 AC_MSG_CHECKING([for linker that is used])
4729 AC_MSG_RESULT([$ld_used])
4730 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4731 if echo "$ld_used" | grep -q "^GNU ld"; then
4732 AC_MSG_WARN([The default GNU linker is slow, consider using LLD, mold or the GNU gold linker.])
4733 add_warning "The default GNU linker is slow, consider using LLD, mold or the GNU gold linker."
4737 if test "$enable_ld" = "yes"; then
4738 AC_MSG_ERROR([--enable-ld not supported])
4745 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4746 if test "$GCC" = "yes" -a "$_os" != Emscripten ; then
4747 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4748 bsymbolic_functions_ldflags_save=$LDFLAGS
4749 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4750 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4753 printf ("hello world\n");
4754 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4755 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4756 AC_MSG_RESULT( found )
4758 AC_MSG_RESULT( not found )
4760 LDFLAGS=$bsymbolic_functions_ldflags_save
4762 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4765 if test "$GCC" = "yes"; then
4766 for flag in "--gc-sections" "-dead_strip"; do
4767 AC_MSG_CHECKING([for $flag linker support])
4768 ldflags_save=$LDFLAGS
4769 LDFLAGS="$LDFLAGS -Wl,$flag"
4770 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4773 printf ("hello world\n");
4775 LD_GC_SECTIONS="-Wl,$flag"
4776 AC_MSG_RESULT( found )
4778 AC_MSG_RESULT( not found )
4780 LDFLAGS=$ldflags_save
4781 if test -n "$LD_GC_SECTIONS"; then
4786 AC_SUBST(LD_GC_SECTIONS)
4788 HAVE_EXTERNAL_DWARF=
4789 if test "$enable_split_debug" != no; then
4791 if test -n "$ENABLE_LTO"; then
4792 : # Inherently incompatible, since no debug info is created while compiling, GCC complains.
4793 elif test "$enable_split_debug" = yes; then
4795 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4796 elif test "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4799 if test -n "$use_split_debug"; then
4800 if test "$_os" = "Emscripten"; then
4801 TEST_CC_FLAG=-gseparate-dwarf
4803 TEST_CC_FLAG=-gsplit-dwarf
4805 AC_MSG_CHECKING([whether $CC_BASE supports $TEST_CC_FLAG])
4807 CFLAGS="$CFLAGS -Werror $TEST_CC_FLAG"
4808 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_EXTERNAL_DWARF=TRUE ],[])
4810 if test "$HAVE_EXTERNAL_DWARF" = "TRUE"; then
4811 AC_MSG_RESULT([yes])
4813 if test "$enable_split_debug" = yes; then
4820 if test -z "$HAVE_EXTERNAL_DWARF" -a "$test_split_debug" = "yes" -a -n "$use_split_debug"; then
4821 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4822 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4825 AC_SUBST(HAVE_EXTERNAL_DWARF)
4827 HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=
4828 AC_MSG_CHECKING([whether $CC_BASE supports -Xclang -debug-info-kind=constructor])
4830 CFLAGS="$CFLAGS -Werror -Xclang -debug-info-kind=constructor"
4831 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=TRUE ],[])
4833 if test "$HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR" = "TRUE"; then
4834 AC_MSG_RESULT([yes])
4838 AC_SUBST(HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR)
4841 if test "$enable_gdb_index" != "no"; then
4842 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4843 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4844 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4846 CFLAGS="$CFLAGS -Werror -g -ggnu-pubnames"
4848 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4849 if test "$have_ggnu_pubnames" != "TRUE"; then
4850 if test "$enable_gdb_index" = "yes"; then
4851 AC_MSG_ERROR([no, --enable-gdb-index not supported])
4856 AC_MSG_RESULT( yes )
4857 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4858 ldflags_save=$LDFLAGS
4859 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4860 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4863 printf ("hello world\n");
4864 ])], ENABLE_GDB_INDEX=TRUE, [])
4865 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4866 AC_MSG_RESULT( yes )
4868 if test "$enable_gdb_index" = "yes"; then
4874 LDFLAGS=$ldflags_save
4878 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4879 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4880 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4883 AC_SUBST(ENABLE_GDB_INDEX)
4885 if test -z "$enable_sal_log" && test "$ENABLE_DEBUG" = TRUE; then
4888 if test "$enable_sal_log" = yes; then
4891 AC_SUBST(ENABLE_SAL_LOG)
4893 dnl Check for enable symbols option
4894 dnl ===================================================================
4895 AC_MSG_CHECKING([whether to generate debug information])
4896 if test -z "$enable_symbols"; then
4897 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4903 if test "$enable_symbols" = yes; then
4904 ENABLE_SYMBOLS_FOR=all
4905 AC_MSG_RESULT([yes])
4906 elif test "$enable_symbols" = no; then
4910 # Selective debuginfo.
4911 ENABLE_SYMBOLS_FOR="$enable_symbols"
4912 AC_MSG_RESULT([for "$enable_symbols"])
4914 AC_SUBST(ENABLE_SYMBOLS_FOR)
4916 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4917 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4918 AC_MSG_CHECKING([whether enough memory is available for linking])
4919 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4920 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4921 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4922 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4924 AC_MSG_RESULT([yes])
4929 ENABLE_OPTIMIZED_DEBUG=
4930 AC_MSG_CHECKING([whether to compile with optimization flags])
4931 if test -z "$enable_optimized"; then
4932 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4935 enable_optimized=yes
4938 if test "$enable_optimized" = yes; then
4939 ENABLE_OPTIMIZED=TRUE
4940 AC_MSG_RESULT([yes])
4941 elif test "$enable_optimized" = debug; then
4942 ENABLE_OPTIMIZED_DEBUG=TRUE
4943 AC_MSG_RESULT([yes (debug)])
4945 if test "$GCC" = "yes" -a "$_os" != "Emscripten"; then
4946 AC_MSG_CHECKING([whether $CC_BASE supports -Og])
4948 CFLAGS="$CFLAGS -Werror -Og"
4949 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_OG=TRUE ],[])
4951 if test "$HAVE_GCC_OG" = "TRUE"; then
4952 AC_MSG_RESULT([yes])
4957 if test -z "$HAVE_GCC_OG" -a "$_os" != "Emscripten"; then
4958 AC_MSG_ERROR([The compiler does not support optimizations suitable for debugging.])
4963 AC_SUBST(ENABLE_OPTIMIZED)
4964 AC_SUBST(ENABLE_OPTIMIZED_DEBUG)
4967 # determine CPUNAME, OS, ...
4977 PLATFORMID=aix_powerpc
4993 if test "$enable_ios_simulator" = "yes"; then
4998 PLATFORMID=macosx_aarch64
5002 if test "$enable_ios_simulator" = "yes"; then
5007 PLATFORMID=macosx_x86_64
5010 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5023 if test "$enable_ios_simulator" = "yes"; then
5024 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
5028 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5033 PLATFORMID=ios_arm64
5046 PLATFORMID=dragonfly_x86
5051 PLATFORMID=dragonfly_x86_64
5054 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5068 PLATFORMID=freebsd_aarch64
5074 PLATFORMID=freebsd_x86
5079 PLATFORMID=freebsd_x86_64
5084 PLATFORMID=freebsd_powerpc64
5089 PLATFORMID=freebsd_powerpc
5092 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5108 PLATFORMID=haiku_x86
5113 PLATFORMID=haiku_x86_64
5116 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5132 PLATFORMID=kfreebsd_x86
5137 PLATFORMID=kfreebsd_x86_64
5140 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5145 linux-gnu*|linux-musl*)
5155 PLATFORMID=linux_aarch64
5157 EPM_FLAGS="-a arm64"
5162 PLATFORMID=linux_alpha
5168 PLATFORMID=linux_arm_eabi
5172 PLATFORMID=linux_arm_oabi
5180 PLATFORMID=linux_hppa
5185 PLATFORMID=linux_x86
5190 PLATFORMID=linux_ia64
5196 PLATFORMID=linux_mips_eb
5201 EPM_FLAGS="-a mips64"
5202 PLATFORMID=linux_mips64_eb
5207 EPM_FLAGS="-a mips64el"
5208 PLATFORMID=linux_mips64_el
5213 EPM_FLAGS="-a mipsel"
5214 PLATFORMID=linux_mips_el
5219 PLATFORMID=linux_m68k
5224 PLATFORMID=linux_powerpc
5229 PLATFORMID=linux_powerpc64
5233 RTL_ARCH=PowerPC_64_LE
5234 PLATFORMID=linux_powerpc64_le
5239 PLATFORMID=linux_sparc
5244 PLATFORMID=linux_sparc64
5249 PLATFORMID=linux_s390
5254 PLATFORMID=linux_s390x
5259 PLATFORMID=linux_x86_64
5263 RTL_ARCH=LOONGARCH64
5264 PLATFORMID=linux_loongarch64
5267 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5283 PLATFORMID=android_arm_eabi
5288 PLATFORMID=android_aarch64
5293 PLATFORMID=android_x86
5298 PLATFORMID=android_x86_64
5301 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5316 PLATFORMID=netbsd_x86
5321 PLATFORMID=netbsd_powerpc
5326 PLATFORMID=netbsd_sparc
5331 PLATFORMID=netbsd_x86_64
5334 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5349 PLATFORMID=openbsd_x86
5354 PLATFORMID=openbsd_x86_64
5357 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5360 SOLARINC="$SOLARINC -I/usr/local/include"
5373 PLATFORMID=solaris_x86
5378 PLATFORMID=solaris_sparc
5383 PLATFORMID=solaris_sparc64
5386 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5389 SOLARINC="$SOLARINC -I/usr/local/include"
5402 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
5407 PLATFORMID=linux_x86
5411 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
5416 if test "$enable_gui" = "no"; then
5417 if test "$using_x11" != yes; then
5418 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
5424 AC_DEFINE(HAVE_FEATURE_UI)
5426 AC_SUBST(DISABLE_GUI)
5428 if test "$with_x" = "no"; then
5432 if test -z "$USING_X11" -a "$DISABLE_DYNLOADING" = TRUE -a "$enable_gen" = "yes"; then
5433 AC_MSG_ERROR([Can't select gen VCL plugin, if --without-x is used!])
5436 if test "$using_x11" = yes; then
5437 if test "$USING_X11" = TRUE; then
5438 AC_DEFINE(USING_X11)
5441 if test "$DISABLE_DYNLOADING" = TRUE; then
5446 if test "$USING_X11" = TRUE; then
5447 AC_MSG_ERROR([Platform doesn't support X11 (\$using_x11), but \$USING_X11 is set!])
5451 WORKDIR="${BUILDDIR}/workdir"
5452 INSTDIR="${BUILDDIR}/instdir"
5453 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
5454 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
5462 AC_SUBST([INSTROOT])
5463 AC_SUBST([INSTROOTBASE])
5467 AC_SUBST(PLATFORMID)
5468 AC_SUBST(WINDOWS_X64)
5469 AC_DEFINE_UNQUOTED(SDKDIR, "$INSTDIR/$SDKDIRNAME")
5470 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
5472 if test "$OS" = WNT -a "$COM" = MSC; then
5474 INTEL) CPPU_ENV=msci ;;
5475 X86_64) CPPU_ENV=mscx ;;
5476 AARCH64) CPPU_ENV=msca ;;
5478 AC_MSG_ERROR([Unknown \$CPUNAME '$CPUNAME' for $OS / $COM"])
5486 dnl ===================================================================
5487 dnl Test which package format to use
5488 dnl ===================================================================
5489 AC_MSG_CHECKING([which package format to use])
5490 if test -n "$with_package_format" -a "$with_package_format" != no; then
5491 for i in $with_package_format; do
5493 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
5496 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
5497 aix - AIX software distribution
5498 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
5499 deb - Debian software distribution
5500 pkg - Solaris software distribution
5501 rpm - RedHat software distribution
5503 LibreOffice additionally supports:
5504 archive - .tar.gz or .zip
5506 installed - installation tree
5512 # fakeroot is needed to ensure correct file ownerships/permissions
5513 # inside deb packages and tar archives created on Linux and Solaris.
5514 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
5515 AC_PATH_PROG(FAKEROOT, fakeroot, no)
5516 if test "$FAKEROOT" = "no"; then
5518 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
5521 PKGFORMAT="$with_package_format"
5522 AC_MSG_RESULT([$PKGFORMAT])
5525 AC_MSG_RESULT([none])
5529 dnl ===================================================================
5530 dnl handle help related options
5532 dnl If you change help related options, please update README.help
5533 dnl ===================================================================
5540 AC_MSG_CHECKING([which help to build])
5541 if test -n "$with_help" -a "$with_help" != "no"; then
5542 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5543 BUILD_TYPE="$BUILD_TYPE HELP"
5544 case "$with_help" in
5546 ENABLE_HTMLHELP=TRUE
5548 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5549 AC_MSG_RESULT([HTML (local)])
5552 ENABLE_HTMLHELP=TRUE
5554 AC_MSG_RESULT([HTML (online)])
5558 SCPDEFS="$SCPDEFS -DWITH_HELPPACKS"
5559 AC_MSG_RESULT([XML (local)])
5562 AC_MSG_ERROR([Unknown --with-help=$with_help])
5569 AC_MSG_CHECKING([if we need to build the help index tooling])
5570 if test \( "$with_help" = yes -o "$enable_extension_integration" != no \) -a -z "$DISABLE_DYNLOADING"; then
5571 BUILD_TYPE="$BUILD_TYPE HELPTOOLS"
5573 AC_MSG_RESULT([yes])
5578 AC_MSG_CHECKING([whether to enable xapian-omega support for online help])
5579 if test -n "$with_omindex" -a "$with_omindex" != "no"; then
5580 if test "$HELP_ONLINE" != TRUE; then
5581 AC_MSG_ERROR([Can't build xapian-omega index without --help=online])
5583 case "$with_omindex" in
5585 HELP_OMINDEX_PAGE=TRUE
5586 AC_MSG_RESULT([SERVER])
5589 AC_MSG_RESULT([NOXAP])
5592 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5599 AC_MSG_CHECKING([whether to include the XML-help support])
5600 if test "$enable_xmlhelp" = yes; then
5601 BUILD_TYPE="$BUILD_TYPE XMLHELP"
5603 AC_DEFINE(HAVE_FEATURE_XMLHELP)
5604 AC_MSG_RESULT([yes])
5606 if test "$with_help" = yes; then
5607 add_warning "Building the XML help, but LO with disabled xmlhelp support. Generated help can't be accessed from this LO build!"
5612 dnl Test whether to integrate helppacks into the product's installer
5613 AC_MSG_CHECKING([for helppack integration])
5614 if test -z "$WITH_HELPPACKS" -o "$with_helppack_integration" = no; then
5615 AC_MSG_RESULT([no integration])
5617 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
5618 AC_MSG_RESULT([integration])
5621 AC_SUBST([ENABLE_HTMLHELP])
5622 AC_SUBST([HELP_OMINDEX_PAGE])
5623 AC_SUBST([HELP_ONLINE])
5624 # WITH_HELPPACKS is used only in configure
5626 dnl ===================================================================
5627 dnl Set up a different compiler to produce tools to run on the build
5628 dnl machine when doing cross-compilation
5629 dnl ===================================================================
5631 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
5632 m4_pattern_allow([PKG_CONFIG_LIBDIR])
5633 if test "$cross_compiling" = "yes"; then
5634 AC_MSG_CHECKING([for BUILD platform configuration])
5636 rm -rf CONF-FOR-BUILD config_build.mk
5637 mkdir CONF-FOR-BUILD
5638 # Here must be listed all files needed when running the configure script. In particular, also
5639 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
5640 # keep them in the same order as there.
5641 (cd $SRC_ROOT && tar cf - \
5643 bin/get_config_variables \
5644 solenv/bin/getcompver.awk \
5645 solenv/inc/langlist.mk \
5648 config_host_lang.mk.in \
5651 bin/bffvalidator.sh.in \
5652 bin/odfvalidator.sh.in \
5653 bin/officeotron.sh.in \
5654 hardened_runtime.xcent.in \
5655 instsetoo_native/util/openoffice.lst.in \
5657 sysui/desktop/macosx/Info.plist.in \
5658 .vscode/vs-code-template.code-workspace.in \
5659 solenv/lockfile/autoconf.h.in \
5661 | (cd CONF-FOR-BUILD && tar xf -)
5662 cp configure CONF-FOR-BUILD
5663 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
5665 unset COM USING_X11 OS CPUNAME
5666 unset CC CXX SYSBASE CFLAGS
5667 unset AR LD NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
5668 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
5669 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC
5670 unset PKG_CONFIG_LIBDIR PKG_CONFIG_PATH
5671 if test -n "$CC_FOR_BUILD"; then
5672 export CC="$CC_FOR_BUILD"
5673 CC_BASE=`first_arg_basename "$CC"`
5675 if test -n "$CXX_FOR_BUILD"; then
5676 export CXX="$CXX_FOR_BUILD"
5677 CXX_BASE=`first_arg_basename "$CXX"`
5679 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
5682 # Handle host configuration, which affects the cross-toolset too
5684 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
5685 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
5686 test "$with_junit" = "no" && sub_conf_opts="$sub_conf_opts --without-junit"
5687 # While we don't need scripting support, we don't have a PYTHON_FOR_BUILD Java equivalent, so must enable scripting for Java
5688 if test -n "$ENABLE_JAVA"; then
5691 # Hack for Android - the build doesn't need a host JDK, so just forward to build for convenience
5692 test -n "$with_jdk_home" && sub_conf_opts="$sub_conf_opts --with-jdk-home=$with_jdk_home"
5695 if test -z "$with_jdk_home"; then
5696 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.])
5701 sub_conf_opts="$sub_conf_opts --without-java"
5703 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
5704 test "$with_galleries" = "no" -o -z "$WITH_GALLERY_BUILD" && sub_conf_opts="$sub_conf_opts --with-galleries=no --disable-database-connectivity"
5705 test -n "$with_help" -a "$with_help" != "no" && sub_conf_opts="$sub_conf_opts --with-help=$with_help"
5706 test "$enable_extensions" = yes || sub_conf_opts="$sub_conf_opts --disable-extensions"
5707 test "${enable_ld+set}" = set -a "$build_cpu" = "$host_cpu" && sub_conf_opts="$sub_conf_opts --enable-ld=${enable_ld}"
5708 test "${enable_pch+set}" = set && sub_conf_opts="$sub_conf_opts --enable-pch=${enable_pch}"
5709 test "$enable_wasm_strip" = "yes" && sub_conf_opts="$sub_conf_opts --enable-wasm-strip"
5710 test "${with_system_lockfile+set}" = set && sub_conf_opts="$sub_conf_opts --with-system-lockfile=${with_system_lockfile}"
5711 test "${enable_fuzzers}" = yes && sub_conf_opts="$sub_conf_opts --without-system-libxml"
5712 if test "$_os" = "Emscripten"; then
5713 sub_conf_opts="$sub_conf_opts --without-system-libxml --without-system-fontconfig --without-system-freetype --without-system-zlib"
5716 # Don't bother having configure look for stuff not needed for the build platform anyway
5717 # WARNING: any option with an argument containing spaces must be handled separately (see --with-theme)
5718 sub_conf_defaults=" \
5719 --build="$build_alias" \
5720 --disable-cairo-canvas \
5722 --disable-customtarget-components \
5723 --disable-firebird-sdbc \
5725 --disable-gstreamer-1-0 \
5729 --disable-mariadb-sdbc \
5731 --disable-online-update \
5733 --disable-pdfimport \
5734 --disable-postgresql-sdbc \
5737 --enable-dynamic-loading \
5738 --enable-icecream="$enable_icecream" \
5742 --with-tls=openssl \
5744 # single quotes added for better readability in case of spaces
5745 echo " Running CONF-FOR-BUILD/configure" \
5746 $sub_conf_defaults \
5747 --with-parallelism="'$with_parallelism'" \
5748 --with-theme="'$with_theme'" \
5749 --with-vendor="'$with_vendor'" \
5751 $with_build_platform_configure_options \
5755 $sub_conf_defaults \
5756 --with-parallelism="$with_parallelism" \
5757 --with-theme="$with_theme" \
5758 "--with-vendor=$with_vendor" \
5760 $with_build_platform_configure_options \
5762 2>&1 | sed -e 's/^/ /'
5763 if test [${PIPESTATUS[0]}] -ne 0; then
5764 AC_MSG_ERROR([Running the configure script for BUILD side failed, see CONF-FOR-BUILD/config.log])
5767 # filter permitted build targets
5768 PERMITTED_BUILD_TARGETS="
5803 # converts BUILD_TYPE and PERMITTED_BUILD_TARGETS into non-whitespace,
5804 # newlined lists, to use grep as a filter
5805 PERMITTED_BUILD_TARGETS=$(echo "$PERMITTED_BUILD_TARGETS" | sed -e '/^ *$/d' -e 's/ *//')
5806 BUILD_TARGETS="$(sed -n -e '/^export BUILD_TYPE=/ s/.*=//p' config_host.mk | tr ' ' '\n')"
5807 BUILD_TARGETS="$(echo "$BUILD_TARGETS" | grep -F "$PERMITTED_BUILD_TARGETS" | tr '\n' ' ')"
5808 sed -i -e "s/ BUILD_TYPE=.*$/ BUILD_TYPE=$BUILD_TARGETS/" config_host.mk
5810 cp config_host.mk ../config_build.mk
5811 cp config_host_lang.mk ../config_build_lang.mk
5812 mv config.log ../config.Build.log
5813 mkdir -p ../config_build
5814 mv config_host/*.h ../config_build
5815 test -f "$WARNINGS_FILE" && mv "$WARNINGS_FILE" "../$WARNINGS_FILE_FOR_BUILD"
5817 # all these will get a _FOR_BUILD postfix
5818 DIRECT_FOR_BUILD_SETTINGS="
5826 JDK_SECURITYMANAGER_DISALLOWED
5830 LIBO_URE_MISC_FOLDER
5836 # these overwrite host config with build config
5837 OVERWRITING_SETTINGS="
5841 JAVA_CLASSPATH_NOT_SET
5853 # these need some special handling
5854 EXTRA_HANDLED_SETTINGS="
5861 . ./bin/get_config_variables $DIRECT_FOR_BUILD_SETTINGS $OVERWRITING_SETTINGS $EXTRA_HANDLED_SETTINGS
5865 line=`echo "LO_PATH_FOR_BUILD='${BUILD_PATH}'" | sed -e 's,/CONF-FOR-BUILD,,g'`
5866 echo "$line" >>build-config
5868 for V in $DIRECT_FOR_BUILD_SETTINGS; do
5870 VV=`eval "echo $VV"`
5871 if test -n "$VV"; then
5872 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
5873 echo "$line" >>build-config
5877 for V in $OVERWRITING_SETTINGS; do
5879 VV=`eval "echo $VV"`
5880 if test -n "$VV"; then
5881 line=${V}='${'${V}:-$VV'}'
5882 echo "$line" >>build-config
5886 for V in INSTDIR INSTROOT WORKDIR; do
5888 VV=`eval "echo $VV"`
5889 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
5890 if test -n "$VV"; then
5891 line="${V}_FOR_BUILD='$VV'"
5892 echo "$line" >>build-config
5897 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([setup/configure for BUILD side failed, see CONF-FOR-BUILD/config.log])
5898 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])
5899 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
5900 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
5902 eval `cat CONF-FOR-BUILD/build-config`
5904 AC_MSG_RESULT([checking for BUILD platform configuration... done])
5906 rm -rf CONF-FOR-BUILD
5910 CPPU_ENV_FOR_BUILD="$CPPU_ENV"
5911 CXX_FOR_BUILD="$CXX"
5912 INSTDIR_FOR_BUILD="$INSTDIR"
5913 INSTROOT_FOR_BUILD="$INSTROOT"
5914 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
5915 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
5916 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
5917 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
5918 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
5919 WORKDIR_FOR_BUILD="$WORKDIR"
5921 AC_SUBST(OS_FOR_BUILD)
5922 AC_SUBST(INSTDIR_FOR_BUILD)
5923 AC_SUBST(INSTROOT_FOR_BUILD)
5924 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
5925 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
5926 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
5927 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
5928 AC_SUBST(SDKDIRNAME_FOR_BUILD)
5929 AC_SUBST(WORKDIR_FOR_BUILD)
5930 AC_SUBST(CC_FOR_BUILD)
5931 AC_SUBST(CXX_FOR_BUILD)
5932 AC_SUBST(CPPU_ENV_FOR_BUILD)
5934 dnl ===================================================================
5935 dnl Check for lockfile deps
5936 dnl ===================================================================
5937 if test -z "$CROSS_COMPILING"; then
5938 test -n "$LOCKFILE" -a "${with_system_lockfile+set}" != set && with_system_lockfile="$LOCKFILE"
5939 test "${with_system_lockfile+set}" = set || with_system_lockfile=no
5940 AC_MSG_CHECKING([which lockfile binary to use])
5941 case "$with_system_lockfile" in
5943 AC_MSG_RESULT([external])
5944 AC_PATH_PROGS([LOCKFILE],[dotlockfile lockfile])
5947 AC_MSG_RESULT([internal])
5950 if test -x "$with_system_lockfile"; then
5951 LOCKFILE="$with_system_lockfile"
5953 AC_MSG_ERROR(['$with_system_lockfile' is not executable.])
5955 AC_MSG_RESULT([$with_system_lockfile])
5960 if test -n "$LOCKFILE" -a "$DISABLE_DYNLOADING" = TRUE; then
5961 add_warning "The default system lockfile has increasing poll intervals up to 60s, so linking executables may be delayed."
5964 AC_CHECK_HEADERS([getopt.h paths.h sys/param.h])
5965 AC_CHECK_FUNCS([utime utimes])
5968 dnl ===================================================================
5969 dnl Check for syslog header
5970 dnl ===================================================================
5971 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
5973 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
5974 dnl ===================================================================
5975 AC_MSG_CHECKING([whether to turn warnings to errors])
5976 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
5977 ENABLE_WERROR="TRUE"
5978 PYTHONWARNINGS="error"
5979 AC_MSG_RESULT([yes])
5981 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
5982 ENABLE_WERROR="TRUE"
5983 PYTHONWARNINGS="error"
5984 AC_MSG_RESULT([yes])
5989 AC_SUBST(ENABLE_WERROR)
5990 AC_SUBST(PYTHONWARNINGS)
5992 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
5993 dnl ===================================================================
5994 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
5995 if test -z "$enable_assert_always_abort"; then
5996 if test "$ENABLE_DEBUG" = TRUE; then
5997 enable_assert_always_abort=yes
5999 enable_assert_always_abort=no
6002 if test "$enable_assert_always_abort" = "yes"; then
6003 ASSERT_ALWAYS_ABORT="TRUE"
6004 AC_MSG_RESULT([yes])
6006 ASSERT_ALWAYS_ABORT="FALSE"
6009 AC_SUBST(ASSERT_ALWAYS_ABORT)
6011 # Determine whether to use ooenv for the instdir installation
6012 # ===================================================================
6013 if test $_os != "WINNT" -a $_os != "Darwin"; then
6014 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
6015 if test -z "$enable_ooenv"; then
6016 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
6022 if test "$enable_ooenv" = "no"; then
6026 AC_MSG_RESULT([yes])
6029 AC_SUBST(ENABLE_OOENV)
6031 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
6032 if test "$enable_qt5" = "no"; then
6033 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
6039 AC_MSG_CHECKING([whether to build the pagein binaries for oosplash])
6040 if test "${enable_pagein}" != no -a -z "$DISABLE_DYNLOADING"; then
6041 AC_MSG_RESULT([yes])
6043 AC_DEFINE(HAVE_FEATURE_PAGEIN)
6047 AC_SUBST(ENABLE_PAGEIN)
6049 dnl ===================================================================
6050 dnl check for cups support
6051 dnl ===================================================================
6053 AC_MSG_CHECKING([whether to enable CUPS support])
6054 if test "$test_cups" = yes -a "$enable_cups" != no; then
6056 AC_MSG_RESULT([yes])
6058 AC_MSG_CHECKING([whether cups support is present])
6059 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
6060 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
6061 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
6062 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
6068 AC_SUBST(ENABLE_CUPS)
6070 libo_CHECK_SYSTEM_MODULE([fontconfig],[FONTCONFIG],[fontconfig >= 2.4.1],,system,TRUE)
6072 dnl whether to find & fetch external tarballs?
6073 dnl ===================================================================
6074 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
6075 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6076 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
6078 TARFILE_LOCATION="$LODE_HOME/ext_tar"
6081 if test -z "$TARFILE_LOCATION"; then
6082 if test -d "$SRC_ROOT/src" ; then
6083 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
6084 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
6086 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
6088 AbsolutePath "$TARFILE_LOCATION"
6089 PathFormat "${absolute_path}"
6090 TARFILE_LOCATION="${formatted_path_unix}"
6092 AC_SUBST(TARFILE_LOCATION)
6094 AC_MSG_CHECKING([whether we want to fetch tarballs])
6095 if test "$enable_fetch_external" != "no"; then
6096 if test "$with_all_tarballs" = "yes"; then
6097 AC_MSG_RESULT([yes, all of them])
6098 DO_FETCH_TARBALLS="ALL"
6100 AC_MSG_RESULT([yes, if we use them])
6101 DO_FETCH_TARBALLS="TRUE"
6107 AC_SUBST(DO_FETCH_TARBALLS)
6109 dnl Test whether to include MySpell dictionaries
6110 dnl ===================================================================
6111 AC_MSG_CHECKING([whether to include MySpell dictionaries])
6112 if test "$with_myspell_dicts" = "yes"; then
6113 AC_MSG_RESULT([yes])
6114 WITH_MYSPELL_DICTS=TRUE
6115 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
6116 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
6121 AC_SUBST(WITH_MYSPELL_DICTS)
6123 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
6124 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
6125 if test "$with_system_dicts" = yes; then
6126 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
6128 with_system_dicts=no
6131 AC_MSG_CHECKING([whether to use dicts from external paths])
6132 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
6133 AC_MSG_RESULT([yes])
6135 AC_MSG_CHECKING([for spelling dictionary directory])
6136 if test -n "$with_external_dict_dir"; then
6137 DICT_SYSTEM_DIR=file://$with_external_dict_dir
6139 DICT_SYSTEM_DIR=file:///usr/share/hunspell
6140 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
6141 DICT_SYSTEM_DIR=file:///usr/share/myspell
6144 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
6145 AC_MSG_CHECKING([for hyphenation patterns directory])
6146 if test -n "$with_external_hyph_dir"; then
6147 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
6149 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
6151 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
6152 AC_MSG_CHECKING([for thesaurus directory])
6153 if test -n "$with_external_thes_dir"; then
6154 THES_SYSTEM_DIR=file://$with_external_thes_dir
6156 THES_SYSTEM_DIR=file:///usr/share/mythes
6158 AC_MSG_RESULT([$THES_SYSTEM_DIR])
6163 AC_SUBST(SYSTEM_DICTS)
6164 AC_SUBST(DICT_SYSTEM_DIR)
6165 AC_SUBST(HYPH_SYSTEM_DIR)
6166 AC_SUBST(THES_SYSTEM_DIR)
6168 dnl ===================================================================
6169 dnl Precompiled headers.
6171 AC_MSG_CHECKING([whether to enable pch feature])
6172 if test -z "$enable_pch"; then
6173 if test "$_os" = "WINNT"; then
6174 # Enabled by default on Windows.
6176 # never use sccache on auto-enabled PCH builds, except if requested explicitly
6177 if test -z "$enable_ccache" -a "$SCCACHE"; then
6184 if test "$enable_pch" != no -a "$_os" = Emscripten -a "$ENABLE_WASM_EXCEPTIONS" = TRUE; then
6185 AC_MSG_ERROR([PCH currently isn't supported for Emscripten with native EH (nEH) because of missing Sj/Lj support with nEH in clang.])
6187 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
6188 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
6190 if test "$enable_pch" = "system"; then
6192 AC_MSG_RESULT([yes (system headers)])
6193 elif test "$enable_pch" = "base"; then
6195 AC_MSG_RESULT([yes (system and base headers)])
6196 elif test "$enable_pch" = "normal"; then
6198 AC_MSG_RESULT([yes (normal)])
6199 elif test "$enable_pch" = "full"; then
6201 AC_MSG_RESULT([yes (full)])
6202 elif test "$enable_pch" = "yes"; then
6203 # Pick a suitable default.
6204 if test "$GCC" = "yes"; then
6205 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
6206 # while making the PCHs larger and rebuilds more likely.
6208 AC_MSG_RESULT([yes (system and base headers)])
6210 # With MSVC the highest level makes a significant difference,
6211 # and it was the default when there used to be no PCH levels.
6213 AC_MSG_RESULT([yes (full)])
6215 elif test "$enable_pch" = "no"; then
6218 AC_MSG_ERROR([Unknown value for --enable-pch])
6220 AC_SUBST(ENABLE_PCH)
6221 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
6222 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
6223 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
6224 if test "$CCACHE_BIN" != "not found"; then
6225 AC_MSG_CHECKING([ccache version])
6226 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
6227 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6228 AC_MSG_RESULT([$CCACHE_VERSION])
6229 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
6230 if test "$CCACHE_NUMVER" -gt "030701"; then
6231 AC_MSG_RESULT([yes])
6233 AC_MSG_RESULT([no (not newer than 3.7.1)])
6239 PCH_INSTANTIATE_TEMPLATES=
6240 if test -n "$ENABLE_PCH"; then
6241 AC_MSG_CHECKING([whether $CC supports -fpch-instantiate-templates])
6243 CFLAGS="$CFLAGS -Werror -fpch-instantiate-templates"
6244 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_INSTANTIATE_TEMPLATES="-fpch-instantiate-templates" ],[])
6246 if test -n "$PCH_INSTANTIATE_TEMPLATES"; then
6252 AC_SUBST(PCH_INSTANTIATE_TEMPLATES)
6254 BUILDING_PCH_WITH_OBJ=
6255 if test -n "$ENABLE_PCH"; then
6256 AC_MSG_CHECKING([whether $CC supports -Xclang -building-pch-with-obj])
6258 CFLAGS="$CFLAGS -Werror -Xclang -building-pch-with-obj"
6259 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ BUILDING_PCH_WITH_OBJ="-Xclang -building-pch-with-obj" ],[])
6261 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6267 AC_SUBST(BUILDING_PCH_WITH_OBJ)
6272 if test "$COM" = MSC; then
6273 fpch_prefix="-Xclang "
6275 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6276 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-codegen])
6278 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-codegen"
6279 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6280 [ PCH_CODEGEN="${fpch_prefix}-fpch-codegen" ],[])
6282 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fno-pch-codegen"
6283 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],
6284 [ PCH_NO_CODEGEN="${fpch_prefix}-fno-pch-codegen" ],[])
6286 if test -n "$PCH_CODEGEN"; then
6292 AC_SUBST(PCH_CODEGEN)
6293 AC_SUBST(PCH_NO_CODEGEN)
6295 if test -n "$BUILDING_PCH_WITH_OBJ"; then
6296 AC_MSG_CHECKING([whether $CC supports ${fpch_prefix}-fpch-debuginfo])
6298 CFLAGS="$CFLAGS -Werror ${fpch_prefix}-fpch-debuginfo"
6299 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ PCH_DEBUGINFO="${fpch_prefix}-fpch-debuginfo" ],[])
6301 if test -n "$PCH_DEBUGINFO"; then
6307 AC_SUBST(PCH_DEBUGINFO)
6311 AC_MSG_CHECKING([the GNU Make version])
6312 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
6313 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
6314 if test "$_make_longver" -ge "038200"; then
6315 AC_MSG_RESULT([$GNUMAKE $_make_version])
6317 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
6320 # find if gnumake support file function
6321 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
6322 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
6323 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6324 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
6326 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
6327 \$(file >test.txt,Success )
6334 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
6335 if test -f $TESTGMAKEFILEFUNC/test.txt; then
6336 HAVE_GNUMAKE_FILE_FUNC=TRUE
6337 AC_MSG_RESULT([yes])
6341 rm -rf $TESTGMAKEFILEFUNC
6342 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
6344 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
6346 if test "$_make_ver_check" = ""; then
6350 HAVE_LD_HASH_STYLE=FALSE
6351 WITH_LINKER_HASH_STYLE=
6352 AC_MSG_CHECKING([for --hash-style gcc linker support])
6353 if test "$GCC" = "yes"; then
6354 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
6355 hash_styles="gnu sysv"
6356 elif test "$with_linker_hash_style" = "no"; then
6359 hash_styles="$with_linker_hash_style"
6362 for hash_style in $hash_styles; do
6363 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
6364 hash_style_ldflags_save=$LDFLAGS
6365 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
6367 AC_RUN_IFELSE([AC_LANG_PROGRAM(
6374 HAVE_LD_HASH_STYLE=TRUE
6375 WITH_LINKER_HASH_STYLE=$hash_style
6377 [HAVE_LD_HASH_STYLE=FALSE],
6378 [HAVE_LD_HASH_STYLE=FALSE])
6379 LDFLAGS=$hash_style_ldflags_save
6382 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
6383 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
6387 LDFLAGS=$hash_style_ldflags_save
6391 AC_SUBST(HAVE_LD_HASH_STYLE)
6392 AC_SUBST(WITH_LINKER_HASH_STYLE)
6394 dnl ===================================================================
6395 dnl Check whether there's a Perl version available.
6396 dnl ===================================================================
6397 if test -z "$with_perl_home"; then
6398 AC_PATH_PROG(PERL, perl)
6400 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
6401 _perl_path="$with_perl_home/bin/perl"
6402 if test -x "$_perl_path"; then
6405 AC_MSG_ERROR([$_perl_path not found])
6409 dnl ===================================================================
6410 dnl Testing for Perl version 5 or greater.
6411 dnl $] is the Perl version variable, it is returned as an integer
6412 dnl ===================================================================
6413 if test "$PERL"; then
6414 AC_MSG_CHECKING([the Perl version])
6415 ${PERL} -e "exit($]);"
6417 if test "$_perl_version" -lt 5; then
6418 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
6420 AC_MSG_RESULT([Perl $_perl_version])
6422 AC_MSG_ERROR([Perl not found, install Perl 5])
6425 dnl ===================================================================
6426 dnl Testing for required Perl modules
6427 dnl ===================================================================
6429 AC_MSG_CHECKING([for required Perl modules])
6430 perl_use_string="use Cwd ; use Digest::MD5"
6431 if test "$_os" = "WINNT"; then
6432 if test -n "$PKGFORMAT"; then
6433 for i in $PKGFORMAT; do
6436 # for getting fonts versions to use in MSI
6437 perl_use_string="$perl_use_string ; use Font::TTF::Font"
6443 if test "$with_system_hsqldb" = "yes"; then
6444 perl_use_string="$perl_use_string ; use Archive::Zip"
6446 if test "$enable_openssl" = "yes" -a "$with_system_openssl" != "yes"; then
6447 # OpenSSL needs that to build
6448 perl_use_string="$perl_use_string ; use FindBin"
6450 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
6451 AC_MSG_RESULT([all modules found])
6453 AC_MSG_RESULT([failed to find some modules])
6454 # Find out which modules are missing.
6455 for i in $perl_use_string; do
6456 if test "$i" != "use" -a "$i" != ";"; then
6457 if ! $PERL -e "use $i;">/dev/null 2>&1; then
6458 missing_perl_modules="$missing_perl_modules $i"
6463 The missing Perl modules are: $missing_perl_modules
6464 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
6467 dnl ===================================================================
6468 dnl Check for pkg-config
6469 dnl ===================================================================
6470 if test "$_os" != "WINNT"; then
6473 AC_SUBST(PKG_CONFIG)
6474 AC_SUBST(PKG_CONFIG_PATH)
6475 AC_SUBST(PKG_CONFIG_LIBDIR)
6477 if test "$_os" != "WINNT"; then
6479 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
6480 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
6481 # explicitly. Or put /path/to/compiler in PATH yourself.
6484 if test "$COM_IS_CLANG" = "TRUE"; then
6487 AC_CHECK_TOOLS(AR,$toolprefix-ar ar)
6488 AC_CHECK_TOOLS(NM,$toolprefix-nm nm)
6489 AC_CHECK_TOOLS(RANLIB,$toolprefix-ranlib ranlib)
6490 AC_CHECK_TOOLS(OBJDUMP,$toolprefix-objdump objdump)
6491 AC_CHECK_TOOLS(READELF,$toolprefix-readelf readelf)
6492 AC_CHECK_TOOLS(STRIP,$toolprefix-strip strip)
6501 dnl ===================================================================
6502 dnl pkg-config checks on macOS
6503 dnl ===================================================================
6505 if test $_os = Darwin; then
6506 AC_MSG_CHECKING([for bogus pkg-config])
6507 if test -n "$PKG_CONFIG"; then
6508 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
6509 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
6511 if test "$enable_bogus_pkg_config" = "yes"; then
6512 AC_MSG_RESULT([yes, user-approved from unknown origin.])
6514 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.])
6518 AC_MSG_RESULT([no, good])
6524 # Return value: $csctest
6528 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
6529 if test -n "$regvalue"; then
6537 # Return value: $altest
6541 # We need this check to detect 4.6.1 or above.
6542 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
6543 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
6544 PathFormat "$regvalue"
6545 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6551 reg_list_values_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows"
6552 for x in $reglist; do
6553 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
6554 PathFormat "$regvalue"
6555 if test -n "$regvalue" -a \( -f "$formatted_path_unix/al.exe" -o -f "$formatted_path_unix/bin/al.exe" \); then
6566 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
6567 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
6568 if test -n "$regvalue"; then
6575 find_winsdk_version()
6577 # Args: $1 : SDK version as in "8.0", "8.1A" etc
6578 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
6580 unset winsdktest winsdkbinsubdir winsdklibsubdir
6584 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
6585 if test -n "$regvalue"; then
6586 winsdktest=$regvalue
6587 winsdklibsubdir=win8
6592 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
6593 if test -n "$regvalue"; then
6594 winsdktest=$regvalue
6595 winsdklibsubdir=winv6.3
6600 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
6601 if test -n "$regvalue"; then
6602 winsdktest=$regvalue
6603 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
6604 if test -n "$regvalue"; then
6605 winsdkbinsubdir="$regvalue".0
6606 winsdklibsubdir=$winsdkbinsubdir
6607 local tmppath="$winsdktest\\Include\\$winsdklibsubdir"
6608 local tmppath_unix=$(cygpath -u "$tmppath")
6609 # test exist the SDK path
6610 if test -d "$tmppath_unix"; then
6611 # when path is convertible to a short path then path is okay
6612 cygpath -d "$tmppath" >/dev/null 2>&1
6613 if test $? -ne 0; then
6614 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
6617 AC_MSG_ERROR([The Windows SDK not found, check the installation])
6628 # Return value: From find_winsdk_version
6632 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
6633 find_winsdk_version $ver
6634 if test -n "$winsdktest"; then
6642 # Return value: $msmdir
6644 AC_MSG_CHECKING([for MSVC merge modules directory])
6648 dnl Order my_msm_files in increasing order. Then check the directories returned
6649 dnl by ls in an inner loop; assuming they are also ordered in increasing order,
6650 dnl the result will be the highest MSM version found in the highest directory.
6654 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm Microsoft_VC143_CRT_x86.msm ${my_msm_files}"
6657 for f in $my_msm_files; do
6658 echo "$as_me:$LINENO: searching for $f" >&5
6664 for f in ${my_msm_files}; do
6665 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6666 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
6667 echo "$as_me:$LINENO: looking for $my_msm_dir${f}])" >&5
6668 if test -e "$my_msm_dir${f}"; then
6676 if test -n "$msmdir"; then
6677 msmdir=`cygpath -m "$msmdir"`
6678 AC_MSG_RESULT([$msmdir])
6680 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
6681 AC_MSG_FAILURE([not found])
6683 AC_MSG_WARN([not found (check config.log)])
6684 add_warning "MSM none of ${my_msm_files} found"
6689 find_msvc_x64_dlls()
6691 # Return value: $msvcdllpath, $msvcdlls
6693 AC_MSG_CHECKING([for MSVC x64 DLL path])
6695 dnl Order crtver in increasing order. Then check the directories returned by
6696 dnl ls in an inner loop; assuming they are also ordered in increasing order,
6697 dnl the result will be the highest CRT version found in the highest directory.
6699 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
6702 for crtver in 141 142 143; do
6703 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
6704 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT" >&5
6705 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"; then
6706 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC$crtver.CRT"
6712 AC_MSG_RESULT([$msvcdllpath])
6713 AC_MSG_CHECKING([for MSVC x64 DLLs])
6714 msvcdlls="msvcp140.dll vcruntime140.dll"
6715 for dll in $msvcdlls; do
6716 if ! test -f "$msvcdllpath/$dll"; then
6717 AC_MSG_FAILURE([missing $dll])
6720 AC_MSG_RESULT([found all ($msvcdlls)])
6723 dnl =========================================
6724 dnl Check for the Windows SDK.
6725 dnl =========================================
6726 if test "$_os" = "WINNT"; then
6727 AC_MSG_CHECKING([for Windows SDK])
6728 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6730 WINDOWS_SDK_HOME=$winsdktest
6732 # normalize if found
6733 if test -n "$WINDOWS_SDK_HOME"; then
6734 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
6735 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
6738 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
6741 if test -n "$WINDOWS_SDK_HOME"; then
6742 # Remove a possible trailing backslash
6743 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
6745 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
6746 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
6747 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
6748 have_windows_sdk_headers=yes
6749 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
6750 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
6751 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
6752 have_windows_sdk_headers=yes
6753 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
6754 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
6755 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
6756 have_windows_sdk_headers=yes
6758 have_windows_sdk_headers=no
6761 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
6762 have_windows_sdk_libs=yes
6763 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/user32.lib"; then
6764 have_windows_sdk_libs=yes
6766 have_windows_sdk_libs=no
6769 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
6770 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
6771 the Windows SDK are installed.])
6775 if test -z "$WINDOWS_SDK_HOME"; then
6776 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
6777 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
6778 WINDOWS_SDK_VERSION=80
6779 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
6780 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
6781 WINDOWS_SDK_VERSION=81
6782 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
6783 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
6784 WINDOWS_SDK_VERSION=10
6785 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
6787 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
6789 PathFormat "$WINDOWS_SDK_HOME"
6790 WINDOWS_SDK_HOME="$formatted_path"
6791 WINDOWS_SDK_HOME_unix="$formatted_path_unix"
6792 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6793 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
6794 if test -d "$WINDOWS_SDK_HOME/include/um"; then
6795 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
6796 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
6797 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
6801 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
6802 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
6803 dnl but not in v8.0), so allow this to be overridden with a
6804 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
6805 dnl and configuration error if no WiLangId.vbs is found would arguably be
6806 dnl better, but I do not know under which conditions exactly it is needed by
6808 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
6809 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
6810 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6811 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6812 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WIN_BUILD_ARCH}/WiLangId.vbs"
6813 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6815 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6816 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WIN_BUILD_ARCH/WiLangId.vbs
6817 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6819 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6820 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WIN_BUILD_ARCH/WiLangId.vbs")
6821 WINDOWS_SDK_WILANGID_unix=$(cygpath -u "$WINDOWS_SDK_WILANGID")
6824 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
6825 if test -n "$with_package_format" -a "$with_package_format" != no; then
6826 for i in "$with_package_format"; do
6827 if test "$i" = "msi"; then
6828 if ! test -e "$WINDOWS_SDK_WILANGID_unix" ; then
6829 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
6836 AC_SUBST(WINDOWS_SDK_HOME)
6837 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
6838 AC_SUBST(WINDOWS_SDK_VERSION)
6839 AC_SUBST(WINDOWS_SDK_WILANGID)
6841 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
6842 dnl Check midl.exe; this being the first check for a tool in the SDK bin
6843 dnl dir, it also determines that dir's path w/o an arch segment if any,
6844 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
6845 AC_MSG_CHECKING([for midl.exe])
6848 PathFormat "$winsdktest"
6849 winsdktest_unix="$formatted_path_unix"
6851 if test -n "$winsdkbinsubdir" \
6852 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/midl.exe"
6854 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH
6855 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin/$winsdkbinsubdir
6856 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/midl.exe"; then
6857 MIDL_PATH=$winsdktest/Bin/$WIN_BUILD_ARCH
6858 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6859 elif test -f "$winsdktest_unix/Bin/midl.exe"; then
6860 MIDL_PATH=$winsdktest/Bin
6861 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME_unix/Bin
6863 PathFormat "$MIDL_PATH"
6864 if test ! -f "$formatted_path_unix/midl.exe"; then
6865 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WIN_BUILD_ARCH, Windows SDK installation broken?])
6867 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
6870 # Convert to posix path with 8.3 filename restrictions ( No spaces )
6871 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
6873 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
6874 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
6875 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
6876 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
6877 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
6878 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
6879 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6880 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
6881 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
6882 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
6883 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
6884 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
6886 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
6890 AC_MSG_CHECKING([for csc.exe])
6892 PathFormat "$csctest"
6893 csctest_unix="$formatted_path_unix"
6894 if test -f "$csctest_unix/csc.exe"; then
6897 if test ! -f "$csctest_unix/csc.exe"; then
6898 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
6900 AC_MSG_RESULT([$CSC_PATH/csc.exe])
6903 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
6906 AC_MSG_CHECKING([for al.exe])
6907 if test -n "$winsdkbinsubdir" \
6908 -a -f "$winsdktest_unix/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH/al.exe"
6910 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WIN_BUILD_ARCH"
6911 elif test -f "$winsdktest_unix/Bin/$WIN_BUILD_ARCH/al.exe"; then
6912 AL_PATH="$winsdktest/Bin/$WIN_BUILD_ARCH"
6913 elif test -f "$winsdktest_unix/Bin/al.exe"; then
6914 AL_PATH="$winsdktest/Bin"
6917 if test -z "$AL_PATH"; then
6919 PathFormat "$altest"
6920 altest_unix="$formatted_path_unix"
6921 if test -f "$altest_unix/bin/al.exe"; then
6922 AL_PATH="$altest/bin"
6923 elif test -f "$altest_unix/al.exe"; then
6927 PathFormat "$AL_PATH"
6928 if test ! -f "$formatted_path_unix/al.exe"; then
6929 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
6931 AC_MSG_RESULT([$AL_PATH/al.exe])
6934 AL_PATH=`win_short_path_for_make "$AL_PATH"`
6936 dnl Check mscoree.lib / .NET Framework dir
6937 AC_MSG_CHECKING(.NET Framework)
6939 PathFormat "$frametest"
6940 frametest="$formatted_path_unix"
6941 if test -f "$frametest/Lib/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6942 DOTNET_FRAMEWORK_HOME="$frametest"
6944 if test -f "$winsdktest_unix/lib/mscoree.lib" -o -f "$winsdktest_unix/lib/$winsdklibsubdir/um/$WIN_BUILD_ARCH/mscoree.lib"; then
6945 DOTNET_FRAMEWORK_HOME="$winsdktest"
6948 PathFormat "$DOTNET_FRAMEWORK_HOME"
6949 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
6950 AC_MSG_ERROR([mscoree.lib not found])
6952 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6954 PathFormat "$MIDL_PATH"
6955 MIDL_PATH="$formatted_path"
6957 PathFormat "$AL_PATH"
6958 AL_PATH="$formatted_path"
6960 PathFormat "$DOTNET_FRAMEWORK_HOME"
6961 DOTNET_FRAMEWORK_HOME="$formatted_path"
6963 PathFormat "$CSC_PATH"
6964 CSC_PATH="$formatted_path"
6967 dnl ===================================================================
6968 dnl Testing for C++ compiler and version...
6969 dnl ===================================================================
6971 if test "$_os" != "WINNT"; then
6972 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6973 save_CXXFLAGS=$CXXFLAGS
6975 CXXFLAGS=$save_CXXFLAGS
6976 if test -z "$CXX_BASE"; then
6977 CXX_BASE=`first_arg_basename "$CXX"`
6981 dnl check for GNU C++ compiler version
6982 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6983 AC_MSG_CHECKING([the GNU C++ compiler version])
6985 _gpp_version=`$CXX -dumpversion`
6986 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6988 if test "$_gpp_majmin" -lt "700"; then
6989 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6991 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6994 dnl see https://code.google.com/p/android/issues/detail?id=41770
6998 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6999 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
7000 #include <bits/c++config.h>]],[[
7001 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
7002 && !defined(_GLIBCXX__PTHREADS) \
7003 && !defined(_GLIBCXX_HAS_GTHREADS)
7006 ]])],[AC_MSG_RESULT([yes])
7007 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
7009 if test $glibcxx_threads = yes; then
7010 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
7013 AC_SUBST(BOOST_CXXFLAGS)
7016 # prefx CXX with ccache if needed
7018 if test "$CCACHE" != ""; then
7019 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
7021 save_CXXFLAGS=$CXXFLAGS
7022 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
7023 # msvc does not fail on unknown options, check stdout
7024 if test "$COM" = MSC; then
7025 CXXFLAGS="$CXXFLAGS -nologo"
7027 save_ac_cxx_werror_flag=$ac_cxx_werror_flag
7028 ac_cxx_werror_flag=yes
7029 dnl an empty program will do, we're checking the compiler flags
7030 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
7031 [use_ccache=yes], [use_ccache=no])
7032 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
7033 AC_MSG_RESULT([yes])
7036 CXX_BASE="ccache $CXX_BASE"
7039 CXXFLAGS=$save_CXXFLAGS
7040 ac_cxx_werror_flag=$save_ac_cxx_werror_flag
7044 dnl ===================================================================
7045 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
7046 dnl ===================================================================
7048 if test "$_os" != "WINNT"; then
7051 dnl Check whether there's a C pre-processor.
7056 dnl ===================================================================
7057 dnl Find integral type sizes and alignments
7058 dnl ===================================================================
7060 if test "$_os" != "WINNT"; then
7062 AC_CHECK_SIZEOF(long)
7063 AC_CHECK_SIZEOF(short)
7064 AC_CHECK_SIZEOF(int)
7065 AC_CHECK_SIZEOF(long long)
7066 AC_CHECK_SIZEOF(double)
7067 AC_CHECK_SIZEOF(void*)
7068 AC_CHECK_SIZEOF(size_t)
7070 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
7071 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
7072 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
7073 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
7074 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
7075 SIZEOF_SIZE_T=$ac_cv_sizeof_size_t
7077 dnl Allow build without AC_CHECK_ALIGNOF, grrr
7078 m4_pattern_allow([AC_CHECK_ALIGNOF])
7079 m4_ifdef([AC_CHECK_ALIGNOF],
7081 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
7082 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
7083 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
7084 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
7087 case "$_os-$host_cpu" in
7089 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7090 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7091 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
7092 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
7095 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
7096 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
7097 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
7098 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
7101 if test -z "$ac_cv_alignof_short" -o \
7102 -z "$ac_cv_alignof_int" -o \
7103 -z "$ac_cv_alignof_long" -o \
7104 -z "$ac_cv_alignof_double"; then
7105 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.])
7111 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
7112 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
7113 if test $ac_cv_sizeof_long -eq 8; then
7114 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
7115 elif test $ac_cv_sizeof_double -eq 8; then
7116 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
7118 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
7121 dnl Check for large file support
7123 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
7124 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
7126 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
7127 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
7131 SAL_TYPES_SIZEOFSHORT=2
7132 SAL_TYPES_SIZEOFINT=4
7133 SAL_TYPES_SIZEOFLONG=4
7134 SAL_TYPES_SIZEOFLONGLONG=8
7135 if test $WIN_HOST_BITS -eq 32; then
7136 SAL_TYPES_SIZEOFPOINTER=4
7139 SAL_TYPES_SIZEOFPOINTER=8
7142 SAL_TYPES_ALIGNMENT2=2
7143 SAL_TYPES_ALIGNMENT4=4
7144 SAL_TYPES_ALIGNMENT8=8
7147 AC_SUBST(LFS_CFLAGS)
7148 AC_SUBST(SIZEOF_SIZE_T)
7150 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
7151 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
7152 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
7153 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
7154 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
7155 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
7156 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
7157 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
7159 dnl Calc jumbo sheets (1m+ rows) depend on 64 bit tools::Long .
7160 AC_MSG_CHECKING([whether jumbo sheets are supported])
7161 if test "$_os" != "WINNT"; then
7162 if test $SAL_TYPES_SIZEOFLONG -gt 4; then
7163 AC_MSG_RESULT([yes])
7164 ENABLE_JUMBO_SHEETS=TRUE
7165 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7170 if test $WIN_HOST_BITS -gt 32; then
7171 # 64bit windows is special-cased for tools::Long because long is 32bit
7172 AC_MSG_RESULT([yes])
7173 ENABLE_JUMBO_SHEETS=TRUE
7174 AC_DEFINE(HAVE_FEATURE_JUMBO_SHEETS)
7179 AC_SUBST(ENABLE_JUMBO_SHEETS)
7181 dnl ===================================================================
7182 dnl Check whether to enable runtime optimizations
7183 dnl ===================================================================
7184 ENABLE_RUNTIME_OPTIMIZATIONS=
7185 AC_MSG_CHECKING([whether to enable runtime optimizations])
7186 if test -z "$enable_runtime_optimizations"; then
7190 enable_runtime_optimizations=no
7196 if test "$enable_runtime_optimizations" != no; then
7197 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
7198 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
7199 AC_MSG_RESULT([yes])
7203 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
7205 dnl ===================================================================
7206 dnl Check if valgrind headers are available
7207 dnl ===================================================================
7209 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
7210 prev_cppflags=$CPPFLAGS
7211 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
7212 # or where does it come from?
7213 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
7214 AC_CHECK_HEADER([valgrind/valgrind.h],
7215 [ENABLE_VALGRIND=TRUE])
7216 CPPFLAGS=$prev_cppflags
7218 AC_SUBST([ENABLE_VALGRIND])
7219 if test -z "$ENABLE_VALGRIND"; then
7220 if test "$with_valgrind" = yes; then
7221 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
7225 AC_SUBST([VALGRIND_CFLAGS])
7228 dnl ===================================================================
7229 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
7230 dnl ===================================================================
7232 # We need at least the sys/sdt.h include header.
7233 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
7234 if test "$SDT_H_FOUND" = "TRUE"; then
7235 # Found sys/sdt.h header, now make sure the c++ compiler works.
7236 # Old g++ versions had problems with probes in constructors/destructors.
7237 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
7239 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
7240 #include <sys/sdt.h>
7248 ProbeClass(int& v, const char *n) : ref(v), name(n)
7250 DTRACE_PROBE2(_test_, cons, name, ref);
7253 void method(int min)
7255 DTRACE_PROBE3(_test_, meth, name, ref, min);
7261 DTRACE_PROBE2(_test_, dest, name, ref);
7266 DTRACE_PROBE1(_test_, call, i);
7267 ProbeClass inst = ProbeClass(i, "call");
7269 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
7270 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
7273 AC_CONFIG_HEADERS([config_host/config_probes.h])
7275 dnl ===================================================================
7277 dnl ===================================================================
7278 HAVE_GCC_STACK_CLASH_PROTECTION=
7279 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7280 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
7282 CFLAGS="$CFLAGS -Werror -fstack-clash-protection"
7284 [AC_LANG_PROGRAM(, [[return 0;]])],
7285 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
7286 [AC_MSG_RESULT([no])])
7289 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
7291 CFLAGS="$CFLAGS -Werror -mno-avx"
7292 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
7294 if test "$HAVE_GCC_AVX" = "TRUE"; then
7295 AC_MSG_RESULT([yes])
7300 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
7301 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
7303 if (__sync_add_and_fetch(&v, 1) != 1 ||
7304 __sync_sub_and_fetch(&v, 1) != 0)
7306 __sync_synchronize();
7307 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
7311 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
7312 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
7313 AC_MSG_RESULT([yes])
7314 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
7319 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
7321 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7324 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
7326 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
7327 AC_MSG_RESULT([yes])
7328 ], [AC_MSG_RESULT([no])])
7331 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
7333 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7336 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
7338 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
7339 AC_MSG_RESULT([yes])
7340 ], [AC_MSG_RESULT([no])])
7343 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
7345 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7347 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
7349 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
7350 AC_MSG_RESULT([yes])
7351 ], [AC_MSG_RESULT([no])])
7354 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
7356 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7359 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
7361 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
7362 AC_MSG_RESULT([yes])
7363 ], [AC_MSG_RESULT([no])])
7366 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exception in cxxabi.h])
7368 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7371 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exception); }
7373 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTION],[1])
7374 AC_MSG_RESULT([yes])
7375 ], [AC_MSG_RESULT([no])])
7378 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
7380 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7382 void * f() { return __cxxabiv1::__cxa_get_globals(); }
7384 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
7385 AC_MSG_RESULT([yes])
7386 ], [AC_MSG_RESULT([no])])
7389 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
7391 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7393 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
7395 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
7396 AC_MSG_RESULT([yes])
7397 ], [AC_MSG_RESULT([no])])
7400 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
7402 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7404 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
7406 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
7407 AC_MSG_RESULT([yes])
7408 ], [AC_MSG_RESULT([no])])
7411 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
7413 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7416 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
7418 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
7419 AC_MSG_RESULT([yes])
7420 ], [AC_MSG_RESULT([no])])
7423 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
7425 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7428 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
7430 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
7431 AC_MSG_RESULT([yes])
7432 ], [AC_MSG_RESULT([no])])
7436 AC_SUBST(HAVE_GCC_AVX)
7437 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
7438 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
7440 dnl ===================================================================
7441 dnl Identify the C++ library
7442 dnl ===================================================================
7444 AC_MSG_CHECKING([what the C++ library is])
7448 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7454 [CPP_LIBRARY=GLIBCXX
7455 cpp_library_name="GNU libstdc++"
7458 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7460 #ifndef _LIBCPP_VERSION
7465 cpp_library_name="LLVM libc++"
7466 AC_DEFINE([HAVE_LIBCPP])
7469 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7476 cpp_library_name="Microsoft"
7478 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
7479 AC_MSG_RESULT([$cpp_library_name])
7481 AC_SUBST([HAVE_LIBSTDCPP])
7482 AC_SUBST([HAVE_LIBCPP])
7484 if test -z "${LIBCPP_DEBUG+x}" -a -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"
7486 # Libc++ has two levels of debug mode, assertions mode enabled with -D_LIBCPP_DEBUG=0,
7487 # and actual debug mode enabled with -D_LIBCPP_DEBUG=1 (and starting with LLVM15
7488 # assertions mode will be separate and controlled by -D_LIBCPP_ENABLE_ASSERTIONS=1,
7489 # although there will be backwards compatibility).
7490 # Debug mode is supported by libc++ only if built for it, e.g. Mac libc++ isn't,
7491 # and there would be undefined references to debug functions.
7492 # Moreover std::to_string() has a bug (https://reviews.llvm.org/D125184).
7493 # So check if debug mode can be used and disable or downgrade it to assertions
7495 AC_MSG_CHECKING([if libc++ has a usable debug mode])
7498 AC_LINK_IFELSE([AC_LANG_SOURCE([[
7499 #define _LIBCPP_DEBUG 0 // only assertions
7507 ]])], [libcpp_debug_links=1])
7508 if test -n "$libcpp_debug_links"; then
7509 # we can use at least assertions, check if debug mode works
7510 AC_RUN_IFELSE([AC_LANG_SOURCE([[
7511 #define _LIBCPP_DEBUG 1 // debug mode
7514 int foo(const std::vector<int>& v) { return *v.begin(); }
7519 std::string s = "xxxxxxxxxxxxxxxxxxxxxxxxx" + std::to_string(10);
7520 return (foo(v) + s.size()) != 0 ? 0 : 1;
7524 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=1
7526 [AC_MSG_RESULT(no, using only assertions)
7527 LIBCPP_DEBUG=-D_LIBCPP_DEBUG=0
7535 AC_SUBST([LIBCPP_DEBUG])
7537 dnl ===================================================================
7539 dnl ===================================================================
7540 AC_PATH_PROG(GPERF, gperf)
7541 if test -z "$GPERF"; then
7542 AC_MSG_ERROR([gperf not found but needed. Install it.])
7544 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
7545 GPERF=`cygpath -m $GPERF`
7547 AC_MSG_CHECKING([whether gperf is new enough])
7548 my_gperf_ver1=$($GPERF --version | head -n 1)
7549 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
7550 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
7551 if test "$my_gperf_ver3" -ge 301; then
7552 AC_MSG_RESULT([yes ($my_gperf_ver2)])
7554 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
7558 dnl ===================================================================
7559 dnl Check for system libcmis
7560 dnl ===================================================================
7561 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2],enabled)
7563 dnl ===================================================================
7565 dnl ===================================================================
7567 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
7569 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
7570 if test "$with_latest_c__" = yes; then
7571 CXXFLAGS_CXX11=-std:c++latest
7573 CXXFLAGS_CXX11=-std:c++17
7575 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -permissive- -Zc:__cplusplus"
7576 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7577 my_flags='-std=c++17 -std=c++1z'
7578 if test "$with_latest_c__" = yes; then
7579 my_flags="-std=c++23 -std=c++2b -std=c++20 -std=c++2a $my_flags"
7581 for flag in $my_flags; do
7582 if test "$COM" = MSC; then
7583 flag="-Xclang $flag"
7585 save_CXXFLAGS=$CXXFLAGS
7586 CXXFLAGS="$CXXFLAGS $flag -Werror"
7587 if test "$SYSTEM_LIBCMIS" = TRUE; then
7588 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
7591 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7592 #include <algorithm>
7593 #include <functional>
7596 #if defined SYSTEM_LIBCMIS
7597 // See ucb/source/ucp/cmis/auth_provider.hxx:
7598 #if !defined __clang__
7599 #pragma GCC diagnostic push
7600 #pragma GCC diagnostic ignored "-Wdeprecated"
7601 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
7603 #include <libcmis/libcmis.hxx>
7604 #if !defined __clang__
7605 #pragma GCC diagnostic pop
7609 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
7610 std::sort(v.begin(), v.end(), fn);
7612 ]])],[CXXFLAGS_CXX11=$flag])
7614 CXXFLAGS=$save_CXXFLAGS
7615 if test -n "$CXXFLAGS_CXX11"; then
7620 if test -n "$CXXFLAGS_CXX11"; then
7621 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
7625 AC_SUBST(CXXFLAGS_CXX11)
7627 if test "$GCC" = "yes"; then
7628 save_CXXFLAGS=$CXXFLAGS
7629 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7631 CXXFLAGS=$save_CXXFLAGS
7632 AC_SUBST(ATOMIC_LIB)
7635 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
7636 save_CXXFLAGS=$CXXFLAGS
7637 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7640 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
7643 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
7659 a thinga[]={{0,0}, {1,1}};
7660 b thingb[]={{0,0}, {1,1}};
7661 size_t i = sizeof(sal_n_array_size(thinga));
7662 size_t j = sizeof(sal_n_array_size(thingb));
7663 return !(i != 0 && j != 0);
7665 ], [ AC_MSG_RESULT(yes) ],
7666 [ AC_MSG_ERROR(no)])
7668 CXXFLAGS=$save_CXXFLAGS
7670 HAVE_GCC_FNO_SIZED_DEALLOCATION=
7671 if test "$GCC" = yes; then
7672 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
7674 save_CXXFLAGS=$CXXFLAGS
7675 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
7676 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
7677 CXXFLAGS=$save_CXXFLAGS
7679 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
7680 AC_MSG_RESULT([yes])
7685 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
7687 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
7689 save_CXXFLAGS=$CXXFLAGS
7690 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7691 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7692 #include <algorithm>
7693 #include <initializer_list>
7695 template<typename T> class S {
7699 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
7701 constinit S<int> s{3, 2, 1};
7703 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
7704 AC_MSG_RESULT([yes])
7705 ], [AC_MSG_RESULT([no])])
7706 CXXFLAGS=$save_CXXFLAGS
7709 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
7711 save_CXXFLAGS=$CXXFLAGS
7712 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7713 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7715 #include <type_traits>
7716 // Don't check size_type directly, as it was called index_type before P1872R0:
7717 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
7719 AC_DEFINE([HAVE_CPP_SPAN],[1])
7720 AC_MSG_RESULT([yes])
7721 ], [AC_MSG_RESULT([no])])
7722 CXXFLAGS=$save_CXXFLAGS
7725 AC_MSG_CHECKING([whether $CXX_BASE implements C++ DR P1155R3])
7727 save_CXXFLAGS=$CXXFLAGS
7728 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7729 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7730 struct S1 { S1(S1 &&); };
7732 S1 f(S2 s) { return s; }
7734 AC_DEFINE([HAVE_P1155R3],[1])
7735 AC_MSG_RESULT([yes])
7736 ], [AC_MSG_RESULT([no])])
7737 CXXFLAGS=$save_CXXFLAGS
7740 AC_MSG_CHECKING([whether $CXX_BASE supports C++20 std::atomic_ref])
7741 HAVE_CXX20_ATOMIC_REF=
7743 save_CXXFLAGS=$CXXFLAGS
7744 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
7745 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7748 std::atomic_ref<int> y(x);
7750 HAVE_CXX20_ATOMIC_REF=TRUE
7751 AC_MSG_RESULT([yes])
7752 ], [AC_MSG_RESULT([no])])
7753 CXXFLAGS=$save_CXXFLAGS
7755 AC_SUBST([HAVE_CXX20_ATOMIC_REF])
7757 dnl Supported since GCC 9 and Clang 10 (which each also started to support -Wdeprecated-copy, but
7758 dnl which is included in -Wextra anyway):
7759 HAVE_WDEPRECATED_COPY_DTOR=
7760 if test "$GCC" = yes; then
7761 AC_MSG_CHECKING([whether $CXX_BASE supports -Wdeprecated-copy-dtor])
7763 save_CXXFLAGS=$CXXFLAGS
7764 CXXFLAGS="$CXXFLAGS -Werror -Wdeprecated-copy-dtor"
7765 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7766 HAVE_WDEPRECATED_COPY_DTOR=TRUE
7767 AC_MSG_RESULT([yes])
7768 ], [AC_MSG_RESULT([no])])
7769 CXXFLAGS=$save_CXXFLAGS
7772 AC_SUBST([HAVE_WDEPRECATED_COPY_DTOR])
7774 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
7775 dnl uninitialized warning for code like
7778 dnl boost::optional<OString> * g(bool b) {
7779 dnl boost::optional<OString> o;
7781 dnl return new boost::optional<OString>(o);
7784 dnl (as is e.g. present, in a slightly more elaborate form, in
7785 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
7786 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
7787 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
7788 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7789 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
7791 save_CXXFLAGS=$CXXFLAGS
7792 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
7793 if test "$ENABLE_OPTIMIZED" = TRUE; then
7794 CXXFLAGS="$CXXFLAGS -O2"
7796 CXXFLAGS="$CXXFLAGS -O0"
7798 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7807 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
7808 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
7814 char stg[sizeof (S1)];
7822 ]])], [AC_MSG_RESULT([no])], [
7823 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
7824 AC_MSG_RESULT([yes])
7826 CXXFLAGS=$save_CXXFLAGS
7829 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
7831 dnl Check for <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c5> "[8/9/10/11 Regression]
7832 dnl -Wstringop-overflow false positive due to using MEM_REF type of &MEM" (fixed in GCC 11), which
7833 dnl hits us e.g. with GCC 10 and --enable-optimized at
7835 dnl In file included from include/rtl/string.hxx:49,
7836 dnl from include/rtl/ustring.hxx:43,
7837 dnl from include/osl/file.hxx:35,
7838 dnl from include/codemaker/global.hxx:28,
7839 dnl from include/codemaker/options.hxx:23,
7840 dnl from codemaker/source/commoncpp/commoncpp.cxx:24:
7841 dnl In function ‘char* rtl::addDataHelper(char*, const char*, std::size_t)’,
7842 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,
7843 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,
7844 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,
7845 dnl inlined from ‘rtl::OString codemaker::cpp::scopedCppName(const rtl::OString&, bool)’ at codemaker/source/commoncpp/commoncpp.cxx:53:55:
7846 dnl include/rtl/stringconcat.hxx:78:15: error: writing 2 bytes into a region of size 1 [-Werror=stringop-overflow=]
7847 dnl 78 | memcpy( buffer, data, length );
7848 dnl | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
7849 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=
7850 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
7851 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=stringop-overflow=])
7853 save_CXXFLAGS=$CXXFLAGS
7854 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wstringop-overflow"
7855 if test "$ENABLE_OPTIMIZED" = TRUE; then
7856 CXXFLAGS="$CXXFLAGS -O2"
7858 CXXFLAGS="$CXXFLAGS -O0"
7860 dnl Test code taken from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87296#c0>:
7861 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
7862 void fill(char const * begin, char const * end, char c);
7868 fill(c.ids, c.ids + sizeof(c.ids), '\0');
7869 __builtin_strncpy(c.username, "root", sizeof(c.username));
7871 ]])], [AC_MSG_RESULT([no])], [
7872 HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW=TRUE
7873 AC_MSG_RESULT([yes])
7875 CXXFLAGS=$save_CXXFLAGS
7878 AC_SUBST([HAVE_BROKEN_GCC_WSTRINGOP_OVERFLOW])
7880 HAVE_DLLEXPORTINLINES=
7881 if test "$_os" = "WINNT"; then
7882 AC_MSG_CHECKING([whether $CXX_BASE supports -Zc:dllexportInlines-])
7884 save_CXXFLAGS=$CXXFLAGS
7885 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
7886 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
7887 HAVE_DLLEXPORTINLINES=TRUE
7888 AC_MSG_RESULT([yes])
7889 ], [AC_MSG_RESULT([no])])
7890 CXXFLAGS=$save_CXXFLAGS
7893 AC_SUBST([HAVE_DLLEXPORTINLINES])
7895 dnl ===================================================================
7896 dnl CPU Intrinsics support - SSE, AVX
7897 dnl ===================================================================
7899 CXXFLAGS_INTRINSICS_SSE2=
7900 CXXFLAGS_INTRINSICS_SSSE3=
7901 CXXFLAGS_INTRINSICS_SSE41=
7902 CXXFLAGS_INTRINSICS_SSE42=
7903 CXXFLAGS_INTRINSICS_AVX=
7904 CXXFLAGS_INTRINSICS_AVX2=
7905 CXXFLAGS_INTRINSICS_AVX512=
7906 CXXFLAGS_INTRINSICS_AVX512F=
7907 CXXFLAGS_INTRINSICS_F16C=
7908 CXXFLAGS_INTRINSICS_FMA=
7910 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
7911 # GCC, Clang or Clang-cl (clang-cl + MSVC's -arch options don't work well together)
7918 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
7919 flag_avx512f=-mavx512f
7923 # With MSVC using -arch is in fact not necessary for being able
7924 # to use CPU intrinsics, code using AVX512F intrinsics will compile
7925 # even if compiled with -arch:AVX, the -arch option really only affects
7926 # instructions generated for C/C++ code.
7927 # So use the matching same (or lower) -arch options, but only in order
7928 # to generate the best matching instructions for the C++ code surrounding
7930 # SSE2 is the default for x86/x64, so no need to specify the option.
7932 # No specific options for these, use the next lower.
7933 flag_ssse3="$flag_sse2"
7934 flag_sse41="$flag_sse2"
7935 flag_sse42="$flag_sse2"
7937 flag_avx2=-arch:AVX2
7938 flag_avx512=-arch:AVX512
7939 # Using -arch:AVX512 would enable more than just AVX512F, so use only AVX2.
7940 flag_avx512f=-arch:AVX2
7941 # No MSVC options for these.
7942 flag_f16c="$flag_sse2"
7943 flag_fma="$flag_sse2"
7946 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
7948 save_CXXFLAGS=$CXXFLAGS
7949 CXXFLAGS="$CXXFLAGS $flag_sse2"
7950 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7951 #include <emmintrin.h>
7953 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7954 c = _mm_xor_si128 (a, b);
7958 [can_compile_sse2=yes],
7959 [can_compile_sse2=no])
7961 CXXFLAGS=$save_CXXFLAGS
7962 AC_MSG_RESULT([${can_compile_sse2}])
7963 if test "${can_compile_sse2}" = "yes" ; then
7964 CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
7967 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
7969 save_CXXFLAGS=$CXXFLAGS
7970 CXXFLAGS="$CXXFLAGS $flag_ssse3"
7971 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7972 #include <tmmintrin.h>
7974 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7975 c = _mm_maddubs_epi16 (a, b);
7979 [can_compile_ssse3=yes],
7980 [can_compile_ssse3=no])
7982 CXXFLAGS=$save_CXXFLAGS
7983 AC_MSG_RESULT([${can_compile_ssse3}])
7984 if test "${can_compile_ssse3}" = "yes" ; then
7985 CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
7988 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
7990 save_CXXFLAGS=$CXXFLAGS
7991 CXXFLAGS="$CXXFLAGS $flag_sse41"
7992 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
7993 #include <smmintrin.h>
7995 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
7996 c = _mm_cmpeq_epi64 (a, b);
8000 [can_compile_sse41=yes],
8001 [can_compile_sse41=no])
8003 CXXFLAGS=$save_CXXFLAGS
8004 AC_MSG_RESULT([${can_compile_sse41}])
8005 if test "${can_compile_sse41}" = "yes" ; then
8006 CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
8009 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
8011 save_CXXFLAGS=$CXXFLAGS
8012 CXXFLAGS="$CXXFLAGS $flag_sse42"
8013 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8014 #include <nmmintrin.h>
8016 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
8017 c = _mm_cmpgt_epi64 (a, b);
8021 [can_compile_sse42=yes],
8022 [can_compile_sse42=no])
8024 CXXFLAGS=$save_CXXFLAGS
8025 AC_MSG_RESULT([${can_compile_sse42}])
8026 if test "${can_compile_sse42}" = "yes" ; then
8027 CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
8030 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
8032 save_CXXFLAGS=$CXXFLAGS
8033 CXXFLAGS="$CXXFLAGS $flag_avx"
8034 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8035 #include <immintrin.h>
8037 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
8038 c = _mm256_xor_ps(a, b);
8042 [can_compile_avx=yes],
8043 [can_compile_avx=no])
8045 CXXFLAGS=$save_CXXFLAGS
8046 AC_MSG_RESULT([${can_compile_avx}])
8047 if test "${can_compile_avx}" = "yes" ; then
8048 CXXFLAGS_INTRINSICS_AVX="$flag_avx"
8051 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
8053 save_CXXFLAGS=$CXXFLAGS
8054 CXXFLAGS="$CXXFLAGS $flag_avx2"
8055 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8056 #include <immintrin.h>
8058 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
8059 c = _mm256_maddubs_epi16(a, b);
8063 [can_compile_avx2=yes],
8064 [can_compile_avx2=no])
8066 CXXFLAGS=$save_CXXFLAGS
8067 AC_MSG_RESULT([${can_compile_avx2}])
8068 if test "${can_compile_avx2}" = "yes" ; then
8069 CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
8072 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
8074 save_CXXFLAGS=$CXXFLAGS
8075 CXXFLAGS="$CXXFLAGS $flag_avx512"
8076 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8077 #include <immintrin.h>
8079 __m512i a = _mm512_loadu_si512(0);
8080 __m512d v1 = _mm512_load_pd(0);
8081 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
8082 __m512d v2 = _mm512_abs_pd(v1);
8086 [can_compile_avx512=yes],
8087 [can_compile_avx512=no])
8089 CXXFLAGS=$save_CXXFLAGS
8090 AC_MSG_RESULT([${can_compile_avx512}])
8091 if test "${can_compile_avx512}" = "yes" ; then
8092 CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
8093 CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
8096 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
8098 save_CXXFLAGS=$CXXFLAGS
8099 CXXFLAGS="$CXXFLAGS $flag_f16c"
8100 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8101 #include <immintrin.h>
8103 __m128i a = _mm_set1_epi32 (0);
8105 c = _mm_cvtph_ps(a);
8109 [can_compile_f16c=yes],
8110 [can_compile_f16c=no])
8112 CXXFLAGS=$save_CXXFLAGS
8113 AC_MSG_RESULT([${can_compile_f16c}])
8114 if test "${can_compile_f16c}" = "yes" ; then
8115 CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
8118 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
8120 save_CXXFLAGS=$CXXFLAGS
8121 CXXFLAGS="$CXXFLAGS $flag_fma"
8122 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
8123 #include <immintrin.h>
8125 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
8126 d = _mm256_fmadd_ps(a, b, c);
8130 [can_compile_fma=yes],
8131 [can_compile_fma=no])
8133 CXXFLAGS=$save_CXXFLAGS
8134 AC_MSG_RESULT([${can_compile_fma}])
8135 if test "${can_compile_fma}" = "yes" ; then
8136 CXXFLAGS_INTRINSICS_FMA="$flag_fma"
8139 AC_SUBST([CXXFLAGS_INTRINSICS_SSE2])
8140 AC_SUBST([CXXFLAGS_INTRINSICS_SSSE3])
8141 AC_SUBST([CXXFLAGS_INTRINSICS_SSE41])
8142 AC_SUBST([CXXFLAGS_INTRINSICS_SSE42])
8143 AC_SUBST([CXXFLAGS_INTRINSICS_AVX])
8144 AC_SUBST([CXXFLAGS_INTRINSICS_AVX2])
8145 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512])
8146 AC_SUBST([CXXFLAGS_INTRINSICS_AVX512F])
8147 AC_SUBST([CXXFLAGS_INTRINSICS_F16C])
8148 AC_SUBST([CXXFLAGS_INTRINSICS_FMA])
8150 dnl ===================================================================
8151 dnl system stl sanity tests
8152 dnl ===================================================================
8153 if test "$_os" != "WINNT"; then
8157 save_CPPFLAGS="$CPPFLAGS"
8158 if test -n "$MACOSX_SDK_PATH"; then
8159 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
8162 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
8164 if test "$CPP_LIBRARY" = GLIBCXX; then
8165 dnl gcc#19664, gcc#22482, rhbz#162935
8166 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
8167 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
8168 AC_MSG_RESULT([$stlvisok])
8169 if test "$stlvisok" = "no"; then
8170 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
8174 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
8175 # when we don't make any dynamic libraries?
8176 if test "$DISABLE_DYNLOADING" = ""; then
8177 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
8178 cat > conftestlib1.cc <<_ACEOF
8179 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8180 struct S2: S1<int> { virtual ~S2(); };
8183 cat > conftestlib2.cc <<_ACEOF
8184 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
8185 struct S2: S1<int> { virtual ~S2(); };
8186 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
8188 gccvisinlineshiddenok=yes
8189 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
8190 gccvisinlineshiddenok=no
8192 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
8193 dnl known to not work with -z defs (unsetting which makes the test
8195 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
8196 if test "$COM_IS_CLANG" = TRUE; then
8197 for i in $CXX $CXXFLAGS; do
8200 my_linkflagsnoundefs=
8206 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
8207 gccvisinlineshiddenok=no
8212 AC_MSG_RESULT([$gccvisinlineshiddenok])
8213 if test "$gccvisinlineshiddenok" = "no"; then
8214 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
8218 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
8219 cat >visibility.cxx <<_ACEOF
8220 #pragma GCC visibility push(hidden)
8221 struct __attribute__ ((visibility ("default"))) TestStruct {
8224 __attribute__ ((visibility ("default"))) void TestFunc() {
8228 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
8233 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
8236 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
8248 rm -f visibility.s visibility.cxx
8250 AC_MSG_RESULT([$gccvisbroken])
8251 if test "$gccvisbroken" = "yes"; then
8252 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
8255 CPPFLAGS="$save_CPPFLAGS"
8257 AC_MSG_CHECKING([if CET endbranch is recognized])
8258 cat > endbr.s <<_ACEOF
8261 HAVE_ASM_END_BRANCH_INS_SUPPORT=
8262 if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
8263 AC_MSG_RESULT([yes])
8264 HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
8268 rm -f endbr.s endbr.o
8269 AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
8274 dnl ===================================================================
8276 dnl ===================================================================
8278 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
8279 if test "$GCC" = "yes"; then
8280 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
8282 save_CXXFLAGS=$CXXFLAGS
8283 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
8284 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
8285 CXXFLAGS=$save_CXXFLAGS
8287 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
8288 AC_MSG_RESULT([yes])
8293 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
8295 dnl ===================================================================
8296 dnl Compiler plugins
8297 dnl ===================================================================
8300 # currently only Clang
8302 if test "$COM_IS_CLANG" != "TRUE"; then
8303 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
8304 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
8305 enable_compiler_plugins=no
8309 COMPILER_PLUGINS_COM_IS_CLANG=
8310 if test "$COM_IS_CLANG" = "TRUE"; then
8311 if test -n "$enable_compiler_plugins"; then
8312 compiler_plugins="$enable_compiler_plugins"
8313 elif test -n "$ENABLE_DBGUTIL"; then
8314 compiler_plugins=test
8318 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
8319 if test "$CLANGVER" -lt 120001; then
8320 if test "$compiler_plugins" = yes; then
8322 [Clang $CLANGVER is too old to build compiler plugins; need >= 12.0.1.])
8328 if test "$compiler_plugins" != "no"; then
8329 dnl The prefix where Clang resides, override to where Clang resides if
8330 dnl using a source build:
8331 if test -z "$CLANGDIR"; then
8332 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $(printf '%s\n' $CXX | grep clang | head -n 1)))))
8334 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
8335 if test -z "$COMPILER_PLUGINS_CXX"; then
8336 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
8338 clangbindir=$CLANGDIR/bin
8339 if test "$build_os" = "cygwin"; then
8340 clangbindir=$(cygpath -u "$clangbindir")
8342 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
8343 if test -n "$LLVM_CONFIG"; then
8344 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
8345 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
8346 if test -z "$CLANGLIBDIR"; then
8347 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
8349 # Try if clang is built from source (in which case its includes are not together with llvm includes).
8350 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
8351 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
8352 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
8353 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
8355 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
8356 clangobjdir=$($LLVM_CONFIG --obj-root)
8357 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
8358 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
8361 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
8365 save_CPPFLAGS=$CPPFLAGS
8366 save_CXXFLAGS=$CXXFLAGS
8367 save_LDFLAGS=$LDFLAGS
8369 CXX=$COMPILER_PLUGINS_CXX
8370 CXXCPP="$COMPILER_PLUGINS_CXX -E"
8371 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8372 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
8373 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
8374 [COMPILER_PLUGINS=TRUE],
8376 if test "$compiler_plugins" = "yes"; then
8377 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
8379 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
8380 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
8383 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
8384 dnl comment in compilerplugins/Makefile-clang.mk:
8385 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
8387 AC_MSG_CHECKING([for clang libraries to use])
8388 if test -z "$CLANGTOOLLIBS"; then
8389 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
8391 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8392 [[ clang::FullSourceLoc().dump(); ]])
8393 ],[CLANGTOOLLIBS="$LIBS"],[])
8395 dnl If the above check for the combined -lclang-cpp failed, fall back to a hand-curated
8396 dnl list of individual -lclang* (but note that that list can become outdated over time,
8397 dnl see e.g. the since-reverted 5078591de9a0e65ca560a4f1913e90dfe95f66bf "CLANGTOOLLIBS
8398 dnl needs to include -lclangSupport now"):
8399 if test -z "$CLANGTOOLLIBS"; then
8400 LIBS="-lclangTooling -lclangFrontend -lclangDriver -lclangParse -lclangSema -lclangEdit \
8401 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
8403 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
8404 [[ clang::FullSourceLoc().dump(); ]])
8405 ],[CLANGTOOLLIBS="$LIBS"],[])
8407 AC_MSG_RESULT([$CLANGTOOLLIBS])
8408 if test -z "$CLANGTOOLLIBS"; then
8409 if test "$compiler_plugins" = "yes"; then
8410 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
8412 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
8413 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
8417 if test -n "$COMPILER_PLUGINS"; then
8418 if test -z "$CLANGSYSINCLUDE"; then
8419 if test -n "$LLVM_CONFIG"; then
8420 # Path to the clang system headers (no idea if there's a better way to get it).
8421 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/git\|svn//')/include
8428 CPPFLAGS=$save_CPPFLAGS
8429 CXXFLAGS=$save_CXXFLAGS
8430 LDFLAGS=$save_LDFLAGS
8434 AC_MSG_CHECKING([whether the compiler for building compilerplugins is actually Clang])
8435 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
8441 [AC_MSG_RESULT([yes])
8442 COMPILER_PLUGINS_COM_IS_CLANG=TRUE],
8443 [AC_MSG_RESULT([no])])
8444 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8447 if test "$enable_compiler_plugins" = "yes"; then
8448 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
8451 COMPILER_PLUGINS_ANALYZER_PCH=
8452 if test "$enable_compiler_plugins_analyzer_pch" != no; then
8453 COMPILER_PLUGINS_ANALYZER_PCH=TRUE
8455 AC_SUBST(COMPILER_PLUGINS)
8456 AC_SUBST(COMPILER_PLUGINS_ANALYZER_PCH)
8457 AC_SUBST(COMPILER_PLUGINS_COM_IS_CLANG)
8458 AC_SUBST(COMPILER_PLUGINS_CXX)
8459 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
8460 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
8461 AC_SUBST(COMPILER_PLUGINS_DEBUG)
8462 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
8464 AC_SUBST(CLANGLIBDIR)
8465 AC_SUBST(CLANGTOOLLIBS)
8466 AC_SUBST(CLANGSYSINCLUDE)
8468 # Plugin to help linker.
8469 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
8470 # This makes --enable-lto build with clang work.
8473 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
8474 AC_SUBST(HAVE_POSIX_FALLOCATE)
8476 JITC_PROCESSOR_TYPE=""
8477 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
8478 # IBMs JDK needs this...
8479 JITC_PROCESSOR_TYPE=6
8480 export JITC_PROCESSOR_TYPE
8482 AC_SUBST([JITC_PROCESSOR_TYPE])
8484 # Misc Windows Stuff
8485 AC_ARG_WITH(ucrt-dir,
8486 AS_HELP_STRING([--with-ucrt-dir],
8487 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
8488 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
8489 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
8490 Windows6.1-KB2999226-x64.msu
8491 Windows6.1-KB2999226-x86.msu
8492 Windows8.1-KB2999226-x64.msu
8493 Windows8.1-KB2999226-x86.msu
8494 Windows8-RT-KB2999226-x64.msu
8495 Windows8-RT-KB2999226-x86.msu
8496 A zip archive including those files is available from Microsoft site:
8497 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
8500 UCRT_REDISTDIR="$with_ucrt_dir"
8501 if test $_os = "WINNT"; then
8503 for i in $PKGFORMAT; do
8504 if test "$i" = msi; then
8509 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
8510 MSVC_DLLS="$msvcdlls"
8511 test -n "$msmdir" && MSM_PATH=`win_short_path_for_make "$msmdir"`
8512 # MSVC 15.3 changed it to VC141
8513 if echo "$msvcdllpath" | grep -q "VC143.CRT$"; then
8514 SCPDEFS="$SCPDEFS -DWITH_VC143_REDIST"
8515 elif echo "$msvcdllpath" | grep -q "VC142.CRT$"; then
8516 SCPDEFS="$SCPDEFS -DWITH_VC142_REDIST"
8517 elif echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
8518 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
8520 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
8523 if test "$UCRT_REDISTDIR" = "no"; then
8524 dnl explicitly disabled
8527 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
8528 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
8529 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
8530 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
8531 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
8532 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
8534 if test -n "$PKGFORMAT"; then
8535 for i in $PKGFORMAT; do
8538 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
8539 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
8548 AC_SUBST(UCRT_REDISTDIR)
8549 AC_SUBST(MSVC_DLL_PATH)
8554 dnl ===================================================================
8556 dnl ===================================================================
8557 if test "$ENABLE_JAVA" != ""; then
8559 # Windows-specific tests
8560 if test "$build_os" = "cygwin"; then
8561 if test -z "$with_jdk_home"; then
8562 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
8563 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
8564 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
8565 if test -n "$regvalue"; then
8567 reg_get_value "$WIN_HOST_BITS" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
8568 with_jdk_home=$regvalue
8570 howfound="found automatically"
8572 with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
8573 howfound="you passed"
8576 if ! test -f "$with_jdk_home/lib/jvm.lib" -a -f "$with_jdk_home/bin/java.exe"; then
8577 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])
8581 # 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.
8582 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
8583 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
8584 with_jdk_home=`/usr/libexec/java_home`
8587 JAVA_HOME=; export JAVA_HOME
8588 if test -z "$with_jdk_home"; then
8589 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
8591 _java_path="$with_jdk_home/bin/$with_java"
8592 dnl Check if there is a Java interpreter at all.
8593 if test -x "$_java_path"; then
8594 JAVAINTERPRETER=$_java_path
8596 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
8600 dnl Check that the JDK found is correct architecture (at least 2 reasons to
8601 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
8602 dnl loaded by java to run JunitTests:
8603 if test "$build_os" = "cygwin" -a "$cross_compiling" != "yes"; then
8604 shortjdkhome=`cygpath -d "$with_jdk_home"`
8605 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
8606 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
8607 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8608 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
8609 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8610 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8613 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
8614 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
8616 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
8617 elif test "$cross_compiling" != "yes"; then
8619 AARCH64|AXP|X86_64|IA64|POWERPC64|S390X|SPARC64|MIPS64)
8620 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
8621 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
8622 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
8625 *) # assumption: everything else 32-bit
8626 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
8627 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
8628 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
8635 dnl ===================================================================
8637 dnl ===================================================================
8639 # Whether all the complexity here actually is needed any more or not, no idea.
8641 JDK_SECURITYMANAGER_DISALLOWED=
8642 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8644 AC_MSG_CHECKING([the installed JDK])
8645 if test -n "$JAVAINTERPRETER"; then
8646 dnl java -version sends output to stderr!
8647 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
8648 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8649 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
8650 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8651 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
8652 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8653 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
8654 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
8658 dnl Sun JDK specific tests
8659 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
8660 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
8662 if test "$_jdk_ver" -lt 10900; then
8663 AC_MSG_ERROR([JDK is too old, you need at least 9 ($_jdk_ver < 10900)])
8665 if test "$_jdk_ver" -gt 10900; then
8666 JAVA_CLASSPATH_NOT_SET=TRUE
8668 dnl TODO: Presumably, the Security Manager will not merely be disallowed, but be
8669 dnl completely removed in some Java version > 18 (see
8670 dnl <https://openjdk.java.net/jeps/411> "Deprecate the Security Manager for Removal"):
8671 if test "$_jdk_ver" -ge 180000; then
8672 JDK_SECURITYMANAGER_DISALLOWED=TRUE
8675 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
8676 if test "$_os" = "WINNT"; then
8677 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
8679 AC_MSG_RESULT([found $JAVA_HOME (JDK $_jdk)])
8681 # set to limit VM usage for JunitTests
8683 # set to limit VM usage for javac
8684 JAVACFLAGS=-J-Xmx128M
8687 AC_MSG_ERROR([Java not found. You need at least JDK 9])
8690 if test -z "$ENABLE_JAVA"; then
8694 elif test "$cross_compiling" = "yes"; then
8695 # Just assume compatibility of build and host JDK
8697 JAVAIFLAGS=$JAVAIFLAGS_FOR_BUILD
8701 dnl ===================================================================
8702 dnl Checks for javac
8703 dnl ===================================================================
8704 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8705 javacompiler="javac"
8706 : ${JAVA_SOURCE_VER=8}
8707 : ${JAVA_TARGET_VER=8}
8708 if test -z "$with_jdk_home"; then
8709 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
8711 _javac_path="$with_jdk_home/bin/$javacompiler"
8712 dnl Check if there is a Java compiler at all.
8713 if test -x "$_javac_path"; then
8714 JAVACOMPILER=$_javac_path
8717 if test -z "$JAVACOMPILER"; then
8718 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
8720 if test "$build_os" = "cygwin"; then
8721 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
8722 JAVACOMPILER="${JAVACOMPILER}.exe"
8724 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
8728 dnl ===================================================================
8729 dnl Checks for javadoc
8730 dnl ===================================================================
8731 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8732 if test -z "$with_jdk_home"; then
8733 AC_PATH_PROG(JAVADOC, javadoc)
8735 _javadoc_path="$with_jdk_home/bin/javadoc"
8736 dnl Check if there is a javadoc at all.
8737 if test -x "$_javadoc_path"; then
8738 JAVADOC=$_javadoc_path
8740 AC_PATH_PROG(JAVADOC, javadoc)
8743 if test -z "$JAVADOC"; then
8744 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
8746 if test "$build_os" = "cygwin"; then
8747 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
8748 JAVADOC="${JAVADOC}.exe"
8750 JAVADOC=`win_short_path_for_make "$JAVADOC"`
8753 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
8754 JAVADOCISGJDOC="yes"
8758 AC_SUBST(JAVADOCISGJDOC)
8760 if test "$ENABLE_JAVA" != "" -a \( "$cross_compiling" != "yes" -o -n "$with_jdk_home" \); then
8761 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
8762 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
8763 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
8764 # try to recover first by looking whether we have an alternative
8765 # system as in Debian or newer SuSEs where following /usr/bin/javac
8766 # over /etc/alternatives/javac leads to the right bindir where we
8767 # just need to strip a bit away to get a valid JAVA_HOME
8768 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
8769 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
8770 # maybe only one level of symlink (e.g. on Mac)
8771 JAVA_HOME=$(readlink $JAVACOMPILER)
8772 if test "$(dirname $JAVA_HOME)" = "."; then
8773 # we've got no path to trim back
8778 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
8779 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
8780 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
8781 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
8783 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
8784 if test "$JAVA_HOME" != "/usr"; then
8785 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8786 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
8787 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
8788 dnl Tiger already returns a JDK path...
8789 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
8791 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
8792 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
8793 dnl that checks which version to run
8794 if test -f "$JAVA_HOME"; then
8795 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
8800 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
8802 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
8803 if test -z "$JAVA_HOME"; then
8804 if test "x$with_jdk_home" = "x"; then
8805 cat > findhome.java <<_ACEOF
8806 [import java.io.File;
8810 public static void main(String args[])
8812 String jrelocation = System.getProperty("java.home");
8813 File jre = new File(jrelocation);
8814 System.out.println(jre.getParent());
8818 AC_MSG_CHECKING([if javac works])
8819 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
8820 AC_TRY_EVAL(javac_cmd)
8821 if test $? = 0 -a -f ./findhome.class; then
8822 AC_MSG_RESULT([javac works])
8824 echo "configure: javac test failed" >&5
8825 cat findhome.java >&5
8826 AC_MSG_ERROR([javac does not work - java projects will not build!])
8828 AC_MSG_CHECKING([if gij knows its java.home])
8829 JAVA_HOME=`$JAVAINTERPRETER findhome`
8830 if test $? = 0 -a "$JAVA_HOME" != ""; then
8831 AC_MSG_RESULT([$JAVA_HOME])
8833 echo "configure: java test failed" >&5
8834 cat findhome.java >&5
8835 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
8837 # clean-up after ourselves
8838 rm -f ./findhome.java ./findhome.class
8840 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
8844 # now check if $JAVA_HOME is really valid
8845 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
8846 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
8847 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
8848 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
8849 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
8850 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
8851 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
8852 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
8855 PathFormat "$JAVA_HOME"
8856 JAVA_HOME="$formatted_path"
8859 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
8862 AC_MSG_CHECKING([for JAWT lib])
8863 if test "$_os" = WINNT; then
8864 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
8869 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
8870 JAVA_ARCH=$my_java_arch
8885 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
8886 JAVA_ARCH=$my_java_arch
8889 my_java_arch=sparcv9
8895 my_java_arch=$host_cpu
8898 # This is where JDK9 puts the library
8899 if test -e "$JAVA_HOME/lib/libjawt.so"; then
8900 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
8902 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
8904 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
8906 AC_MSG_RESULT([$JAWTLIB])
8910 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
8914 JAVAINC="-I$JAVA_HOME/include"
8915 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
8916 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8920 JAVAINC="-I$JAVA_HOME/include/win32"
8921 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
8925 if test -d "$JAVA_HOME/include/darwin"; then
8926 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
8928 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
8933 JAVAINC="-I$JAVA_HOME/include"
8934 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8938 JAVAINC="-I$JAVA_HOME/include"
8939 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
8940 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
8941 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8942 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8946 JAVAINC="-I$JAVA_HOME/include"
8947 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8948 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8952 JAVAINC="-I$JAVA_HOME/include"
8953 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
8954 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8958 JAVAINC="-I$JAVA_HOME/include"
8959 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
8960 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8964 JAVAINC="-I$JAVA_HOME/include"
8965 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
8966 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8970 JAVAINC="-I$JAVA_HOME/include"
8971 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
8972 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
8976 SOLARINC="$SOLARINC $JAVAINC"
8978 if test "$ENABLE_JAVA" != "" -a "$cross_compiling" != "yes"; then
8979 JAVA_HOME_FOR_BUILD=$JAVA_HOME
8980 JAVAIFLAGS_FOR_BUILD=$JAVAIFLAGS
8982 JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD=$JDK_SECURITYMANAGER_DISALLOWED
8985 AC_SUBST(JAVACFLAGS)
8986 AC_SUBST(JAVACOMPILER)
8987 AC_SUBST(JAVAINTERPRETER)
8988 AC_SUBST(JAVAIFLAGS)
8989 AC_SUBST(JAVAIFLAGS_FOR_BUILD)
8990 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
8992 AC_SUBST(JAVA_HOME_FOR_BUILD)
8994 AC_SUBST(JDK_FOR_BUILD)
8995 AC_SUBST(JDK_SECURITYMANAGER_DISALLOWED_FOR_BUILD)
8996 AC_SUBST(JAVA_SOURCE_VER)
8997 AC_SUBST(JAVA_TARGET_VER)
9000 dnl ===================================================================
9001 dnl Export file validation
9002 dnl ===================================================================
9003 AC_MSG_CHECKING([whether to enable export file validation])
9004 if test "$with_export_validation" != "no"; then
9005 if test -z "$ENABLE_JAVA"; then
9006 if test "$with_export_validation" = "yes"; then
9007 AC_MSG_ERROR([requested, but Java is disabled])
9009 AC_MSG_RESULT([no, as Java is disabled])
9011 elif ! test -d "${SRC_ROOT}/schema"; then
9012 if test "$with_export_validation" = "yes"; then
9013 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
9015 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
9018 AC_MSG_RESULT([yes])
9019 AC_DEFINE(HAVE_EXPORT_VALIDATION)
9021 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
9022 if test -z "$ODFVALIDATOR"; then
9023 # remember to download the ODF toolkit with validator later
9024 AC_MSG_NOTICE([no odfvalidator found, will download it])
9025 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
9026 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
9028 # and fetch name of odfvalidator jar name from download.lst
9029 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9030 AC_SUBST(ODFVALIDATOR_JAR)
9032 if test -z "$ODFVALIDATOR_JAR"; then
9033 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
9036 if test "$build_os" = "cygwin"; then
9037 # In case of Cygwin it will be executed from Windows,
9038 # so we need to run bash and absolute path to validator
9039 # so instead of "odfvalidator" it will be
9040 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9041 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
9043 ODFVALIDATOR="sh $ODFVALIDATOR"
9045 AC_SUBST(ODFVALIDATOR)
9048 AC_PATH_PROGS(OFFICEOTRON, officeotron)
9049 if test -z "$OFFICEOTRON"; then
9050 # remember to download the officeotron with validator later
9051 AC_MSG_NOTICE([no officeotron found, will download it])
9052 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
9053 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
9055 # and fetch name of officeotron jar name from download.lst
9056 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
9057 AC_SUBST(OFFICEOTRON_JAR)
9059 if test -z "$OFFICEOTRON_JAR"; then
9060 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
9063 # check version of existing officeotron
9064 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
9065 if test 0"$OFFICEOTRON_VER" -lt 704; then
9066 AC_MSG_ERROR([officeotron too old])
9069 if test "$build_os" = "cygwin"; then
9070 # In case of Cygwin it will be executed from Windows,
9071 # so we need to run bash and absolute path to validator
9072 # so instead of "odfvalidator" it will be
9073 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
9074 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
9076 OFFICEOTRON="sh $OFFICEOTRON"
9079 AC_SUBST(OFFICEOTRON)
9084 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
9085 if test "$with_bffvalidator" != "no"; then
9086 AC_DEFINE(HAVE_BFFVALIDATOR)
9088 if test "$with_export_validation" = "no"; then
9089 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
9092 if test "$with_bffvalidator" = "yes"; then
9093 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
9095 BFFVALIDATOR="$with_bffvalidator"
9098 if test "$build_os" = "cygwin"; then
9099 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
9100 AC_MSG_RESULT($BFFVALIDATOR)
9102 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9104 elif test -n "$BFFVALIDATOR"; then
9105 # We are not in Cygwin but need to run Windows binary with wine
9106 AC_PATH_PROGS(WINE, wine)
9108 # so swap in a shell wrapper that converts paths transparently
9109 BFFVALIDATOR_EXE="$BFFVALIDATOR"
9110 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
9111 AC_SUBST(BFFVALIDATOR_EXE)
9112 AC_MSG_RESULT($BFFVALIDATOR)
9114 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
9116 AC_SUBST(BFFVALIDATOR)
9121 dnl ===================================================================
9122 dnl Check for epm (not needed for Windows)
9123 dnl ===================================================================
9124 AC_MSG_CHECKING([whether to enable EPM for packing])
9125 if test "$enable_epm" = "yes"; then
9126 AC_MSG_RESULT([yes])
9127 if test "$_os" != "WINNT"; then
9128 if test $_os = Darwin; then
9130 elif test -n "$with_epm"; then
9133 AC_PATH_PROG(EPM, epm, no)
9135 if test "$EPM" = "no" -o "$EPM" = "internal"; then
9136 AC_MSG_NOTICE([EPM will be built.])
9137 BUILD_TYPE="$BUILD_TYPE EPM"
9138 EPM=${WORKDIR}/UnpackedTarball/epm/epm
9140 # Gentoo has some epm which is something different...
9141 AC_MSG_CHECKING([whether the found epm is the right epm])
9142 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
9143 AC_MSG_RESULT([yes])
9145 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9147 AC_MSG_CHECKING([epm version])
9148 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
9149 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
9150 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
9151 AC_MSG_RESULT([OK, >= 3.7])
9153 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
9154 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
9159 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
9160 AC_MSG_CHECKING([for rpm])
9161 for a in "$RPM" rpmbuild rpm; do
9162 $a --usage >/dev/null 2> /dev/null
9163 if test $? -eq 0; then
9167 $a --version >/dev/null 2> /dev/null
9168 if test $? -eq 0; then
9174 if test -z "$RPM"; then
9175 AC_MSG_ERROR([not found])
9176 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
9177 RPM_PATH=`which $RPM`
9178 AC_MSG_RESULT([$RPM_PATH])
9179 SCPDEFS="$SCPDEFS -DWITH_RPM"
9181 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
9184 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
9185 AC_PATH_PROG(DPKG, dpkg, no)
9186 if test "$DPKG" = "no"; then
9187 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
9190 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
9191 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9192 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
9193 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
9194 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
9195 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
9196 AC_MSG_RESULT([yes])
9199 if echo "$PKGFORMAT" | $GREP -q rpm; then
9201 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
9202 add_warning "the rpms will need to be installed with --nodeps"
9206 AC_MSG_WARN([the ${_pt}s will not be relocatable])
9207 add_warning "the ${_pt}s will not be relocatable"
9208 AC_MSG_WARN([if you want to make sure installation without --nodeps and
9209 relocation will work, you need to patch your epm with the
9210 patch in epm/epm-3.7.patch or build with
9211 --with-epm=internal which will build a suitable epm])
9216 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
9217 AC_PATH_PROG(PKGMK, pkgmk, no)
9218 if test "$PKGMK" = "no"; then
9219 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
9226 for i in $PKGFORMAT; do
9228 aix | bsd | deb | pkg | rpm | native | portable)
9230 [--with-package-format='$PKGFORMAT' requires --enable-epm])
9240 if test "$enable_lotuswordpro" = "yes"; then
9243 AC_SUBST(ENABLE_LWP)
9245 dnl ===================================================================
9246 dnl Check for building ODK
9247 dnl ===================================================================
9248 AC_MSG_CHECKING([whether to build the ODK])
9249 if test "$enable_odk" = yes; then
9250 if test "$DISABLE_DYNLOADING" = TRUE; then
9251 AC_MSG_ERROR([can't build ODK for --disable-dynamic-loading builds])
9253 AC_MSG_RESULT([yes])
9254 BUILD_TYPE="$BUILD_TYPE ODK"
9259 if test "$enable_odk" != yes; then
9262 if test "$with_doxygen" = no; then
9263 AC_MSG_CHECKING([for doxygen])
9267 if test "$with_doxygen" = yes; then
9268 AC_PATH_PROG([DOXYGEN], [doxygen])
9269 if test -z "$DOXYGEN"; then
9270 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
9272 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
9273 if ! dot -V 2>/dev/null; then
9274 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
9278 AC_MSG_CHECKING([for doxygen])
9279 DOXYGEN=$with_doxygen
9280 AC_MSG_RESULT([$DOXYGEN])
9282 if test -n "$DOXYGEN"; then
9283 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
9284 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
9285 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
9286 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
9293 dnl ==================================================================
9295 dnl ==================================================================
9296 AC_MSG_CHECKING([whether to enable fuzzers])
9297 if test "$enable_fuzzers" != yes; then
9300 if test -z $LIB_FUZZING_ENGINE; then
9301 AC_MSG_ERROR(['LIB_FUZZING_ENGINE' must be set when using --enable-fuzzers. Examples include '-fsanitize=fuzzer'.])
9303 AC_MSG_RESULT([yes])
9304 ENABLE_FUZZERS="TRUE"
9305 AC_DEFINE([ENABLE_FUZZERS],1)
9306 AC_DEFINE([VCL_FLOAT_DEVICE_PIXEL],1)
9307 BUILD_TYPE="$BUILD_TYPE FUZZERS"
9309 AC_SUBST(LIB_FUZZING_ENGINE)
9311 dnl ===================================================================
9312 dnl Check for system zlib
9313 dnl ===================================================================
9314 if test "$with_system_zlib" = "auto"; then
9317 with_system_zlib="$with_system_libs"
9320 if test "$enable_fuzzers" != "yes"; then
9321 with_system_zlib=yes
9329 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
9330 dnl and has no pkg-config for it at least on some tinderboxes,
9331 dnl so leaving that out for now
9332 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
9333 AC_MSG_CHECKING([which zlib to use])
9334 if test "$with_system_zlib" = "yes"; then
9335 AC_MSG_RESULT([external])
9337 AC_CHECK_HEADER(zlib.h, [],
9338 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
9339 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
9340 [AC_MSG_ERROR(zlib not found or functional)], [])
9342 AC_MSG_RESULT([internal])
9344 BUILD_TYPE="$BUILD_TYPE ZLIB"
9345 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
9346 if test "$COM" = "MSC"; then
9347 ZLIB_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/zlib.lib"
9349 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
9352 AC_SUBST(ZLIB_CFLAGS)
9354 AC_SUBST(SYSTEM_ZLIB)
9356 dnl ===================================================================
9357 dnl Check for system jpeg
9358 dnl ===================================================================
9359 AC_MSG_CHECKING([which libjpeg to use])
9360 if test "$with_system_jpeg" = "yes"; then
9361 AC_MSG_RESULT([external])
9363 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
9364 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
9365 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
9366 [AC_MSG_ERROR(jpeg library not found or functional)], [])
9369 AC_MSG_RESULT([internal, libjpeg-turbo])
9370 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
9373 x86_64 | amd64 | i*86 | x86 | ia32)
9374 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
9375 if test -z "$NASM" -a "$build_os" = "cygwin"; then
9376 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
9377 NASM="$LODE_HOME/opt/bin/nasm"
9378 elif test -x "/opt/lo/bin/nasm"; then
9379 NASM="/opt/lo/bin/nasm"
9383 if test -n "$NASM"; then
9384 AC_MSG_CHECKING([for object file format of host system])
9386 cygwin* | mingw* | pw32* | wsl*)
9396 msdosdjgpp* | go32*)
9399 os2-emx*) # not tested
9400 objfmt='MSOMF' # obj
9402 linux*coff* | linux*oldld*)
9418 kfreebsd* | freebsd* | netbsd* | openbsd*)
9419 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
9432 solaris* | sunos* | sysv* | sco*)
9442 darwin* | rhapsody* | nextstep* | openstep* | macos*)
9457 AC_MSG_RESULT([$objfmt])
9458 if test "$objfmt" = 'ELF ?'; then
9460 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
9463 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
9465 MSOMF) NAFLAGS='-fobj -DOBJ32 -DPIC';;
9466 Win32-COFF) NAFLAGS='-fwin32 -DWIN32 -DPIC';;
9467 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__ -DPIC';;
9468 COFF) NAFLAGS='-fcoff -DCOFF -DPIC';;
9469 a.out) NAFLAGS='-faout -DAOUT -DPIC';;
9470 BSD-a.out) NAFLAGS='-faoutb -DAOUT -DPIC';;
9471 ELF) NAFLAGS='-felf -DELF -DPIC';;
9472 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__ -DPIC';;
9473 RDF) NAFLAGS='-frdf -DRDF -DPIC';;
9474 Mach-O) NAFLAGS='-fmacho -DMACHO -DPIC';;
9475 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__ -DPIC';;
9477 AC_MSG_RESULT([$NAFLAGS])
9479 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
9480 cat > conftest.asm << EOF
9481 [%line __oline__ "configure"
9489 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
9490 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
9493 echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
9494 cat conftest.asm >&AS_MESSAGE_LOG_FD
9497 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
9503 if test -z "$NASM"; then
9505 ****************************************************************************
9506 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
9510 if test "$build_os" = "cygwin"; then
9512 install a pre-compiled binary for Win32
9514 mkdir -p /opt/lo/bin
9516 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
9519 or get and install one from http://www.nasm.us/
9521 Then re-run autogen.sh
9523 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
9524 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
9529 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
9533 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
9534 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
9542 AC_SUBST(LIBJPEG_CFLAGS)
9543 AC_SUBST(LIBJPEG_LIBS)
9544 AC_SUBST(SYSTEM_LIBJPEG)
9546 dnl ===================================================================
9547 dnl Check for system clucene
9548 dnl ===================================================================
9549 libo_CHECK_SYSTEM_MODULE([clucene],[CLUCENE],[libclucene-core])
9550 if test "$SYSTEM_CLUCENE" = TRUE; then
9552 save_CXXFLAGS=$CXXFLAGS
9553 save_CPPFLAGS=$CPPFLAGS
9554 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
9555 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
9556 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
9557 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
9558 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
9559 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
9560 CXXFLAGS=$save_CXXFLAGS
9561 CPPFLAGS=$save_CPPFLAGS
9563 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
9566 dnl ===================================================================
9567 dnl Check for system expat
9568 dnl ===================================================================
9569 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
9571 dnl ===================================================================
9572 dnl Check for system xmlsec
9573 dnl ===================================================================
9574 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
9576 libo_CHECK_SYSTEM_MODULE([eot],[LIBEOT],[libeot >= 0.01],disabled)
9578 dnl ===================================================================
9579 dnl Check for DLP libs
9580 dnl ===================================================================
9581 REVENGE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/librevenge/inc"
9582 AS_IF([test "$COM" = "MSC"],
9583 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
9584 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
9586 REVENGE_LIBS_internal="-L${librevenge_libdir} -lrevenge-0.0"
9587 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1])
9589 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
9591 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
9593 WPD_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libwpd/inc"
9594 AS_IF([test "$COM" = "MSC"],
9595 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
9596 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
9598 WPD_LIBS_internal="-L${libwpd_libdir} -lwpd-0.10"
9599 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10])
9601 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
9603 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
9604 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.12])
9606 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
9608 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
9610 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
9612 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.21])
9613 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.21])
9615 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
9616 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.10])
9618 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
9620 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
9621 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
9623 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
9625 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
9627 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
9629 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
9631 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
9632 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.7])
9634 dnl ===================================================================
9635 dnl Check for system lcms2
9636 dnl ===================================================================
9637 if test "$with_system_lcms2" != "yes"; then
9640 LCMS2_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/lcms2/include"
9641 LCMS2_LIBS_internal="-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"
9642 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2])
9643 if test "$GCC" = "yes"; then
9644 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
9646 if test "$COM" = "MSC"; then # override the above
9647 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
9650 dnl ===================================================================
9651 dnl Check for system cppunit
9652 dnl ===================================================================
9653 if test "$_os" != "Android" ; then
9654 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
9657 dnl ===================================================================
9658 dnl Check whether freetype is available
9660 dnl FreeType has 3 different kinds of versions
9661 dnl * release, like 2.4.10
9662 dnl * libtool, like 13.0.7 (this what pkg-config returns)
9664 dnl FreeType's docs/VERSION.DLL provides a table mapping between the three
9667 dnl When the minimal version is at least 2.8.1, remove Skia's check down below.
9668 dnl ===================================================================
9669 FREETYPE_CFLAGS_internal="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
9670 if test "x$ac_config_site_64bit_host" = xYES; then
9671 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
9673 FREETYPE_LIBS_internal="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
9675 libo_CHECK_SYSTEM_MODULE([freetype],[FREETYPE],[freetype2 >= 9.9.3],,system,TRUE)
9677 # ===================================================================
9678 # Check for system libxslt
9679 # to prevent incompatibilities between internal libxml2 and external libxslt,
9680 # or vice versa, use with_system_libxml here
9681 # ===================================================================
9682 if test "$with_system_libxml" = "auto"; then
9685 with_system_libxml="$with_system_libs"
9688 with_system_libxml=no
9691 if test "$enable_fuzzers" != "yes"; then
9692 with_system_libxml=yes
9694 with_system_libxml=no
9700 AC_MSG_CHECKING([which libxslt to use])
9701 if test "$with_system_libxml" = "yes"; then
9702 AC_MSG_RESULT([external])
9704 if test "$_os" = "Darwin"; then
9705 dnl make sure to use SDK path
9706 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9707 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
9709 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
9710 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
9712 PKG_CHECK_MODULES(LIBXSLT, libxslt)
9713 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9714 FilterLibs "${LIBXSLT_LIBS}"
9715 LIBXSLT_LIBS="${filteredlibs}"
9716 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
9717 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9718 FilterLibs "${LIBEXSLT_LIBS}"
9719 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
9722 dnl Check for xsltproc
9723 AC_PATH_PROG(XSLTPROC, xsltproc, no)
9724 if test "$XSLTPROC" = "no"; then
9725 AC_MSG_ERROR([xsltproc is required])
9728 AC_MSG_RESULT([internal])
9730 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
9732 AC_SUBST(SYSTEM_LIBXSLT)
9733 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
9734 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
9736 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
9738 AC_SUBST(LIBEXSLT_CFLAGS)
9739 AC_SUBST(LIBEXSLT_LIBS)
9740 AC_SUBST(LIBXSLT_CFLAGS)
9741 AC_SUBST(LIBXSLT_LIBS)
9744 # ===================================================================
9745 # Check for system libxml
9746 # ===================================================================
9747 AC_MSG_CHECKING([which libxml to use])
9748 if test "$with_system_libxml" = "yes"; then
9749 AC_MSG_RESULT([external])
9751 if test "$_os" = "Darwin"; then
9752 dnl make sure to use SDK path
9753 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
9755 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
9756 elif test $_os = iOS; then
9757 dnl make sure to use SDK path
9758 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
9759 LIBXML_CFLAGS="-I$usr/include/libxml2"
9760 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
9762 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
9763 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9764 FilterLibs "${LIBXML_LIBS}"
9765 LIBXML_LIBS="${filteredlibs}"
9768 dnl Check for xmllint
9769 AC_PATH_PROG(XMLLINT, xmllint, no)
9770 if test "$XMLLINT" = "no"; then
9771 AC_MSG_ERROR([xmllint is required])
9774 AC_MSG_RESULT([internal])
9776 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
9777 if test "$COM" = "MSC"; then
9778 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9780 if test "$COM" = "MSC"; then
9781 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
9783 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
9784 if test "$DISABLE_DYNLOADING" = TRUE; then
9785 LIBXML_LIBS="$LIBXML_LIBS -lm"
9788 BUILD_TYPE="$BUILD_TYPE LIBXML2"
9790 AC_SUBST(SYSTEM_LIBXML)
9791 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
9792 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
9794 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
9795 AC_SUBST(LIBXML_CFLAGS)
9796 AC_SUBST(LIBXML_LIBS)
9799 # =====================================================================
9800 # Checking for a Python interpreter with version >= 3.3.
9801 # Optionally user can pass an option to configure, i. e.
9802 # ./configure PYTHON=/usr/bin/python
9803 # =====================================================================
9804 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal -a "$enable_python" != system; then
9805 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
9806 # unless PYTHON is defined as above which allows 'system'
9807 enable_python=internal
9809 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
9810 if test -n "$PYTHON"; then
9811 PYTHON_FOR_BUILD=$PYTHON
9813 # This allows a lack of system python with no error, we use internal one in that case.
9814 AM_PATH_PYTHON([3.3],, [:])
9815 # Clean PYTHON_VERSION checked below if cross-compiling
9817 if test "$PYTHON" != ":"; then
9818 PYTHON_FOR_BUILD=$PYTHON
9823 # Checks for Python to use for Pyuno
9824 AC_MSG_CHECKING([which Python to use for Pyuno])
9825 case "$enable_python" in
9827 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9828 # Python is required to build LibreOffice. In theory we could separate the build-time Python
9829 # requirement from the choice whether to include Python stuff in the installer, but why
9831 AC_MSG_ERROR([Python is required at build time.])
9834 AC_MSG_RESULT([none])
9837 if test "$DISABLE_SCRIPTING" = TRUE; then
9838 if test -z "$PYTHON_FOR_BUILD" -a "$cross_compiling" != yes; then
9839 AC_MSG_ERROR([Python support can't be disabled without cross-compiling or a system python.])
9841 AC_MSG_RESULT([none, overridden by --disable-scripting])
9843 elif test $build_os = cygwin -o $build_os = wsl; then
9844 dnl When building on Windows we don't attempt to use any installed
9845 dnl "system" Python.
9846 AC_MSG_RESULT([fully internal])
9847 enable_python=internal
9848 elif test "$cross_compiling" = yes; then
9849 AC_MSG_RESULT([system])
9850 enable_python=system
9852 # Unset variables set by the above AM_PATH_PYTHON so that
9853 # we actually do check anew.
9855 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
9856 AM_PATH_PYTHON([3.3],, [:])
9857 AC_MSG_CHECKING([which Python to use for Pyuno])
9858 if test "$PYTHON" = ":"; then
9859 if test -z "$PYTHON_FOR_BUILD"; then
9860 AC_MSG_RESULT([fully internal])
9862 AC_MSG_RESULT([internal])
9864 enable_python=internal
9866 AC_MSG_RESULT([system])
9867 enable_python=system
9872 AC_MSG_RESULT([internal])
9875 AC_MSG_RESULT([fully internal])
9876 enable_python=internal
9879 AC_MSG_RESULT([system])
9880 if test "$_os" = Darwin -a -z "$PYTHON"; then
9881 AC_MSG_ERROR([--enable-python=system doesn't work on macOS because the version provided is obsolete])
9885 AC_MSG_ERROR([Incorrect --enable-python option])
9889 if test $enable_python != no; then
9890 BUILD_TYPE="$BUILD_TYPE PYUNO"
9893 if test $enable_python = system; then
9894 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
9895 # Fallback: Accept these in the environment, or as set above
9898 elif test "$cross_compiling" != yes; then
9899 # Unset variables set by the above AM_PATH_PYTHON so that
9900 # we actually do check anew.
9901 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
9902 # This causes an error if no python command is found
9903 AM_PATH_PYTHON([3.3])
9904 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
9905 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
9906 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
9907 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
9908 if test -z "$PKG_CONFIG"; then
9909 PYTHON_CFLAGS="-I$python_include"
9910 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9911 elif $PKG_CONFIG --exists python-$python_version-embed; then
9912 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
9913 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
9914 elif $PKG_CONFIG --exists python-$python_version; then
9915 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
9916 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
9918 PYTHON_CFLAGS="-I$python_include"
9919 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
9921 FilterLibs "${PYTHON_LIBS}"
9922 PYTHON_LIBS="${filteredlibs}"
9924 dnl How to find out the cross-compilation Python installation path?
9925 AC_MSG_CHECKING([for python version])
9926 AS_IF([test -n "$PYTHON_VERSION"],
9927 [AC_MSG_RESULT([$PYTHON_VERSION])],
9928 [AC_MSG_RESULT([not found])
9929 AC_MSG_ERROR([no usable python found])])
9930 test -n "$PYTHON_CFLAGS" && break
9933 dnl Check if the headers really work
9934 save_CPPFLAGS="$CPPFLAGS"
9935 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
9936 AC_CHECK_HEADER(Python.h)
9937 CPPFLAGS="$save_CPPFLAGS"
9939 # let the PYTHON_FOR_BUILD match the same python installation that
9940 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
9941 # better for PythonTests.
9942 PYTHON_FOR_BUILD=$PYTHON
9945 if test "$with_lxml" != no; then
9946 if test -z "$PYTHON_FOR_BUILD"; then
9949 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
9952 if test "$cross_compiling" != yes ; then
9953 BUILD_TYPE="$BUILD_TYPE LXML"
9958 AC_MSG_CHECKING([for python lxml])
9959 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
9960 AC_MSG_RESULT([yes])
9964 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
9967 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
9968 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
9969 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
9971 BUILD_TYPE="$BUILD_TYPE LXML"
9972 AC_MSG_RESULT([no, using internal lxml])
9975 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
9983 if test \( "$cross_compiling" = yes -a -z "$PYTHON_FOR_BUILD" \) -o "$enable_python" = internal; then
9985 PYTHON_VERSION_MAJOR=3
9986 PYTHON_VERSION_MINOR=8
9987 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.14
9988 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
9989 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
9991 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
9993 # Embedded Python dies without Home set
9994 if test "$HOME" = ""; then
9999 dnl By now enable_python should be "system", "internal" or "no"
10000 case $enable_python in
10004 if test "x$ac_cv_header_Python_h" != "xyes"; then
10005 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
10009 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
10010 AC_MSG_CHECKING([for correct python library version])
10011 AC_RUN_IFELSE([AC_LANG_SOURCE([[
10012 #include <Python.h>
10014 int main(int argc, char **argv) {
10015 if ((PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
10018 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3])],[AC_MSG_RESULT([skipped; cross-compiling])])
10021 dnl FIXME Check if the Python library can be linked with, too?
10025 BUILD_TYPE="$BUILD_TYPE PYTHON"
10026 if test "$OS" = LINUX -o "$OS" = WNT ; then
10027 BUILD_TYPE="$BUILD_TYPE LIBFFI"
10031 DISABLE_PYTHON=TRUE
10035 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
10039 AC_SUBST(DISABLE_PYTHON)
10040 AC_SUBST(SYSTEM_PYTHON)
10041 AC_SUBST(PYTHON_CFLAGS)
10042 AC_SUBST(PYTHON_FOR_BUILD)
10043 AC_SUBST(PYTHON_LIBS)
10044 AC_SUBST(PYTHON_VERSION)
10045 AC_SUBST(PYTHON_VERSION_MAJOR)
10046 AC_SUBST(PYTHON_VERSION_MINOR)
10048 AC_MSG_CHECKING([whether to build LibreLogo])
10049 case "$enable_python" in
10051 AC_MSG_RESULT([no; Python disabled])
10054 if test "${enable_librelogo}" = "no"; then
10055 AC_MSG_RESULT([no])
10057 AC_MSG_RESULT([yes])
10058 BUILD_TYPE="${BUILD_TYPE} LIBRELOGO"
10059 AC_DEFINE([ENABLE_LIBRELOGO],1)
10063 AC_SUBST(ENABLE_LIBRELOGO)
10069 AC_MSG_CHECKING([whether to build the MariaDB/MySQL SDBC driver])
10070 if test "x$enable_mariadb_sdbc" != "xno" -a "$enable_mpl_subset" != "yes"; then
10071 ENABLE_MARIADBC=TRUE
10072 AC_MSG_RESULT([yes])
10073 BUILD_TYPE="$BUILD_TYPE MARIADBC"
10075 AC_MSG_RESULT([no])
10077 AC_SUBST(ENABLE_MARIADBC)
10078 AC_SUBST(MARIADBC_MAJOR)
10079 AC_SUBST(MARIADBC_MINOR)
10080 AC_SUBST(MARIADBC_MICRO)
10082 if test "$ENABLE_MARIADBC" = "TRUE"; then
10083 dnl ===================================================================
10084 dnl Check for system MariaDB
10085 dnl ===================================================================
10086 AC_MSG_CHECKING([which MariaDB to use])
10087 if test "$with_system_mariadb" = "yes"; then
10088 AC_MSG_RESULT([external])
10089 SYSTEM_MARIADB_CONNECTOR_C=TRUE
10090 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
10091 if test -z "$MARIADBCONFIG"; then
10092 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
10093 if test -z "$MARIADBCONFIG"; then
10094 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
10095 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
10098 AC_MSG_CHECKING([MariaDB version])
10099 MARIADB_VERSION=`$MARIADBCONFIG --version`
10100 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
10101 if test "$MARIADB_MAJOR" -ge "5"; then
10102 AC_MSG_RESULT([OK])
10104 AC_MSG_ERROR([too old, use 5.0.x or later])
10106 AC_MSG_CHECKING([for MariaDB Client library])
10107 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
10108 if test "$COM_IS_CLANG" = TRUE; then
10109 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
10111 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
10112 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
10113 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
10115 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
10116 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
10117 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
10118 | sed -e 's|/lib64/|/lib/|')
10120 FilterLibs "${MARIADB_LIBS}"
10121 MARIADB_LIBS="${filteredlibs}"
10122 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
10123 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
10124 if test "$enable_bundle_mariadb" = "yes"; then
10125 AC_MSG_RESULT([yes])
10126 BUNDLE_MARIADB_CONNECTOR_C=TRUE
10127 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
10129 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
10131 /g' | grep -E '(mysqlclient|mariadb)')
10132 if test "$_os" = "Darwin"; then
10133 LIBMARIADB=${LIBMARIADB}.dylib
10134 elif test "$_os" = "WINNT"; then
10135 LIBMARIADB=${LIBMARIADB}.dll
10137 LIBMARIADB=${LIBMARIADB}.so
10139 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
10140 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
10141 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
10142 AC_MSG_RESULT([found.])
10143 PathFormat "$LIBMARIADB_PATH"
10144 LIBMARIADB_PATH="$formatted_path"
10146 AC_MSG_ERROR([not found.])
10149 AC_MSG_RESULT([no])
10150 BUNDLE_MARIADB_CONNECTOR_C=
10153 AC_MSG_RESULT([internal])
10154 SYSTEM_MARIADB_CONNECTOR_C=
10155 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
10156 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
10157 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
10160 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
10161 AC_SUBST(MARIADB_CFLAGS)
10162 AC_SUBST(MARIADB_LIBS)
10163 AC_SUBST(LIBMARIADB)
10164 AC_SUBST(LIBMARIADB_PATH)
10165 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
10168 dnl ===================================================================
10169 dnl Check for system hsqldb
10170 dnl ===================================================================
10171 if test "$with_java" != "no" -a "$cross_compiling" != "yes"; then
10172 AC_MSG_CHECKING([which hsqldb to use])
10173 if test "$with_system_hsqldb" = "yes"; then
10174 AC_MSG_RESULT([external])
10176 if test -z $HSQLDB_JAR; then
10177 HSQLDB_JAR=/usr/share/java/hsqldb.jar
10179 if ! test -f $HSQLDB_JAR; then
10180 AC_MSG_ERROR(hsqldb.jar not found.)
10182 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
10186 my $file = "$ENV{'HSQLDB_JAR'}";
10187 my $zip = Archive::Zip->new( $file );
10188 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
10189 if ( $mf =~ m/Specification-Version: 1.8.*/ )
10191 push @l, split(/\n/, $mf);
10192 foreach my $line (@l)
10194 if ($line =~ m/Specification-Version:/)
10196 ($t, $version) = split (/:/,$line);
10197 $version =~ s/^\s//;
10198 ($a, $b, $c, $d) = split (/\./,$version);
10199 if ($c == "0" && $d > "8")
10214 AC_MSG_RESULT([yes])
10216 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
10219 AC_MSG_RESULT([internal])
10221 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10225 if test "$with_java" != "no" -a -z "$HSQLDB_JAR"; then
10226 BUILD_TYPE="$BUILD_TYPE HSQLDB"
10229 AC_SUBST(SYSTEM_HSQLDB)
10230 AC_SUBST(HSQLDB_JAR)
10232 dnl ===================================================================
10233 dnl Check for PostgreSQL stuff
10234 dnl ===================================================================
10235 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
10236 if test "x$enable_postgresql_sdbc" != "xno"; then
10237 AC_MSG_RESULT([yes])
10238 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
10240 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
10241 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
10243 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
10244 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
10247 postgres_interface=""
10248 if test "$with_system_postgresql" = "yes"; then
10249 postgres_interface="external PostgreSQL"
10250 SYSTEM_POSTGRESQL=TRUE
10251 if test "$_os" = Darwin; then
10253 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
10254 pg_supp_path="$P_SEP$d$pg_supp_path"
10257 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
10258 if test -n "$PGCONFIG"; then
10259 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
10260 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
10262 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
10263 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
10264 POSTGRESQL_LIB=$POSTGRESQL_LIBS
10266 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
10269 FilterLibs "${POSTGRESQL_LIB}"
10270 POSTGRESQL_LIB="${filteredlibs}"
10272 # if/when anything else than PostgreSQL uses Kerberos,
10273 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
10278 # macOS has system MIT Kerberos 5 since 10.4
10279 if test "$with_krb5" != "no"; then
10282 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
10283 # that the libraries where these functions are located on macOS will change, is it?
10284 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10285 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10288 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10289 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10290 KRB5_LIBS="$KRB5_LIBS $LIBS"
10293 if test "$with_gssapi" != "no"; then
10296 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10297 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10303 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
10304 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
10307 Linux|GNU|*BSD|DragonFly)
10308 if test "$with_krb5" != "no"; then
10311 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10312 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10315 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10316 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10317 KRB5_LIBS="$KRB5_LIBS $LIBS"
10320 if test "$with_gssapi" != "no"; then
10323 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10324 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10330 if test "$with_krb5" = "yes"; then
10333 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10334 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
10337 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
10338 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
10339 KRB5_LIBS="$KRB5_LIBS $LIBS"
10342 if test "$with_gssapi" = "yes"; then
10345 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
10346 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
10352 if test -n "$with_libpq_path"; then
10353 SYSTEM_POSTGRESQL=TRUE
10354 postgres_interface="external libpq"
10355 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
10356 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
10359 postgres_interface="internal"
10361 POSTGRESQL_INC="%OVERRIDE_ME%"
10362 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
10366 AC_MSG_CHECKING([PostgreSQL C interface])
10367 AC_MSG_RESULT([$postgres_interface])
10369 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
10370 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
10371 save_CFLAGS=$CFLAGS
10372 save_CPPFLAGS=$CPPFLAGS
10374 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
10375 LIBS="${LIBS} ${POSTGRESQL_LIB}"
10376 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
10377 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
10378 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
10379 CFLAGS=$save_CFLAGS
10380 CPPFLAGS=$save_CPPFLAGS
10383 BUILD_POSTGRESQL_SDBC=TRUE
10385 AC_MSG_RESULT([no])
10387 AC_SUBST(WITH_KRB5)
10388 AC_SUBST(WITH_GSSAPI)
10389 AC_SUBST(GSSAPI_LIBS)
10390 AC_SUBST(KRB5_LIBS)
10391 AC_SUBST(BUILD_POSTGRESQL_SDBC)
10392 AC_SUBST(SYSTEM_POSTGRESQL)
10393 AC_SUBST(POSTGRESQL_INC)
10394 AC_SUBST(POSTGRESQL_LIB)
10396 dnl ===================================================================
10397 dnl Check for Firebird stuff
10398 dnl ===================================================================
10399 ENABLE_FIREBIRD_SDBC=
10400 if test "$enable_firebird_sdbc" = "yes" ; then
10401 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
10403 dnl ===================================================================
10404 dnl Check for system Firebird
10405 dnl ===================================================================
10406 AC_MSG_CHECKING([which Firebird to use])
10407 if test "$with_system_firebird" = "yes"; then
10408 AC_MSG_RESULT([external])
10409 SYSTEM_FIREBIRD=TRUE
10410 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
10411 if test -z "$FIREBIRDCONFIG"; then
10412 AC_MSG_NOTICE([No fb_config -- using pkg-config])
10413 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
10414 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
10416 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
10418 AC_MSG_NOTICE([fb_config found])
10419 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
10420 AC_MSG_CHECKING([for Firebird Client library])
10421 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
10422 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
10423 FilterLibs "${FIREBIRD_LIBS}"
10424 FIREBIRD_LIBS="${filteredlibs}"
10426 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
10427 AC_MSG_CHECKING([Firebird version])
10428 if test -n "${FIREBIRD_VERSION}"; then
10429 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
10430 if test "$FIREBIRD_MAJOR" -ge "3"; then
10431 AC_MSG_RESULT([OK])
10433 AC_MSG_ERROR([Ensure firebird >= 3 is installed])
10436 save_CFLAGS="${CFLAGS}"
10437 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
10438 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
10439 #if defined(FB_API_VER) && FB_API_VER == 30
10440 int fb_api_is_30(void) { return 0; }
10442 #error "Wrong Firebird API version"
10443 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
10444 CFLAGS="$save_CFLAGS"
10446 ENABLE_FIREBIRD_SDBC=TRUE
10447 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10448 elif test "$enable_database_connectivity" = no; then
10449 AC_MSG_RESULT([none])
10450 elif test "$cross_compiling" = "yes"; then
10451 AC_MSG_RESULT([none])
10453 dnl Embedded Firebird has version 3.0
10454 dnl We need libatomic_ops for any non X86/X64 system
10455 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
10456 dnl ===================================================================
10457 dnl Check for system libatomic_ops
10458 dnl ===================================================================
10459 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[LIBATOMIC_OPS],[atomic_ops >= 0.7.2])
10460 if test "$with_system_libatomic_ops" = "yes"; then
10461 SYSTEM_LIBATOMIC_OPS=TRUE
10462 AC_CHECK_HEADERS(atomic_ops.h, [],
10463 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
10465 SYSTEM_LIBATOMIC_OPS=
10466 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
10467 LIBATOMIC_OPS_LIBS="-latomic_ops"
10468 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
10472 AC_MSG_RESULT([internal])
10474 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
10475 FIREBIRD_LIBS="-lfbclient"
10477 if test "$with_system_libtommath" = "yes"; then
10478 SYSTEM_LIBTOMMATH=TRUE
10479 dnl check for tommath presence
10481 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
10482 AC_CHECK_LIB(tommath, mp_init, LIBTOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
10486 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
10487 LIBTOMMATH_LIBS="-ltommath"
10488 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
10491 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
10492 ENABLE_FIREBIRD_SDBC=TRUE
10493 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
10496 AC_SUBST(ENABLE_FIREBIRD_SDBC)
10497 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
10498 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
10499 AC_SUBST(LIBATOMIC_OPS_LIBS)
10500 AC_SUBST(SYSTEM_FIREBIRD)
10501 AC_SUBST(FIREBIRD_CFLAGS)
10502 AC_SUBST(FIREBIRD_LIBS)
10503 AC_SUBST(SYSTEM_LIBTOMMATH)
10504 AC_SUBST(LIBTOMMATH_CFLAGS)
10505 AC_SUBST(LIBTOMMATH_LIBS)
10507 dnl ===================================================================
10508 dnl Check for system curl
10509 dnl ===================================================================
10510 libo_CHECK_SYSTEM_MODULE([curl],[CURL],[libcurl >= 7.68.0],enabled)
10512 dnl ===================================================================
10513 dnl Check for system boost
10514 dnl ===================================================================
10515 AC_MSG_CHECKING([which boost to use])
10516 if test "$with_system_boost" = "yes"; then
10517 AC_MSG_RESULT([external])
10519 AX_BOOST_BASE([1.66],,[AC_MSG_ERROR([no suitable Boost found])])
10521 AX_BOOST_FILESYSTEM
10524 AC_LANG_PUSH([C++])
10525 save_CXXFLAGS=$CXXFLAGS
10526 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
10527 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
10528 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
10529 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
10530 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
10531 CXXFLAGS=$save_CXXFLAGS
10533 # this is in m4/ax_boost_base.m4
10534 FilterLibs "${BOOST_LDFLAGS}"
10535 BOOST_LDFLAGS="${filteredlibs}"
10537 AC_MSG_RESULT([internal])
10538 BUILD_TYPE="$BUILD_TYPE BOOST"
10540 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
10541 # use warning-suppressing wrapper headers
10542 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
10544 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
10547 AC_SUBST(SYSTEM_BOOST)
10549 dnl ===================================================================
10550 dnl Check for system mdds
10551 dnl ===================================================================
10552 MDDS_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/mdds/include"
10553 libo_CHECK_SYSTEM_MODULE([mdds],[MDDS],[mdds-2.0 >= 2.0.0])
10555 dnl ===================================================================
10556 dnl Check for system dragonbox
10557 dnl ===================================================================
10558 AC_MSG_CHECKING([which dragonbox to use])
10559 if test "$with_system_dragonbox" = "yes"; then
10560 AC_MSG_RESULT([external])
10561 SYSTEM_DRAGONBOX=TRUE
10562 AC_LANG_PUSH([C++])
10563 save_CPPFLAGS=$CPPFLAGS
10564 # This is where upstream installs to, unfortunately no .pc or so...
10565 DRAGONBOX_CFLAGS=-I/usr/include/dragonbox-1.0.0
10566 CPPFLAGS="$CPPFLAGS $DRAGONBOX_CFLAGS"
10567 AC_CHECK_HEADER([dragonbox/dragonbox.h], [],
10568 [AC_MSG_ERROR([dragonbox/dragonbox.h not found. install dragonbox])], [])
10570 CPPFLAGS=$save_CPPFLAGS
10572 AC_MSG_RESULT([internal])
10573 BUILD_TYPE="$BUILD_TYPE DRAGONBOX"
10576 AC_SUBST([SYSTEM_DRAGONBOX])
10577 AC_SUBST([DRAGONBOX_CFLAGS])
10579 dnl ===================================================================
10580 dnl Check for system libfixmath
10581 dnl ===================================================================
10582 AC_MSG_CHECKING([which libfixmath to use])
10583 if test "$with_system_libfixmath" = "yes"; then
10584 AC_MSG_RESULT([external])
10585 SYSTEM_LIBFIXMATH=TRUE
10586 AC_LANG_PUSH([C++])
10587 AC_CHECK_HEADER([libfixmath/fix16.hpp], [],
10588 [AC_MSG_ERROR([libfixmath/fix16.hpp not found. install libfixmath])], [])
10589 AC_CHECK_LIB([libfixmath], [fix16_mul], [:], [AC_MSG_ERROR(libfixmath lib not found or functional)], [])
10592 AC_MSG_RESULT([internal])
10595 AC_SUBST([SYSTEM_LIBFIXMATH])
10597 dnl ===================================================================
10598 dnl Check for system glm
10599 dnl ===================================================================
10600 AC_MSG_CHECKING([which glm to use])
10601 if test "$with_system_glm" = "yes"; then
10602 AC_MSG_RESULT([external])
10604 AC_LANG_PUSH([C++])
10605 AC_CHECK_HEADER([glm/glm.hpp], [],
10606 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
10609 AC_MSG_RESULT([internal])
10610 BUILD_TYPE="$BUILD_TYPE GLM"
10612 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
10614 AC_SUBST([GLM_CFLAGS])
10615 AC_SUBST([SYSTEM_GLM])
10617 dnl ===================================================================
10618 dnl Check for system odbc
10619 dnl ===================================================================
10620 AC_MSG_CHECKING([which odbc headers to use])
10621 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
10622 AC_MSG_RESULT([external])
10623 SYSTEM_ODBC_HEADERS=TRUE
10625 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
10626 save_CPPFLAGS=$CPPFLAGS
10628 PathFormat "$winsdktest"
10629 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"
10630 AC_CHECK_HEADER(sqlext.h, [],
10631 [AC_MSG_ERROR(odbc not found. install odbc)],
10632 [#include <windows.h>])
10633 CPPFLAGS=$save_CPPFLAGS
10635 AC_CHECK_HEADER(sqlext.h, [],
10636 [AC_MSG_ERROR(odbc not found. install odbc)],[])
10638 elif test "$enable_database_connectivity" = no; then
10639 AC_MSG_RESULT([none])
10641 AC_MSG_RESULT([internal])
10642 SYSTEM_ODBC_HEADERS=
10644 AC_SUBST(SYSTEM_ODBC_HEADERS)
10646 dnl ===================================================================
10647 dnl Check for system NSS
10648 dnl ===================================================================
10649 if test "$enable_fuzzers" != "yes" -a "$enable_nss" = "yes"; then
10650 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8],,system-if-linux)
10651 AC_DEFINE(HAVE_FEATURE_NSS)
10653 elif test $_os != iOS ; then
10656 AC_SUBST(ENABLE_NSS)
10658 dnl ===================================================================
10659 dnl Enable LDAP support
10660 dnl ===================================================================
10662 if test "$test_openldap" = yes; then
10663 AC_MSG_CHECKING([whether to enable LDAP support])
10664 if test "$enable_ldap" = yes -a \( "$ENABLE_NSS" = TRUE -o "$with_system_openldap" = yes \); then
10665 AC_MSG_RESULT([yes])
10668 if test "$enable_ldap" != "yes"; then
10669 AC_MSG_RESULT([no])
10671 AC_MSG_RESULT([no (needs NSS or system openldap)])
10675 dnl ===================================================================
10676 dnl Check for system openldap
10677 dnl ===================================================================
10679 if test "$ENABLE_LDAP" = TRUE; then
10680 AC_MSG_CHECKING([which openldap library to use])
10681 if test "$with_system_openldap" = yes; then
10682 AC_MSG_RESULT([external])
10683 SYSTEM_OPENLDAP=TRUE
10684 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
10685 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10686 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
10688 AC_MSG_RESULT([internal])
10689 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
10694 AC_SUBST(ENABLE_LDAP)
10695 AC_SUBST(SYSTEM_OPENLDAP)
10697 dnl ===================================================================
10698 dnl Check for TLS/SSL and cryptographic implementation to use
10699 dnl ===================================================================
10700 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
10701 if test -n "$with_tls"; then
10704 AC_DEFINE(USE_TLS_OPENSSL)
10706 AC_MSG_RESULT([$TLS])
10708 if test "$enable_openssl" != "yes"; then
10709 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
10712 # warn that OpenSSL has been selected but not all TLS code has this option
10713 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS])
10714 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS"
10717 AC_DEFINE(USE_TLS_NSS)
10719 AC_MSG_RESULT([$TLS])
10722 AC_MSG_RESULT([none])
10723 AC_MSG_WARN([Skipping TLS/SSL])
10727 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
10729 nss - Mozilla's Network Security Services (NSS)
10734 # default to using NSS, it results in smaller oox lib
10735 AC_DEFINE(USE_TLS_NSS)
10737 AC_MSG_RESULT([$TLS])
10741 dnl ===================================================================
10742 dnl Check for system sane
10743 dnl ===================================================================
10744 AC_MSG_CHECKING([which sane header to use])
10745 if test "$with_system_sane" = "yes"; then
10746 AC_MSG_RESULT([external])
10747 AC_CHECK_HEADER(sane/sane.h, [],
10748 [AC_MSG_ERROR(sane not found. install sane)], [])
10750 AC_MSG_RESULT([internal])
10751 BUILD_TYPE="$BUILD_TYPE SANE"
10754 dnl ===================================================================
10755 dnl Check for system icu
10756 dnl ===================================================================
10759 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
10760 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
10761 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
10762 ICU_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
10763 ICU_LIBS_internal="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
10764 libo_CHECK_SYSTEM_MODULE([icu],[ICU],[icu-i18n >= 4.6])
10765 if test "$SYSTEM_ICU" = TRUE; then
10766 AC_LANG_PUSH([C++])
10767 AC_MSG_CHECKING([for unicode/rbbi.h])
10768 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
10771 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
10772 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
10773 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
10775 if test "$ICU_MAJOR" -ge 50; then
10776 AC_MSG_NOTICE([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
10780 if test "$CROSS_COMPILING" != TRUE; then
10781 # using the system icu tools can lead to version confusion, use the
10782 # ones from the build environment when cross-compiling
10783 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
10784 if test -z "$SYSTEM_GENBRK"; then
10785 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
10787 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10788 if test -z "$SYSTEM_GENCCODE"; then
10789 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
10791 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
10792 if test -z "$SYSTEM_GENCMN"; then
10793 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
10795 if test "$ICU_MAJOR" -lt 49; then
10796 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
10797 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
10798 ICU_RECLASSIFIED_HEBREW_LETTER=
10802 if test "$ICU_MAJOR" -ge "59"; then
10803 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
10804 # with -std=c++11 but not all external libraries can be built with that,
10805 # for those use a bit-compatible typedef uint16_t UChar; see
10806 # icu/source/common/unicode/umachine.h
10807 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
10811 AC_SUBST(SYSTEM_GENBRK)
10812 AC_SUBST(SYSTEM_GENCCODE)
10813 AC_SUBST(SYSTEM_GENCMN)
10814 AC_SUBST(ICU_MAJOR)
10815 AC_SUBST(ICU_MINOR)
10816 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
10817 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
10818 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
10819 AC_SUBST(ICU_UCHAR_TYPE)
10821 dnl ==================================================================
10823 dnl ==================================================================
10824 DEFAULT_CRASHDUMP_VALUE="true"
10825 AC_MSG_CHECKING([whether to enable breakpad])
10826 if test "$enable_breakpad" != yes; then
10827 AC_MSG_RESULT([no])
10829 AC_MSG_RESULT([yes])
10830 ENABLE_BREAKPAD="TRUE"
10831 AC_DEFINE(ENABLE_BREAKPAD)
10832 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
10833 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
10835 AC_MSG_CHECKING([for disable crash dump])
10836 if test "$enable_crashdump" = no; then
10837 DEFAULT_CRASHDUMP_VALUE="false"
10838 AC_MSG_RESULT([yes])
10840 AC_MSG_RESULT([no])
10843 AC_MSG_CHECKING([for crashreport config])
10844 if test "$with_symbol_config" = "no"; then
10845 BREAKPAD_SYMBOL_CONFIG="invalid"
10846 AC_MSG_RESULT([no])
10848 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
10849 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
10850 AC_MSG_RESULT([yes])
10852 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
10854 AC_SUBST(ENABLE_BREAKPAD)
10855 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
10857 dnl ===================================================================
10859 dnl ===================================================================
10860 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.17 >= 0.17.2])
10861 if test "$with_system_orcus" != "yes"; then
10862 if test "$SYSTEM_BOOST" = "TRUE"; then
10863 dnl Link with Boost.System
10864 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
10865 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
10866 dnl in documentation has no effect.
10870 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
10871 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
10872 AC_SUBST([BOOST_SYSTEM_LIB])
10873 AC_SUBST(SYSTEM_LIBORCUS)
10875 dnl ===================================================================
10877 dnl ===================================================================
10879 GRAPHITE_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"
10880 GRAPHITE_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"
10881 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3])
10883 HARFBUZZ_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/harfbuzz/src"
10884 HARFBUZZ_LIBS_internal="-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"
10885 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 2.1.0])
10887 if test "$COM" = "MSC"; then # override the above
10888 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
10889 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
10892 if test "$with_system_harfbuzz" = "yes"; then
10893 if test "$with_system_graphite" = "no"; then
10894 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
10896 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
10898 save_CFLAGS="$CFLAGS"
10899 LIBS="$LIBS $HARFBUZZ_LIBS"
10900 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
10901 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
10903 CFLAGS="$save_CFLAGS"
10905 if test "$with_system_graphite" = "yes"; then
10906 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
10910 if test "$USING_X11" = TRUE; then
10913 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
10915 if test -z "$x_includes"; then
10916 x_includes="default_x_includes"
10918 if test -z "$x_libraries"; then
10919 x_libraries="default_x_libraries"
10921 CFLAGS="$CFLAGS $X_CFLAGS"
10922 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
10923 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
10925 x_includes="no_x_includes"
10926 x_libraries="no_x_libraries"
10929 if test "$USING_X11" = TRUE; then
10930 dnl ===================================================================
10931 dnl Check for extension headers
10932 dnl ===================================================================
10933 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
10934 [#include <X11/extensions/shape.h>])
10936 # vcl needs ICE and SM
10937 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
10938 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
10939 [AC_MSG_ERROR(ICE library not found)])
10940 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
10941 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
10942 [AC_MSG_ERROR(SM library not found)])
10945 if test "$USING_X11" = TRUE -a "$ENABLE_JAVA" != ""; then
10946 # bean/native/unix/com_sun_star_comp_beans_LocalOfficeWindow.c needs Xt
10947 AC_CHECK_HEADERS(X11/Intrinsic.h,[],[AC_MSG_ERROR([libXt headers not found])])
10950 dnl ===================================================================
10951 dnl Check for system Xrender
10952 dnl ===================================================================
10953 AC_MSG_CHECKING([whether to use Xrender])
10954 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
10955 AC_MSG_RESULT([yes])
10956 PKG_CHECK_MODULES(XRENDER, xrender)
10957 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10958 FilterLibs "${XRENDER_LIBS}"
10959 XRENDER_LIBS="${filteredlibs}"
10960 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
10961 [AC_MSG_ERROR(libXrender not found or functional)], [])
10962 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
10963 [AC_MSG_ERROR(Xrender not found. install X)], [])
10965 AC_MSG_RESULT([no])
10967 AC_SUBST(XRENDER_CFLAGS)
10968 AC_SUBST(XRENDER_LIBS)
10970 dnl ===================================================================
10971 dnl Check for XRandr
10972 dnl ===================================================================
10973 AC_MSG_CHECKING([whether to enable RandR support])
10974 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
10975 AC_MSG_RESULT([yes])
10976 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
10977 if test "$ENABLE_RANDR" != "TRUE"; then
10978 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
10979 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
10981 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
10982 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
10983 XRANDR_LIBS="-lXrandr "
10984 ENABLE_RANDR="TRUE"
10986 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10987 FilterLibs "${XRANDR_LIBS}"
10988 XRANDR_LIBS="${filteredlibs}"
10991 AC_MSG_RESULT([no])
10993 AC_SUBST(XRANDR_CFLAGS)
10994 AC_SUBST(XRANDR_LIBS)
10995 AC_SUBST(ENABLE_RANDR)
10997 if test -z "$with_webdav"; then
10998 with_webdav=$test_webdav
11001 AC_MSG_CHECKING([for WebDAV support])
11002 case "$with_webdav" in
11004 AC_MSG_RESULT([no])
11008 AC_MSG_RESULT([yes])
11009 # curl is already mandatory (almost) and checked elsewhere
11010 if test "$enable_curl" = "no"; then
11011 AC_MSG_ERROR(["--with-webdav conflicts with --disable-curl"])
11016 AC_SUBST(WITH_WEBDAV)
11018 dnl ===================================================================
11019 dnl Check for disabling cve_tests
11020 dnl ===================================================================
11021 AC_MSG_CHECKING([whether to execute CVE tests])
11022 # If not explicitly enabled or disabled, default
11023 if test -z "$enable_cve_tests"; then
11026 # Default cves off for Windows with its wild and wonderful
11027 # variety of AV software kicking in and panicking
11028 enable_cve_tests=no
11032 enable_cve_tests=yes
11036 if test "$enable_cve_tests" = "no"; then
11037 AC_MSG_RESULT([no])
11038 DISABLE_CVE_TESTS=TRUE
11039 AC_SUBST(DISABLE_CVE_TESTS)
11041 AC_MSG_RESULT([yes])
11044 dnl ===================================================================
11045 dnl Check for system openssl
11046 dnl ===================================================================
11048 AC_MSG_CHECKING([whether to disable OpenSSL usage])
11049 if test "$enable_openssl" = "yes"; then
11050 AC_MSG_RESULT([no])
11051 ENABLE_OPENSSL=TRUE
11052 if test "$_os" = Darwin ; then
11053 # OpenSSL is deprecated when building for 10.7 or later.
11055 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
11056 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
11058 with_system_openssl=no
11059 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11060 elif test "$_os" = "FreeBSD" -o "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
11061 && test "$with_system_openssl" != "no"; then
11062 with_system_openssl=yes
11063 SYSTEM_OPENSSL=TRUE
11065 OPENSSL_LIBS="-lssl -lcrypto"
11067 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
11069 if test "$with_system_openssl" = "yes"; then
11070 AC_MSG_CHECKING([whether openssl supports SHA512])
11072 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
11073 SHA512_CTX context;
11074 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
11078 AC_MSG_RESULT([yes])
11080 # warn that although OpenSSL is disabled, system libraries may depend on it
11081 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
11082 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
11085 AC_SUBST([ENABLE_OPENSSL])
11087 if test "$enable_cipher_openssl_backend" = yes && test "$ENABLE_OPENSSL" != TRUE; then
11088 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
11089 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
11090 enable_cipher_openssl_backend=no
11092 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
11095 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
11096 ENABLE_CIPHER_OPENSSL_BACKEND=
11097 if test "$enable_cipher_openssl_backend" = yes; then
11098 AC_MSG_RESULT([yes])
11099 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
11101 AC_MSG_RESULT([no])
11103 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
11105 dnl ===================================================================
11106 dnl Select the crypto backends used by LO
11107 dnl ===================================================================
11109 if test "$build_crypto" = yes; then
11110 if test "$OS" = WNT; then
11111 BUILD_TYPE="$BUILD_TYPE CRYPTO_MSCAPI"
11112 AC_DEFINE([USE_CRYPTO_MSCAPI])
11113 elif test "$ENABLE_NSS" = TRUE; then
11114 BUILD_TYPE="$BUILD_TYPE CRYPTO_NSS"
11115 AC_DEFINE([USE_CRYPTO_NSS])
11119 dnl ===================================================================
11120 dnl Check for system redland
11121 dnl ===================================================================
11122 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
11123 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
11124 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
11125 if test "$with_system_redland" = "yes"; then
11126 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
11127 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
11133 AC_SUBST(RAPTOR_MAJOR)
11134 AC_SUBST(RASQAL_MAJOR)
11135 AC_SUBST(REDLAND_MAJOR)
11137 dnl ===================================================================
11138 dnl Check for system hunspell
11139 dnl ===================================================================
11140 AC_MSG_CHECKING([which libhunspell to use])
11141 if test "$with_system_hunspell" = "yes"; then
11142 AC_MSG_RESULT([external])
11143 SYSTEM_HUNSPELL=TRUE
11144 AC_LANG_PUSH([C++])
11145 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
11146 if test "$HUNSPELL_PC" != "TRUE"; then
11147 AC_CHECK_HEADER(hunspell.hxx, [],
11149 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
11150 [AC_MSG_ERROR(hunspell headers not found.)], [])
11152 AC_CHECK_LIB([hunspell], [main], [:],
11153 [ AC_MSG_ERROR(hunspell library not found.) ], [])
11154 HUNSPELL_LIBS=-lhunspell
11157 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11158 FilterLibs "${HUNSPELL_LIBS}"
11159 HUNSPELL_LIBS="${filteredlibs}"
11161 AC_MSG_RESULT([internal])
11163 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
11164 if test "$COM" = "MSC"; then
11165 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
11167 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
11169 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
11171 AC_SUBST(SYSTEM_HUNSPELL)
11172 AC_SUBST(HUNSPELL_CFLAGS)
11173 AC_SUBST(HUNSPELL_LIBS)
11175 dnl ===================================================================
11176 dnl Check for system zxing
11177 dnl ===================================================================
11178 AC_MSG_CHECKING([whether to use zxing])
11179 if test "$enable_zxing" = "no"; then
11180 AC_MSG_RESULT([no])
11184 AC_MSG_RESULT([yes])
11186 AC_MSG_CHECKING([which libzxing to use])
11187 if test "$with_system_zxing" = "yes"; then
11188 AC_MSG_RESULT([external])
11191 AC_LANG_PUSH([C++])
11192 save_CXXFLAGS=$CXXFLAGS
11195 for i in $CPLUS_INCLUDE_PATH /usr/include; do
11196 dnl Reset IFS as soon as possible, to avoid unexpected side effects (and the
11197 dnl "/usr/include" fallback makes sure we get here at least once; resetting rather than
11198 dnl unsetting follows the advice at <http://git.savannah.gnu.org/gitweb/?p=autoconf.git;
11199 dnl a=commit;h=e51c9919f2cf70185b7916ac040bc0bbfd0f743b> "Add recommendation on (not)
11200 dnl unsetting IFS."):
11202 dnl TODO: GCC and Clang treat empty paths in CPLUS_INCLUDE_PATH like ".", but we simply
11203 dnl ignore them here:
11204 if test -z "$i"; then
11207 dnl TODO: White space in $i would cause problems:
11208 CXXFLAGS="$save_CXXFLAGS -I$i/ZXing"
11209 AC_CHECK_HEADER(MultiFormatWriter.h, [ZXING_CFLAGS=-I$i/ZXing; break],
11210 [unset ac_cv_header_MultiFormatWriter_h], [#include <stdexcept>])
11212 CXXFLAGS=$save_CXXFLAGS
11213 if test -z "$ZXING_CFLAGS"; then
11214 AC_MSG_ERROR(zxing headers not found.)
11216 AC_CHECK_LIB([ZXing], [main], [ZXING_LIBS=-lZXing],
11217 [ AC_CHECK_LIB([ZXingCore], [main], [ZXING_LIBS=-lZXingCore],
11218 [ AC_MSG_ERROR(zxing C++ library not found.) ])], [])
11220 ZXING_CFLAGS=$(printf '%s' "$ZXING_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11221 FilterLibs "${ZXING_LIBS}"
11222 ZXING_LIBS="${filteredlibs}"
11224 AC_MSG_RESULT([internal])
11226 BUILD_TYPE="$BUILD_TYPE ZXING"
11228 if test "$ENABLE_ZXING" = TRUE; then
11229 AC_DEFINE(ENABLE_ZXING)
11232 AC_SUBST(SYSTEM_ZXING)
11233 AC_SUBST(ENABLE_ZXING)
11234 AC_SUBST(ZXING_CFLAGS)
11235 AC_SUBST(ZXING_LIBS)
11237 dnl ===================================================================
11238 dnl Check for system box2d
11239 dnl ===================================================================
11240 AC_MSG_CHECKING([which box2d to use])
11241 if test "$with_system_box2d" = "yes"; then
11242 AC_MSG_RESULT([external])
11244 AC_LANG_PUSH([C++])
11245 AC_CHECK_HEADER(box2d/box2d.h, [BOX2D_H_FOUND='TRUE'],
11246 [BOX2D_H_FOUND='FALSE'])
11247 if test "$BOX2D_H_FOUND" = "TRUE"; then # 2.4.0+
11249 AC_DEFINE(BOX2D_HEADER,<box2d/box2d.h>)
11251 # fail this. there's no other alternative to check when we are here.
11252 AC_CHECK_HEADER([Box2D/Box2D.h], [],
11253 [AC_MSG_ERROR(box2d headers not found.)])
11255 AC_DEFINE(BOX2D_HEADER,<Box2D/Box2D.h>)
11257 AC_CHECK_LIB([$_BOX2D_LIB], [main], [:],
11258 [ AC_MSG_ERROR(box2d library not found.) ], [])
11259 BOX2D_LIBS=-l$_BOX2D_LIB
11261 BOX2D_CFLAGS=$(printf '%s' "$BOX2D_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11262 FilterLibs "${BOX2D_LIBS}"
11263 BOX2D_LIBS="${filteredlibs}"
11265 AC_MSG_RESULT([internal])
11267 BUILD_TYPE="$BUILD_TYPE BOX2D"
11269 AC_SUBST(SYSTEM_BOX2D)
11270 AC_SUBST(BOX2D_CFLAGS)
11271 AC_SUBST(BOX2D_LIBS)
11273 dnl ===================================================================
11274 dnl Checking for altlinuxhyph
11275 dnl ===================================================================
11276 AC_MSG_CHECKING([which altlinuxhyph to use])
11277 if test "$with_system_altlinuxhyph" = "yes"; then
11278 AC_MSG_RESULT([external])
11280 AC_CHECK_HEADER(hyphen.h, [],
11281 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
11282 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
11283 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
11284 [#include <hyphen.h>])
11285 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
11286 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11287 if test -z "$HYPHEN_LIB"; then
11288 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
11289 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11291 if test -z "$HYPHEN_LIB"; then
11292 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
11293 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
11296 AC_MSG_RESULT([internal])
11298 BUILD_TYPE="$BUILD_TYPE HYPHEN"
11299 if test "$COM" = "MSC"; then
11300 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
11302 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
11305 AC_SUBST(SYSTEM_HYPH)
11306 AC_SUBST(HYPHEN_LIB)
11308 dnl ===================================================================
11309 dnl Checking for mythes
11310 dnl ===================================================================
11311 AC_MSG_CHECKING([which mythes to use])
11312 if test "$with_system_mythes" = "yes"; then
11313 AC_MSG_RESULT([external])
11315 AC_LANG_PUSH([C++])
11316 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
11317 if test "$MYTHES_PKGCONFIG" = "no"; then
11318 AC_CHECK_HEADER(mythes.hxx, [],
11319 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
11320 AC_CHECK_LIB([mythes-1.2], [main], [:],
11321 [ MYTHES_FOUND=no], [])
11322 if test "$MYTHES_FOUND" = "no"; then
11323 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
11324 [ MYTHES_FOUND=no], [])
11326 if test "$MYTHES_FOUND" = "no"; then
11327 AC_MSG_ERROR([mythes library not found!.])
11331 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11332 FilterLibs "${MYTHES_LIBS}"
11333 MYTHES_LIBS="${filteredlibs}"
11335 AC_MSG_RESULT([internal])
11337 BUILD_TYPE="$BUILD_TYPE MYTHES"
11338 if test "$COM" = "MSC"; then
11339 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
11341 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
11344 AC_SUBST(SYSTEM_MYTHES)
11345 AC_SUBST(MYTHES_CFLAGS)
11346 AC_SUBST(MYTHES_LIBS)
11348 dnl ===================================================================
11349 dnl How should we build the linear programming solver ?
11350 dnl ===================================================================
11353 AC_MSG_CHECKING([whether to build with CoinMP])
11354 if test "$enable_coinmp" != "no"; then
11356 AC_MSG_RESULT([yes])
11357 if test "$with_system_coinmp" = "yes"; then
11359 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
11360 FilterLibs "${COINMP_LIBS}"
11361 COINMP_LIBS="${filteredlibs}"
11363 BUILD_TYPE="$BUILD_TYPE COINMP"
11366 AC_MSG_RESULT([no])
11368 AC_SUBST(ENABLE_COINMP)
11369 AC_SUBST(SYSTEM_COINMP)
11370 AC_SUBST(COINMP_CFLAGS)
11371 AC_SUBST(COINMP_LIBS)
11374 AC_MSG_CHECKING([whether to build with lpsolve])
11375 if test "$enable_lpsolve" != "no"; then
11376 ENABLE_LPSOLVE=TRUE
11377 AC_MSG_RESULT([yes])
11379 AC_MSG_RESULT([no])
11381 AC_SUBST(ENABLE_LPSOLVE)
11383 if test "$ENABLE_LPSOLVE" = TRUE; then
11384 AC_MSG_CHECKING([which lpsolve to use])
11385 if test "$with_system_lpsolve" = "yes"; then
11386 AC_MSG_RESULT([external])
11387 SYSTEM_LPSOLVE=TRUE
11388 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
11389 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
11391 # some systems need this. Like Ubuntu...
11392 AC_CHECK_LIB(m, floor)
11393 AC_CHECK_LIB(dl, dlopen)
11394 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
11395 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
11398 AC_MSG_RESULT([internal])
11400 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
11403 AC_SUBST(SYSTEM_LPSOLVE)
11405 dnl ===================================================================
11406 dnl Checking for libexttextcat
11407 dnl ===================================================================
11408 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
11409 if test "$with_system_libexttextcat" = "yes"; then
11410 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
11412 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
11414 dnl ===================================================================
11415 dnl Checking for libnumbertext
11416 dnl ===================================================================
11417 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.6])
11418 if test "$with_system_libnumbertext" = "yes"; then
11419 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
11420 SYSTEM_LIBNUMBERTEXT=YES
11422 SYSTEM_LIBNUMBERTEXT=
11424 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
11425 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
11427 dnl ***************************************
11428 dnl testing libc version for Linux...
11429 dnl ***************************************
11430 if test "$_os" = "Linux"; then
11431 AC_MSG_CHECKING([whether the libc is recent enough])
11432 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
11433 #include <features.h>
11434 #if defined(__GNU_LIBRARY__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1))
11435 #error glibc >= 2.1 is required
11437 ]])],, [AC_MSG_RESULT([yes])], [AC_MSG_ERROR([no, upgrade libc])])
11440 dnl =========================================
11441 dnl Check for uuidgen
11442 dnl =========================================
11443 if test "$_os" = "WINNT"; then
11444 # we must use the uuidgen from the Windows SDK, which will be in the LO_PATH, but isn't in
11445 # the PATH for AC_PATH_PROG. It is already tested above in the WINDOWS_SDK_HOME check.
11446 UUIDGEN=uuidgen.exe
11449 AC_PATH_PROG([UUIDGEN], [uuidgen])
11450 if test -z "$UUIDGEN"; then
11451 AC_MSG_WARN([uuid is needed for building installation sets])
11455 dnl ***************************************
11456 dnl Checking for bison and flex
11457 dnl ***************************************
11458 AC_PATH_PROG(BISON, bison)
11459 if test -z "$BISON"; then
11460 AC_MSG_ERROR([no bison found in \$PATH, install it])
11462 AC_MSG_CHECKING([the bison version])
11463 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
11464 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
11465 dnl Accept newer than 2.0; for --enable-compiler-plugins at least 2.3 is known to be bad and
11468 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]
11469 dnl typedef union YYSTYPE
11472 dnl while at least 3.4.1 is know to be good:
11473 if test "$COMPILER_PLUGINS" = TRUE; then
11474 if test "$_bison_longver" -lt 2004; then
11475 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.4+ for --enable-compiler-plugins)])
11478 if test "$_bison_longver" -lt 2000; then
11479 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
11485 AC_PATH_PROG(FLEX, flex)
11486 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11487 FLEX=`cygpath -m $FLEX`
11489 if test -z "$FLEX"; then
11490 AC_MSG_ERROR([no flex found in \$PATH, install it])
11492 AC_MSG_CHECKING([the flex version])
11493 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
11494 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
11495 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
11500 AC_PATH_PROG(DIFF, diff)
11501 if test -z "$DIFF"; then
11502 AC_MSG_ERROR(["diff" not found in \$PATH, install it])
11506 AC_PATH_PROG(UNIQ, uniq)
11507 if test -z "$UNIQ"; then
11508 AC_MSG_ERROR(["uniq" not found in \$PATH, install it])
11512 dnl ***************************************
11513 dnl Checking for patch
11514 dnl ***************************************
11515 AC_PATH_PROG(PATCH, patch)
11516 if test -z "$PATCH"; then
11517 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
11520 dnl On Solaris or macOS, check if --with-gnu-patch was used
11521 if test "$_os" = "SunOS" -o "$_os" = "Darwin"; then
11522 if test -z "$with_gnu_patch"; then
11525 if test -x "$with_gnu_patch"; then
11526 GNUPATCH=$with_gnu_patch
11528 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
11532 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
11533 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
11534 AC_MSG_RESULT([yes])
11536 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
11542 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11543 GNUPATCH=`cygpath -m $GNUPATCH`
11546 dnl We also need to check for --with-gnu-cp
11548 if test -z "$with_gnu_cp"; then
11549 # check the place where the good stuff is hidden on Solaris...
11550 if test -x /usr/gnu/bin/cp; then
11551 GNUCP=/usr/gnu/bin/cp
11553 AC_PATH_PROGS(GNUCP, gnucp cp)
11555 if test -z $GNUCP; then
11556 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
11559 if test -x "$with_gnu_cp"; then
11562 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
11566 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
11567 GNUCP=`cygpath -m $GNUCP`
11570 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
11571 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
11572 AC_MSG_RESULT([yes])
11573 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
11574 AC_MSG_RESULT([yes])
11576 case "$build_os" in
11577 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
11580 AC_MSG_RESULT([no gnucp found - using the system's cp command])
11583 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
11592 dnl ***************************************
11593 dnl testing assembler path
11594 dnl ***************************************
11596 if test "$_os" = "WINNT"; then
11597 case "$WIN_HOST_ARCH" in
11598 x86) assembler=ml.exe ;;
11599 x64) assembler=ml64.exe ;;
11600 arm64) assembler=armasm64.exe ;;
11603 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
11604 if test -f "$MSVC_HOST_PATH/$assembler"; then
11605 ML_EXE=`win_short_path_for_make "$MSVC_HOST_PATH/$assembler"`
11606 AC_MSG_RESULT([$ML_EXE])
11608 AC_MSG_ERROR([not found in $MSVC_HOST_PATH])
11614 dnl ===================================================================
11615 dnl We need zip and unzip
11616 dnl ===================================================================
11617 AC_PATH_PROG(ZIP, zip)
11618 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
11619 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
11620 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],,)
11623 AC_PATH_PROG(UNZIP, unzip)
11624 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
11626 dnl ===================================================================
11627 dnl Zip must be a specific type for different build types.
11628 dnl ===================================================================
11629 if test $build_os = cygwin; then
11630 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
11631 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
11635 dnl ===================================================================
11636 dnl We need touch with -h option support.
11637 dnl ===================================================================
11638 AC_PATH_PROG(TOUCH, touch)
11639 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
11640 touch "$WARNINGS_FILE"
11641 if ! "$TOUCH" -h "$WARNINGS_FILE" 2>/dev/null > /dev/null; then
11642 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],,)
11645 dnl ===================================================================
11646 dnl Check for system epoxy
11647 dnl ===================================================================
11648 EPOXY_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/epoxy/include"
11649 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2])
11651 dnl ===================================================================
11652 dnl Set vcl option: coordinate device in double or sal_Int32
11653 dnl ===================================================================
11655 AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
11656 if test "$enable_float_device_pixel" = yes; then
11657 AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
11658 AC_MSG_RESULT([double])
11660 AC_MSG_RESULT([sal_Int32])
11663 dnl ===================================================================
11664 dnl Show which vclplugs will be built.
11665 dnl ===================================================================
11668 libo_ENABLE_VCLPLUG([gen])
11669 libo_ENABLE_VCLPLUG([gtk3])
11670 libo_ENABLE_VCLPLUG([gtk3_kde5])
11671 libo_ENABLE_VCLPLUG([gtk4])
11672 libo_ENABLE_VCLPLUG([kf5])
11673 libo_ENABLE_VCLPLUG([qt5])
11674 libo_ENABLE_VCLPLUG([qt6])
11676 if test "$_os" = "WINNT"; then
11678 elif test "$_os" = "Darwin"; then
11680 elif test "$_os" = "iOS"; then
11682 elif test "$_os" = Android; then
11686 build_vcl_plugins="$R"
11687 if test -z "$build_vcl_plugins"; then
11688 build_vcl_plugins=" none"
11690 AC_MSG_NOTICE([VCLplugs to be built:${build_vcl_plugins}])
11692 AC_SUBST([VCL_PLUGIN_INFO])
11694 if test "$DISABLE_DYNLOADING" = TRUE -a -z "$DISABLE_GUI" -a \( -z "$R" -o $(echo "$R" | wc -w) -ne 1 \); then
11695 AC_MSG_ERROR([Can't build --disable-dynamic-loading without --disable-gui and a single VCL plugin"])
11698 dnl ===================================================================
11699 dnl Check for GTK libraries
11700 dnl ===================================================================
11704 if test "$test_gtk3" = yes -a "x$enable_gtk3" = "xyes" -o "x$enable_gtk3_kde5" = "xyes"; then
11705 if test "$with_system_cairo" = no; then
11706 add_warning 'Non-system cairo combined with gtk3 is assumed to cause trouble; proceed at your own risk.'
11708 : ${with_system_cairo:=yes}
11709 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)
11710 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11711 GTK3_CFLAGS="$GTK3_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11712 FilterLibs "${GTK3_LIBS}"
11713 GTK3_LIBS="${filteredlibs}"
11715 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
11716 if test "$with_system_epoxy" != "yes"; then
11717 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11718 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11719 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11722 AC_SUBST(GTK3_LIBS)
11723 AC_SUBST(GTK3_CFLAGS)
11727 if test "$test_gtk4" = yes -a "x$enable_gtk4" = "xyes"; then
11728 if test "$with_system_cairo" = no; then
11729 add_warning 'Non-system cairo combined with gtk4 is assumed to cause trouble; proceed at your own risk.'
11731 : ${with_system_cairo:=yes}
11732 PKG_CHECK_MODULES(GTK4, gtk4 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo atk)
11733 GTK4_CFLAGS=$(printf '%s' "$GTK4_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11734 GTK4_CFLAGS="$GTK4_CFLAGS -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED"
11735 FilterLibs "${GTK4_LIBS}"
11736 GTK4_LIBS="${filteredlibs}"
11738 dnl We require egl only for the gtk4 plugin. Otherwise we use glx.
11739 if test "$with_system_epoxy" != "yes"; then
11740 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
11741 AC_CHECK_HEADER(EGL/eglplatform.h, [],
11742 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
11745 AC_SUBST(GTK4_LIBS)
11746 AC_SUBST(GTK4_CFLAGS)
11748 if test "$enable_introspection" = yes; then
11749 if test "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11750 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
11752 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
11756 dnl ===================================================================
11757 dnl check for dbus support
11758 dnl ===================================================================
11762 DBUS_GLIB_CFLAGS=""
11766 if test "$enable_dbus" = "no"; then
11770 AC_MSG_CHECKING([whether to enable DBUS support])
11771 if test "$test_dbus" = "yes"; then
11773 AC_MSG_RESULT([yes])
11774 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
11775 AC_DEFINE(ENABLE_DBUS)
11776 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11777 FilterLibs "${DBUS_LIBS}"
11778 DBUS_LIBS="${filteredlibs}"
11780 # Glib is needed for BluetoothServer
11781 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
11782 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
11784 DBUS_HAVE_GLIB="TRUE"
11785 AC_DEFINE(DBUS_HAVE_GLIB,1)
11787 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
11790 AC_MSG_RESULT([no])
11793 AC_SUBST(ENABLE_DBUS)
11794 AC_SUBST(DBUS_CFLAGS)
11795 AC_SUBST(DBUS_LIBS)
11796 AC_SUBST(DBUS_GLIB_CFLAGS)
11797 AC_SUBST(DBUS_GLIB_LIBS)
11798 AC_SUBST(DBUS_HAVE_GLIB)
11800 AC_MSG_CHECKING([whether to enable Impress remote control])
11801 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
11802 AC_MSG_RESULT([yes])
11803 ENABLE_SDREMOTE=TRUE
11804 SDREMOTE_ENTITLEMENT=" <key>com.apple.security.network.server</key>
11806 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
11808 if test $OS = MACOSX && test "$MACOSX_SDK_VERSION" -ge 101500; then
11809 # The Bluetooth code doesn't compile with macOS SDK 10.15
11810 if test "$enable_sdremote_bluetooth" = yes; then
11811 AC_MSG_ERROR([macOS SDK $macosx_sdk does not currently support --enable-sdremote-bluetooth])
11813 add_warning "not building the bluetooth part of the sdremote - used api was removed from macOS SDK 10.15"
11814 enable_sdremote_bluetooth=no
11816 # If not explicitly enabled or disabled, default
11817 if test -z "$enable_sdremote_bluetooth"; then
11820 # Default to yes for these
11821 enable_sdremote_bluetooth=yes
11825 enable_sdremote_bluetooth=no
11829 # $enable_sdremote_bluetooth is guaranteed non-empty now
11831 if test "$enable_sdremote_bluetooth" != "no"; then
11832 if test "$OS" = "LINUX"; then
11833 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
11834 AC_MSG_RESULT([yes])
11835 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11836 dnl ===================================================================
11837 dnl Check for system bluez
11838 dnl ===================================================================
11839 AC_MSG_CHECKING([which Bluetooth header to use])
11840 if test "$with_system_bluez" = "yes"; then
11841 AC_MSG_RESULT([external])
11842 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
11843 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
11846 AC_MSG_RESULT([internal])
11850 AC_MSG_RESULT([no, dbus disabled])
11851 ENABLE_SDREMOTE_BLUETOOTH=
11855 AC_MSG_RESULT([yes])
11856 ENABLE_SDREMOTE_BLUETOOTH=TRUE
11858 SDREMOTE_ENTITLEMENT="$SDREMOTE_ENTITLEMENT
11859 <key>com.apple.security.device.bluetooth</key>
11863 AC_MSG_RESULT([no])
11864 ENABLE_SDREMOTE_BLUETOOTH=
11870 AC_MSG_RESULT([no])
11872 AC_SUBST(ENABLE_SDREMOTE)
11873 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
11874 AC_SUBST(SDREMOTE_ENTITLEMENT)
11875 AC_SUBST(SYSTEM_BLUEZ)
11877 dnl ===================================================================
11878 dnl Check whether to enable GIO support
11879 dnl ===================================================================
11880 if test "$ENABLE_GTK4" = "TRUE" -o "$ENABLE_GTK3" = "TRUE" -o "$ENABLE_GTK3_KDE5" = "TRUE"; then
11881 AC_MSG_CHECKING([whether to enable GIO support])
11882 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
11883 dnl Need at least 2.26 for the dbus support.
11884 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
11885 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
11886 if test "$ENABLE_GIO" = "TRUE"; then
11887 AC_DEFINE(ENABLE_GIO)
11888 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11889 FilterLibs "${GIO_LIBS}"
11890 GIO_LIBS="${filteredlibs}"
11893 AC_MSG_RESULT([no])
11896 AC_SUBST(ENABLE_GIO)
11897 AC_SUBST(GIO_CFLAGS)
11901 dnl ===================================================================
11903 SPLIT_APP_MODULES=""
11904 if test "$enable_split_app_modules" = "yes"; then
11905 SPLIT_APP_MODULES="TRUE"
11907 AC_SUBST(SPLIT_APP_MODULES)
11909 SPLIT_OPT_FEATURES=""
11910 if test "$enable_split_opt_features" = "yes"; then
11911 SPLIT_OPT_FEATURES="TRUE"
11913 AC_SUBST(SPLIT_OPT_FEATURES)
11915 dnl ===================================================================
11916 dnl Check whether the GStreamer libraries are available.
11917 dnl ===================================================================
11919 ENABLE_GSTREAMER_1_0=""
11921 if test "$test_gstreamer_1_0" = yes; then
11923 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
11924 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
11925 ENABLE_GSTREAMER_1_0="TRUE"
11926 AC_MSG_RESULT([yes])
11927 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
11928 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11929 FilterLibs "${GSTREAMER_1_0_LIBS}"
11930 GSTREAMER_1_0_LIBS="${filteredlibs}"
11931 AC_DEFINE(ENABLE_GSTREAMER_1_0)
11933 AC_MSG_RESULT([no])
11936 AC_SUBST(GSTREAMER_1_0_CFLAGS)
11937 AC_SUBST(GSTREAMER_1_0_LIBS)
11938 AC_SUBST(ENABLE_GSTREAMER_1_0)
11940 ENABLE_OPENGL_TRANSITIONS=
11941 ENABLE_OPENGL_CANVAS=
11942 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
11944 elif test "$_os" = "Darwin"; then
11945 # We use frameworks on macOS, no need for detail checks
11946 ENABLE_OPENGL_TRANSITIONS=TRUE
11947 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11948 ENABLE_OPENGL_CANVAS=TRUE
11949 elif test $_os = WINNT; then
11950 ENABLE_OPENGL_TRANSITIONS=TRUE
11951 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11952 ENABLE_OPENGL_CANVAS=TRUE
11954 if test "$USING_X11" = TRUE; then
11955 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
11956 ENABLE_OPENGL_TRANSITIONS=TRUE
11957 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
11958 ENABLE_OPENGL_CANVAS=TRUE
11962 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
11963 AC_SUBST(ENABLE_OPENGL_CANVAS)
11965 dnl =================================================
11966 dnl Check whether to build with OpenCL support.
11967 dnl =================================================
11969 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE" -a "$enable_opencl" = "yes"; then
11970 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
11971 # platform (optional at run-time, used through clew).
11972 BUILD_TYPE="$BUILD_TYPE OPENCL"
11973 AC_DEFINE(HAVE_FEATURE_OPENCL)
11976 dnl =================================================
11977 dnl Check whether to build with dconf support.
11978 dnl =================================================
11980 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
11981 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
11982 if test "$enable_dconf" = yes; then
11983 AC_MSG_ERROR([dconf not found])
11988 AC_MSG_CHECKING([whether to enable dconf])
11989 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
11993 AC_MSG_RESULT([no])
11996 AC_DEFINE(ENABLE_DCONF)
11997 AC_MSG_RESULT([yes])
11999 AC_SUBST([DCONF_CFLAGS])
12000 AC_SUBST([DCONF_LIBS])
12001 AC_SUBST([ENABLE_DCONF])
12004 AC_MSG_CHECKING([whether to build the PDF import feature])
12006 if test -z "$enable_pdfimport" -o "$enable_pdfimport" = yes; then
12007 AC_MSG_RESULT([yes])
12008 ENABLE_PDFIMPORT=TRUE
12009 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
12011 AC_MSG_RESULT([no])
12015 AC_MSG_CHECKING([whether to build PDFium])
12017 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
12018 AC_MSG_RESULT([yes])
12020 BUILD_TYPE="$BUILD_TYPE PDFIUM"
12022 AC_MSG_RESULT([no])
12024 AC_SUBST(ENABLE_PDFIUM)
12026 if test "$ENABLE_PDFIUM" = "TRUE"; then
12027 AC_MSG_CHECKING([which OpenJPEG library to use])
12028 if test "$with_system_openjpeg" = "yes"; then
12029 SYSTEM_OPENJPEG2=TRUE
12030 AC_MSG_RESULT([external])
12031 PKG_CHECK_MODULES( OPENJPEG2, libopenjp2 )
12032 OPENJPEG2_CFLAGS=$(printf '%s' "$OPENJPEG2_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12033 FilterLibs "${OPENJPEG2_LIBS}"
12034 OPENJPEG2_LIBS="${filteredlibs}"
12036 SYSTEM_OPENJPEG2=FALSE
12037 AC_MSG_RESULT([internal])
12040 AC_MSG_CHECKING([which Abseil library to use])
12041 if test "$with_system_abseil" = "yes"; then
12042 AC_MSG_RESULT([external])
12044 AC_LANG_PUSH([C++])
12045 AC_CHECK_HEADER(absl/types/bad_optional_access.h, [],
12046 [AC_MSG_ERROR(abseil headers not found.)], [])
12047 AC_CHECK_HEADER(absl/types/bad_variant_access.h, [],
12048 [AC_MSG_ERROR(abseil headers not found.)], [])
12049 AC_CHECK_LIB([absl_bad_optional_access], [main], [],
12050 [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12051 AC_CHECK_LIB([absl_bad_variant_access], [main], [],
12052 [AC_MSG_ERROR([libabsl_bad_variant_access library not found.])])
12053 ABSEIL_LIBS="-labsl_bad_optional_access -labsl_bad_variant_access"
12055 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12056 FilterLibs "${ABSEIL_LIBS}"
12057 ABSEIL_LIBS="${filteredlibs}"
12059 AC_MSG_RESULT([internal])
12062 AC_SUBST(SYSTEM_OPENJPEG2)
12063 AC_SUBST(SYSTEM_ABSEIL)
12064 AC_SUBST(ABSEIL_CFLAGS)
12065 AC_SUBST(ABSEIL_LIBS)
12067 dnl ===================================================================
12068 dnl Check for poppler
12069 dnl ===================================================================
12071 AC_MSG_CHECKING([whether to build Poppler])
12072 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12073 AC_MSG_RESULT([yes])
12074 ENABLE_POPPLER=TRUE
12075 AC_DEFINE(HAVE_FEATURE_POPPLER)
12077 AC_MSG_RESULT([no])
12079 AC_SUBST(ENABLE_POPPLER)
12081 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12082 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12085 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12086 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12089 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12090 dnl ===================================================================
12091 dnl Check for system poppler
12092 dnl ===================================================================
12093 AC_MSG_CHECKING([which PDF import poppler to use])
12094 if test "$with_system_poppler" = "yes"; then
12095 AC_MSG_RESULT([external])
12096 SYSTEM_POPPLER=TRUE
12097 PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12098 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12099 FilterLibs "${POPPLER_LIBS}"
12100 POPPLER_LIBS="${filteredlibs}"
12102 AC_MSG_RESULT([internal])
12104 BUILD_TYPE="$BUILD_TYPE POPPLER"
12106 AC_DEFINE([ENABLE_PDFIMPORT],1)
12108 AC_SUBST(ENABLE_PDFIMPORT)
12109 AC_SUBST(SYSTEM_POPPLER)
12110 AC_SUBST(POPPLER_CFLAGS)
12111 AC_SUBST(POPPLER_LIBS)
12115 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12116 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12117 if test "$SYSTEM_FREETYPE" = TRUE; then
12118 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12119 [skia_freetype_ok=yes],
12120 [skia_freetype_ok=no])
12121 else # internal is ok
12122 skia_freetype_ok=yes
12124 AC_MSG_CHECKING([whether to build Skia])
12125 if test "$skia_freetype_ok" = "yes"; then
12126 if test "$enable_skia" = "debug"; then
12127 AC_MSG_RESULT([yes (debug)])
12128 ENABLE_SKIA_DEBUG=TRUE
12130 AC_MSG_RESULT([yes])
12134 if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12135 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12138 AC_DEFINE(HAVE_FEATURE_SKIA)
12139 BUILD_TYPE="$BUILD_TYPE SKIA"
12141 if test "$OS" = "MACOSX"; then
12142 AC_DEFINE(SK_SUPPORT_GPU,1)
12143 AC_DEFINE(SK_METAL,1)
12147 AC_DEFINE(SK_SUPPORT_GPU,1)
12148 AC_DEFINE(SK_VULKAN,1)
12153 if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
12154 SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
12155 AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
12158 AC_MSG_RESULT([no (freetype too old)])
12159 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12163 AC_MSG_CHECKING([whether to build Skia])
12164 AC_MSG_RESULT([no])
12166 AC_SUBST(ENABLE_SKIA)
12167 AC_SUBST(ENABLE_SKIA_DEBUG)
12169 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12170 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12171 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12172 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12173 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12174 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12175 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12176 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12177 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12178 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12179 HAVE_LO_CLANG_DLLEXPORTINLINES=
12181 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12182 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12183 AC_MSG_CHECKING([for Clang])
12184 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12186 if test "$_os" = "WINNT"; then
12187 AC_MSG_CHECKING([for clang-cl])
12188 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12189 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12190 elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12191 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12192 elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12193 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12195 if test -n "$LO_CLANG_CC"; then
12196 dnl explicitly set -m32/-m64
12197 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12198 LO_CLANG_CXX="$LO_CLANG_CC"
12199 AC_MSG_RESULT([$LO_CLANG_CC])
12201 AC_MSG_RESULT([no])
12204 AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12205 echo "#include <stdlib.h>" > conftest.c
12206 LO_CLANG_SHOWINCLUDES_PREFIX=`$LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12207 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12208 rm -f conftest.c conftest.obj
12209 if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12210 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12212 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12215 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12216 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12219 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12220 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12221 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12222 if test "$clang2_ver" -lt 50002; then
12223 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12228 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12230 CXX="$LO_CLANG_CXX"
12231 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12232 AC_LANG_PUSH([C++])
12233 save_CXXFLAGS=$CXXFLAGS
12234 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12235 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12236 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12237 AC_MSG_RESULT([yes])
12238 ], [AC_MSG_RESULT([no])])
12239 CXXFLAGS=$save_CXXFLAGS
12242 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12243 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.])
12246 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12247 # Skia is the default on Windows and Mac, so hard-require Clang.
12248 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12249 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12250 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12252 AC_MSG_WARN([Clang compiler not found.])
12257 CXX="$LO_CLANG_CXX"
12258 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12261 flag_sse41=-msse4.1
12262 flag_sse42=-msse4.2
12265 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12266 flag_avx512f=-mavx512f
12270 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12271 AC_LANG_PUSH([C++])
12272 save_CXXFLAGS=$CXXFLAGS
12273 CXXFLAGS="$CXXFLAGS $flag_sse2"
12274 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12275 #include <emmintrin.h>
12277 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12278 c = _mm_xor_si128 (a, b);
12282 [can_compile_sse2=yes],
12283 [can_compile_sse2=no])
12285 CXXFLAGS=$save_CXXFLAGS
12286 AC_MSG_RESULT([${can_compile_sse2}])
12287 if test "${can_compile_sse2}" = "yes" ; then
12288 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12291 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12292 AC_LANG_PUSH([C++])
12293 save_CXXFLAGS=$CXXFLAGS
12294 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12295 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12296 #include <tmmintrin.h>
12298 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12299 c = _mm_maddubs_epi16 (a, b);
12303 [can_compile_ssse3=yes],
12304 [can_compile_ssse3=no])
12306 CXXFLAGS=$save_CXXFLAGS
12307 AC_MSG_RESULT([${can_compile_ssse3}])
12308 if test "${can_compile_ssse3}" = "yes" ; then
12309 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12312 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12313 AC_LANG_PUSH([C++])
12314 save_CXXFLAGS=$CXXFLAGS
12315 CXXFLAGS="$CXXFLAGS $flag_sse41"
12316 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12317 #include <smmintrin.h>
12319 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12320 c = _mm_cmpeq_epi64 (a, b);
12324 [can_compile_sse41=yes],
12325 [can_compile_sse41=no])
12327 CXXFLAGS=$save_CXXFLAGS
12328 AC_MSG_RESULT([${can_compile_sse41}])
12329 if test "${can_compile_sse41}" = "yes" ; then
12330 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12333 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12334 AC_LANG_PUSH([C++])
12335 save_CXXFLAGS=$CXXFLAGS
12336 CXXFLAGS="$CXXFLAGS $flag_sse42"
12337 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12338 #include <nmmintrin.h>
12340 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12341 c = _mm_cmpgt_epi64 (a, b);
12345 [can_compile_sse42=yes],
12346 [can_compile_sse42=no])
12348 CXXFLAGS=$save_CXXFLAGS
12349 AC_MSG_RESULT([${can_compile_sse42}])
12350 if test "${can_compile_sse42}" = "yes" ; then
12351 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12354 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12355 AC_LANG_PUSH([C++])
12356 save_CXXFLAGS=$CXXFLAGS
12357 CXXFLAGS="$CXXFLAGS $flag_avx"
12358 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12359 #include <immintrin.h>
12361 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12362 c = _mm256_xor_ps(a, b);
12366 [can_compile_avx=yes],
12367 [can_compile_avx=no])
12369 CXXFLAGS=$save_CXXFLAGS
12370 AC_MSG_RESULT([${can_compile_avx}])
12371 if test "${can_compile_avx}" = "yes" ; then
12372 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12375 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12376 AC_LANG_PUSH([C++])
12377 save_CXXFLAGS=$CXXFLAGS
12378 CXXFLAGS="$CXXFLAGS $flag_avx2"
12379 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12380 #include <immintrin.h>
12382 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12383 c = _mm256_maddubs_epi16(a, b);
12387 [can_compile_avx2=yes],
12388 [can_compile_avx2=no])
12390 CXXFLAGS=$save_CXXFLAGS
12391 AC_MSG_RESULT([${can_compile_avx2}])
12392 if test "${can_compile_avx2}" = "yes" ; then
12393 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12396 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12397 AC_LANG_PUSH([C++])
12398 save_CXXFLAGS=$CXXFLAGS
12399 CXXFLAGS="$CXXFLAGS $flag_avx512"
12400 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12401 #include <immintrin.h>
12403 __m512i a = _mm512_loadu_si512(0);
12404 __m512d v1 = _mm512_load_pd(0);
12405 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12406 __m512d v2 = _mm512_abs_pd(v1);
12410 [can_compile_avx512=yes],
12411 [can_compile_avx512=no])
12413 CXXFLAGS=$save_CXXFLAGS
12414 AC_MSG_RESULT([${can_compile_avx512}])
12415 if test "${can_compile_avx512}" = "yes" ; then
12416 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12417 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12420 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12421 AC_LANG_PUSH([C++])
12422 save_CXXFLAGS=$CXXFLAGS
12423 CXXFLAGS="$CXXFLAGS $flag_f16c"
12424 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12425 #include <immintrin.h>
12427 __m128i a = _mm_set1_epi32 (0);
12429 c = _mm_cvtph_ps(a);
12433 [can_compile_f16c=yes],
12434 [can_compile_f16c=no])
12436 CXXFLAGS=$save_CXXFLAGS
12437 AC_MSG_RESULT([${can_compile_f16c}])
12438 if test "${can_compile_f16c}" = "yes" ; then
12439 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12442 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12443 AC_LANG_PUSH([C++])
12444 save_CXXFLAGS=$CXXFLAGS
12445 CXXFLAGS="$CXXFLAGS $flag_fma"
12446 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12447 #include <immintrin.h>
12449 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12450 d = _mm256_fmadd_ps(a, b, c);
12454 [can_compile_fma=yes],
12455 [can_compile_fma=no])
12457 CXXFLAGS=$save_CXXFLAGS
12458 AC_MSG_RESULT([${can_compile_fma}])
12459 if test "${can_compile_fma}" = "yes" ; then
12460 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12467 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12469 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12470 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12474 save_CFLAGS=$CFLAGS
12475 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12476 dnl an empty program will do, we're checking the compiler flags
12477 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12478 [use_ccache=yes], [use_ccache=no])
12479 CFLAGS=$save_CFLAGS
12481 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12482 AC_MSG_RESULT([yes])
12484 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12485 AC_MSG_RESULT([no])
12489 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12490 AC_LANG_PUSH([C++])
12492 CXX="$LO_CLANG_CXX"
12493 save_CXXFLAGS=$CXXFLAGS
12494 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12495 dnl an empty program will do, we're checking the compiler flags
12496 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12497 [use_ccache=yes], [use_ccache=no])
12498 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12499 AC_MSG_RESULT([yes])
12501 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12502 AC_MSG_RESULT([no])
12504 CXXFLAGS=$save_CXXFLAGS
12509 AC_SUBST(LO_CLANG_CC)
12510 AC_SUBST(LO_CLANG_CXX)
12511 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12512 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12513 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12514 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12515 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12516 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12517 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12518 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12519 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12520 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12521 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12522 AC_SUBST(CLANG_USE_LD)
12523 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12527 AC_MSG_CHECKING([whether to enable gpgmepp])
12528 if test "$enable_gpgmepp" = no; then
12529 AC_MSG_RESULT([no])
12530 elif test "$enable_mpl_subset" = "yes"; then
12531 AC_MSG_RESULT([no (MPL only])
12532 elif test "$enable_fuzzers" = "yes"; then
12533 AC_MSG_RESULT([no (oss-fuzz)])
12534 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12535 AC_MSG_RESULT([yes])
12536 dnl ===================================================================
12537 dnl Check for system gpgme
12538 dnl ===================================================================
12539 AC_MSG_CHECKING([which gpgmepp to use])
12540 if test "$with_system_gpgmepp" = "yes"; then
12541 AC_MSG_RESULT([external])
12542 SYSTEM_GPGMEPP=TRUE
12544 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12545 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12546 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12547 AC_CHECK_HEADER(gpgme.h, [],
12548 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12549 AC_CHECK_LIB(gpgmepp, main, [],
12550 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12551 GPGMEPP_LIBS=-lgpgmepp
12553 AC_MSG_RESULT([internal])
12554 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12556 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12557 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12558 if test "$_os" != "WINNT"; then
12559 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12560 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12563 ENABLE_GPGMEPP=TRUE
12564 AC_DEFINE([HAVE_FEATURE_GPGME])
12565 AC_PATH_PROG(GPG, gpg)
12566 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12567 # so let's exclude that manually for the moment
12568 if test -n "$GPG" -a "$_os" != "WINNT"; then
12569 # make sure we not only have a working gpgme, but a full working
12570 # gpg installation to run OpenPGP signature verification
12571 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12573 if test "$_os" = "Linux"; then
12575 AC_MSG_CHECKING([for /run/user/$uid])
12576 if test -d /run/user/$uid; then
12577 AC_MSG_RESULT([yes])
12578 AC_PATH_PROG(GPGCONF, gpgconf)
12580 # Older versions of gpgconf are not working as expected, since
12581 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12582 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12583 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12584 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12585 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12586 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12587 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12588 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12589 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12590 if $GPGCONF --dump-options > /dev/null ; then
12591 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12592 AC_MSG_RESULT([yes])
12593 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12594 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12596 AC_MSG_RESULT([no])
12599 AC_MSG_RESULT([no. missing or broken gpgconf?])
12602 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12605 AC_MSG_RESULT([no])
12609 AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12611 AC_SUBST(ENABLE_GPGMEPP)
12612 AC_SUBST(SYSTEM_GPGMEPP)
12613 AC_SUBST(GPG_ERROR_CFLAGS)
12614 AC_SUBST(GPG_ERROR_LIBS)
12615 AC_SUBST(LIBASSUAN_CFLAGS)
12616 AC_SUBST(LIBASSUAN_LIBS)
12617 AC_SUBST(GPGMEPP_CFLAGS)
12618 AC_SUBST(GPGMEPP_LIBS)
12620 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12621 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12622 AC_MSG_RESULT([yes])
12623 ENABLE_MEDIAWIKI=TRUE
12624 BUILD_TYPE="$BUILD_TYPE XSLTML"
12625 if test "x$with_java" = "xno"; then
12626 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12629 AC_MSG_RESULT([no])
12631 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12633 AC_SUBST(ENABLE_MEDIAWIKI)
12635 AC_MSG_CHECKING([whether to build the Report Builder])
12636 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12637 AC_MSG_RESULT([yes])
12638 ENABLE_REPORTBUILDER=TRUE
12639 AC_MSG_CHECKING([which jfreereport libs to use])
12640 if test "$with_system_jfreereport" = "yes"; then
12641 SYSTEM_JFREEREPORT=TRUE
12642 AC_MSG_RESULT([external])
12643 if test -z $SAC_JAR; then
12644 SAC_JAR=/usr/share/java/sac.jar
12646 if ! test -f $SAC_JAR; then
12647 AC_MSG_ERROR(sac.jar not found.)
12650 if test -z $LIBXML_JAR; then
12651 if test -f /usr/share/java/libxml-1.0.0.jar; then
12652 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12653 elif test -f /usr/share/java/libxml.jar; then
12654 LIBXML_JAR=/usr/share/java/libxml.jar
12656 AC_MSG_ERROR(libxml.jar replacement not found.)
12658 elif ! test -f $LIBXML_JAR; then
12659 AC_MSG_ERROR(libxml.jar not found.)
12662 if test -z $FLUTE_JAR; then
12663 if test -f /usr/share/java/flute-1.3.0.jar; then
12664 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12665 elif test -f /usr/share/java/flute.jar; then
12666 FLUTE_JAR=/usr/share/java/flute.jar
12668 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12670 elif ! test -f $FLUTE_JAR; then
12671 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12674 if test -z $JFREEREPORT_JAR; then
12675 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12676 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12677 elif test -f /usr/share/java/flow-engine.jar; then
12678 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12680 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12682 elif ! test -f $JFREEREPORT_JAR; then
12683 AC_MSG_ERROR(jfreereport.jar not found.)
12686 if test -z $LIBLAYOUT_JAR; then
12687 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12688 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12689 elif test -f /usr/share/java/liblayout.jar; then
12690 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12692 AC_MSG_ERROR(liblayout.jar replacement not found.)
12694 elif ! test -f $LIBLAYOUT_JAR; then
12695 AC_MSG_ERROR(liblayout.jar not found.)
12698 if test -z $LIBLOADER_JAR; then
12699 if test -f /usr/share/java/libloader-1.0.0.jar; then
12700 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12701 elif test -f /usr/share/java/libloader.jar; then
12702 LIBLOADER_JAR=/usr/share/java/libloader.jar
12704 AC_MSG_ERROR(libloader.jar replacement not found.)
12706 elif ! test -f $LIBLOADER_JAR; then
12707 AC_MSG_ERROR(libloader.jar not found.)
12710 if test -z $LIBFORMULA_JAR; then
12711 if test -f /usr/share/java/libformula-0.2.0.jar; then
12712 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12713 elif test -f /usr/share/java/libformula.jar; then
12714 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12716 AC_MSG_ERROR(libformula.jar replacement not found.)
12718 elif ! test -f $LIBFORMULA_JAR; then
12719 AC_MSG_ERROR(libformula.jar not found.)
12722 if test -z $LIBREPOSITORY_JAR; then
12723 if test -f /usr/share/java/librepository-1.0.0.jar; then
12724 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12725 elif test -f /usr/share/java/librepository.jar; then
12726 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12728 AC_MSG_ERROR(librepository.jar replacement not found.)
12730 elif ! test -f $LIBREPOSITORY_JAR; then
12731 AC_MSG_ERROR(librepository.jar not found.)
12734 if test -z $LIBFONTS_JAR; then
12735 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12736 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12737 elif test -f /usr/share/java/libfonts.jar; then
12738 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12740 AC_MSG_ERROR(libfonts.jar replacement not found.)
12742 elif ! test -f $LIBFONTS_JAR; then
12743 AC_MSG_ERROR(libfonts.jar not found.)
12746 if test -z $LIBSERIALIZER_JAR; then
12747 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12748 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12749 elif test -f /usr/share/java/libserializer.jar; then
12750 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12752 AC_MSG_ERROR(libserializer.jar replacement not found.)
12754 elif ! test -f $LIBSERIALIZER_JAR; then
12755 AC_MSG_ERROR(libserializer.jar not found.)
12758 if test -z $LIBBASE_JAR; then
12759 if test -f /usr/share/java/libbase-1.0.0.jar; then
12760 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12761 elif test -f /usr/share/java/libbase.jar; then
12762 LIBBASE_JAR=/usr/share/java/libbase.jar
12764 AC_MSG_ERROR(libbase.jar replacement not found.)
12766 elif ! test -f $LIBBASE_JAR; then
12767 AC_MSG_ERROR(libbase.jar not found.)
12771 AC_MSG_RESULT([internal])
12772 SYSTEM_JFREEREPORT=
12773 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12777 AC_MSG_RESULT([no])
12778 ENABLE_REPORTBUILDER=
12779 SYSTEM_JFREEREPORT=
12781 AC_SUBST(ENABLE_REPORTBUILDER)
12782 AC_SUBST(SYSTEM_JFREEREPORT)
12784 AC_SUBST(LIBXML_JAR)
12785 AC_SUBST(FLUTE_JAR)
12786 AC_SUBST(JFREEREPORT_JAR)
12787 AC_SUBST(LIBBASE_JAR)
12788 AC_SUBST(LIBLAYOUT_JAR)
12789 AC_SUBST(LIBLOADER_JAR)
12790 AC_SUBST(LIBFORMULA_JAR)
12791 AC_SUBST(LIBREPOSITORY_JAR)
12792 AC_SUBST(LIBFONTS_JAR)
12793 AC_SUBST(LIBSERIALIZER_JAR)
12795 # scripting provider for BeanShell?
12796 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12797 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12798 AC_MSG_RESULT([yes])
12799 ENABLE_SCRIPTING_BEANSHELL=TRUE
12801 dnl ===================================================================
12802 dnl Check for system beanshell
12803 dnl ===================================================================
12804 AC_MSG_CHECKING([which beanshell to use])
12805 if test "$with_system_beanshell" = "yes"; then
12806 AC_MSG_RESULT([external])
12808 if test -z $BSH_JAR; then
12809 BSH_JAR=/usr/share/java/bsh.jar
12811 if ! test -f $BSH_JAR; then
12812 AC_MSG_ERROR(bsh.jar not found.)
12815 AC_MSG_RESULT([internal])
12817 BUILD_TYPE="$BUILD_TYPE BSH"
12820 AC_MSG_RESULT([no])
12821 ENABLE_SCRIPTING_BEANSHELL=
12822 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12824 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12825 AC_SUBST(SYSTEM_BSH)
12828 # scripting provider for JavaScript?
12829 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12830 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12831 AC_MSG_RESULT([yes])
12832 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12834 dnl ===================================================================
12835 dnl Check for system rhino
12836 dnl ===================================================================
12837 AC_MSG_CHECKING([which rhino to use])
12838 if test "$with_system_rhino" = "yes"; then
12839 AC_MSG_RESULT([external])
12841 if test -z $RHINO_JAR; then
12842 RHINO_JAR=/usr/share/java/js.jar
12844 if ! test -f $RHINO_JAR; then
12845 AC_MSG_ERROR(js.jar not found.)
12848 AC_MSG_RESULT([internal])
12850 BUILD_TYPE="$BUILD_TYPE RHINO"
12854 AC_MSG_RESULT([no])
12855 ENABLE_SCRIPTING_JAVASCRIPT=
12856 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12858 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12859 AC_SUBST(SYSTEM_RHINO)
12860 AC_SUBST(RHINO_JAR)
12862 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12863 # paths should be added to library search path. So lets put all 64-bit
12866 case "$host_cpu" in
12867 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64)
12868 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12869 supports_multilib="yes"
12876 dnl ===================================================================
12877 dnl QT5 Integration
12878 dnl ===================================================================
12884 QT5_GOBJECT_CFLAGS=""
12885 QT5_GOBJECT_LIBS=""
12886 QT5_HAVE_GOBJECT=""
12887 QT5_PLATFORMS_SRCDIR=""
12888 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12889 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12890 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12892 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12893 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12895 if test -n "$supports_multilib"; then
12896 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12899 qt5_test_include="QtWidgets/qapplication.h"
12900 if test "$_os" = "Emscripten"; then
12901 qt5_test_library="libQt5Widgets.a"
12903 qt5_test_library="libQt5Widgets.so"
12906 dnl Check for qmake5
12907 if test -n "$QT5DIR"; then
12908 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12910 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12912 if test "$QMAKE5" = "no"; then
12913 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12915 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12916 if test -z "$qmake5_test_ver"; then
12917 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12919 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12920 qt5_minimal_minor="6"
12921 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12922 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12924 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12928 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12929 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12930 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12931 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12933 AC_MSG_CHECKING([for Qt5 headers])
12935 for inc_dir in $qt5_incdirs; do
12936 if test -r "$inc_dir/$qt5_test_include"; then
12937 qt5_incdir="$inc_dir"
12941 AC_MSG_RESULT([$qt5_incdir])
12942 if test "x$qt5_incdir" = "xno"; then
12943 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12945 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12946 AC_LANG_PUSH([C++])
12947 save_CPPFLAGS=$CPPFLAGS
12948 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12949 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12950 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12951 CPPFLAGS=$save_CPPFLAGS
12954 AC_MSG_CHECKING([for Qt5 libraries])
12956 for lib_dir in $qt5_libdirs; do
12957 if test -r "$lib_dir/$qt5_test_library"; then
12958 qt5_libdir="$lib_dir"
12962 AC_MSG_RESULT([$qt5_libdir])
12963 if test "x$qt5_libdir" = "xno"; then
12964 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12967 if test "$_os" = "Emscripten"; then
12968 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12969 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12971 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12972 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12975 EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
12976 if ! test -x "$EMSDK_LLVM_NM"; then
12977 AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
12979 if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
12980 AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
12982 QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
12983 if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
12984 AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
12986 if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
12987 AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
12991 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12992 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12993 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12994 if test "$_os" = "Emscripten"; then
12995 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12998 if test "$USING_X11" = TRUE; then
12999 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
13000 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
13001 QT5_HAVE_XCB_ICCCM=1
13002 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
13004 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)])
13005 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
13007 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13008 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13010 AC_DEFINE(QT5_USING_X11)
13013 dnl Check for Meta Object Compiler
13015 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13016 if test "$MOC5" = "no"; then
13017 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13018 the root of your Qt installation by exporting QT5DIR before running "configure".])
13021 if test "$test_gstreamer_1_0" = yes; then
13022 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13024 AC_DEFINE(QT5_HAVE_GOBJECT)
13026 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13030 AC_SUBST(QT5_CFLAGS)
13033 AC_SUBST(QT5_GOBJECT_CFLAGS)
13034 AC_SUBST(QT5_GOBJECT_LIBS)
13035 AC_SUBST(QT5_HAVE_GOBJECT)
13036 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13038 dnl ===================================================================
13039 dnl QT6 Integration
13040 dnl ===================================================================
13046 QT6_PLATFORMS_SRCDIR=""
13047 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13049 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13050 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13052 if test -n "$supports_multilib"; then
13053 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13056 qt6_test_include="QtWidgets/qapplication.h"
13057 if test "$_os" = "Emscripten"; then
13058 qt6_test_library="libQt6Widgets.a"
13060 qt6_test_library="libQt6Widgets.so"
13063 dnl Check for qmake6
13064 if test -n "$QT6DIR"; then
13065 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13067 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13069 if test "$QMAKE6" = "no"; then
13070 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13072 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13073 if test -z "$qmake6_test_ver"; then
13074 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13076 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13079 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13080 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13081 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13082 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13084 AC_MSG_CHECKING([for Qt6 headers])
13086 for inc_dir in $qt6_incdirs; do
13087 if test -r "$inc_dir/$qt6_test_include"; then
13088 qt6_incdir="$inc_dir"
13092 AC_MSG_RESULT([$qt6_incdir])
13093 if test "x$qt6_incdir" = "xno"; then
13094 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13096 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13097 AC_LANG_PUSH([C++])
13098 save_CPPFLAGS=$CPPFLAGS
13099 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13100 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13101 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13102 CPPFLAGS=$save_CPPFLAGS
13105 AC_MSG_CHECKING([for Qt6 libraries])
13107 for lib_dir in $qt6_libdirs; do
13108 if test -r "$lib_dir/$qt6_test_library"; then
13109 qt6_libdir="$lib_dir"
13113 AC_MSG_RESULT([$qt6_libdir])
13114 if test "x$qt6_libdir" = "xno"; then
13115 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13118 if test "$_os" = "Emscripten"; then
13119 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13120 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13122 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13123 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13127 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13128 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13129 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13130 if test "$_os" = "Emscripten"; then
13131 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13134 if test "$USING_X11" = TRUE; then
13135 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13136 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13137 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13139 AC_DEFINE(QT6_USING_X11)
13142 dnl Check for Meta Object Compiler
13144 for lib_dir in $qt6_libdirs; do
13145 if test -z "$qt6_libexec_dirs"; then
13146 qt6_libexec_dirs="$lib_dir/libexec"
13148 qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13151 AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$qt6_libexec_dirs:$PATH])
13152 if test "$MOC6" = "no"; then
13153 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13154 the root of your Qt installation by exporting QT6DIR before running "configure".])
13157 AC_SUBST(QT6_CFLAGS)
13160 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13162 dnl ===================================================================
13163 dnl KF5 Integration
13164 dnl ===================================================================
13168 KF5_CONFIG="kf5-config"
13169 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13170 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13172 if test "$OS" = "HAIKU"; then
13173 haiku_arch="`echo $RTL_ARCH | tr X x`"
13174 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13175 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13178 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13179 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13180 if test -n "$supports_multilib"; then
13181 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13184 kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13185 kf5_test_library="libKF5KIOFileWidgets.so"
13186 kf5_libdirs="$qt5_libdir $kf5_libdirs"
13188 dnl kf5 KDE4 support compatibility installed
13189 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13190 if test "$KF5_CONFIG" != "no"; then
13191 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13192 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13195 dnl Check for KF5 headers
13196 AC_MSG_CHECKING([for KF5 headers])
13198 for kf5_check in $kf5_incdirs; do
13199 if test -r "$kf5_check/$kf5_test_include"; then
13200 kf5_incdir="$kf5_check/KF5"
13204 AC_MSG_RESULT([$kf5_incdir])
13205 if test "x$kf5_incdir" = "xno"; then
13206 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13209 dnl Check for KF5 libraries
13210 AC_MSG_CHECKING([for KF5 libraries])
13212 for kf5_check in $kf5_libdirs; do
13213 if test -r "$kf5_check/$kf5_test_library"; then
13214 kf5_libdir="$kf5_check"
13219 AC_MSG_RESULT([$kf5_libdir])
13220 if test "x$kf5_libdir" = "xno"; then
13221 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13224 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"
13225 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13226 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13228 if test "$USING_X11" = TRUE; then
13229 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13232 AC_LANG_PUSH([C++])
13233 save_CXXFLAGS=$CXXFLAGS
13234 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13235 AC_MSG_CHECKING([whether KDE is >= 5.0])
13236 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13237 #include <kcoreaddons_version.h>
13239 int main(int argc, char **argv) {
13240 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13243 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13244 CXXFLAGS=$save_CXXFLAGS
13247 AC_SUBST(KF5_CFLAGS)
13250 dnl ===================================================================
13251 dnl Test whether to include Evolution 2 support
13252 dnl ===================================================================
13253 AC_MSG_CHECKING([whether to enable evolution 2 support])
13254 if test "$enable_evolution2" = yes; then
13255 AC_MSG_RESULT([yes])
13256 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13257 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13258 FilterLibs "${GOBJECT_LIBS}"
13259 GOBJECT_LIBS="${filteredlibs}"
13260 ENABLE_EVOAB2="TRUE"
13262 AC_MSG_RESULT([no])
13264 AC_SUBST(ENABLE_EVOAB2)
13265 AC_SUBST(GOBJECT_CFLAGS)
13266 AC_SUBST(GOBJECT_LIBS)
13268 dnl ===================================================================
13269 dnl Test which themes to include
13270 dnl ===================================================================
13271 AC_MSG_CHECKING([which themes to include])
13272 # if none given use default subset of available themes
13273 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13274 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"
13278 if test "x$with_theme" != "xno"; then
13279 for theme in $with_theme; do
13281 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" ;;
13282 default) real_theme=colibre ;;
13283 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13285 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13288 AC_MSG_RESULT([$WITH_THEMES])
13289 AC_SUBST([WITH_THEMES])
13290 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13291 for theme in $with_theme; do
13293 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13298 ###############################################################################
13299 # Extensions checking
13300 ###############################################################################
13301 AC_MSG_CHECKING([for extensions integration])
13302 if test "x$enable_extension_integration" != "xno"; then
13303 WITH_EXTENSION_INTEGRATION=TRUE
13304 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13305 AC_MSG_RESULT([yes, use integration])
13307 WITH_EXTENSION_INTEGRATION=
13308 AC_MSG_RESULT([no, do not integrate])
13310 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13312 dnl Should any extra extensions be included?
13313 dnl There are standalone tests for each of these below.
13314 WITH_EXTRA_EXTENSIONS=
13315 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13317 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13318 if test "x$with_java" != "xno"; then
13319 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13322 AC_MSG_CHECKING([whether to build opens___.ttf])
13323 if test "$enable_build_opensymbol" = "yes"; then
13324 AC_MSG_RESULT([yes])
13325 AC_PATH_PROG(FONTFORGE, fontforge)
13326 if test -z "$FONTFORGE"; then
13327 AC_MSG_ERROR([fontforge not installed])
13330 AC_MSG_RESULT([no])
13331 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13333 AC_SUBST(FONTFORGE)
13335 dnl ===================================================================
13336 dnl Test whether to include fonts
13337 dnl ===================================================================
13338 AC_MSG_CHECKING([whether to include third-party fonts])
13339 if test "$with_fonts" != "no"; then
13340 AC_MSG_RESULT([yes])
13342 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13343 AC_DEFINE(HAVE_MORE_FONTS)
13345 AC_MSG_RESULT([no])
13347 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13349 AC_SUBST(WITH_FONTS)
13352 dnl ===================================================================
13353 dnl Test whether to enable online update service
13354 dnl ===================================================================
13355 AC_MSG_CHECKING([whether to enable online update])
13356 ENABLE_ONLINE_UPDATE=
13357 ENABLE_ONLINE_UPDATE_MAR=
13359 if test "$enable_online_update" = ""; then
13360 AC_MSG_RESULT([no])
13362 if test "$enable_online_update" = "mar"; then
13363 AC_MSG_RESULT([yes - MAR-based online update])
13364 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13365 if test "$with_update_config" = ""; then
13366 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13368 UPDATE_CONFIG="$with_update_config"
13369 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13370 elif test "$enable_online_update" = "yes"; then
13371 AC_MSG_RESULT([yes])
13372 ENABLE_ONLINE_UPDATE="TRUE"
13374 AC_MSG_RESULT([no])
13377 AC_SUBST(ENABLE_ONLINE_UPDATE)
13378 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13379 AC_SUBST(UPDATE_CONFIG)
13382 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13383 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13384 if test "x$with_privacy_policy_url" = "xundefined"; then
13385 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13388 AC_SUBST(PRIVACY_POLICY_URL)
13389 dnl ===================================================================
13390 dnl Test whether we need bzip2
13391 dnl ===================================================================
13393 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13394 AC_MSG_CHECKING([whether to use system bzip2])
13395 if test "$with_system_bzip2" = yes; then
13397 AC_MSG_RESULT([yes])
13398 PKG_CHECK_MODULES(BZIP2, bzip2)
13399 FilterLibs "${BZIP2_LIBS}"
13400 BZIP2_LIBS="${filteredlibs}"
13402 AC_MSG_RESULT([no])
13403 BUILD_TYPE="$BUILD_TYPE BZIP2"
13406 AC_SUBST(SYSTEM_BZIP2)
13407 AC_SUBST(BZIP2_CFLAGS)
13408 AC_SUBST(BZIP2_LIBS)
13410 dnl ===================================================================
13411 dnl Test whether to enable extension update
13412 dnl ===================================================================
13413 AC_MSG_CHECKING([whether to enable extension update])
13414 ENABLE_EXTENSION_UPDATE=
13415 if test "x$enable_extension_update" = "xno"; then
13416 AC_MSG_RESULT([no])
13418 AC_MSG_RESULT([yes])
13419 ENABLE_EXTENSION_UPDATE="TRUE"
13420 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13421 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13423 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13426 dnl ===================================================================
13427 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13428 dnl ===================================================================
13429 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13430 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13431 AC_MSG_RESULT([no])
13434 AC_MSG_RESULT([yes])
13435 ENABLE_SILENT_MSI=TRUE
13436 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13438 AC_SUBST(ENABLE_SILENT_MSI)
13440 AC_MSG_CHECKING([whether and how to use Xinerama])
13441 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13442 if test "$x_libraries" = "default_x_libraries"; then
13443 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13444 if test "x$XINERAMALIB" = x; then
13445 XINERAMALIB="/usr/lib"
13448 XINERAMALIB="$x_libraries"
13450 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13451 # we have both versions, let the user decide but use the dynamic one
13454 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13455 XINERAMA_LINK=dynamic
13457 XINERAMA_LINK=static
13459 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13460 # we have only the dynamic version
13462 XINERAMA_LINK=dynamic
13463 elif test -e "$XINERAMALIB/libXinerama.a"; then
13465 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13467 XINERAMA_LINK=static
13477 if test "$USE_XINERAMA" = "TRUE"; then
13478 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13479 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13480 [AC_MSG_ERROR(Xinerama header not found.)], [])
13481 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13482 if test "x$XEXTLIB" = x; then
13483 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13485 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13486 if test "$_os" = "FreeBSD"; then
13487 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13489 if test "$_os" = "Linux"; then
13490 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13492 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13493 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13495 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13500 AC_MSG_RESULT([no])
13502 AC_SUBST(USE_XINERAMA)
13503 AC_SUBST(XINERAMA_LINK)
13505 dnl ===================================================================
13506 dnl Test whether to build cairo or rely on the system version
13507 dnl ===================================================================
13509 if test "$test_cairo" = "yes"; then
13510 AC_MSG_CHECKING([whether to use the system cairo])
13512 : ${with_system_cairo:=$with_system_libs}
13513 if test "$with_system_cairo" = "yes"; then
13515 AC_MSG_RESULT([yes])
13517 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13518 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13519 FilterLibs "${CAIRO_LIBS}"
13520 CAIRO_LIBS="${filteredlibs}"
13522 if test "$test_xrender" = "yes"; then
13523 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13525 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13526 #ifdef PictStandardA8
13530 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13535 AC_MSG_RESULT([no])
13536 BUILD_TYPE="$BUILD_TYPE CAIRO"
13539 if test "$enable_cairo_canvas" != no; then
13540 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13541 ENABLE_CAIRO_CANVAS=TRUE
13545 AC_SUBST(CAIRO_CFLAGS)
13546 AC_SUBST(CAIRO_LIBS)
13547 AC_SUBST(ENABLE_CAIRO_CANVAS)
13548 AC_SUBST(SYSTEM_CAIRO)
13550 dnl ===================================================================
13551 dnl Test whether to use avahi
13552 dnl ===================================================================
13553 if test "$_os" = "WINNT"; then
13554 # Windows uses bundled mDNSResponder
13555 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13556 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13557 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13558 [ENABLE_AVAHI="TRUE"])
13559 AC_DEFINE(HAVE_FEATURE_AVAHI)
13560 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13561 FilterLibs "${AVAHI_LIBS}"
13562 AVAHI_LIBS="${filteredlibs}"
13565 AC_SUBST(ENABLE_AVAHI)
13566 AC_SUBST(AVAHI_CFLAGS)
13567 AC_SUBST(AVAHI_LIBS)
13569 dnl ===================================================================
13570 dnl Test whether to use liblangtag
13571 dnl ===================================================================
13573 AC_MSG_CHECKING([whether to use system liblangtag])
13574 if test "$with_system_liblangtag" = yes; then
13575 SYSTEM_LIBLANGTAG=TRUE
13576 AC_MSG_RESULT([yes])
13577 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13578 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13579 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13580 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13581 FilterLibs "${LIBLANGTAG_LIBS}"
13582 LIBLANGTAG_LIBS="${filteredlibs}"
13585 AC_MSG_RESULT([no])
13586 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13587 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13588 if test "$COM" = "MSC"; then
13589 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13591 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13594 AC_SUBST(SYSTEM_LIBLANGTAG)
13595 AC_SUBST(LIBLANGTAG_CFLAGS)
13596 AC_SUBST(LIBLANGTAG_LIBS)
13598 dnl ===================================================================
13599 dnl Test whether to build libpng or rely on the system version
13600 dnl ===================================================================
13602 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13603 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13604 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13606 dnl ===================================================================
13607 dnl Test whether to build libtiff or rely on the system version
13608 dnl ===================================================================
13610 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13612 dnl ===================================================================
13613 dnl Test whether to build libwebp or rely on the system version
13614 dnl ===================================================================
13616 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13618 dnl ===================================================================
13619 dnl Check for runtime JVM search path
13620 dnl ===================================================================
13621 if test "$ENABLE_JAVA" != ""; then
13622 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13623 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13624 AC_MSG_RESULT([yes])
13625 if ! test -d "$with_jvm_path"; then
13626 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13628 if ! test -d "$with_jvm_path"jvm; then
13629 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13631 JVM_ONE_PATH_CHECK="$with_jvm_path"
13632 AC_SUBST(JVM_ONE_PATH_CHECK)
13634 AC_MSG_RESULT([no])
13638 dnl ===================================================================
13639 dnl Test for the presence of Ant and that it works
13640 dnl ===================================================================
13642 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13643 ANT_HOME=; export ANT_HOME
13644 WITH_ANT_HOME=; export WITH_ANT_HOME
13645 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13646 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13647 if test "$_os" = "WINNT"; then
13648 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13650 with_ant_home="$LODE_HOME/opt/ant"
13652 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13653 with_ant_home="$LODE_HOME/opt/ant"
13656 if test -z "$with_ant_home"; then
13657 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13659 if test "$_os" = "WINNT"; then
13660 # AC_PATH_PROGS needs unix path
13661 with_ant_home=`cygpath -u "$with_ant_home"`
13663 AbsolutePath "$with_ant_home"
13664 with_ant_home=$absolute_path
13665 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13666 WITH_ANT_HOME=$with_ant_home
13667 ANT_HOME=$with_ant_home
13670 if test -z "$ANT"; then
13671 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13673 # resolve relative or absolute symlink
13674 while test -h "$ANT"; do
13676 a_basename=`basename "$ANT"`
13677 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13678 cd "`dirname "$ANT"`"
13679 cd "`dirname "$a_script"`"
13680 ANT="`pwd`"/"`basename "$a_script"`"
13684 AC_MSG_CHECKING([if $ANT works])
13685 mkdir -p conftest.dir
13688 cat > conftest.java << EOF
13689 public class conftest {
13690 int testmethod(int a, int b) {
13696 cat > conftest.xml << EOF
13697 <project name="conftest" default="conftest">
13698 <target name="conftest">
13699 <javac srcdir="." includes="conftest.java">
13705 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13706 if test $? = 0 -a -f ./conftest.class; then
13707 AC_MSG_RESULT([Ant works])
13708 if test -z "$WITH_ANT_HOME"; then
13709 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13710 if test -z "$ANT_HOME"; then
13711 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13714 ANT_HOME="$WITH_ANT_HOME"
13717 echo "configure: Ant test failed" >&5
13718 cat conftest.java >&5
13719 cat conftest.xml >&5
13720 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13723 rm -fr conftest.dir
13725 if test -z "$ANT_HOME"; then
13726 ANT_HOME="NO_ANT_HOME"
13728 PathFormat "$ANT_HOME"
13729 ANT_HOME="$formatted_path"
13731 ANT="$formatted_path"
13734 dnl Checking for ant.jar
13735 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13736 AC_MSG_CHECKING([Ant lib directory])
13737 if test -f $ANT_HOME/lib/ant.jar; then
13738 ANT_LIB="$ANT_HOME/lib"
13740 if test -f $ANT_HOME/ant.jar; then
13741 ANT_LIB="$ANT_HOME"
13743 if test -f /usr/share/java/ant.jar; then
13744 ANT_LIB=/usr/share/java
13746 if test -f /usr/share/ant-core/lib/ant.jar; then
13747 ANT_LIB=/usr/share/ant-core/lib
13749 if test -f $ANT_HOME/lib/ant/ant.jar; then
13750 ANT_LIB="$ANT_HOME/lib/ant"
13752 if test -f /usr/share/lib/ant/ant.jar; then
13753 ANT_LIB=/usr/share/lib/ant
13755 AC_MSG_ERROR([Ant libraries not found!])
13762 PathFormat "$ANT_LIB"
13763 ANT_LIB="$formatted_path"
13764 AC_MSG_RESULT([Ant lib directory found.])
13768 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13770 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13771 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13772 ant_version_major=`echo $ant_version | cut -d. -f1`
13773 ant_version_minor=`echo $ant_version | cut -d. -f2`
13774 echo "configure: ant_version $ant_version " >&5
13775 echo "configure: ant_version_major $ant_version_major " >&5
13776 echo "configure: ant_version_minor $ant_version_minor " >&5
13777 if test "$ant_version_major" -ge "2"; then
13778 AC_MSG_RESULT([yes, $ant_version])
13779 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13780 AC_MSG_RESULT([yes, $ant_version])
13782 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13785 rm -f conftest* core core.* *.core
13793 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13794 AC_MSG_CHECKING([for JUnit 4])
13795 if test "$with_junit" = "yes"; then
13796 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13797 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13798 elif test -e /usr/share/java/junit4.jar; then
13799 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13801 if test -e /usr/share/lib/java/junit.jar; then
13802 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13804 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13808 OOO_JUNIT_JAR=$with_junit
13810 if test "$_os" = "WINNT"; then
13811 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13813 printf 'import org.junit.Before;' > conftest.java
13814 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13815 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13818 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13819 specify its pathname via --with-junit=..., or disable it via --without-junit])
13821 rm -f conftest.class conftest.java
13822 if test $OOO_JUNIT_JAR != ""; then
13823 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13826 AC_MSG_CHECKING([for included Hamcrest])
13827 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13828 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13829 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13831 AC_MSG_RESULT([Not included])
13832 AC_MSG_CHECKING([for standalone hamcrest jar.])
13833 if test "$with_hamcrest" = "yes"; then
13834 if test -e /usr/share/lib/java/hamcrest.jar; then
13835 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13836 elif test -e /usr/share/java/hamcrest/core.jar; then
13837 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13838 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13839 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13841 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13844 HAMCREST_JAR=$with_hamcrest
13846 if test "$_os" = "WINNT"; then
13847 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13849 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13850 AC_MSG_RESULT([$HAMCREST_JAR])
13852 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),
13853 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13856 rm -f conftest.class conftest.java
13858 AC_SUBST(OOO_JUNIT_JAR)
13859 AC_SUBST(HAMCREST_JAR)
13865 # check for wget and curl
13870 if test "$enable_fetch_external" != "no"; then
13872 CURL=`which curl 2>/dev/null`
13874 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13876 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13877 if test $? -eq 0; then
13883 if test -z "$WGET" -a -z "$CURL"; then
13884 AC_MSG_ERROR([neither wget nor curl found!])
13893 # check for sha256sum
13897 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13898 eval "$i -a 256 --version" > /dev/null 2>&1
13900 if test $ret -eq 0; then
13901 SHA256SUM="$i -a 256"
13906 if test -z "$SHA256SUM"; then
13907 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13908 eval "$i --version" > /dev/null 2>&1
13910 if test $ret -eq 0; then
13917 if test -z "$SHA256SUM"; then
13918 AC_MSG_ERROR([no sha256sum found!])
13921 AC_SUBST(SHA256SUM)
13923 dnl ===================================================================
13924 dnl Dealing with l10n options
13925 dnl ===================================================================
13926 AC_MSG_CHECKING([which languages to be built])
13927 # get list of all languages
13928 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13929 # the sed command does the following:
13930 # + if a line ends with a backslash, append the next line to it
13931 # + adds " on the beginning of the value (after =)
13932 # + adds " at the end of the value
13933 # + removes en-US; we want to put it on the beginning
13934 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13935 [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)]
13936 ALL_LANGS="en-US $completelangiso"
13937 # check the configured localizations
13938 WITH_LANG="$with_lang"
13940 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13941 # (Norwegian is "nb" and "nn".)
13942 if test "$WITH_LANG" = "no"; then
13946 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13947 AC_MSG_RESULT([en-US])
13949 AC_MSG_RESULT([$WITH_LANG])
13950 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13951 if test -z "$MSGFMT"; then
13952 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13953 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13954 elif test -x "/opt/lo/bin/msgfmt"; then
13955 MSGFMT="/opt/lo/bin/msgfmt"
13957 AC_CHECK_PROGS(MSGFMT, [msgfmt])
13958 if test -z "$MSGFMT"; then
13959 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13963 if test -z "$MSGUNIQ"; then
13964 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13965 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13966 elif test -x "/opt/lo/bin/msguniq"; then
13967 MSGUNIQ="/opt/lo/bin/msguniq"
13969 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13970 if test -z "$MSGUNIQ"; then
13971 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13978 # check that the list is valid
13979 for lang in $WITH_LANG; do
13980 test "$lang" = "ALL" && continue
13981 # need to check for the exact string, so add space before and after the list of all languages
13982 for vl in $ALL_LANGS; do
13983 if test "$vl" = "$lang"; then
13987 if test "$vl" != "$lang"; then
13988 # if you're reading this - you prolly quoted your languages remove the quotes ...
13989 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13992 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13993 echo $WITH_LANG | grep -q en-US
13994 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13996 # list with substituted ALL
13997 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13998 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13999 test "$WITH_LANG" = "en-US" && WITH_LANG=
14000 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
14001 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
14002 ALL_LANGS=`echo $ALL_LANGS qtz`
14004 AC_SUBST(ALL_LANGS)
14005 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14006 AC_SUBST(WITH_LANG)
14007 AC_SUBST(WITH_LANG_LIST)
14008 AC_SUBST(GIT_NEEDED_SUBMODULES)
14010 WITH_POOR_HELP_LOCALIZATIONS=
14011 if test -d "$SRC_ROOT/translations/source"; then
14012 for l in `ls -1 $SRC_ROOT/translations/source`; do
14013 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14014 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14018 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14020 if test -n "$with_locales" -a "$with_locales" != ALL; then
14021 WITH_LOCALES="$with_locales"
14023 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14024 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14025 # config_host/config_locales.h.in
14026 for locale in $WITH_LOCALES; do
14029 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14033 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14036 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14041 AC_DEFINE(WITH_LOCALE_ALL)
14043 AC_SUBST(WITH_LOCALES)
14045 dnl git submodule update --reference
14046 dnl ===================================================================
14047 if test -n "${GIT_REFERENCE_SRC}"; then
14048 for repo in ${GIT_NEEDED_SUBMODULES}; do
14049 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14050 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14054 AC_SUBST(GIT_REFERENCE_SRC)
14056 dnl git submodules linked dirs
14057 dnl ===================================================================
14058 if test -n "${GIT_LINK_SRC}"; then
14059 for repo in ${GIT_NEEDED_SUBMODULES}; do
14060 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14061 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14065 AC_SUBST(GIT_LINK_SRC)
14068 dnl ===================================================================
14069 AC_MSG_CHECKING([for alternative branding images directory])
14070 # initialize mapped arrays
14071 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14072 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14074 if test -z "$with_branding" -o "$with_branding" = "no"; then
14075 AC_MSG_RESULT([none])
14076 DEFAULT_BRAND_IMAGES="$brand_files"
14078 if ! test -d $with_branding ; then
14079 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14081 AC_MSG_RESULT([$with_branding])
14082 CUSTOM_BRAND_DIR="$with_branding"
14083 for lfile in $brand_files
14085 if ! test -f $with_branding/$lfile ; then
14086 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14087 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14089 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14092 check_for_progress="yes"
14095 AC_SUBST([BRAND_INTRO_IMAGES])
14096 AC_SUBST([CUSTOM_BRAND_DIR])
14097 AC_SUBST([CUSTOM_BRAND_IMAGES])
14098 AC_SUBST([DEFAULT_BRAND_IMAGES])
14101 AC_MSG_CHECKING([for 'intro' progress settings])
14105 PROGRESSFRAMECOLOR=
14107 PROGRESSTEXTBASELINE=
14109 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14110 source "$with_branding/progress.conf"
14111 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14113 AC_MSG_RESULT([none])
14116 AC_SUBST(PROGRESSBARCOLOR)
14117 AC_SUBST(PROGRESSSIZE)
14118 AC_SUBST(PROGRESSPOSITION)
14119 AC_SUBST(PROGRESSFRAMECOLOR)
14120 AC_SUBST(PROGRESSTEXTCOLOR)
14121 AC_SUBST(PROGRESSTEXTBASELINE)
14124 dnl ===================================================================
14125 dnl Custom build version
14126 dnl ===================================================================
14127 AC_MSG_CHECKING([for extra build ID])
14128 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14129 EXTRA_BUILDID="$with_extra_buildid"
14131 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14132 if test -n "$EXTRA_BUILDID" ; then
14133 AC_MSG_RESULT([$EXTRA_BUILDID])
14135 AC_MSG_RESULT([not set])
14137 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14140 AC_MSG_CHECKING([for vendor])
14141 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14142 OOO_VENDOR="$USERNAME"
14144 if test -z "$OOO_VENDOR"; then
14148 if test -z "$OOO_VENDOR"; then
14149 OOO_VENDOR="`id -u -n`"
14152 AC_MSG_RESULT([not set, using $OOO_VENDOR])
14154 OOO_VENDOR="$with_vendor"
14155 AC_MSG_RESULT([$OOO_VENDOR])
14157 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14158 AC_SUBST(OOO_VENDOR)
14160 if test "$_os" = "Android" ; then
14161 ANDROID_PACKAGE_NAME=
14162 AC_MSG_CHECKING([for Android package name])
14163 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14164 if test -n "$ENABLE_DEBUG"; then
14165 # Default to the package name that makes ndk-gdb happy.
14166 ANDROID_PACKAGE_NAME="org.libreoffice"
14168 ANDROID_PACKAGE_NAME="org.example.libreoffice"
14171 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14173 ANDROID_PACKAGE_NAME="$with_android_package_name"
14174 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14176 AC_SUBST(ANDROID_PACKAGE_NAME)
14179 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14180 if test "$with_compat_oowrappers" = "yes"; then
14181 WITH_COMPAT_OOWRAPPERS=TRUE
14184 WITH_COMPAT_OOWRAPPERS=
14187 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14189 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14190 AC_MSG_CHECKING([for install dirname])
14191 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14192 INSTALLDIRNAME="$with_install_dirname"
14194 AC_MSG_RESULT([$INSTALLDIRNAME])
14195 AC_SUBST(INSTALLDIRNAME)
14197 AC_MSG_CHECKING([for prefix])
14198 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14199 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14200 PREFIXDIR="$prefix"
14201 AC_MSG_RESULT([$PREFIXDIR])
14202 AC_SUBST(PREFIXDIR)
14204 LIBDIR=[$(eval echo $(eval echo $libdir))]
14207 DATADIR=[$(eval echo $(eval echo $datadir))]
14210 MANDIR=[$(eval echo $(eval echo $mandir))]
14213 DOCDIR=[$(eval echo $(eval echo $docdir))]
14216 BINDIR=[$(eval echo $(eval echo $bindir))]
14219 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14220 AC_SUBST(INSTALLDIR)
14222 TESTINSTALLDIR="${BUILDDIR}/test-install"
14223 AC_SUBST(TESTINSTALLDIR)
14226 # ===================================================================
14227 # OAuth2 id and secrets
14228 # ===================================================================
14230 AC_MSG_CHECKING([for Google Drive client id and secret])
14231 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14232 AC_MSG_RESULT([not set])
14233 GDRIVE_CLIENT_ID="\"\""
14234 GDRIVE_CLIENT_SECRET="\"\""
14236 AC_MSG_RESULT([set])
14237 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14238 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14240 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14241 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14243 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14244 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14245 AC_MSG_RESULT([not set])
14246 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14247 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14249 AC_MSG_RESULT([set])
14250 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14251 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14253 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14254 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14256 AC_MSG_CHECKING([for OneDrive client id and secret])
14257 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14258 AC_MSG_RESULT([not set])
14259 ONEDRIVE_CLIENT_ID="\"\""
14260 ONEDRIVE_CLIENT_SECRET="\"\""
14262 AC_MSG_RESULT([set])
14263 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14264 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14266 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14267 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14270 dnl ===================================================================
14271 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14272 dnl --enable-dependency-tracking configure option
14273 dnl ===================================================================
14274 AC_MSG_CHECKING([whether to enable dependency tracking])
14275 if test "$enable_dependency_tracking" = "no"; then
14277 AC_MSG_RESULT([no])
14279 AC_MSG_RESULT([yes])
14283 dnl ===================================================================
14284 dnl Number of CPUs to use during the build
14285 dnl ===================================================================
14286 AC_MSG_CHECKING([for number of processors to use])
14287 # plain --with-parallelism is just the default
14288 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14289 if test "$with_parallelism" = "no"; then
14292 PARALLELISM=$with_parallelism
14295 if test "$enable_icecream" = "yes"; then
14300 Darwin|FreeBSD|NetBSD|OpenBSD)
14301 PARALLELISM=`sysctl -n hw.ncpu`
14305 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14307 # what else than above does profit here *and* has /proc?
14309 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14313 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14314 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14318 if test $PARALLELISM -eq 0; then
14319 AC_MSG_RESULT([explicit make -j option needed])
14321 AC_MSG_RESULT([$PARALLELISM])
14323 AC_SUBST(PARALLELISM)
14326 # Set up ILIB for MSVC build
14329 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14331 if test -n "$JAVA_HOME"; then
14332 ILIB="$ILIB;$JAVA_HOME/lib"
14335 PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14336 ILIB="$ILIB;$formatted_path"
14337 ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14338 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14339 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14340 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14341 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14342 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14344 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14345 ucrtlibpath_formatted=$formatted_path
14346 ILIB="$ILIB;$ucrtlibpath_formatted"
14347 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14348 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14349 PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14350 ILIB="$ILIB;$formatted_path"
14352 PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14353 ILIB="$ILIB;$formatted_path"
14356 if test "$cross_compiling" != "yes"; then
14357 ILIB_FOR_BUILD="$ILIB"
14361 AC_SUBST(ILIB_FOR_BUILD)
14363 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14364 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14365 dnl from consteval constructor initializing const variable",
14366 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14367 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14368 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14369 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'",
14370 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14371 dnl constructor in ternary expression (/std:c++latest)", or
14372 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14373 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14374 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14375 dnl && "Ptr must be a pointer to Val type!"' failed.":
14376 AC_LANG_PUSH([C++])
14378 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14379 CXX="env LIB=$ILIB $CXX"
14381 save_CXXFLAGS=$CXXFLAGS
14382 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14383 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14385 consteval S() { i = 1; }
14390 struct S1 { consteval S1(int) {} };
14405 struct S4 { consteval S4() = default; };
14406 void f4(bool b) { b ? S4() : S4(); }
14409 consteval S5() { c = 0; }
14410 char * f() { return &c; }
14416 auto s5 = S5().f();
14418 return (s.i == 1) ? 0 : 1;
14420 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14421 AC_MSG_RESULT([yes])
14422 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14424 CXXFLAGS=$save_CXXFLAGS
14427 # ===================================================================
14428 # Creating bigger shared library to link against
14429 # ===================================================================
14430 AC_MSG_CHECKING([whether to create huge library])
14433 if test $_os = iOS -o $_os = Android; then
14434 # Never any point in mergelibs for these as we build just static
14435 # libraries anyway...
14436 enable_mergelibs=no
14439 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14440 if test $_os != Linux -a $_os != WINNT; then
14441 add_warning "--enable-mergelibs is not tested for this platform"
14444 AC_MSG_RESULT([yes])
14445 AC_DEFINE(ENABLE_MERGELIBS)
14447 AC_MSG_RESULT([no])
14449 AC_SUBST([MERGELIBS])
14451 dnl ===================================================================
14452 dnl icerun is a wrapper that stops us spawning tens of processes
14453 dnl locally - for tools that can't be executed on the compile cluster
14454 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14455 dnl ===================================================================
14456 AC_MSG_CHECKING([whether to use icerun wrapper])
14458 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14459 ICECREAM_RUN=icerun
14460 AC_MSG_RESULT([yes])
14462 AC_MSG_RESULT([no])
14464 AC_SUBST(ICECREAM_RUN)
14466 dnl ===================================================================
14467 dnl Setup the ICECC_VERSION for the build the same way it was set for
14468 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14469 dnl ===================================================================
14470 x_ICECC_VERSION=[\#]
14471 if test -n "$ICECC_VERSION" ; then
14474 AC_SUBST(x_ICECC_VERSION)
14475 AC_SUBST(ICECC_VERSION)
14477 dnl ===================================================================
14479 AC_MSG_CHECKING([MPL subset])
14482 if test "$enable_mpl_subset" = "yes"; then
14484 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14486 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14489 if test "$warn_report" = "true"; then
14490 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14492 if test "x$enable_postgresql_sdbc" != "xno"; then
14493 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14495 if test "$enable_lotuswordpro" = "yes"; then
14496 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14498 if test -n "$ENABLE_POPPLER"; then
14499 if test "x$SYSTEM_POPPLER" = "x"; then
14500 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14503 # cf. m4/libo_check_extension.m4
14504 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14505 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14507 for theme in $WITH_THEMES; do
14509 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14510 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14515 ENABLE_OPENGL_TRANSITIONS=
14517 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14518 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14522 AC_DEFINE(MPL_HAVE_SUBSET)
14523 AC_MSG_RESULT([only])
14525 AC_MSG_RESULT([no restrictions])
14527 AC_SUBST(MPL_SUBSET)
14529 dnl ===================================================================
14531 AC_MSG_CHECKING([formula logger])
14532 ENABLE_FORMULA_LOGGER=
14534 if test "x$enable_formula_logger" = "xyes"; then
14535 AC_MSG_RESULT([yes])
14536 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14537 ENABLE_FORMULA_LOGGER=TRUE
14538 elif test -n "$ENABLE_DBGUTIL" ; then
14539 AC_MSG_RESULT([yes])
14540 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14541 ENABLE_FORMULA_LOGGER=TRUE
14543 AC_MSG_RESULT([no])
14546 AC_SUBST(ENABLE_FORMULA_LOGGER)
14548 dnl ===================================================================
14549 dnl Checking for active Antivirus software.
14550 dnl ===================================================================
14552 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14553 AC_MSG_CHECKING([for active Antivirus software])
14554 PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14555 ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14556 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14557 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14558 AC_MSG_RESULT([found])
14559 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14560 echo $EICAR_STRING > $SRC_ROOT/eicar
14561 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14563 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14564 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14566 echo $EICAR_STRING > $BUILDDIR/eicar
14567 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14569 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14570 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14572 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"
14574 AC_MSG_RESULT([not found])
14577 AC_MSG_RESULT([n/a])
14581 dnl ===================================================================
14582 dnl Setting up the environment.
14583 dnl ===================================================================
14584 AC_MSG_NOTICE([setting up the build environment variables...])
14588 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
14589 if test -d "$COMPATH/atlmfc/lib/spectre"; then
14590 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14591 ATL_INCLUDE="$COMPATH/atlmfc/include"
14592 elif test -d "$COMPATH/atlmfc/lib"; then
14593 ATL_LIB="$COMPATH/atlmfc/lib"
14594 ATL_INCLUDE="$COMPATH/atlmfc/include"
14596 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14597 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14599 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14600 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14601 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14604 if test "$build_os" = "cygwin"; then
14605 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14606 PathFormat "/usr/bin/find.exe"
14607 FIND="$formatted_path"
14608 PathFormat "/usr/bin/sort.exe"
14609 SORT="$formatted_path"
14610 PathFormat "/usr/bin/grep.exe"
14611 WIN_GREP="$formatted_path"
14612 PathFormat "/usr/bin/ls.exe"
14613 WIN_LS="$formatted_path"
14614 PathFormat "/usr/bin/touch.exe"
14615 WIN_TOUCH="$formatted_path"
14621 AC_SUBST(ATL_INCLUDE)
14627 AC_SUBST(WIN_TOUCH)
14629 AC_SUBST(BUILD_TYPE)
14634 PERL="$formatted_path"
14637 if test -n "$TMPDIR"; then
14638 TEMP_DIRECTORY="$TMPDIR"
14640 TEMP_DIRECTORY="/tmp"
14642 if test "$build_os" = "cygwin"; then
14643 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14645 AC_SUBST(TEMP_DIRECTORY)
14647 # setup the PATH for the environment
14648 if test -n "$LO_PATH_FOR_BUILD"; then
14649 LO_PATH="$LO_PATH_FOR_BUILD"
14652 pathmunge "$MSVC_HOST_PATH" "before"
14660 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14661 if test "$ENABLE_JAVA" != ""; then
14662 pathmunge "$JAVA_HOME/bin" "after"
14667 # Win32 make needs native paths
14668 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14669 LO_PATH=`cygpath -p -m "$PATH"`
14671 if test "$WIN_BUILD_ARCH" = "x64"; then
14672 # needed for msi packaging
14673 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14675 # .NET 4.6 and higher don't have bin directory
14676 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14677 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14679 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14680 pathmunge "$CSC_PATH" "before"
14681 pathmunge "$MIDL_PATH" "before"
14682 pathmunge "$AL_PATH" "before"
14683 pathmunge "$MSVC_MULTI_PATH" "before"
14684 pathmunge "$MSVC_BUILD_PATH" "before"
14685 if test -n "$MSBUILD_PATH" ; then
14686 pathmunge "$MSBUILD_PATH" "before"
14688 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14689 if test "$ENABLE_JAVA" != ""; then
14690 if test -d "$JAVA_HOME/jre/bin/client"; then
14691 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14693 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14694 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14696 pathmunge "$JAVA_HOME/bin" "before"
14698 pathmunge "$MSVC_HOST_PATH" "before"
14702 pathmunge "/usr/css/bin" "before"
14703 if test "$ENABLE_JAVA" != ""; then
14704 pathmunge "$JAVA_HOME/bin" "after"
14712 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14713 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14714 x_LO_ELFCHECK_ALLOWLIST=
14716 x_LO_ELFCHECK_ALLOWLIST=[\#]
14718 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14719 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14723 # Generate a configuration sha256 we can use for deps
14724 if test -f config_host.mk; then
14725 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14727 if test -f config_host_lang.mk; then
14728 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14731 CFLAGS=$my_original_CFLAGS
14732 CXXFLAGS=$my_original_CXXFLAGS
14733 CPPFLAGS=$my_original_CPPFLAGS
14735 AC_CONFIG_LINKS([include:include])
14737 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14738 # BUILD platform configuration] - otherwise breaks cross building
14739 AC_CONFIG_FILES([config_host.mk
14740 config_host_lang.mk
14743 bin/bffvalidator.sh
14744 bin/odfvalidator.sh
14746 hardened_runtime.xcent
14747 instsetoo_native/util/openoffice.lst
14748 sysui/desktop/macosx/Info.plist
14749 vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14750 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14751 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14752 AC_CONFIG_HEADERS([config_host/config_clang.h])
14753 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14754 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14755 AC_CONFIG_HEADERS([config_host/config_eot.h])
14756 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14757 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14758 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14759 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14760 AC_CONFIG_HEADERS([config_host/config_features.h])
14761 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14762 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14763 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14764 AC_CONFIG_HEADERS([config_host/config_folders.h])
14765 AC_CONFIG_HEADERS([config_host/config_fonts.h])
14766 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14767 AC_CONFIG_HEADERS([config_host/config_gio.h])
14768 AC_CONFIG_HEADERS([config_host/config_global.h])
14769 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14770 AC_CONFIG_HEADERS([config_host/config_java.h])
14771 AC_CONFIG_HEADERS([config_host/config_langs.h])
14772 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14773 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14774 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14775 AC_CONFIG_HEADERS([config_host/config_locales.h])
14776 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14777 AC_CONFIG_HEADERS([config_host/config_oox.h])
14778 AC_CONFIG_HEADERS([config_host/config_options.h])
14779 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14780 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14781 AC_CONFIG_HEADERS([config_host/config_skia.h])
14782 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14783 AC_CONFIG_HEADERS([config_host/config_validation.h])
14784 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14785 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14786 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14787 AC_CONFIG_HEADERS([config_host/config_version.h])
14788 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14789 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14790 AC_CONFIG_HEADERS([config_host/config_python.h])
14791 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14792 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
14793 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14796 if test "$CROSS_COMPILING" = TRUE; then
14797 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14800 # touch the config timestamp file
14801 if test ! -f config_host.mk.stamp; then
14802 echo > config_host.mk.stamp
14803 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14804 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14806 echo > config_host.mk.stamp
14809 # touch the config lang timestamp file
14810 if test ! -f config_host_lang.mk.stamp; then
14811 echo > config_host_lang.mk.stamp
14812 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14813 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14815 echo > config_host_lang.mk.stamp
14819 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14820 -a "$build_os" = "cygwin"; then
14823 ****************************************************************************
14825 Your make version is known to be horribly slow, and hard to debug
14826 problems with. To get a reasonably functional make please do:
14828 to install a pre-compiled binary make for Win32
14830 mkdir -p /opt/lo/bin
14832 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14833 cp make-4.2.1-msvc.exe make
14836 to install from source:
14837 place yourself in a working directory of you choice.
14839 git clone git://git.savannah.gnu.org/make.git
14841 [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"]
14842 set PATH=%PATH%;C:\Cygwin\bin
14843 [or Cygwin64, if that is what you have]
14844 cd path-to-make-repo-you-cloned-above
14845 build_w32.bat --without-guile
14847 should result in a WinRel/gnumake.exe.
14848 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14850 Then re-run autogen.sh
14852 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14853 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14856 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14857 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14863 ****************************************************************************
14865 To show information on various make targets and make flags, run:
14868 To just build, run:
14873 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14875 After the build has finished successfully, you can immediately run what you built using the command:
14878 if test $_os = Darwin; then
14879 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14881 echo instdir/program/soffice
14885 If you want to run the unit tests, run:
14891 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14892 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14893 cat "$WARNINGS_FILE_FOR_BUILD"
14897 if test -s "$WARNINGS_FILE"; then
14898 echo "HOST config ($WARNINGS_FILE)"
14899 cat "$WARNINGS_FILE"
14902 # Remove unneeded emconfigure artifacts
14903 rm -f a.out a.wasm a.out.js a.out.wasm
14905 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: