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 | egrep "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 | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2962 if test $? -eq 0; then
2963 STRIP_COMPONENTS="--strip-components"
2965 $GNUTAR --help 2> /dev/null | egrep "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=15.6
3660 older_sdk_vers="15.5 15.4 15.2 15.0 14.5"
3661 if test "$enable_ios_simulator" = "yes"; then
3662 platform=iPhoneSimulator
3663 versionmin=-mios-simulator-version-min=13.6
3666 versionmin=-miphoneos-version-min=13.6
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])
7485 if test -z "$CROSS_COMPILING" -a -n "$HAVE_LIBCPP" -a -n "$ENABLE_DBGUTIL"; then
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}.12
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 >= 0.9.42])
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_LIB([absl_bad_optional_access], [main], [ABSEIL_LIBS=-labsl_bad_optional_access],
12048 [AC_MSG_ERROR([libabsl_bad_optional_access library not found.])])
12050 ABSEIL_CFLAGS=$(printf '%s' "$ABSEIL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12051 FilterLibs "${ABSEIL_LIBS}"
12052 ABSEIL_LIBS="${filteredlibs}"
12054 AC_MSG_RESULT([internal])
12057 AC_SUBST(SYSTEM_OPENJPEG2)
12058 AC_SUBST(SYSTEM_ABSEIL)
12059 AC_SUBST(ABSEIL_CFLAGS)
12060 AC_SUBST(ABSEIL_LIBS)
12062 dnl ===================================================================
12063 dnl Check for poppler
12064 dnl ===================================================================
12066 AC_MSG_CHECKING([whether to build Poppler])
12067 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" -a $_os != Android \) -o "$enable_poppler" = yes; then
12068 AC_MSG_RESULT([yes])
12069 ENABLE_POPPLER=TRUE
12070 AC_DEFINE(HAVE_FEATURE_POPPLER)
12072 AC_MSG_RESULT([no])
12074 AC_SUBST(ENABLE_POPPLER)
12076 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
12077 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
12080 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
12081 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
12084 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
12085 dnl ===================================================================
12086 dnl Check for system poppler
12087 dnl ===================================================================
12088 AC_MSG_CHECKING([which PDF import poppler to use])
12089 if test "$with_system_poppler" = "yes"; then
12090 AC_MSG_RESULT([external])
12091 SYSTEM_POPPLER=TRUE
12092 PKG_CHECK_MODULES(POPPLER,[poppler >= 0.14 poppler-cpp])
12093 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12094 FilterLibs "${POPPLER_LIBS}"
12095 POPPLER_LIBS="${filteredlibs}"
12097 AC_MSG_RESULT([internal])
12099 BUILD_TYPE="$BUILD_TYPE POPPLER"
12101 AC_DEFINE([ENABLE_PDFIMPORT],1)
12103 AC_SUBST(ENABLE_PDFIMPORT)
12104 AC_SUBST(SYSTEM_POPPLER)
12105 AC_SUBST(POPPLER_CFLAGS)
12106 AC_SUBST(POPPLER_LIBS)
12110 if test "$enable_skia" != "no" -a "$build_skia" = "yes" -a -z "$DISABLE_GUI"; then
12111 # Skia now requires at least freetype2 >= 2.8.1, which is less that what LO requires as system freetype.
12112 if test "$SYSTEM_FREETYPE" = TRUE; then
12113 PKG_CHECK_EXISTS(freetype2 >= 21.0.15, # 21.0.15 = 2.8.1
12114 [skia_freetype_ok=yes],
12115 [skia_freetype_ok=no])
12116 else # internal is ok
12117 skia_freetype_ok=yes
12119 AC_MSG_CHECKING([whether to build Skia])
12120 if test "$skia_freetype_ok" = "yes"; then
12121 if test "$enable_skia" = "debug"; then
12122 AC_MSG_RESULT([yes (debug)])
12123 ENABLE_SKIA_DEBUG=TRUE
12125 AC_MSG_RESULT([yes])
12129 if test "$ENDIANNESS" = "big" && test "$ENABLE_SKIA" = "TRUE"; then
12130 AC_MSG_ERROR([skia doesn't work/isn't supported upstream on big-endian. Use --disable-skia])
12133 AC_DEFINE(HAVE_FEATURE_SKIA)
12134 BUILD_TYPE="$BUILD_TYPE SKIA"
12136 if test "$OS" = "MACOSX"; then
12137 AC_DEFINE(SK_SUPPORT_GPU,1)
12138 AC_DEFINE(SK_METAL,1)
12142 AC_DEFINE(SK_SUPPORT_GPU,1)
12143 AC_DEFINE(SK_VULKAN,1)
12148 if test -n "$MAC_OS_X_VERSION_MIN_REQUIRED" && test "$MAC_OS_X_VERSION_MIN_REQUIRED" -lt "101200"; then
12149 SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX=1
12150 AC_SUBST(SKIA_DISABLE_VMA_USE_STL_SHARED_MUTEX)
12153 AC_MSG_RESULT([no (freetype too old)])
12154 add_warning "freetype version is too old for Skia library, at least 2.8.1 required, Skia support disabled"
12158 AC_MSG_CHECKING([whether to build Skia])
12159 AC_MSG_RESULT([no])
12161 AC_SUBST(ENABLE_SKIA)
12162 AC_SUBST(ENABLE_SKIA_DEBUG)
12164 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2=
12165 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3=
12166 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41=
12167 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42=
12168 LO_CLANG_CXXFLAGS_INTRINSICS_AVX=
12169 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2=
12170 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512=
12171 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F=
12172 LO_CLANG_CXXFLAGS_INTRINSICS_F16C=
12173 LO_CLANG_CXXFLAGS_INTRINSICS_FMA=
12174 HAVE_LO_CLANG_DLLEXPORTINLINES=
12176 if test "$ENABLE_SKIA" = TRUE -a "$COM_IS_CLANG" != TRUE; then
12177 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12178 AC_MSG_CHECKING([for Clang])
12179 AC_MSG_RESULT([$LO_CLANG_CC / $LO_CLANG_CXX])
12181 if test "$_os" = "WINNT"; then
12182 AC_MSG_CHECKING([for clang-cl])
12183 if test -x "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"; then
12184 LO_CLANG_CC=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/Llvm/bin/clang-cl.exe"`
12185 elif test -n "$PROGRAMFILES" -a -x "$(cygpath -u "$PROGRAMFILES/LLVM/bin/clang-cl.exe")"; then
12186 LO_CLANG_CC=`win_short_path_for_make "$PROGRAMFILES/LLVM/bin/clang-cl.exe"`
12187 elif test -x "$(cygpath -u "c:/Program Files/LLVM/bin/clang-cl.exe")"; then
12188 LO_CLANG_CC=`win_short_path_for_make "c:/Program Files/LLVM/bin/clang-cl.exe"`
12190 if test -n "$LO_CLANG_CC"; then
12191 dnl explicitly set -m32/-m64
12192 LO_CLANG_CC="$LO_CLANG_CC -m$WIN_HOST_BITS"
12193 LO_CLANG_CXX="$LO_CLANG_CC"
12194 AC_MSG_RESULT([$LO_CLANG_CC])
12196 AC_MSG_RESULT([no])
12199 AC_MSG_CHECKING([the dependency generation prefix (clang.exe -showIncludes)])
12200 echo "#include <stdlib.h>" > conftest.c
12201 LO_CLANG_SHOWINCLUDES_PREFIX=`$LO_CLANG_CC $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
12202 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
12203 rm -f conftest.c conftest.obj
12204 if test -z "$LO_CLANG_SHOWINCLUDES_PREFIX"; then
12205 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
12207 AC_MSG_RESULT(["$LO_CLANG_SHOWINCLUDES_PREFIX"])
12210 AC_CHECK_PROG(LO_CLANG_CC,clang,clang,[])
12211 AC_CHECK_PROG(LO_CLANG_CXX,clang++,clang++,[])
12214 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12215 clang2_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $LO_CLANG_CC -E - | tail -1 | sed 's/ //g'`
12216 clang2_ver=`echo "$clang2_version" | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
12217 if test "$clang2_ver" -lt 50002; then
12218 AC_MSG_WARN(["$clang2_version" is too old or unrecognized, must be at least Clang 5.0.2])
12223 if test -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX" -a "$_os" = "WINNT"; then
12225 CXX="$LO_CLANG_CXX"
12226 AC_MSG_CHECKING([whether $CXX supports -Zc:dllexportInlines-])
12227 AC_LANG_PUSH([C++])
12228 save_CXXFLAGS=$CXXFLAGS
12229 CXXFLAGS="$CXXFLAGS -Werror -Zc:dllexportInlines-"
12230 AC_COMPILE_IFELSE([AC_LANG_SOURCE()], [
12231 HAVE_LO_CLANG_DLLEXPORTINLINES=TRUE
12232 AC_MSG_RESULT([yes])
12233 ], [AC_MSG_RESULT([no])])
12234 CXXFLAGS=$save_CXXFLAGS
12237 if test -z "$HAVE_LO_CLANG_DLLEXPORTINLINES"; then
12238 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.])
12241 if test -z "$LO_CLANG_CC" -o -z "$LO_CLANG_CXX"; then
12242 # Skia is the default on Windows and Mac, so hard-require Clang.
12243 # Elsewhere it's used just by the 'gen' VCL backend which is rarely used.
12244 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
12245 AC_MSG_ERROR([Clang compiler not found. The Skia library needs to be built using Clang, or use --disable-skia.])
12247 AC_MSG_WARN([Clang compiler not found.])
12252 CXX="$LO_CLANG_CXX"
12253 # copy&paste (and adjust) of intrinsics checks, since MSVC's -arch doesn't work well for Clang-cl
12256 flag_sse41=-msse4.1
12257 flag_sse42=-msse4.2
12260 flag_avx512="-mavx512f -mavx512vl -mavx512bw -mavx512dq -mavx512cd"
12261 flag_avx512f=-mavx512f
12265 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
12266 AC_LANG_PUSH([C++])
12267 save_CXXFLAGS=$CXXFLAGS
12268 CXXFLAGS="$CXXFLAGS $flag_sse2"
12269 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12270 #include <emmintrin.h>
12272 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12273 c = _mm_xor_si128 (a, b);
12277 [can_compile_sse2=yes],
12278 [can_compile_sse2=no])
12280 CXXFLAGS=$save_CXXFLAGS
12281 AC_MSG_RESULT([${can_compile_sse2}])
12282 if test "${can_compile_sse2}" = "yes" ; then
12283 LO_CLANG_CXXFLAGS_INTRINSICS_SSE2="$flag_sse2"
12286 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
12287 AC_LANG_PUSH([C++])
12288 save_CXXFLAGS=$CXXFLAGS
12289 CXXFLAGS="$CXXFLAGS $flag_ssse3"
12290 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12291 #include <tmmintrin.h>
12293 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12294 c = _mm_maddubs_epi16 (a, b);
12298 [can_compile_ssse3=yes],
12299 [can_compile_ssse3=no])
12301 CXXFLAGS=$save_CXXFLAGS
12302 AC_MSG_RESULT([${can_compile_ssse3}])
12303 if test "${can_compile_ssse3}" = "yes" ; then
12304 LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3="$flag_ssse3"
12307 AC_MSG_CHECKING([whether $CXX can compile SSE4.1 intrinsics])
12308 AC_LANG_PUSH([C++])
12309 save_CXXFLAGS=$CXXFLAGS
12310 CXXFLAGS="$CXXFLAGS $flag_sse41"
12311 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12312 #include <smmintrin.h>
12314 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12315 c = _mm_cmpeq_epi64 (a, b);
12319 [can_compile_sse41=yes],
12320 [can_compile_sse41=no])
12322 CXXFLAGS=$save_CXXFLAGS
12323 AC_MSG_RESULT([${can_compile_sse41}])
12324 if test "${can_compile_sse41}" = "yes" ; then
12325 LO_CLANG_CXXFLAGS_INTRINSICS_SSE41="$flag_sse41"
12328 AC_MSG_CHECKING([whether $CXX can compile SSE4.2 intrinsics])
12329 AC_LANG_PUSH([C++])
12330 save_CXXFLAGS=$CXXFLAGS
12331 CXXFLAGS="$CXXFLAGS $flag_sse42"
12332 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12333 #include <nmmintrin.h>
12335 __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
12336 c = _mm_cmpgt_epi64 (a, b);
12340 [can_compile_sse42=yes],
12341 [can_compile_sse42=no])
12343 CXXFLAGS=$save_CXXFLAGS
12344 AC_MSG_RESULT([${can_compile_sse42}])
12345 if test "${can_compile_sse42}" = "yes" ; then
12346 LO_CLANG_CXXFLAGS_INTRINSICS_SSE42="$flag_sse42"
12349 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
12350 AC_LANG_PUSH([C++])
12351 save_CXXFLAGS=$CXXFLAGS
12352 CXXFLAGS="$CXXFLAGS $flag_avx"
12353 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12354 #include <immintrin.h>
12356 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
12357 c = _mm256_xor_ps(a, b);
12361 [can_compile_avx=yes],
12362 [can_compile_avx=no])
12364 CXXFLAGS=$save_CXXFLAGS
12365 AC_MSG_RESULT([${can_compile_avx}])
12366 if test "${can_compile_avx}" = "yes" ; then
12367 LO_CLANG_CXXFLAGS_INTRINSICS_AVX="$flag_avx"
12370 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
12371 AC_LANG_PUSH([C++])
12372 save_CXXFLAGS=$CXXFLAGS
12373 CXXFLAGS="$CXXFLAGS $flag_avx2"
12374 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12375 #include <immintrin.h>
12377 __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
12378 c = _mm256_maddubs_epi16(a, b);
12382 [can_compile_avx2=yes],
12383 [can_compile_avx2=no])
12385 CXXFLAGS=$save_CXXFLAGS
12386 AC_MSG_RESULT([${can_compile_avx2}])
12387 if test "${can_compile_avx2}" = "yes" ; then
12388 LO_CLANG_CXXFLAGS_INTRINSICS_AVX2="$flag_avx2"
12391 AC_MSG_CHECKING([whether $CXX can compile AVX512 intrinsics])
12392 AC_LANG_PUSH([C++])
12393 save_CXXFLAGS=$CXXFLAGS
12394 CXXFLAGS="$CXXFLAGS $flag_avx512"
12395 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12396 #include <immintrin.h>
12398 __m512i a = _mm512_loadu_si512(0);
12399 __m512d v1 = _mm512_load_pd(0);
12400 // https://gcc.gnu.org/git/?p=gcc.git;a=commit;f=gcc/config/i386/avx512fintrin.h;h=23bce99cbe7016a04e14c2163ed3fe6a5a64f4e2
12401 __m512d v2 = _mm512_abs_pd(v1);
12405 [can_compile_avx512=yes],
12406 [can_compile_avx512=no])
12408 CXXFLAGS=$save_CXXFLAGS
12409 AC_MSG_RESULT([${can_compile_avx512}])
12410 if test "${can_compile_avx512}" = "yes" ; then
12411 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512="$flag_avx512"
12412 LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F="$flag_avx512f"
12415 AC_MSG_CHECKING([whether $CXX can compile F16C intrinsics])
12416 AC_LANG_PUSH([C++])
12417 save_CXXFLAGS=$CXXFLAGS
12418 CXXFLAGS="$CXXFLAGS $flag_f16c"
12419 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12420 #include <immintrin.h>
12422 __m128i a = _mm_set1_epi32 (0);
12424 c = _mm_cvtph_ps(a);
12428 [can_compile_f16c=yes],
12429 [can_compile_f16c=no])
12431 CXXFLAGS=$save_CXXFLAGS
12432 AC_MSG_RESULT([${can_compile_f16c}])
12433 if test "${can_compile_f16c}" = "yes" ; then
12434 LO_CLANG_CXXFLAGS_INTRINSICS_F16C="$flag_f16c"
12437 AC_MSG_CHECKING([whether $CXX can compile FMA intrinsics])
12438 AC_LANG_PUSH([C++])
12439 save_CXXFLAGS=$CXXFLAGS
12440 CXXFLAGS="$CXXFLAGS $flag_fma"
12441 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
12442 #include <immintrin.h>
12444 __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c = _mm256_set1_ps (0.0f), d;
12445 d = _mm256_fmadd_ps(a, b, c);
12449 [can_compile_fma=yes],
12450 [can_compile_fma=no])
12452 CXXFLAGS=$save_CXXFLAGS
12453 AC_MSG_RESULT([${can_compile_fma}])
12454 if test "${can_compile_fma}" = "yes" ; then
12455 LO_CLANG_CXXFLAGS_INTRINSICS_FMA="$flag_fma"
12462 # prefix LO_CLANG_CC/LO_CLANG_CXX with ccache if needed
12464 if test "$CCACHE" != "" -a -n "$LO_CLANG_CC" -a -n "$LO_CLANG_CXX"; then
12465 AC_MSG_CHECKING([whether $LO_CLANG_CC is already ccached])
12469 save_CFLAGS=$CFLAGS
12470 CFLAGS="$CFLAGS --ccache-skip -O2 -Werror"
12471 dnl an empty program will do, we're checking the compiler flags
12472 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12473 [use_ccache=yes], [use_ccache=no])
12474 CFLAGS=$save_CFLAGS
12476 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12477 AC_MSG_RESULT([yes])
12479 LO_CLANG_CC="$CCACHE $LO_CLANG_CC"
12480 AC_MSG_RESULT([no])
12484 AC_MSG_CHECKING([whether $LO_CLANG_CXX is already ccached])
12485 AC_LANG_PUSH([C++])
12487 CXX="$LO_CLANG_CXX"
12488 save_CXXFLAGS=$CXXFLAGS
12489 CXXFLAGS="$CXXFLAGS --ccache-skip -O2 -Werror"
12490 dnl an empty program will do, we're checking the compiler flags
12491 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
12492 [use_ccache=yes], [use_ccache=no])
12493 if test $use_ccache = yes -a "${CCACHE/*sccache*/}" != ""; then
12494 AC_MSG_RESULT([yes])
12496 LO_CLANG_CXX="$CCACHE $LO_CLANG_CXX"
12497 AC_MSG_RESULT([no])
12499 CXXFLAGS=$save_CXXFLAGS
12504 AC_SUBST(LO_CLANG_CC)
12505 AC_SUBST(LO_CLANG_CXX)
12506 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE2)
12507 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSSE3)
12508 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE41)
12509 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_SSE42)
12510 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX)
12511 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX2)
12512 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512)
12513 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_AVX512F)
12514 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_F16C)
12515 AC_SUBST(LO_CLANG_CXXFLAGS_INTRINSICS_FMA)
12516 AC_SUBST(LO_CLANG_SHOWINCLUDES_PREFIX)
12517 AC_SUBST(CLANG_USE_LD)
12518 AC_SUBST([HAVE_LO_CLANG_DLLEXPORTINLINES])
12522 AC_MSG_CHECKING([whether to enable gpgmepp])
12523 if test "$enable_gpgmepp" = no; then
12524 AC_MSG_RESULT([no])
12525 elif test "$enable_mpl_subset" = "yes"; then
12526 AC_MSG_RESULT([no (MPL only])
12527 elif test "$enable_fuzzers" = "yes"; then
12528 AC_MSG_RESULT([no (oss-fuzz)])
12529 elif test \( \( "$_os" = "Linux" -o "$_os" = "Darwin" \) -a "$ENABLE_NSS" = TRUE \) -o "$_os" = "WINNT" ; then
12530 AC_MSG_RESULT([yes])
12531 dnl ===================================================================
12532 dnl Check for system gpgme
12533 dnl ===================================================================
12534 AC_MSG_CHECKING([which gpgmepp to use])
12535 if test "$with_system_gpgmepp" = "yes"; then
12536 AC_MSG_RESULT([external])
12537 SYSTEM_GPGMEPP=TRUE
12539 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
12540 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
12541 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp >= 1.14 development package])], [])
12542 AC_CHECK_HEADER(gpgme.h, [],
12543 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
12544 AC_CHECK_LIB(gpgmepp, main, [],
12545 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
12546 GPGMEPP_LIBS=-lgpgmepp
12548 AC_MSG_RESULT([internal])
12549 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
12551 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
12552 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
12553 if test "$_os" != "WINNT"; then
12554 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
12555 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
12558 ENABLE_GPGMEPP=TRUE
12559 AC_DEFINE([HAVE_FEATURE_GPGME])
12560 AC_PATH_PROG(GPG, gpg)
12561 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
12562 # so let's exclude that manually for the moment
12563 if test -n "$GPG" -a "$_os" != "WINNT"; then
12564 # make sure we not only have a working gpgme, but a full working
12565 # gpg installation to run OpenPGP signature verification
12566 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
12568 if test "$_os" = "Linux"; then
12570 AC_MSG_CHECKING([for /run/user/$uid])
12571 if test -d /run/user/$uid; then
12572 AC_MSG_RESULT([yes])
12573 AC_PATH_PROG(GPGCONF, gpgconf)
12575 # Older versions of gpgconf are not working as expected, since
12576 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
12577 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
12578 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
12579 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
12580 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
12581 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
12582 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
12583 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
12584 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
12585 if $GPGCONF --dump-options > /dev/null ; then
12586 if $GPGCONF --dump-options | grep -q create-socketdir ; then
12587 AC_MSG_RESULT([yes])
12588 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
12589 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
12591 AC_MSG_RESULT([no])
12594 AC_MSG_RESULT([no. missing or broken gpgconf?])
12597 AC_MSG_RESULT([no, $GPGCONF_VERSION])
12600 AC_MSG_RESULT([no])
12604 AC_MSG_RESULT([no (unsupported OS or missing NSS)])
12606 AC_SUBST(ENABLE_GPGMEPP)
12607 AC_SUBST(SYSTEM_GPGMEPP)
12608 AC_SUBST(GPG_ERROR_CFLAGS)
12609 AC_SUBST(GPG_ERROR_LIBS)
12610 AC_SUBST(LIBASSUAN_CFLAGS)
12611 AC_SUBST(LIBASSUAN_LIBS)
12612 AC_SUBST(GPGMEPP_CFLAGS)
12613 AC_SUBST(GPGMEPP_LIBS)
12615 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
12616 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
12617 AC_MSG_RESULT([yes])
12618 ENABLE_MEDIAWIKI=TRUE
12619 BUILD_TYPE="$BUILD_TYPE XSLTML"
12620 if test "x$with_java" = "xno"; then
12621 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
12624 AC_MSG_RESULT([no])
12626 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
12628 AC_SUBST(ENABLE_MEDIAWIKI)
12630 AC_MSG_CHECKING([whether to build the Report Builder])
12631 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12632 AC_MSG_RESULT([yes])
12633 ENABLE_REPORTBUILDER=TRUE
12634 AC_MSG_CHECKING([which jfreereport libs to use])
12635 if test "$with_system_jfreereport" = "yes"; then
12636 SYSTEM_JFREEREPORT=TRUE
12637 AC_MSG_RESULT([external])
12638 if test -z $SAC_JAR; then
12639 SAC_JAR=/usr/share/java/sac.jar
12641 if ! test -f $SAC_JAR; then
12642 AC_MSG_ERROR(sac.jar not found.)
12645 if test -z $LIBXML_JAR; then
12646 if test -f /usr/share/java/libxml-1.0.0.jar; then
12647 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
12648 elif test -f /usr/share/java/libxml.jar; then
12649 LIBXML_JAR=/usr/share/java/libxml.jar
12651 AC_MSG_ERROR(libxml.jar replacement not found.)
12653 elif ! test -f $LIBXML_JAR; then
12654 AC_MSG_ERROR(libxml.jar not found.)
12657 if test -z $FLUTE_JAR; then
12658 if test -f /usr/share/java/flute-1.3.0.jar; then
12659 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
12660 elif test -f /usr/share/java/flute.jar; then
12661 FLUTE_JAR=/usr/share/java/flute.jar
12663 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
12665 elif ! test -f $FLUTE_JAR; then
12666 AC_MSG_ERROR(flute-1.3.0.jar not found.)
12669 if test -z $JFREEREPORT_JAR; then
12670 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
12671 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
12672 elif test -f /usr/share/java/flow-engine.jar; then
12673 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
12675 AC_MSG_ERROR(jfreereport.jar replacement not found.)
12677 elif ! test -f $JFREEREPORT_JAR; then
12678 AC_MSG_ERROR(jfreereport.jar not found.)
12681 if test -z $LIBLAYOUT_JAR; then
12682 if test -f /usr/share/java/liblayout-0.2.9.jar; then
12683 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
12684 elif test -f /usr/share/java/liblayout.jar; then
12685 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
12687 AC_MSG_ERROR(liblayout.jar replacement not found.)
12689 elif ! test -f $LIBLAYOUT_JAR; then
12690 AC_MSG_ERROR(liblayout.jar not found.)
12693 if test -z $LIBLOADER_JAR; then
12694 if test -f /usr/share/java/libloader-1.0.0.jar; then
12695 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
12696 elif test -f /usr/share/java/libloader.jar; then
12697 LIBLOADER_JAR=/usr/share/java/libloader.jar
12699 AC_MSG_ERROR(libloader.jar replacement not found.)
12701 elif ! test -f $LIBLOADER_JAR; then
12702 AC_MSG_ERROR(libloader.jar not found.)
12705 if test -z $LIBFORMULA_JAR; then
12706 if test -f /usr/share/java/libformula-0.2.0.jar; then
12707 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
12708 elif test -f /usr/share/java/libformula.jar; then
12709 LIBFORMULA_JAR=/usr/share/java/libformula.jar
12711 AC_MSG_ERROR(libformula.jar replacement not found.)
12713 elif ! test -f $LIBFORMULA_JAR; then
12714 AC_MSG_ERROR(libformula.jar not found.)
12717 if test -z $LIBREPOSITORY_JAR; then
12718 if test -f /usr/share/java/librepository-1.0.0.jar; then
12719 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
12720 elif test -f /usr/share/java/librepository.jar; then
12721 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
12723 AC_MSG_ERROR(librepository.jar replacement not found.)
12725 elif ! test -f $LIBREPOSITORY_JAR; then
12726 AC_MSG_ERROR(librepository.jar not found.)
12729 if test -z $LIBFONTS_JAR; then
12730 if test -f /usr/share/java/libfonts-1.0.0.jar; then
12731 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
12732 elif test -f /usr/share/java/libfonts.jar; then
12733 LIBFONTS_JAR=/usr/share/java/libfonts.jar
12735 AC_MSG_ERROR(libfonts.jar replacement not found.)
12737 elif ! test -f $LIBFONTS_JAR; then
12738 AC_MSG_ERROR(libfonts.jar not found.)
12741 if test -z $LIBSERIALIZER_JAR; then
12742 if test -f /usr/share/java/libserializer-1.0.0.jar; then
12743 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
12744 elif test -f /usr/share/java/libserializer.jar; then
12745 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
12747 AC_MSG_ERROR(libserializer.jar replacement not found.)
12749 elif ! test -f $LIBSERIALIZER_JAR; then
12750 AC_MSG_ERROR(libserializer.jar not found.)
12753 if test -z $LIBBASE_JAR; then
12754 if test -f /usr/share/java/libbase-1.0.0.jar; then
12755 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
12756 elif test -f /usr/share/java/libbase.jar; then
12757 LIBBASE_JAR=/usr/share/java/libbase.jar
12759 AC_MSG_ERROR(libbase.jar replacement not found.)
12761 elif ! test -f $LIBBASE_JAR; then
12762 AC_MSG_ERROR(libbase.jar not found.)
12766 AC_MSG_RESULT([internal])
12767 SYSTEM_JFREEREPORT=
12768 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
12772 AC_MSG_RESULT([no])
12773 ENABLE_REPORTBUILDER=
12774 SYSTEM_JFREEREPORT=
12776 AC_SUBST(ENABLE_REPORTBUILDER)
12777 AC_SUBST(SYSTEM_JFREEREPORT)
12779 AC_SUBST(LIBXML_JAR)
12780 AC_SUBST(FLUTE_JAR)
12781 AC_SUBST(JFREEREPORT_JAR)
12782 AC_SUBST(LIBBASE_JAR)
12783 AC_SUBST(LIBLAYOUT_JAR)
12784 AC_SUBST(LIBLOADER_JAR)
12785 AC_SUBST(LIBFORMULA_JAR)
12786 AC_SUBST(LIBREPOSITORY_JAR)
12787 AC_SUBST(LIBFONTS_JAR)
12788 AC_SUBST(LIBSERIALIZER_JAR)
12790 # scripting provider for BeanShell?
12791 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
12792 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
12793 AC_MSG_RESULT([yes])
12794 ENABLE_SCRIPTING_BEANSHELL=TRUE
12796 dnl ===================================================================
12797 dnl Check for system beanshell
12798 dnl ===================================================================
12799 AC_MSG_CHECKING([which beanshell to use])
12800 if test "$with_system_beanshell" = "yes"; then
12801 AC_MSG_RESULT([external])
12803 if test -z $BSH_JAR; then
12804 BSH_JAR=/usr/share/java/bsh.jar
12806 if ! test -f $BSH_JAR; then
12807 AC_MSG_ERROR(bsh.jar not found.)
12810 AC_MSG_RESULT([internal])
12812 BUILD_TYPE="$BUILD_TYPE BSH"
12815 AC_MSG_RESULT([no])
12816 ENABLE_SCRIPTING_BEANSHELL=
12817 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
12819 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
12820 AC_SUBST(SYSTEM_BSH)
12823 # scripting provider for JavaScript?
12824 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
12825 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
12826 AC_MSG_RESULT([yes])
12827 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
12829 dnl ===================================================================
12830 dnl Check for system rhino
12831 dnl ===================================================================
12832 AC_MSG_CHECKING([which rhino to use])
12833 if test "$with_system_rhino" = "yes"; then
12834 AC_MSG_RESULT([external])
12836 if test -z $RHINO_JAR; then
12837 RHINO_JAR=/usr/share/java/js.jar
12839 if ! test -f $RHINO_JAR; then
12840 AC_MSG_ERROR(js.jar not found.)
12843 AC_MSG_RESULT([internal])
12845 BUILD_TYPE="$BUILD_TYPE RHINO"
12849 AC_MSG_RESULT([no])
12850 ENABLE_SCRIPTING_JAVASCRIPT=
12851 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
12853 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
12854 AC_SUBST(SYSTEM_RHINO)
12855 AC_SUBST(RHINO_JAR)
12857 # This is only used in Qt5/Qt6/KF5 checks to determine if /usr/lib64
12858 # paths should be added to library search path. So lets put all 64-bit
12861 case "$host_cpu" in
12862 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el | loongarch64)
12863 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
12864 supports_multilib="yes"
12871 dnl ===================================================================
12872 dnl QT5 Integration
12873 dnl ===================================================================
12879 QT5_GOBJECT_CFLAGS=""
12880 QT5_GOBJECT_LIBS=""
12881 QT5_HAVE_GOBJECT=""
12882 QT5_PLATFORMS_SRCDIR=""
12883 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
12884 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
12885 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
12887 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
12888 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
12890 if test -n "$supports_multilib"; then
12891 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
12894 qt5_test_include="QtWidgets/qapplication.h"
12895 if test "$_os" = "Emscripten"; then
12896 qt5_test_library="libQt5Widgets.a"
12898 qt5_test_library="libQt5Widgets.so"
12901 dnl Check for qmake5
12902 if test -n "$QT5DIR"; then
12903 AC_PATH_PROG(QMAKE5, [qmake], no, [$QT5DIR/bin])
12905 AC_PATH_PROGS(QMAKE5, [qmake-qt5 qmake], no)
12907 if test "$QMAKE5" = "no"; then
12908 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12910 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
12911 if test -z "$qmake5_test_ver"; then
12912 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12914 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
12915 qt5_minimal_minor="6"
12916 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
12917 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
12919 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
12923 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
12924 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
12925 qt5_platformsdir="`$QMAKE5 -query QT_INSTALL_PLUGINS`/platforms"
12926 QT5_PLATFORMS_SRCDIR="$qt5_platformsdir"
12928 AC_MSG_CHECKING([for Qt5 headers])
12930 for inc_dir in $qt5_incdirs; do
12931 if test -r "$inc_dir/$qt5_test_include"; then
12932 qt5_incdir="$inc_dir"
12936 AC_MSG_RESULT([$qt5_incdir])
12937 if test "x$qt5_incdir" = "xno"; then
12938 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12940 # check for scenario: qt5-qtbase-devel-*.86_64 installed but host is i686
12941 AC_LANG_PUSH([C++])
12942 save_CPPFLAGS=$CPPFLAGS
12943 CPPFLAGS="${CPPFLAGS} -I${qt5_incdir}"
12944 AC_CHECK_HEADER(QtCore/qconfig.h, [],
12945 [AC_MSG_ERROR(qconfig.h header not found.)], [])
12946 CPPFLAGS=$save_CPPFLAGS
12949 AC_MSG_CHECKING([for Qt5 libraries])
12951 for lib_dir in $qt5_libdirs; do
12952 if test -r "$lib_dir/$qt5_test_library"; then
12953 qt5_libdir="$lib_dir"
12957 AC_MSG_RESULT([$qt5_libdir])
12958 if test "x$qt5_libdir" = "xno"; then
12959 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
12962 if test "$_os" = "Emscripten"; then
12963 if test ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html ; then
12964 QT5_PLATFORMS_SRCDIR="${QT5_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
12966 if test ! -f "${qt5_platformsdir}"/libqwasm.a -o ! -f "$QT5_PLATFORMS_SRCDIR"/wasm_shell.html; then
12967 AC_MSG_ERROR([No Qt5 WASM QPA plugin found in ${qt5_platformsdir} or ${QT5_PLATFORMS_SRCDIR}])
12970 EMSDK_LLVM_NM="$(em-config LLVM_ROOT)"/llvm-nm
12971 if ! test -x "$EMSDK_LLVM_NM"; then
12972 AC_MSG_ERROR([Missing llvm-nm expected to be found at "$EMSDK_LLVM_NM".])
12974 if test ! -f "${qt5_libdir}"/libQt5Gui.a; then
12975 AC_MSG_ERROR([No Qt5 WASM libQt5Gui.a in ${qt5_libdir}])
12977 QT5_WASM_SJLJ="`${EMSDK_LLVM_NM} "${qt5_libdir}"/libQt5Gui.a 2>/dev/null | $GREP emscripten_longjmp`"
12978 if test "$ENABLE_WASM_EXCEPTIONS" = TRUE -a -n "$QT5_WASM_SJLJ"; then
12979 AC_MSG_ERROR(['emscripten_longjmp' symbol found in libQt5Gui.a (missing '-s SUPPORT_LONGJMP=wasm'). See static/README.wasm.md.])
12981 if test "$ENABLE_WASM_EXCEPTIONS" != TRUE -a -z "$QT5_WASM_SJLJ"; then
12982 AC_MSG_ERROR(['emscripten_longjmp' symbol not found in libQt5Gui.a. You probably use an incompatible Qt build with '-s SUPPORT_LONGJMP=wasm'.])
12986 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
12987 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12988 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
12989 if test "$_os" = "Emscripten"; then
12990 QT5_LIBS="$QT5_LIBS -lqtpcre2 -lQt5EventDispatcherSupport -lQt5FontDatabaseSupport -L${qt5_platformsdir} -lqwasm"
12993 if test "$USING_X11" = TRUE; then
12994 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
12995 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
12996 QT5_HAVE_XCB_ICCCM=1
12997 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
12999 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)])
13000 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
13002 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
13003 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
13005 AC_DEFINE(QT5_USING_X11)
13008 dnl Check for Meta Object Compiler
13010 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
13011 if test "$MOC5" = "no"; then
13012 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13013 the root of your Qt installation by exporting QT5DIR before running "configure".])
13016 if test "$test_gstreamer_1_0" = yes; then
13017 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
13019 AC_DEFINE(QT5_HAVE_GOBJECT)
13021 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
13025 AC_SUBST(QT5_CFLAGS)
13028 AC_SUBST(QT5_GOBJECT_CFLAGS)
13029 AC_SUBST(QT5_GOBJECT_LIBS)
13030 AC_SUBST(QT5_HAVE_GOBJECT)
13031 AC_SUBST(QT5_PLATFORMS_SRCDIR)
13033 dnl ===================================================================
13034 dnl QT6 Integration
13035 dnl ===================================================================
13041 QT6_PLATFORMS_SRCDIR=""
13042 if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
13044 qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
13045 qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
13047 if test -n "$supports_multilib"; then
13048 qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
13051 qt6_test_include="QtWidgets/qapplication.h"
13052 if test "$_os" = "Emscripten"; then
13053 qt6_test_library="libQt6Widgets.a"
13055 qt6_test_library="libQt6Widgets.so"
13058 dnl Check for qmake6
13059 if test -n "$QT6DIR"; then
13060 AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
13062 AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake6 qmake], no)
13064 if test "$QMAKE6" = "no"; then
13065 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13067 qmake6_test_ver="`$QMAKE6 -v 2>&1 | $SED -n -e 's/^Using Qt version \(6\.[[0-9.]]\+\).*$/\1/p'`"
13068 if test -z "$qmake6_test_ver"; then
13069 AC_MSG_ERROR([Wrong qmake for Qt6 found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13071 AC_MSG_NOTICE([Detected Qt6 version: $qmake6_test_ver])
13074 qt6_incdirs="`$QMAKE6 -query QT_INSTALL_HEADERS` $qt6_incdirs"
13075 qt6_libdirs="`$QMAKE6 -query QT_INSTALL_LIBS` $qt6_libdirs"
13076 qt6_platformsdir="`$QMAKE6 -query QT_INSTALL_PLUGINS`/platforms"
13077 QT6_PLATFORMS_SRCDIR="$qt6_platformsdir"
13079 AC_MSG_CHECKING([for Qt6 headers])
13081 for inc_dir in $qt6_incdirs; do
13082 if test -r "$inc_dir/$qt6_test_include"; then
13083 qt6_incdir="$inc_dir"
13087 AC_MSG_RESULT([$qt6_incdir])
13088 if test "x$qt6_incdir" = "xno"; then
13089 AC_MSG_ERROR([Qt6 headers not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13091 # check for scenario: qt6-qtbase-devel-*.86_64 installed but host is i686
13092 AC_LANG_PUSH([C++])
13093 save_CPPFLAGS=$CPPFLAGS
13094 CPPFLAGS="${CPPFLAGS} -I${qt6_incdir}"
13095 AC_CHECK_HEADER(QtCore/qconfig.h, [],
13096 [AC_MSG_ERROR(qconfig.h header not found.)], [])
13097 CPPFLAGS=$save_CPPFLAGS
13100 AC_MSG_CHECKING([for Qt6 libraries])
13102 for lib_dir in $qt6_libdirs; do
13103 if test -r "$lib_dir/$qt6_test_library"; then
13104 qt6_libdir="$lib_dir"
13108 AC_MSG_RESULT([$qt6_libdir])
13109 if test "x$qt6_libdir" = "xno"; then
13110 AC_MSG_ERROR([Qt6 libraries not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
13113 if test "$_os" = "Emscripten"; then
13114 if test ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html ; then
13115 QT6_PLATFORMS_SRCDIR="${QT6_PLATFORMS_SRCDIR/plugins/src\/plugins}/wasm"
13117 if test ! -f "${qt6_platformsdir}"/libqwasm.a -o ! -f "$QT6_PLATFORMS_SRCDIR"/wasm_shell.html; then
13118 AC_MSG_ERROR([No Qt6 WASM QPA plugin found in ${qt6_platformsdir} or ${QT6_PLATFORMS_SRCDIR}])
13122 QT6_CFLAGS="-I$qt6_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
13123 QT6_CFLAGS=$(printf '%s' "$QT6_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13124 QT6_LIBS="-L$qt6_libdir -lQt6Core -lQt6Gui -lQt6Widgets -lQt6Network"
13125 if test "$_os" = "Emscripten"; then
13126 QT6_LIBS="$QT6_LIBS -lqtpcre2 -lQt6EventDispatcherSupport -lQt6FontDatabaseSupport -L${qt6_platformsdir} -lqwasm"
13129 if test "$USING_X11" = TRUE; then
13130 PKG_CHECK_MODULES(QT6_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for key modifier handling in X11.])])
13131 QT6_CFLAGS="$QT6_CFLAGS $QT6_XCB_CFLAGS"
13132 QT6_LIBS="$QT6_LIBS $QT6_XCB_LIBS"
13134 AC_DEFINE(QT6_USING_X11)
13137 dnl Check for Meta Object Compiler
13139 for lib_dir in $qt6_libdirs; do
13140 if test -z "$qt6_libexec_dirs"; then
13141 qt6_libexec_dirs="$lib_dir/libexec"
13143 qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
13146 AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$qt6_libexec_dirs:$PATH])
13147 if test "$MOC6" = "no"; then
13148 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
13149 the root of your Qt installation by exporting QT6DIR before running "configure".])
13152 AC_SUBST(QT6_CFLAGS)
13155 AC_SUBST(QT6_PLATFORMS_SRCDIR)
13157 dnl ===================================================================
13158 dnl KF5 Integration
13159 dnl ===================================================================
13163 KF5_CONFIG="kf5-config"
13164 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
13165 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
13167 if test "$OS" = "HAIKU"; then
13168 haiku_arch="`echo $RTL_ARCH | tr X x`"
13169 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
13170 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
13173 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
13174 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
13175 if test -n "$supports_multilib"; then
13176 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
13179 kf5_test_include="KF5/KIOFileWidgets/KFileWidget"
13180 kf5_test_library="libKF5KIOFileWidgets.so"
13181 kf5_libdirs="$qt5_libdir $kf5_libdirs"
13183 dnl kf5 KDE4 support compatibility installed
13184 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
13185 if test "$KF5_CONFIG" != "no"; then
13186 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
13187 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
13190 dnl Check for KF5 headers
13191 AC_MSG_CHECKING([for KF5 headers])
13193 for kf5_check in $kf5_incdirs; do
13194 if test -r "$kf5_check/$kf5_test_include"; then
13195 kf5_incdir="$kf5_check/KF5"
13199 AC_MSG_RESULT([$kf5_incdir])
13200 if test "x$kf5_incdir" = "xno"; then
13201 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13204 dnl Check for KF5 libraries
13205 AC_MSG_CHECKING([for KF5 libraries])
13207 for kf5_check in $kf5_libdirs; do
13208 if test -r "$kf5_check/$kf5_test_library"; then
13209 kf5_libdir="$kf5_check"
13214 AC_MSG_RESULT([$kf5_libdir])
13215 if test "x$kf5_libdir" = "xno"; then
13216 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
13219 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"
13220 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
13221 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13223 if test "$USING_X11" = TRUE; then
13224 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
13227 AC_LANG_PUSH([C++])
13228 save_CXXFLAGS=$CXXFLAGS
13229 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
13230 AC_MSG_CHECKING([whether KDE is >= 5.0])
13231 AC_RUN_IFELSE([AC_LANG_SOURCE([[
13232 #include <kcoreaddons_version.h>
13234 int main(int argc, char **argv) {
13235 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
13238 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
13239 CXXFLAGS=$save_CXXFLAGS
13242 AC_SUBST(KF5_CFLAGS)
13245 dnl ===================================================================
13246 dnl Test whether to include Evolution 2 support
13247 dnl ===================================================================
13248 AC_MSG_CHECKING([whether to enable evolution 2 support])
13249 if test "$enable_evolution2" = yes; then
13250 AC_MSG_RESULT([yes])
13251 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
13252 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13253 FilterLibs "${GOBJECT_LIBS}"
13254 GOBJECT_LIBS="${filteredlibs}"
13255 ENABLE_EVOAB2="TRUE"
13257 AC_MSG_RESULT([no])
13259 AC_SUBST(ENABLE_EVOAB2)
13260 AC_SUBST(GOBJECT_CFLAGS)
13261 AC_SUBST(GOBJECT_LIBS)
13263 dnl ===================================================================
13264 dnl Test which themes to include
13265 dnl ===================================================================
13266 AC_MSG_CHECKING([which themes to include])
13267 # if none given use default subset of available themes
13268 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
13269 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"
13273 if test "x$with_theme" != "xno"; then
13274 for theme in $with_theme; do
13276 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" ;;
13277 default) real_theme=colibre ;;
13278 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
13280 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
13283 AC_MSG_RESULT([$WITH_THEMES])
13284 AC_SUBST([WITH_THEMES])
13285 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
13286 for theme in $with_theme; do
13288 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
13293 ###############################################################################
13294 # Extensions checking
13295 ###############################################################################
13296 AC_MSG_CHECKING([for extensions integration])
13297 if test "x$enable_extension_integration" != "xno"; then
13298 WITH_EXTENSION_INTEGRATION=TRUE
13299 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
13300 AC_MSG_RESULT([yes, use integration])
13302 WITH_EXTENSION_INTEGRATION=
13303 AC_MSG_RESULT([no, do not integrate])
13305 AC_SUBST(WITH_EXTENSION_INTEGRATION)
13307 dnl Should any extra extensions be included?
13308 dnl There are standalone tests for each of these below.
13309 WITH_EXTRA_EXTENSIONS=
13310 AC_SUBST([WITH_EXTRA_EXTENSIONS])
13312 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
13313 if test "x$with_java" != "xno"; then
13314 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
13317 AC_MSG_CHECKING([whether to build opens___.ttf])
13318 if test "$enable_build_opensymbol" = "yes"; then
13319 AC_MSG_RESULT([yes])
13320 AC_PATH_PROG(FONTFORGE, fontforge)
13321 if test -z "$FONTFORGE"; then
13322 AC_MSG_ERROR([fontforge not installed])
13325 AC_MSG_RESULT([no])
13326 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
13328 AC_SUBST(FONTFORGE)
13330 dnl ===================================================================
13331 dnl Test whether to include fonts
13332 dnl ===================================================================
13333 AC_MSG_CHECKING([whether to include third-party fonts])
13334 if test "$with_fonts" != "no"; then
13335 AC_MSG_RESULT([yes])
13337 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
13338 AC_DEFINE(HAVE_MORE_FONTS)
13340 AC_MSG_RESULT([no])
13342 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
13344 AC_SUBST(WITH_FONTS)
13347 dnl ===================================================================
13348 dnl Test whether to enable online update service
13349 dnl ===================================================================
13350 AC_MSG_CHECKING([whether to enable online update])
13351 ENABLE_ONLINE_UPDATE=
13352 ENABLE_ONLINE_UPDATE_MAR=
13354 if test "$enable_online_update" = ""; then
13355 AC_MSG_RESULT([no])
13357 if test "$enable_online_update" = "mar"; then
13358 AC_MSG_RESULT([yes - MAR-based online update])
13359 ENABLE_ONLINE_UPDATE_MAR="TRUE"
13360 if test "$with_update_config" = ""; then
13361 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
13363 UPDATE_CONFIG="$with_update_config"
13364 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
13365 elif test "$enable_online_update" = "yes"; then
13366 AC_MSG_RESULT([yes])
13367 ENABLE_ONLINE_UPDATE="TRUE"
13369 AC_MSG_RESULT([no])
13372 AC_SUBST(ENABLE_ONLINE_UPDATE)
13373 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
13374 AC_SUBST(UPDATE_CONFIG)
13377 PRIVACY_POLICY_URL="$with_privacy_policy_url"
13378 if test "$ENABLE_ONLINE_UPDATE" = TRUE -o "$ENABLE_BREAKPAD" = "TRUE"; then
13379 if test "x$with_privacy_policy_url" = "xundefined"; then
13380 AC_MSG_FAILURE([online update or breakpad/crashreporting are enabled, but no --with-privacy-policy-url=... was provided])
13383 AC_SUBST(PRIVACY_POLICY_URL)
13384 dnl ===================================================================
13385 dnl Test whether we need bzip2
13386 dnl ===================================================================
13388 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
13389 AC_MSG_CHECKING([whether to use system bzip2])
13390 if test "$with_system_bzip2" = yes; then
13392 AC_MSG_RESULT([yes])
13393 PKG_CHECK_MODULES(BZIP2, bzip2)
13394 FilterLibs "${BZIP2_LIBS}"
13395 BZIP2_LIBS="${filteredlibs}"
13397 AC_MSG_RESULT([no])
13398 BUILD_TYPE="$BUILD_TYPE BZIP2"
13401 AC_SUBST(SYSTEM_BZIP2)
13402 AC_SUBST(BZIP2_CFLAGS)
13403 AC_SUBST(BZIP2_LIBS)
13405 dnl ===================================================================
13406 dnl Test whether to enable extension update
13407 dnl ===================================================================
13408 AC_MSG_CHECKING([whether to enable extension update])
13409 ENABLE_EXTENSION_UPDATE=
13410 if test "x$enable_extension_update" = "xno"; then
13411 AC_MSG_RESULT([no])
13413 AC_MSG_RESULT([yes])
13414 ENABLE_EXTENSION_UPDATE="TRUE"
13415 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
13416 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
13418 AC_SUBST(ENABLE_EXTENSION_UPDATE)
13421 dnl ===================================================================
13422 dnl Test whether to create MSI with LIMITUI=1 (silent install)
13423 dnl ===================================================================
13424 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
13425 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
13426 AC_MSG_RESULT([no])
13429 AC_MSG_RESULT([yes])
13430 ENABLE_SILENT_MSI=TRUE
13431 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
13433 AC_SUBST(ENABLE_SILENT_MSI)
13435 AC_MSG_CHECKING([whether and how to use Xinerama])
13436 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
13437 if test "$x_libraries" = "default_x_libraries"; then
13438 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
13439 if test "x$XINERAMALIB" = x; then
13440 XINERAMALIB="/usr/lib"
13443 XINERAMALIB="$x_libraries"
13445 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
13446 # we have both versions, let the user decide but use the dynamic one
13449 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
13450 XINERAMA_LINK=dynamic
13452 XINERAMA_LINK=static
13454 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
13455 # we have only the dynamic version
13457 XINERAMA_LINK=dynamic
13458 elif test -e "$XINERAMALIB/libXinerama.a"; then
13460 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
13462 XINERAMA_LINK=static
13472 if test "$USE_XINERAMA" = "TRUE"; then
13473 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
13474 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
13475 [AC_MSG_ERROR(Xinerama header not found.)], [])
13476 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
13477 if test "x$XEXTLIB" = x; then
13478 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
13480 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
13481 if test "$_os" = "FreeBSD"; then
13482 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
13484 if test "$_os" = "Linux"; then
13485 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
13487 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
13488 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
13490 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
13495 AC_MSG_RESULT([no])
13497 AC_SUBST(USE_XINERAMA)
13498 AC_SUBST(XINERAMA_LINK)
13500 dnl ===================================================================
13501 dnl Test whether to build cairo or rely on the system version
13502 dnl ===================================================================
13504 if test "$test_cairo" = "yes"; then
13505 AC_MSG_CHECKING([whether to use the system cairo])
13507 : ${with_system_cairo:=$with_system_libs}
13508 if test "$with_system_cairo" = "yes"; then
13510 AC_MSG_RESULT([yes])
13512 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
13513 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13514 FilterLibs "${CAIRO_LIBS}"
13515 CAIRO_LIBS="${filteredlibs}"
13517 if test "$test_xrender" = "yes"; then
13518 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
13520 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
13521 #ifdef PictStandardA8
13525 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
13530 AC_MSG_RESULT([no])
13531 BUILD_TYPE="$BUILD_TYPE CAIRO"
13534 if test "$enable_cairo_canvas" != no; then
13535 AC_DEFINE(ENABLE_CAIRO_CANVAS)
13536 ENABLE_CAIRO_CANVAS=TRUE
13540 AC_SUBST(CAIRO_CFLAGS)
13541 AC_SUBST(CAIRO_LIBS)
13542 AC_SUBST(ENABLE_CAIRO_CANVAS)
13543 AC_SUBST(SYSTEM_CAIRO)
13545 dnl ===================================================================
13546 dnl Test whether to use avahi
13547 dnl ===================================================================
13548 if test "$_os" = "WINNT"; then
13549 # Windows uses bundled mDNSResponder
13550 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
13551 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
13552 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
13553 [ENABLE_AVAHI="TRUE"])
13554 AC_DEFINE(HAVE_FEATURE_AVAHI)
13555 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13556 FilterLibs "${AVAHI_LIBS}"
13557 AVAHI_LIBS="${filteredlibs}"
13560 AC_SUBST(ENABLE_AVAHI)
13561 AC_SUBST(AVAHI_CFLAGS)
13562 AC_SUBST(AVAHI_LIBS)
13564 dnl ===================================================================
13565 dnl Test whether to use liblangtag
13566 dnl ===================================================================
13568 AC_MSG_CHECKING([whether to use system liblangtag])
13569 if test "$with_system_liblangtag" = yes; then
13570 SYSTEM_LIBLANGTAG=TRUE
13571 AC_MSG_RESULT([yes])
13572 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
13573 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
13574 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
13575 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
13576 FilterLibs "${LIBLANGTAG_LIBS}"
13577 LIBLANGTAG_LIBS="${filteredlibs}"
13580 AC_MSG_RESULT([no])
13581 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
13582 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
13583 if test "$COM" = "MSC"; then
13584 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
13586 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
13589 AC_SUBST(SYSTEM_LIBLANGTAG)
13590 AC_SUBST(LIBLANGTAG_CFLAGS)
13591 AC_SUBST(LIBLANGTAG_LIBS)
13593 dnl ===================================================================
13594 dnl Test whether to build libpng or rely on the system version
13595 dnl ===================================================================
13597 LIBPNG_CFLAGS_internal="-I${WORKDIR}/UnpackedTarball/libpng"
13598 LIBPNG_LIBS_internal="-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"
13599 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng])
13601 dnl ===================================================================
13602 dnl Test whether to build libtiff or rely on the system version
13603 dnl ===================================================================
13605 libo_CHECK_SYSTEM_MODULE([libtiff],[LIBTIFF],[libtiff-4])
13607 dnl ===================================================================
13608 dnl Test whether to build libwebp or rely on the system version
13609 dnl ===================================================================
13611 libo_CHECK_SYSTEM_MODULE([libwebp],[LIBWEBP],[libwebp])
13613 dnl ===================================================================
13614 dnl Check for runtime JVM search path
13615 dnl ===================================================================
13616 if test "$ENABLE_JAVA" != ""; then
13617 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
13618 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
13619 AC_MSG_RESULT([yes])
13620 if ! test -d "$with_jvm_path"; then
13621 AC_MSG_ERROR(["$with_jvm_path" not a directory])
13623 if ! test -d "$with_jvm_path"jvm; then
13624 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
13626 JVM_ONE_PATH_CHECK="$with_jvm_path"
13627 AC_SUBST(JVM_ONE_PATH_CHECK)
13629 AC_MSG_RESULT([no])
13633 dnl ===================================================================
13634 dnl Test for the presence of Ant and that it works
13635 dnl ===================================================================
13637 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE" -a "$cross_compiling" != "yes"; then
13638 ANT_HOME=; export ANT_HOME
13639 WITH_ANT_HOME=; export WITH_ANT_HOME
13640 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
13641 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
13642 if test "$_os" = "WINNT"; then
13643 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
13645 with_ant_home="$LODE_HOME/opt/ant"
13647 elif test -x "$LODE_HOME/opt/bin/ant" ; then
13648 with_ant_home="$LODE_HOME/opt/ant"
13651 if test -z "$with_ant_home"; then
13652 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
13654 if test "$_os" = "WINNT"; then
13655 # AC_PATH_PROGS needs unix path
13656 with_ant_home=`cygpath -u "$with_ant_home"`
13658 AbsolutePath "$with_ant_home"
13659 with_ant_home=$absolute_path
13660 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
13661 WITH_ANT_HOME=$with_ant_home
13662 ANT_HOME=$with_ant_home
13665 if test -z "$ANT"; then
13666 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
13668 # resolve relative or absolute symlink
13669 while test -h "$ANT"; do
13671 a_basename=`basename "$ANT"`
13672 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
13673 cd "`dirname "$ANT"`"
13674 cd "`dirname "$a_script"`"
13675 ANT="`pwd`"/"`basename "$a_script"`"
13679 AC_MSG_CHECKING([if $ANT works])
13680 mkdir -p conftest.dir
13683 cat > conftest.java << EOF
13684 public class conftest {
13685 int testmethod(int a, int b) {
13691 cat > conftest.xml << EOF
13692 <project name="conftest" default="conftest">
13693 <target name="conftest">
13694 <javac srcdir="." includes="conftest.java">
13700 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
13701 if test $? = 0 -a -f ./conftest.class; then
13702 AC_MSG_RESULT([Ant works])
13703 if test -z "$WITH_ANT_HOME"; then
13704 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
13705 if test -z "$ANT_HOME"; then
13706 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
13709 ANT_HOME="$WITH_ANT_HOME"
13712 echo "configure: Ant test failed" >&5
13713 cat conftest.java >&5
13714 cat conftest.xml >&5
13715 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
13718 rm -fr conftest.dir
13720 if test -z "$ANT_HOME"; then
13721 ANT_HOME="NO_ANT_HOME"
13723 PathFormat "$ANT_HOME"
13724 ANT_HOME="$formatted_path"
13726 ANT="$formatted_path"
13729 dnl Checking for ant.jar
13730 if test "$ANT_HOME" != "NO_ANT_HOME"; then
13731 AC_MSG_CHECKING([Ant lib directory])
13732 if test -f $ANT_HOME/lib/ant.jar; then
13733 ANT_LIB="$ANT_HOME/lib"
13735 if test -f $ANT_HOME/ant.jar; then
13736 ANT_LIB="$ANT_HOME"
13738 if test -f /usr/share/java/ant.jar; then
13739 ANT_LIB=/usr/share/java
13741 if test -f /usr/share/ant-core/lib/ant.jar; then
13742 ANT_LIB=/usr/share/ant-core/lib
13744 if test -f $ANT_HOME/lib/ant/ant.jar; then
13745 ANT_LIB="$ANT_HOME/lib/ant"
13747 if test -f /usr/share/lib/ant/ant.jar; then
13748 ANT_LIB=/usr/share/lib/ant
13750 AC_MSG_ERROR([Ant libraries not found!])
13757 PathFormat "$ANT_LIB"
13758 ANT_LIB="$formatted_path"
13759 AC_MSG_RESULT([Ant lib directory found.])
13763 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
13765 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
13766 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
13767 ant_version_major=`echo $ant_version | cut -d. -f1`
13768 ant_version_minor=`echo $ant_version | cut -d. -f2`
13769 echo "configure: ant_version $ant_version " >&5
13770 echo "configure: ant_version_major $ant_version_major " >&5
13771 echo "configure: ant_version_minor $ant_version_minor " >&5
13772 if test "$ant_version_major" -ge "2"; then
13773 AC_MSG_RESULT([yes, $ant_version])
13774 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
13775 AC_MSG_RESULT([yes, $ant_version])
13777 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
13780 rm -f conftest* core core.* *.core
13788 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no" -a "$cross_compiling" != "yes"; then
13789 AC_MSG_CHECKING([for JUnit 4])
13790 if test "$with_junit" = "yes"; then
13791 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
13792 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
13793 elif test -e /usr/share/java/junit4.jar; then
13794 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
13796 if test -e /usr/share/lib/java/junit.jar; then
13797 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
13799 OOO_JUNIT_JAR=/usr/share/java/junit.jar
13803 OOO_JUNIT_JAR=$with_junit
13805 if test "$_os" = "WINNT"; then
13806 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
13808 printf 'import org.junit.Before;' > conftest.java
13809 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13810 AC_MSG_RESULT([$OOO_JUNIT_JAR])
13813 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
13814 specify its pathname via --with-junit=..., or disable it via --without-junit])
13816 rm -f conftest.class conftest.java
13817 if test $OOO_JUNIT_JAR != ""; then
13818 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
13821 AC_MSG_CHECKING([for included Hamcrest])
13822 printf 'import org.hamcrest.BaseDescription;' > conftest.java
13823 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
13824 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
13826 AC_MSG_RESULT([Not included])
13827 AC_MSG_CHECKING([for standalone hamcrest jar.])
13828 if test "$with_hamcrest" = "yes"; then
13829 if test -e /usr/share/lib/java/hamcrest.jar; then
13830 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
13831 elif test -e /usr/share/java/hamcrest/core.jar; then
13832 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
13833 elif test -e /usr/share/java/hamcrest/hamcrest.jar; then
13834 HAMCREST_JAR=/usr/share/java/hamcrest/hamcrest.jar
13836 HAMCREST_JAR=/usr/share/java/hamcrest.jar
13839 HAMCREST_JAR=$with_hamcrest
13841 if test "$_os" = "WINNT"; then
13842 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
13844 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
13845 AC_MSG_RESULT([$HAMCREST_JAR])
13847 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),
13848 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
13851 rm -f conftest.class conftest.java
13853 AC_SUBST(OOO_JUNIT_JAR)
13854 AC_SUBST(HAMCREST_JAR)
13860 # check for wget and curl
13865 if test "$enable_fetch_external" != "no"; then
13867 CURL=`which curl 2>/dev/null`
13869 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
13871 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
13872 if test $? -eq 0; then
13878 if test -z "$WGET" -a -z "$CURL"; then
13879 AC_MSG_ERROR([neither wget nor curl found!])
13888 # check for sha256sum
13892 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
13893 eval "$i -a 256 --version" > /dev/null 2>&1
13895 if test $ret -eq 0; then
13896 SHA256SUM="$i -a 256"
13901 if test -z "$SHA256SUM"; then
13902 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
13903 eval "$i --version" > /dev/null 2>&1
13905 if test $ret -eq 0; then
13912 if test -z "$SHA256SUM"; then
13913 AC_MSG_ERROR([no sha256sum found!])
13916 AC_SUBST(SHA256SUM)
13918 dnl ===================================================================
13919 dnl Dealing with l10n options
13920 dnl ===================================================================
13921 AC_MSG_CHECKING([which languages to be built])
13922 # get list of all languages
13923 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
13924 # the sed command does the following:
13925 # + if a line ends with a backslash, append the next line to it
13926 # + adds " on the beginning of the value (after =)
13927 # + adds " at the end of the value
13928 # + removes en-US; we want to put it on the beginning
13929 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
13930 [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)]
13931 ALL_LANGS="en-US $completelangiso"
13932 # check the configured localizations
13933 WITH_LANG="$with_lang"
13935 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
13936 # (Norwegian is "nb" and "nn".)
13937 if test "$WITH_LANG" = "no"; then
13941 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
13942 AC_MSG_RESULT([en-US])
13944 AC_MSG_RESULT([$WITH_LANG])
13945 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
13946 if test -z "$MSGFMT"; then
13947 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
13948 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
13949 elif test -x "/opt/lo/bin/msgfmt"; then
13950 MSGFMT="/opt/lo/bin/msgfmt"
13952 AC_CHECK_PROGS(MSGFMT, [msgfmt])
13953 if test -z "$MSGFMT"; then
13954 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
13958 if test -z "$MSGUNIQ"; then
13959 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
13960 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
13961 elif test -x "/opt/lo/bin/msguniq"; then
13962 MSGUNIQ="/opt/lo/bin/msguniq"
13964 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
13965 if test -z "$MSGUNIQ"; then
13966 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
13973 # check that the list is valid
13974 for lang in $WITH_LANG; do
13975 test "$lang" = "ALL" && continue
13976 # need to check for the exact string, so add space before and after the list of all languages
13977 for vl in $ALL_LANGS; do
13978 if test "$vl" = "$lang"; then
13982 if test "$vl" != "$lang"; then
13983 # if you're reading this - you prolly quoted your languages remove the quotes ...
13984 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
13987 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
13988 echo $WITH_LANG | grep -q en-US
13989 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
13991 # list with substituted ALL
13992 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
13993 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
13994 test "$WITH_LANG" = "en-US" && WITH_LANG=
13995 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
13996 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
13997 ALL_LANGS=`echo $ALL_LANGS qtz`
13999 AC_SUBST(ALL_LANGS)
14000 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
14001 AC_SUBST(WITH_LANG)
14002 AC_SUBST(WITH_LANG_LIST)
14003 AC_SUBST(GIT_NEEDED_SUBMODULES)
14005 WITH_POOR_HELP_LOCALIZATIONS=
14006 if test -d "$SRC_ROOT/translations/source"; then
14007 for l in `ls -1 $SRC_ROOT/translations/source`; do
14008 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
14009 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
14013 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
14015 if test -n "$with_locales" -a "$with_locales" != ALL; then
14016 WITH_LOCALES="$with_locales"
14018 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
14019 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
14020 # config_host/config_locales.h.in
14021 for locale in $WITH_LOCALES; do
14024 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
14028 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
14031 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
14036 AC_DEFINE(WITH_LOCALE_ALL)
14038 AC_SUBST(WITH_LOCALES)
14040 dnl git submodule update --reference
14041 dnl ===================================================================
14042 if test -n "${GIT_REFERENCE_SRC}"; then
14043 for repo in ${GIT_NEEDED_SUBMODULES}; do
14044 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
14045 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
14049 AC_SUBST(GIT_REFERENCE_SRC)
14051 dnl git submodules linked dirs
14052 dnl ===================================================================
14053 if test -n "${GIT_LINK_SRC}"; then
14054 for repo in ${GIT_NEEDED_SUBMODULES}; do
14055 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
14056 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
14060 AC_SUBST(GIT_LINK_SRC)
14063 dnl ===================================================================
14064 AC_MSG_CHECKING([for alternative branding images directory])
14065 # initialize mapped arrays
14066 BRAND_INTRO_IMAGES="intro.png intro-highres.png"
14067 brand_files="$BRAND_INTRO_IMAGES logo.svg logo_inverted.svg logo-sc.svg logo-sc_inverted.svg about.svg"
14069 if test -z "$with_branding" -o "$with_branding" = "no"; then
14070 AC_MSG_RESULT([none])
14071 DEFAULT_BRAND_IMAGES="$brand_files"
14073 if ! test -d $with_branding ; then
14074 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
14076 AC_MSG_RESULT([$with_branding])
14077 CUSTOM_BRAND_DIR="$with_branding"
14078 for lfile in $brand_files
14080 if ! test -f $with_branding/$lfile ; then
14081 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
14082 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
14084 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
14087 check_for_progress="yes"
14090 AC_SUBST([BRAND_INTRO_IMAGES])
14091 AC_SUBST([CUSTOM_BRAND_DIR])
14092 AC_SUBST([CUSTOM_BRAND_IMAGES])
14093 AC_SUBST([DEFAULT_BRAND_IMAGES])
14096 AC_MSG_CHECKING([for 'intro' progress settings])
14100 PROGRESSFRAMECOLOR=
14102 PROGRESSTEXTBASELINE=
14104 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
14105 source "$with_branding/progress.conf"
14106 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
14108 AC_MSG_RESULT([none])
14111 AC_SUBST(PROGRESSBARCOLOR)
14112 AC_SUBST(PROGRESSSIZE)
14113 AC_SUBST(PROGRESSPOSITION)
14114 AC_SUBST(PROGRESSFRAMECOLOR)
14115 AC_SUBST(PROGRESSTEXTCOLOR)
14116 AC_SUBST(PROGRESSTEXTBASELINE)
14119 dnl ===================================================================
14120 dnl Custom build version
14121 dnl ===================================================================
14122 AC_MSG_CHECKING([for extra build ID])
14123 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
14124 EXTRA_BUILDID="$with_extra_buildid"
14126 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
14127 if test -n "$EXTRA_BUILDID" ; then
14128 AC_MSG_RESULT([$EXTRA_BUILDID])
14130 AC_MSG_RESULT([not set])
14132 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
14135 AC_MSG_CHECKING([for vendor])
14136 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
14137 OOO_VENDOR="$USERNAME"
14139 if test -z "$OOO_VENDOR"; then
14143 if test -z "$OOO_VENDOR"; then
14144 OOO_VENDOR="`id -u -n`"
14147 AC_MSG_RESULT([not set, using $OOO_VENDOR])
14149 OOO_VENDOR="$with_vendor"
14150 AC_MSG_RESULT([$OOO_VENDOR])
14152 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
14153 AC_SUBST(OOO_VENDOR)
14155 if test "$_os" = "Android" ; then
14156 ANDROID_PACKAGE_NAME=
14157 AC_MSG_CHECKING([for Android package name])
14158 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
14159 if test -n "$ENABLE_DEBUG"; then
14160 # Default to the package name that makes ndk-gdb happy.
14161 ANDROID_PACKAGE_NAME="org.libreoffice"
14163 ANDROID_PACKAGE_NAME="org.example.libreoffice"
14166 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
14168 ANDROID_PACKAGE_NAME="$with_android_package_name"
14169 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
14171 AC_SUBST(ANDROID_PACKAGE_NAME)
14174 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
14175 if test "$with_compat_oowrappers" = "yes"; then
14176 WITH_COMPAT_OOWRAPPERS=TRUE
14179 WITH_COMPAT_OOWRAPPERS=
14182 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
14184 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
14185 AC_MSG_CHECKING([for install dirname])
14186 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
14187 INSTALLDIRNAME="$with_install_dirname"
14189 AC_MSG_RESULT([$INSTALLDIRNAME])
14190 AC_SUBST(INSTALLDIRNAME)
14192 AC_MSG_CHECKING([for prefix])
14193 test "x$prefix" = xNONE && prefix=$ac_default_prefix
14194 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
14195 PREFIXDIR="$prefix"
14196 AC_MSG_RESULT([$PREFIXDIR])
14197 AC_SUBST(PREFIXDIR)
14199 LIBDIR=[$(eval echo $(eval echo $libdir))]
14202 DATADIR=[$(eval echo $(eval echo $datadir))]
14205 MANDIR=[$(eval echo $(eval echo $mandir))]
14208 DOCDIR=[$(eval echo $(eval echo $docdir))]
14211 BINDIR=[$(eval echo $(eval echo $bindir))]
14214 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
14215 AC_SUBST(INSTALLDIR)
14217 TESTINSTALLDIR="${BUILDDIR}/test-install"
14218 AC_SUBST(TESTINSTALLDIR)
14221 # ===================================================================
14222 # OAuth2 id and secrets
14223 # ===================================================================
14225 AC_MSG_CHECKING([for Google Drive client id and secret])
14226 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
14227 AC_MSG_RESULT([not set])
14228 GDRIVE_CLIENT_ID="\"\""
14229 GDRIVE_CLIENT_SECRET="\"\""
14231 AC_MSG_RESULT([set])
14232 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
14233 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
14235 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
14236 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
14238 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
14239 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
14240 AC_MSG_RESULT([not set])
14241 ALFRESCO_CLOUD_CLIENT_ID="\"\""
14242 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
14244 AC_MSG_RESULT([set])
14245 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
14246 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
14248 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
14249 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
14251 AC_MSG_CHECKING([for OneDrive client id and secret])
14252 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
14253 AC_MSG_RESULT([not set])
14254 ONEDRIVE_CLIENT_ID="\"\""
14255 ONEDRIVE_CLIENT_SECRET="\"\""
14257 AC_MSG_RESULT([set])
14258 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
14259 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
14261 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
14262 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
14265 dnl ===================================================================
14266 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
14267 dnl --enable-dependency-tracking configure option
14268 dnl ===================================================================
14269 AC_MSG_CHECKING([whether to enable dependency tracking])
14270 if test "$enable_dependency_tracking" = "no"; then
14272 AC_MSG_RESULT([no])
14274 AC_MSG_RESULT([yes])
14278 dnl ===================================================================
14279 dnl Number of CPUs to use during the build
14280 dnl ===================================================================
14281 AC_MSG_CHECKING([for number of processors to use])
14282 # plain --with-parallelism is just the default
14283 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
14284 if test "$with_parallelism" = "no"; then
14287 PARALLELISM=$with_parallelism
14290 if test "$enable_icecream" = "yes"; then
14295 Darwin|FreeBSD|NetBSD|OpenBSD)
14296 PARALLELISM=`sysctl -n hw.ncpu`
14300 PARALLELISM=`getconf _NPROCESSORS_ONLN`
14302 # what else than above does profit here *and* has /proc?
14304 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
14308 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
14309 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
14313 if test $PARALLELISM -eq 0; then
14314 AC_MSG_RESULT([explicit make -j option needed])
14316 AC_MSG_RESULT([$PARALLELISM])
14318 AC_SUBST(PARALLELISM)
14321 # Set up ILIB for MSVC build
14324 if test "$build_os" = "cygwin" -o "$build_os" = "wsl"; then
14326 if test -n "$JAVA_HOME"; then
14327 ILIB="$ILIB;$JAVA_HOME/lib"
14330 PathFormat "${COMPATH}/lib/$WIN_HOST_ARCH"
14331 ILIB="$ILIB;$formatted_path"
14332 ILIB1="$ILIB1 -LIBPATH:$formatted_path"
14333 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14334 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$WIN_HOST_ARCH"
14335 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
14336 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14337 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WIN_HOST_ARCH"
14339 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/$WIN_HOST_ARCH"
14340 ucrtlibpath_formatted=$formatted_path
14341 ILIB="$ILIB;$ucrtlibpath_formatted"
14342 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
14343 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
14344 PathFormat "$DOTNET_FRAMEWORK_HOME/lib"
14345 ILIB="$ILIB;$formatted_path"
14347 PathFormat "$DOTNET_FRAMEWORK_HOME/Lib/um/$WIN_HOST_ARCH"
14348 ILIB="$ILIB;$formatted_path"
14351 if test "$cross_compiling" != "yes"; then
14352 ILIB_FOR_BUILD="$ILIB"
14356 AC_SUBST(ILIB_FOR_BUILD)
14358 AC_MSG_CHECKING([whether $CXX_BASE supports a working C++20 consteval])
14359 dnl ...that does not suffer from <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96994> "Missing code
14360 dnl from consteval constructor initializing const variable",
14361 dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98752> "wrong 'error: ‘this’ is not a constant
14362 dnl expression' with consteval constructor", <https://bugs.llvm.org/show_bug.cgi?id=50063> "code
14363 dnl using consteval: 'clang/lib/CodeGen/Address.h:38: llvm::Value*
14364 dnl clang::CodeGen::Address::getPointer() const: Assertion `isValid()' failed.'",
14365 dnl <https://developercommunity.visualstudio.com/t/1581879> "Bogus error C7595 with consteval
14366 dnl constructor in ternary expression (/std:c++latest)", or
14367 dnl <https://github.com/llvm/llvm-project/issues/54612> "C++20, consteval, anonymous union:
14368 dnl llvm/lib/IR/Instructions.cpp:1491: void llvm::StoreInst::AssertOK(): Assertion
14369 dnl `cast<PointerType>(getOperand(1)->getType())->isOpaqueOrPointeeTypeMatches(getOperand(0)->getType())
14370 dnl && "Ptr must be a pointer to Val type!"' failed.":
14371 AC_LANG_PUSH([C++])
14373 if test "$COM" = MSC && test "$COM_IS_CLANG" != TRUE; then
14374 CXX="env LIB=$ILIB $CXX"
14376 save_CXXFLAGS=$CXXFLAGS
14377 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
14378 AC_RUN_IFELSE([AC_LANG_PROGRAM([
14380 consteval S() { i = 1; }
14385 struct S1 { consteval S1(int) {} };
14400 struct S4 { consteval S4() = default; };
14401 void f4(bool b) { b ? S4() : S4(); }
14404 consteval S5() { c = 0; }
14405 char * f() { return &c; }
14411 auto s5 = S5().f();
14413 return (s.i == 1) ? 0 : 1;
14415 AC_DEFINE([HAVE_CPP_CONSTEVAL],[1])
14416 AC_MSG_RESULT([yes])
14417 ], [AC_MSG_RESULT([no])], [AC_MSG_RESULT([assumed no (cross compiling)])])
14419 CXXFLAGS=$save_CXXFLAGS
14422 # ===================================================================
14423 # Creating bigger shared library to link against
14424 # ===================================================================
14425 AC_MSG_CHECKING([whether to create huge library])
14428 if test $_os = iOS -o $_os = Android; then
14429 # Never any point in mergelibs for these as we build just static
14430 # libraries anyway...
14431 enable_mergelibs=no
14434 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
14435 if test $_os != Linux -a $_os != WINNT; then
14436 add_warning "--enable-mergelibs is not tested for this platform"
14439 AC_MSG_RESULT([yes])
14440 AC_DEFINE(ENABLE_MERGELIBS)
14442 AC_MSG_RESULT([no])
14444 AC_SUBST([MERGELIBS])
14446 dnl ===================================================================
14447 dnl icerun is a wrapper that stops us spawning tens of processes
14448 dnl locally - for tools that can't be executed on the compile cluster
14449 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
14450 dnl ===================================================================
14451 AC_MSG_CHECKING([whether to use icerun wrapper])
14453 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
14454 ICECREAM_RUN=icerun
14455 AC_MSG_RESULT([yes])
14457 AC_MSG_RESULT([no])
14459 AC_SUBST(ICECREAM_RUN)
14461 dnl ===================================================================
14462 dnl Setup the ICECC_VERSION for the build the same way it was set for
14463 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
14464 dnl ===================================================================
14465 x_ICECC_VERSION=[\#]
14466 if test -n "$ICECC_VERSION" ; then
14469 AC_SUBST(x_ICECC_VERSION)
14470 AC_SUBST(ICECC_VERSION)
14472 dnl ===================================================================
14474 AC_MSG_CHECKING([MPL subset])
14477 if test "$enable_mpl_subset" = "yes"; then
14479 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
14481 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
14484 if test "$warn_report" = "true"; then
14485 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
14487 if test "x$enable_postgresql_sdbc" != "xno"; then
14488 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
14490 if test "$enable_lotuswordpro" = "yes"; then
14491 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
14493 if test -n "$ENABLE_POPPLER"; then
14494 if test "x$SYSTEM_POPPLER" = "x"; then
14495 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
14498 # cf. m4/libo_check_extension.m4
14499 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
14500 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
14502 for theme in $WITH_THEMES; do
14504 breeze|breeze_dark|breeze_dark_svg|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #denylist of icon themes under GPL or LGPL
14505 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=colibre]) ;;
14510 ENABLE_OPENGL_TRANSITIONS=
14512 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
14513 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
14517 AC_DEFINE(MPL_HAVE_SUBSET)
14518 AC_MSG_RESULT([only])
14520 AC_MSG_RESULT([no restrictions])
14522 AC_SUBST(MPL_SUBSET)
14524 dnl ===================================================================
14526 AC_MSG_CHECKING([formula logger])
14527 ENABLE_FORMULA_LOGGER=
14529 if test "x$enable_formula_logger" = "xyes"; then
14530 AC_MSG_RESULT([yes])
14531 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14532 ENABLE_FORMULA_LOGGER=TRUE
14533 elif test -n "$ENABLE_DBGUTIL" ; then
14534 AC_MSG_RESULT([yes])
14535 AC_DEFINE(ENABLE_FORMULA_LOGGER)
14536 ENABLE_FORMULA_LOGGER=TRUE
14538 AC_MSG_RESULT([no])
14541 AC_SUBST(ENABLE_FORMULA_LOGGER)
14543 dnl ===================================================================
14544 dnl Checking for active Antivirus software.
14545 dnl ===================================================================
14547 if test $_os = WINNT -a -f "$SRC_ROOT/antivirusDetection.vbs" ; then
14548 AC_MSG_CHECKING([for active Antivirus software])
14549 PathFormat "$SRC_ROOT/antivirusDetection.vbs"
14550 ANTIVIRUS_LIST=`cscript.exe //Nologo ${formatted_path}`
14551 if [ [ "$ANTIVIRUS_LIST" != "NULL" ] ]; then
14552 if [ [ "$ANTIVIRUS_LIST" != "NOT_FOUND" ] ]; then
14553 AC_MSG_RESULT([found])
14554 EICAR_STRING='X5O!P%@AP@<:@4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*'
14555 echo $EICAR_STRING > $SRC_ROOT/eicar
14556 EICAR_TEMP_FILE_CONTENTS=`cat $SRC_ROOT/eicar`
14558 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14559 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14561 echo $EICAR_STRING > $BUILDDIR/eicar
14562 EICAR_TEMP_FILE_CONTENTS=`cat $BUILDDIR/eicar`
14564 if [ [ "$EICAR_STRING" != "$EICAR_TEMP_FILE_CONTENTS" ] ]; then
14565 AC_MSG_ERROR([Exclude the build and source directories associated with LibreOffice in the following Antivirus software: $ANTIVIRUS_LIST])
14567 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"
14569 AC_MSG_RESULT([not found])
14572 AC_MSG_RESULT([n/a])
14576 dnl ===================================================================
14577 dnl Setting up the environment.
14578 dnl ===================================================================
14579 AC_MSG_NOTICE([setting up the build environment variables...])
14583 if test "$build_os" = "cygwin" -o "$build_os" = wsl; then
14584 if test -d "$COMPATH/atlmfc/lib/spectre"; then
14585 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
14586 ATL_INCLUDE="$COMPATH/atlmfc/include"
14587 elif test -d "$COMPATH/atlmfc/lib"; then
14588 ATL_LIB="$COMPATH/atlmfc/lib"
14589 ATL_INCLUDE="$COMPATH/atlmfc/include"
14591 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
14592 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
14594 ATL_LIB="$ATL_LIB/$WIN_HOST_ARCH"
14595 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
14596 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
14599 if test "$build_os" = "cygwin"; then
14600 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
14601 PathFormat "/usr/bin/find.exe"
14602 FIND="$formatted_path"
14603 PathFormat "/usr/bin/sort.exe"
14604 SORT="$formatted_path"
14605 PathFormat "/usr/bin/grep.exe"
14606 WIN_GREP="$formatted_path"
14607 PathFormat "/usr/bin/ls.exe"
14608 WIN_LS="$formatted_path"
14609 PathFormat "/usr/bin/touch.exe"
14610 WIN_TOUCH="$formatted_path"
14616 AC_SUBST(ATL_INCLUDE)
14622 AC_SUBST(WIN_TOUCH)
14624 AC_SUBST(BUILD_TYPE)
14629 PERL="$formatted_path"
14632 if test -n "$TMPDIR"; then
14633 TEMP_DIRECTORY="$TMPDIR"
14635 TEMP_DIRECTORY="/tmp"
14637 if test "$build_os" = "cygwin"; then
14638 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
14640 AC_SUBST(TEMP_DIRECTORY)
14642 # setup the PATH for the environment
14643 if test -n "$LO_PATH_FOR_BUILD"; then
14644 LO_PATH="$LO_PATH_FOR_BUILD"
14647 pathmunge "$MSVC_HOST_PATH" "before"
14655 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
14656 if test "$ENABLE_JAVA" != ""; then
14657 pathmunge "$JAVA_HOME/bin" "after"
14662 # Win32 make needs native paths
14663 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
14664 LO_PATH=`cygpath -p -m "$PATH"`
14666 if test "$WIN_BUILD_ARCH" = "x64"; then
14667 # needed for msi packaging
14668 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
14670 # .NET 4.6 and higher don't have bin directory
14671 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
14672 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
14674 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
14675 pathmunge "$CSC_PATH" "before"
14676 pathmunge "$MIDL_PATH" "before"
14677 pathmunge "$AL_PATH" "before"
14678 pathmunge "$MSVC_MULTI_PATH" "before"
14679 pathmunge "$MSVC_BUILD_PATH" "before"
14680 if test -n "$MSBUILD_PATH" ; then
14681 pathmunge "$MSBUILD_PATH" "before"
14683 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/$WIN_BUILD_ARCH" "before"
14684 if test "$ENABLE_JAVA" != ""; then
14685 if test -d "$JAVA_HOME/jre/bin/client"; then
14686 pathmunge "$JAVA_HOME/jre/bin/client" "before"
14688 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
14689 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
14691 pathmunge "$JAVA_HOME/bin" "before"
14693 pathmunge "$MSVC_HOST_PATH" "before"
14697 pathmunge "/usr/css/bin" "before"
14698 if test "$ENABLE_JAVA" != ""; then
14699 pathmunge "$JAVA_HOME/bin" "after"
14707 # Allow to pass LO_ELFCHECK_ALLOWLIST from autogen.input to bin/check-elf-dynamic-objects:
14708 if test "$LO_ELFCHECK_ALLOWLIST" = x || test "${LO_ELFCHECK_ALLOWLIST-x}" != x; then
14709 x_LO_ELFCHECK_ALLOWLIST=
14711 x_LO_ELFCHECK_ALLOWLIST=[\#]
14713 AC_SUBST(x_LO_ELFCHECK_ALLOWLIST)
14714 AC_SUBST(LO_ELFCHECK_ALLOWLIST)
14718 # Generate a configuration sha256 we can use for deps
14719 if test -f config_host.mk; then
14720 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
14722 if test -f config_host_lang.mk; then
14723 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
14726 CFLAGS=$my_original_CFLAGS
14727 CXXFLAGS=$my_original_CXXFLAGS
14728 CPPFLAGS=$my_original_CPPFLAGS
14730 AC_CONFIG_LINKS([include:include])
14732 # Keep in sync with list of files far up, at AC_MSG_CHECKING([for
14733 # BUILD platform configuration] - otherwise breaks cross building
14734 AC_CONFIG_FILES([config_host.mk
14735 config_host_lang.mk
14738 bin/bffvalidator.sh
14739 bin/odfvalidator.sh
14741 hardened_runtime.xcent
14742 instsetoo_native/util/openoffice.lst
14743 sysui/desktop/macosx/Info.plist
14744 vs-code.code-workspace.template:.vscode/vs-code-template.code-workspace.in])
14745 AC_CONFIG_HEADERS([config_host/config_buildid.h])
14746 AC_CONFIG_HEADERS([config_host/config_box2d.h])
14747 AC_CONFIG_HEADERS([config_host/config_clang.h])
14748 AC_CONFIG_HEADERS([config_host/config_crypto.h])
14749 AC_CONFIG_HEADERS([config_host/config_dconf.h])
14750 AC_CONFIG_HEADERS([config_host/config_eot.h])
14751 AC_CONFIG_HEADERS([config_host/config_extensions.h])
14752 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
14753 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
14754 AC_CONFIG_HEADERS([config_host/config_dbus.h])
14755 AC_CONFIG_HEADERS([config_host/config_features.h])
14756 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
14757 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
14758 AC_CONFIG_HEADERS([config_host/config_firebird.h])
14759 AC_CONFIG_HEADERS([config_host/config_folders.h])
14760 AC_CONFIG_HEADERS([config_host/config_fonts.h])
14761 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
14762 AC_CONFIG_HEADERS([config_host/config_gio.h])
14763 AC_CONFIG_HEADERS([config_host/config_global.h])
14764 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
14765 AC_CONFIG_HEADERS([config_host/config_java.h])
14766 AC_CONFIG_HEADERS([config_host/config_langs.h])
14767 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
14768 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
14769 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
14770 AC_CONFIG_HEADERS([config_host/config_locales.h])
14771 AC_CONFIG_HEADERS([config_host/config_mpl.h])
14772 AC_CONFIG_HEADERS([config_host/config_oox.h])
14773 AC_CONFIG_HEADERS([config_host/config_options.h])
14774 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
14775 AC_CONFIG_HEADERS([config_host/config_zxing.h])
14776 AC_CONFIG_HEADERS([config_host/config_skia.h])
14777 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
14778 AC_CONFIG_HEADERS([config_host/config_validation.h])
14779 AC_CONFIG_HEADERS([config_host/config_vendor.h])
14780 AC_CONFIG_HEADERS([config_host/config_vcl.h])
14781 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
14782 AC_CONFIG_HEADERS([config_host/config_version.h])
14783 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
14784 AC_CONFIG_HEADERS([config_host/config_poppler.h])
14785 AC_CONFIG_HEADERS([config_host/config_python.h])
14786 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
14787 AC_CONFIG_HEADERS([config_host/config_wasm_strip.h])
14788 AC_CONFIG_HEADERS([solenv/lockfile/autoconf.h])
14791 if test "$CROSS_COMPILING" = TRUE; then
14792 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
14795 # touch the config timestamp file
14796 if test ! -f config_host.mk.stamp; then
14797 echo > config_host.mk.stamp
14798 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
14799 echo "Host Configuration unchanged - avoiding scp2 stamp update"
14801 echo > config_host.mk.stamp
14804 # touch the config lang timestamp file
14805 if test ! -f config_host_lang.mk.stamp; then
14806 echo > config_host_lang.mk.stamp
14807 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
14808 echo "Language Configuration unchanged - avoiding scp2 stamp update"
14810 echo > config_host_lang.mk.stamp
14814 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
14815 -a "$build_os" = "cygwin"; then
14818 ****************************************************************************
14820 Your make version is known to be horribly slow, and hard to debug
14821 problems with. To get a reasonably functional make please do:
14823 to install a pre-compiled binary make for Win32
14825 mkdir -p /opt/lo/bin
14827 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
14828 cp make-4.2.1-msvc.exe make
14831 to install from source:
14832 place yourself in a working directory of you choice.
14834 git clone git://git.savannah.gnu.org/make.git
14836 [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"]
14837 set PATH=%PATH%;C:\Cygwin\bin
14838 [or Cygwin64, if that is what you have]
14839 cd path-to-make-repo-you-cloned-above
14840 build_w32.bat --without-guile
14842 should result in a WinRel/gnumake.exe.
14843 Copy it to the Cygwin /opt/lo/bin directory as make.exe
14845 Then re-run autogen.sh
14847 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
14848 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
14851 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
14852 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
14858 ****************************************************************************
14860 To show information on various make targets and make flags, run:
14863 To just build, run:
14868 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
14870 After the build has finished successfully, you can immediately run what you built using the command:
14873 if test $_os = Darwin; then
14874 echo open instdir/$PRODUCTNAME_WITHOUT_SPACES.app
14876 echo instdir/program/soffice
14880 If you want to run the unit tests, run:
14886 if test -s "$WARNINGS_FILE_FOR_BUILD"; then
14887 echo "BUILD / cross-toolset config, repeated ($WARNINGS_FILE_FOR_BUILD)"
14888 cat "$WARNINGS_FILE_FOR_BUILD"
14892 if test -s "$WARNINGS_FILE"; then
14893 echo "HOST config ($WARNINGS_FILE)"
14894 cat "$WARNINGS_FILE"
14897 # Remove unneeded emconfigure artifacts
14898 rm -f a.out a.wasm a.out.js a.out.wasm
14900 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: