1 dnl -*- Mode: Autoconf; tab-width: 4; indent-tabs-mode: nil; fill-column: 102 -*-
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([Collabora Office],[6.4.10.33],[],[],[https://collaboraoffice.com/])
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
49 # let's start with Fedora's paths for now
50 -L/lib|-L/lib/|-L/lib64|-L/lib64/|-L/usr/lib|-L/usr/lib/|-L/usr/lib64|-L/usr/lib64/)
51 # ignore it: on UNIXoids it is searched by default anyway
52 # but if it's given explicitly then it may override other paths
53 # (on macOS it would be an error to use it instead of SDK)
56 filteredlibs="$filteredlibs $f"
65 if test "$build_os" = "cygwin"; then
67 # spaces,parentheses,brackets,braces are problematic in pathname
69 case "$formatted_path" in
70 *\ * | *\)* | *\(* | *\{* | *\}* | *\[* | *\]* | *\\* )
74 if test "$pf_conv_to_dos" = "yes"; then
75 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
76 formatted_path=`cygpath -sm "$formatted_path"`
78 formatted_path=`cygpath -d "$formatted_path"`
80 if test $? -ne 0; then
81 AC_MSG_ERROR([path conversion failed for "$1".])
84 fp_count_colon=`echo "$formatted_path" | $GREP -c "[:]"`
85 fp_count_slash=`echo "$formatted_path" | $GREP -c "[/]"`
86 if test "$fp_count_slash$fp_count_colon" != "00"; then
87 if test "$fp_count_colon" = "0"; then
88 new_formatted_path=`realpath "$formatted_path"`
89 if test $? -ne 0; then
90 AC_MSG_WARN([realpath failed for "$1", not necessarily a problem.])
92 formatted_path="$new_formatted_path"
95 formatted_path=`cygpath -m "$formatted_path"`
96 if test $? -ne 0; then
97 AC_MSG_ERROR([path conversion failed for "$1".])
100 fp_count_space=`echo "$formatted_path" | $GREP -c "[ ]"`
101 if test "$fp_count_space" != "0"; then
102 AC_MSG_ERROR([converted path "$formatted_path" still contains spaces. Short filenames (8.3 filenames) support was disabled on this system?])
109 # There appears to be no simple and portable method to get an absolute and
110 # canonical path, so we try creating the directory if does not exist and
111 # utilizing the shell and pwd.
114 test ! -e "$rel" && mkdir -p "$rel"
115 if test -d "$rel" ; then
116 cd "$rel" || AC_MSG_ERROR([absolute path resolution failed for "$rel".])
117 absolute_path="$(pwd)"
120 AC_MSG_ERROR([Failed to resolve absolute path. "$rel" does not exist or is not a directory.])
128 if test "$have_WARNINGS" = "no"; then
129 echo "*************************************" > warn
131 if which tput >/dev/null && test "`tput colors 2>/dev/null || echo 0`" -ge 8; then
132 dnl <esc> as actual byte (U+1b), [ escaped using quadrigraph @<:@
133 COLORWARN='*
\e@<:@1;33;40m WARNING
\e@<:@0m:'
135 COLORWARN="* WARNING :"
138 echo "$COLORWARN $@" >> warn
141 dnl Some Mac User have the bad habit of letting a lot of crap
142 dnl accumulate in their PATH and even adding stuff in /usr/local/bin
143 dnl that confuse the build.
144 dnl For the ones that use LODE, let's be nice and protect them
149 mac_path="$LODE_HOME/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin"
150 dnl a common but nevertheless necessary thing that may be in a fancy
151 dnl path location is git, so make sure we have it
152 mac_git_path=`which git 2>/dev/null`
153 if test -n "$mac_git_path" -a -x "$mac_git_path" -a "$mac_git_path" != "/usr/bin/git" ; then
154 mac_path="$mac_path:`dirname $mac_git_path`"
156 dnl a not so common but nevertheless quite helpful thing that may be in a fancy
157 dnl path location is gpg, so make sure we find it
158 mac_gpg_path=`which gpg 2>/dev/null`
159 if test -n "$mac_gpg_path" -a -x "$mac_gpg_path" -a "$mac_gpg_path" != "/usr/bin/gpg" ; then
160 mac_path="$mac_path:`dirname $mac_gpg_path`"
168 echo "********************************************************************"
170 echo "* Running ${PACKAGE_NAME} build configuration."
172 echo "********************************************************************"
175 dnl ===================================================================
176 dnl checks build and host OSes
177 dnl do this before argument processing to allow for platform dependent defaults
178 dnl ===================================================================
181 AC_MSG_CHECKING([for product name])
182 PRODUCTNAME="AC_PACKAGE_NAME"
183 if test -n "$with_product_name" -a "$with_product_name" != no; then
184 PRODUCTNAME="$with_product_name"
186 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
187 PRODUCTNAME="${PRODUCTNAME}Dev"
188 PRODUCTNAME=AC_PACKAGE_NAME
190 AC_MSG_RESULT([$PRODUCTNAME])
191 AC_SUBST(PRODUCTNAME)
192 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
193 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
195 dnl ===================================================================
196 dnl Our version is defined by the AC_INIT() at the top of this script.
197 dnl ===================================================================
199 AC_MSG_CHECKING([for package version])
200 if test -n "$with_package_version" -a "$with_package_version" != no; then
201 PACKAGE_VERSION="$with_package_version"
203 AC_MSG_RESULT([$PACKAGE_VERSION])
205 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
207 LIBO_VERSION_MAJOR=$1
208 LIBO_VERSION_MINOR=$2
209 LIBO_VERSION_MICRO=$3
210 LIBO_VERSION_PATCH=$4
212 # The CFBundleShortVersionString in Info.plist consists of three integers, so encode the third
213 # as the micro version times 1000 plus the patch number. Unfortunately the LIBO_VERSION_SUFFIX can be anything so
214 # no way to encode that into an integer in general.
215 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
217 LIBO_VERSION_SUFFIX=$5
218 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
219 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
220 # they get undoubled before actually passed to sed.
221 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
222 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
223 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
224 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
226 AC_SUBST(LIBO_VERSION_MAJOR)
227 AC_SUBST(LIBO_VERSION_MINOR)
228 AC_SUBST(LIBO_VERSION_MICRO)
229 AC_SUBST(LIBO_VERSION_PATCH)
230 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
231 AC_SUBST(LIBO_VERSION_SUFFIX)
232 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
234 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
235 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
236 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
237 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
239 LIBO_THIS_YEAR=`date +%Y`
240 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
242 dnl ===================================================================
244 dnl ===================================================================
245 AC_MSG_CHECKING([for product version])
246 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
247 AC_MSG_RESULT([$PRODUCTVERSION])
248 AC_SUBST(PRODUCTVERSION)
251 # AC_PROG_EGREP doesn't set GREP on all systems as well
252 AC_PATH_PROG(GREP, grep)
260 dnl ======================================
261 dnl Required GObject introspection version
262 dnl ======================================
263 INTROSPECTION_REQUIRED_VERSION=1.32.0
265 dnl ===================================================================
266 dnl Search all the common names for GNU Make
267 dnl ===================================================================
268 AC_MSG_CHECKING([for GNU Make])
270 # try to use our own make if it is available and GNUMAKE was not already defined
271 if test -z "$GNUMAKE"; then
272 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
273 GNUMAKE="$LODE_HOME/opt/bin/make"
274 elif test -x "/opt/lo/bin/make"; then
275 GNUMAKE="/opt/lo/bin/make"
280 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
281 if test -n "$a"; then
282 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null
283 if test $? -eq 0; then
284 if test "$build_os" = "cygwin"; then
285 if test -n "$($a -v | grep 'Built for Windows')" ; then
286 GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
287 GNUMAKE_WIN_NATIVE="TRUE"
298 AC_MSG_RESULT($GNUMAKE)
299 if test -z "$GNUMAKE"; then
300 AC_MSG_ERROR([not found. install GNU Make.])
302 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
303 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
307 win_short_path_for_make()
309 local_short_path="$1"
310 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
311 cygpath -sm "$local_short_path"
313 cygpath -u "$(cygpath -d "$local_short_path")"
318 if test "$build_os" = "cygwin"; then
319 PathFormat "$SRC_ROOT"
320 SRC_ROOT="$formatted_path"
321 PathFormat "$BUILDDIR"
322 BUILDDIR="$formatted_path"
324 AC_MSG_CHECKING(for explicit COMSPEC)
325 if test -z "$COMSPEC"; then
326 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
328 AC_MSG_RESULT([found: $COMSPEC])
335 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
336 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
337 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
339 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
340 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
343 # need sed in os checks...
344 AC_PATH_PROGS(SED, sed)
345 if test -z "$SED"; then
346 AC_MSG_ERROR([install sed to run this script])
349 # Set the ENABLE_LTO variable
350 # ===================================================================
351 AC_MSG_CHECKING([whether to use link-time optimization])
352 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
355 AC_DEFINE(STATIC_LINKING)
362 AC_ARG_ENABLE(fuzz-options,
363 AS_HELP_STRING([--enable-fuzz-options],
364 [Randomly enable or disable each of those configurable options
365 that are supposed to be freely selectable without interdependencies,
366 or where bad interaction from interdependencies is automatically avoided.])
369 dnl ===================================================================
370 dnl When building for Android, --with-android-ndk,
371 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
373 dnl ===================================================================
375 AC_ARG_WITH(android-ndk,
376 AS_HELP_STRING([--with-android-ndk],
377 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
380 AC_ARG_WITH(android-ndk-toolchain-version,
381 AS_HELP_STRING([--with-android-ndk-toolchain-version],
382 [Specify which toolchain version to use, of those present in the
383 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
384 with_android_ndk_toolchain_version=clang5.0)
386 AC_ARG_WITH(android-sdk,
387 AS_HELP_STRING([--with-android-sdk],
388 [Specify location of the Android SDK. Mandatory when building for Android.]),
391 AC_ARG_WITH(android-api-level,
392 AS_HELP_STRING([--with-android-api-level],
393 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
397 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
398 with_android_ndk="$SRC_ROOT/external/android-ndk"
400 if test -n "$with_android_ndk"; then
401 eval ANDROID_NDK_HOME=$with_android_ndk
403 # Set up a lot of pre-canned defaults
405 if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then
406 if test ! -f $ANDROID_NDK_HOME/source.properties; then
407 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.])
409 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
411 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
413 if test -z "$ANDROID_NDK_VERSION"; then
414 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
416 case $ANDROID_NDK_VERSION in
418 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
420 11.1.*|12.1.*|13.1.*|14.1.*)
421 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
423 16.*|17.*|18.*|19.*|20.*)
426 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
427 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
432 if test -n "$with_android_api_level" ; then
433 ANDROID_API_LEVEL="$with_android_api_level"
436 android_cpu=$host_cpu
437 if test $host_cpu = arm; then
438 android_platform_prefix=arm-linux-androideabi
439 android_gnu_prefix=$android_platform_prefix
440 LLVM_TRIPLE=armv7a-linux-androideabi
441 ANDROID_APP_ABI=armeabi-v7a
442 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
443 elif test $host_cpu = aarch64; then
444 android_platform_prefix=aarch64-linux-android
445 android_gnu_prefix=$android_platform_prefix
446 LLVM_TRIPLE=$android_platform_prefix
447 # minimum android version that supports aarch64
448 if test "$ANDROID_API_LEVEL" -lt "21" ; then
451 ANDROID_APP_ABI=arm64-v8a
452 elif test $host_cpu = x86_64; then
453 android_platform_prefix=x86_64-linux-android
454 android_gnu_prefix=$android_platform_prefix
455 LLVM_TRIPLE=$android_platform_prefix
456 # minimum android version that supports x86_64
458 ANDROID_APP_ABI=x86_64
460 # host_cpu is something like "i386" or "i686" I guess, NDK uses
461 # "x86" in some contexts
463 android_platform_prefix=$android_cpu
464 android_gnu_prefix=i686-linux-android
465 LLVM_TRIPLE=$android_gnu_prefix
469 case "$with_android_ndk_toolchain_version" in
471 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
474 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
477 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
479 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
480 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
481 # manage to link the (app-specific) single huge .so that is built for the app in
482 # android/source/ if there is debug information in a significant part of the object files.
483 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
484 # all objects have been built with debug information.)
487 android_HOST_TAG=linux-x86_64
490 android_HOST_TAG=darwin-x86_64
493 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
494 # ndk would also support windows and windows-x86_64
497 android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG
498 ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
499 dnl TODO: NSS build uses it...
500 ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
501 AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
503 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
504 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
505 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
506 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
507 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
509 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
510 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
511 if test "$ENABLE_LTO" = TRUE; then
512 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
513 # $CC and $CXX when building external libraries
514 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
517 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
519 if test -z "$CC"; then
520 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
523 if test -z "$CXX"; then
524 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
528 # remember to download the ownCloud Android library later
529 BUILD_TYPE="$BUILD_TYPE OWNCLOUD_ANDROID_LIB"
531 AC_SUBST(ANDROID_NDK_HOME)
532 AC_SUBST(ANDROID_APP_ABI)
533 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
535 dnl ===================================================================
536 dnl --with-android-sdk
537 dnl ===================================================================
539 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
540 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
542 if test -n "$with_android_sdk"; then
543 eval ANDROID_SDK_HOME=$with_android_sdk
544 PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
546 AC_SUBST(ANDROID_SDK_HOME)
548 AC_ARG_ENABLE([android-lok],
549 AS_HELP_STRING([--enable-android-lok],
550 [The Android app from the android/ subdir needs several tweaks all
551 over the place that break the LOK when used in the Online-based
552 Android app. This switch indicates that the intent of this build is
553 actually the Online-based, non-modified LOK.])
556 if test -n "$ANDROID_NDK_HOME" ; then
557 if test "$enable_android_lok" = yes; then
558 ENABLE_ANDROID_LOK=TRUE
559 AC_DEFINE(HAVE_FEATURE_ANDROID_LOK)
560 AC_MSG_NOTICE([building the Android version... for the Online-based Android app])
562 AC_MSG_NOTICE([building the Android version... for the app from the android/ subdir])
565 AC_SUBST([ENABLE_ANDROID_LOK])
567 libo_FUZZ_ARG_ENABLE([android-editing],
568 AS_HELP_STRING([--enable-android-editing],
569 [Enable the experimental editing feature on Android.])
571 ENABLE_ANDROID_EDITING=
572 if test "$enable_android_editing" = yes; then
573 ENABLE_ANDROID_EDITING=TRUE
575 AC_SUBST([ENABLE_ANDROID_EDITING])
577 dnl ===================================================================
578 dnl The following is a list of supported systems.
579 dnl Sequential to keep the logic very simple
580 dnl These values may be checked and reset later.
581 dnl ===================================================================
582 #defaults unless the os test overrides this:
592 # Default values, as such probably valid just for Linux, set
593 # differently below just for Mac OSX, but at least better than
594 # hardcoding these as we used to do. Much of this is duplicated also
595 # in solenv for old build system and for gbuild, ideally we should
596 # perhaps define stuff like this only here in configure.ac?
598 LINKFLAGSSHL="-shared"
602 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
605 INSTROOTCONTENTSUFFIX=
608 HOST_PLATFORM="$host"
610 host_cpu_for_clang="$host_cpu"
615 build_gstreamer_1_0=yes
619 dnl ===========================================================
620 dnl Check whether we're using Solaris 10 - SPARC or Intel.
621 dnl ===========================================================
622 AC_MSG_CHECKING([the Solaris operating system release])
623 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
624 if test "$_os_release" -lt "10"; then
625 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
627 AC_MSG_RESULT([ok ($_os_release)])
630 dnl Check whether we're using a SPARC or i386 processor
631 AC_MSG_CHECKING([the processor type])
632 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
633 AC_MSG_RESULT([ok ($host_cpu)])
635 AC_MSG_ERROR([only SPARC and i386 processors are supported])
639 linux-gnu*|k*bsd*-gnu*)
640 build_gstreamer_1_0=yes
645 if test "$enable_fuzzers" != yes; then
651 BUILD_TYPE="$BUILD_TYPE FONTCONFIG FREETYPE"
664 # When building on Windows normally with MSVC under Cygwin,
665 # configure thinks that the host platform (the platform the
666 # built code will run on) is Cygwin, even if it obviously is
667 # Windows, which in Autoconf terminology is called
668 # "mingw32". (Which is misleading as MinGW is the name of the
669 # tool-chain, not an operating system.)
671 # Somewhat confusing, yes. But this configure script doesn't
672 # look at $host etc that much, it mostly uses its own $_os
673 # variable, set here in this case statement.
687 darwin*|macos*) # macOS
693 if test -n "$LODE_HOME" ; then
695 AC_MSG_NOTICE([sanitized the PATH to $PATH])
698 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
699 INSTROOTCONTENTSUFFIX=/Contents
700 SDKDIRNAME=${PRODUCTNAME_WITHOUT_SPACES}${PRODUCTVERSION}_SDK
701 # See comment above the case "$host_os"
702 LINKFLAGSSHL="-dynamiclib -single_module"
709 # -undefined error is the default
715 # HOST_PLATFORM is used for external projects and their configury occasionally doesn't like
716 # the "macos" part so be sure to use aarch64-apple-darwin for now.
717 HOST_PLATFORM=aarch64-apple-darwin
721 # Apple's Clang uses "arm64"
722 host_cpu_for_clang=arm64
732 if test -n "$LODE_HOME" ; then
734 AC_MSG_NOTICE([sanitized the PATH to $PATH])
739 enable_mpl_subset=yes
740 enable_lotuswordpro=no
743 enable_postgresql_sdbc=no
744 enable_extension_integration=no
745 enable_report_builder=no
747 if test "$enable_ios_simulator" = "yes"; then
748 host=x86_64-apple-darwin
750 # See comment above the case "$host_os"
751 LINKFLAGSSHL="-dynamiclib -single_module"
758 # -undefined error is the default
761 # HOST_PLATFORM is used for external projects and their configury typically doesn't like the "ios"
762 # part, so use aarch64-apple-darwin for now.
763 HOST_PLATFORM=aarch64-apple-darwin
765 # Apple's Clang uses "arm64"
766 host_cpu_for_clang=arm64
770 build_gstreamer_1_0=yes
774 AC_MSG_CHECKING([the FreeBSD operating system release])
775 if test -n "$with_os_version"; then
776 OSVERSION="$with_os_version"
778 OSVERSION=`/sbin/sysctl -n kern.osreldate`
780 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
781 AC_MSG_CHECKING([which thread library to use])
782 if test "$OSVERSION" -lt "500016"; then
783 PTHREAD_CFLAGS="-D_THREAD_SAFE"
784 PTHREAD_LIBS="-pthread"
785 elif test "$OSVERSION" -lt "502102"; then
786 PTHREAD_CFLAGS="-D_THREAD_SAFE"
790 PTHREAD_LIBS="-pthread"
792 AC_MSG_RESULT([$PTHREAD_LIBS])
797 build_gstreamer_1_0=yes
801 PTHREAD_LIBS="-pthread -lpthread"
808 PTHREAD_LIBS=-pthread
814 PTHREAD_CFLAGS="-D_THREAD_SAFE"
815 PTHREAD_LIBS="-pthread"
820 build_gstreamer_1_0=yes
824 PTHREAD_LIBS="-pthread"
829 build_gstreamer_1_0=no
830 enable_lotuswordpro=no
831 enable_mpl_subset=yes
834 enable_report_builder=no
836 enable_postgresql_sdbc=no
849 AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
850 BUILD_TYPE="$BUILD_TYPE CAIRO FONTCONFIG FREETYPE"
860 enable_gstreamer_1_0=no
865 enable_postgresql_sdbc=no
866 enable_firebird_sdbc=no
871 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
875 AC_SUBST(HOST_PLATFORM)
877 if test "$_os" = "Android" ; then
878 # Verify that the NDK and SDK options are proper
879 if test -z "$with_android_ndk"; then
880 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
881 elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
882 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
885 if test -z "$ANDROID_SDK_HOME"; then
886 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
887 elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
888 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
891 BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
892 if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
893 AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
894 $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
895 or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
896 add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
897 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
898 add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
900 if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
901 AC_MSG_WARN([android support repository not found - install with
902 $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
903 to allow the build to download the specified version of the android support libraries])
904 add_warning "android support repository not found - install with"
905 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
906 add_warning "to allow the build to download the specified version of the android support libraries"
910 if test "$_os" = "AIX"; then
911 AC_PATH_PROG(GAWK, gawk)
912 if test -z "$GAWK"; then
913 AC_MSG_ERROR([gawk not found in \$PATH])
919 AC_SUBST(PTHREAD_CFLAGS)
920 AC_SUBST(PTHREAD_LIBS)
922 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
923 # By default use the ones specified by our build system,
924 # but explicit override is possible.
925 AC_MSG_CHECKING(for explicit AFLAGS)
926 if test -n "$AFLAGS"; then
927 AC_MSG_RESULT([$AFLAGS])
933 AC_MSG_CHECKING(for explicit CFLAGS)
934 if test -n "$CFLAGS"; then
935 AC_MSG_RESULT([$CFLAGS])
941 AC_MSG_CHECKING(for explicit CXXFLAGS)
942 if test -n "$CXXFLAGS"; then
943 AC_MSG_RESULT([$CXXFLAGS])
949 AC_MSG_CHECKING(for explicit OBJCFLAGS)
950 if test -n "$OBJCFLAGS"; then
951 AC_MSG_RESULT([$OBJCFLAGS])
957 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
958 if test -n "$OBJCXXFLAGS"; then
959 AC_MSG_RESULT([$OBJCXXFLAGS])
965 AC_MSG_CHECKING(for explicit LDFLAGS)
966 if test -n "$LDFLAGS"; then
967 AC_MSG_RESULT([$LDFLAGS])
977 AC_SUBST(OBJCXXFLAGS)
982 AC_SUBST(x_OBJCFLAGS)
983 AC_SUBST(x_OBJCXXFLAGS)
986 dnl These are potentially set for MSVC, in the code checking for UCRT below:
987 my_original_CFLAGS=$CFLAGS
988 my_original_CXXFLAGS=$CXXFLAGS
989 my_original_CPPFLAGS=$CPPFLAGS
991 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
992 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
993 dnl AC_PROG_CC internally.
994 if test "$_os" != "WINNT"; then
995 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
999 if test -z "$CC_BASE"; then
1000 CC_BASE=`first_arg_basename "$CC"`
1004 if test "$_os" != "WINNT"; then
1005 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
1009 AC_SUBST(ENDIANNESS)
1011 if test $_os != "WINNT"; then
1013 AC_SEARCH_LIBS([dlsym], [dl],
1014 [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
1015 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
1018 AC_SUBST(DLOPEN_LIBS)
1020 AC_ARG_ENABLE(ios-simulator,
1021 AS_HELP_STRING([--enable-ios-simulator],
1022 [build i386 or x86_64 for ios simulator])
1025 AC_ARG_ENABLE(ios-libreofficelight-app,
1026 AS_HELP_STRING([--enable-ios-libreofficelight-app],
1027 [When building for iOS, build stuff relevant only for the 'LibreOfficeLight' app
1028 (in ios/LibreOfficeLight). Note that this app is not known to work in any useful manner,
1029 and also that its actual build (in Xcode) requires some obvious modifications to the project.])
1032 ENABLE_IOS_LIBREOFFICELIGHT_APP=
1033 if test "$enable_ios_libreofficelight_app" = yes; then
1034 ENABLE_IOS_LIBREOFFICELIGHT_APP=TRUE
1036 AC_SUBST(ENABLE_IOS_LIBREOFFICELIGHT_APP)
1038 ###############################################################################
1039 # Extensions switches --enable/--disable
1040 ###############################################################################
1041 # By default these should be enabled unless having extra dependencies.
1042 # If there is extra dependency over configure options then the enable should
1043 # be automagic based on whether the requiring feature is enabled or not.
1044 # All this options change anything only with --enable-extension-integration.
1046 # The name of this option and its help string makes it sound as if
1047 # extensions are built anyway, just not integrated in the installer,
1048 # if you use --disable-extension-integration. Is that really the
1051 libo_FUZZ_ARG_ENABLE(extension-integration,
1052 AS_HELP_STRING([--disable-extension-integration],
1053 [Disable integration of the built extensions in the installer of the
1054 product. Use this switch to disable the integration.])
1057 AC_ARG_ENABLE(avmedia,
1058 AS_HELP_STRING([--disable-avmedia],
1059 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
1062 AC_ARG_ENABLE(database-connectivity,
1063 AS_HELP_STRING([--disable-database-connectivity],
1064 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1067 # This doesn't mean not building (or "integrating") extensions
1068 # (although it probably should; i.e. it should imply
1069 # --disable-extension-integration I guess), it means not supporting
1070 # any extension mechanism at all
1071 libo_FUZZ_ARG_ENABLE(extensions,
1072 AS_HELP_STRING([--disable-extensions],
1073 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1076 AC_ARG_ENABLE(scripting,
1077 AS_HELP_STRING([--disable-scripting],
1078 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1081 # This is mainly for Android and iOS, but could potentially be used in some
1082 # special case otherwise, too, so factored out as a separate setting
1084 AC_ARG_ENABLE(dynamic-loading,
1085 AS_HELP_STRING([--disable-dynamic-loading],
1086 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1089 libo_FUZZ_ARG_ENABLE(report-builder,
1090 AS_HELP_STRING([--disable-report-builder],
1091 [Disable the Report Builder.])
1094 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1095 AS_HELP_STRING([--enable-ext-wiki-publisher],
1096 [Enable the Wiki Publisher extension.])
1099 libo_FUZZ_ARG_ENABLE(lpsolve,
1100 AS_HELP_STRING([--disable-lpsolve],
1101 [Disable compilation of the lp solve solver ])
1103 libo_FUZZ_ARG_ENABLE(coinmp,
1104 AS_HELP_STRING([--disable-coinmp],
1105 [Disable compilation of the CoinMP solver ])
1108 libo_FUZZ_ARG_ENABLE(pdfimport,
1109 AS_HELP_STRING([--disable-pdfimport],
1110 [Disable building the PDF import feature.])
1113 libo_FUZZ_ARG_ENABLE(pdfium,
1114 AS_HELP_STRING([--disable-pdfium],
1115 [Disable building PDFium.])
1118 ###############################################################################
1120 dnl ---------- *** ----------
1122 libo_FUZZ_ARG_ENABLE(mergelibs,
1123 AS_HELP_STRING([--enable-mergelibs],
1124 [Merge several of the smaller libraries into one big, "merged", one.])
1127 libo_FUZZ_ARG_ENABLE(breakpad,
1128 AS_HELP_STRING([--enable-breakpad],
1129 [Enables breakpad for crash reporting.])
1132 libo_FUZZ_ARG_ENABLE(crashdump,
1133 AS_HELP_STRING([--disable-crashdump],
1134 [Disable dump.ini and dump-file, when --enable-breakpad])
1137 AC_ARG_ENABLE(fetch-external,
1138 AS_HELP_STRING([--disable-fetch-external],
1139 [Disables fetching external tarballs from web sources.])
1142 AC_ARG_ENABLE(fuzzers,
1143 AS_HELP_STRING([--enable-fuzzers],
1144 [Enables building libfuzzer targets for fuzz testing.])
1147 libo_FUZZ_ARG_ENABLE(pch,
1148 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1149 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1150 Using 'system' will include only external headers, 'base' will add also headers
1151 from base modules, 'normal' will also add all headers except from the module built,
1152 'full' will use all suitable headers even from a module itself.])
1155 libo_FUZZ_ARG_ENABLE(epm,
1156 AS_HELP_STRING([--enable-epm],
1157 [LibreOffice includes self-packaging code, that requires epm, however epm is
1158 useless for large scale package building.])
1161 libo_FUZZ_ARG_ENABLE(odk,
1162 AS_HELP_STRING([--disable-odk],
1163 [LibreOffice includes an ODK, office development kit which some packagers may
1164 wish to build without.])
1167 AC_ARG_ENABLE(mpl-subset,
1168 AS_HELP_STRING([--enable-mpl-subset],
1169 [Don't compile any pieces which are not MPL or more liberally licensed])
1172 libo_FUZZ_ARG_ENABLE(evolution2,
1173 AS_HELP_STRING([--enable-evolution2],
1174 [Allows the built-in evolution 2 addressbook connectivity build to be
1178 AC_ARG_ENABLE(avahi,
1179 AS_HELP_STRING([--enable-avahi],
1180 [Determines whether to use Avahi to advertise Impress to remote controls.])
1183 libo_FUZZ_ARG_ENABLE(werror,
1184 AS_HELP_STRING([--enable-werror],
1185 [Turn warnings to errors. (Has no effect in modules where the treating
1186 of warnings as errors is disabled explicitly.)]),
1189 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1190 AS_HELP_STRING([--enable-assert-always-abort],
1191 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1194 libo_FUZZ_ARG_ENABLE(dbgutil,
1195 AS_HELP_STRING([--enable-dbgutil],
1196 [Provide debugging support from --enable-debug and include additional debugging
1197 utilities such as object counting or more expensive checks.
1198 This is the recommended option for developers.
1199 Note that this makes the build ABI incompatible, it is not possible to mix object
1200 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1202 libo_FUZZ_ARG_ENABLE(debug,
1203 AS_HELP_STRING([--enable-debug],
1204 [Include debugging information, disable compiler optimization and inlining plus
1205 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1207 libo_FUZZ_ARG_ENABLE(split-debug,
1208 AS_HELP_STRING([--disable-split-debug],
1209 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1210 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1212 libo_FUZZ_ARG_ENABLE(gdb-index,
1213 AS_HELP_STRING([--disable-gdb-index],
1214 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1215 The feature requires the gold or lld linker.]))
1217 libo_FUZZ_ARG_ENABLE(sal-log,
1218 AS_HELP_STRING([--enable-sal-log],
1219 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1221 libo_FUZZ_ARG_ENABLE(symbols,
1222 AS_HELP_STRING([--enable-symbols],
1223 [Generate debug information.
1224 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1225 otherwise. It is possible to explicitly specify gbuild build targets
1226 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1227 everything in the directory; there is no ordering, more specific overrides
1228 more general, and disabling takes precedence).
1229 Example: --enable-symbols="all -sw/ -Library_sc".]))
1231 libo_FUZZ_ARG_ENABLE(optimized,
1232 AS_HELP_STRING([--disable-optimized],
1233 [Whether to compile with optimization flags.
1234 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1237 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1238 AS_HELP_STRING([--disable-runtime-optimizations],
1239 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1240 JVM JIT) that are known to interact badly with certain dynamic analysis
1241 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1242 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1243 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1245 AC_ARG_WITH(valgrind,
1246 AS_HELP_STRING([--with-valgrind],
1247 [Make availability of Valgrind headers a hard requirement.]))
1249 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1250 AS_HELP_STRING([--enable-compiler-plugins],
1251 [Enable compiler plugins that will perform additional checks during
1252 building. Enabled automatically by --enable-dbgutil.
1253 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1254 COMPILER_PLUGINS_DEBUG=
1255 if test "$enable_compiler_plugins" = debug; then
1256 enable_compiler_plugins=yes
1257 COMPILER_PLUGINS_DEBUG=TRUE
1260 libo_FUZZ_ARG_ENABLE(ooenv,
1261 AS_HELP_STRING([--disable-ooenv],
1262 [Disable ooenv for the instdir installation.]))
1264 libo_FUZZ_ARG_ENABLE(libnumbertext,
1265 AS_HELP_STRING([--disable-libnumbertext],
1266 [Disable use of numbertext external library.]))
1269 AS_HELP_STRING([--enable-lto],
1270 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1271 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1272 linker. For MSVC, this option is broken at the moment. This is experimental work
1273 in progress that shouldn't be used unless you are working on it.)]))
1275 AC_ARG_ENABLE(python,
1276 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1277 [Enables or disables Python support at run-time.
1278 Also specifies what Python to use. 'auto' is the default.
1279 'fully-internal' even forces the internal version for uses of Python
1280 during the build.]))
1282 libo_FUZZ_ARG_ENABLE(gtk3,
1283 AS_HELP_STRING([--disable-gtk3],
1284 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1285 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1287 AC_ARG_ENABLE(introspection,
1288 AS_HELP_STRING([--enable-introspection],
1289 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1290 Linux distributions.)]))
1292 AC_ARG_ENABLE(split-app-modules,
1293 AS_HELP_STRING([--enable-split-app-modules],
1294 [Split file lists for app modules, e.g. base, calc.
1295 Has effect only with make distro-pack-install]),
1298 AC_ARG_ENABLE(split-opt-features,
1299 AS_HELP_STRING([--enable-split-opt-features],
1300 [Split file lists for some optional features, e.g. pyuno, testtool.
1301 Has effect only with make distro-pack-install]),
1304 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1305 AS_HELP_STRING([--disable-cairo-canvas],
1306 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1309 libo_FUZZ_ARG_ENABLE(dbus,
1310 AS_HELP_STRING([--disable-dbus],
1311 [Determines whether to enable features that depend on dbus.
1312 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1313 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1315 libo_FUZZ_ARG_ENABLE(sdremote,
1316 AS_HELP_STRING([--disable-sdremote],
1317 [Determines whether to enable Impress remote control (i.e. the server component).]),
1318 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1320 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1321 AS_HELP_STRING([--disable-sdremote-bluetooth],
1322 [Determines whether to build sdremote with bluetooth support.
1323 Requires dbus on Linux.]))
1325 libo_FUZZ_ARG_ENABLE(gio,
1326 AS_HELP_STRING([--disable-gio],
1327 [Determines whether to use the GIO support.]),
1328 ,test "${enable_gio+set}" = set || enable_gio=yes)
1331 AS_HELP_STRING([--enable-qt5],
1332 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1337 AS_HELP_STRING([--enable-kf5],
1338 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1339 KF5 are available.]),
1343 AS_HELP_STRING([--enable-kde5],
1344 [Compatibility switch for the kde5 => kf5 rename. Use --enable-kf5!])
1347 AC_ARG_ENABLE(gtk3_kde5,
1348 AS_HELP_STRING([--enable-gtk3-kde5],
1349 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1350 platforms where Gtk3, Qt5 and Plasma is available.]),
1354 AS_HELP_STRING([--disable-gui],
1355 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1358 libo_FUZZ_ARG_ENABLE(randr,
1359 AS_HELP_STRING([--disable-randr],
1360 [Disable RandR support in the vcl project.]),
1361 ,test "${enable_randr+set}" = set || enable_randr=yes)
1363 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1364 AS_HELP_STRING([--disable-gstreamer-1-0],
1365 [Disable building with the gstreamer 1.0 avmedia backend.]),
1366 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1368 libo_FUZZ_ARG_ENABLE(vlc,
1369 AS_HELP_STRING([--enable-vlc],
1370 [Enable building with the (experimental) VLC avmedia backend.]),
1371 ,test "${enable_vlc+set}" = set || enable_vlc=no)
1373 libo_FUZZ_ARG_ENABLE(neon,
1374 AS_HELP_STRING([--disable-neon],
1375 [Disable neon and the compilation of webdav binding.]),
1378 libo_FUZZ_ARG_ENABLE([eot],
1379 [AS_HELP_STRING([--enable-eot],
1380 [Enable support for Embedded OpenType fonts.])],
1381 ,test "${enable_eot+set}" = set || enable_eot=no)
1383 libo_FUZZ_ARG_ENABLE(cve-tests,
1384 AS_HELP_STRING([--disable-cve-tests],
1385 [Prevent CVE tests to be executed]),
1388 libo_FUZZ_ARG_ENABLE(chart-tests,
1389 AS_HELP_STRING([--enable-chart-tests],
1390 [Executes chart XShape tests. In a perfect world these tests would be
1391 stable and everyone could run them, in reality it is best to run them
1392 only on a few machines that are known to work and maintained by people
1393 who can judge if a test failure is a regression or not.]),
1396 AC_ARG_ENABLE(build-unowinreg,
1397 AS_HELP_STRING([--enable-build-unowinreg],
1398 [Do not use the prebuilt unowinreg.dll. Build it instead. The MinGW C++
1399 compiler is needed on Linux.]),
1402 AC_ARG_ENABLE(build-opensymbol,
1403 AS_HELP_STRING([--enable-build-opensymbol],
1404 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1405 fontforge installed.]),
1408 AC_ARG_ENABLE(dependency-tracking,
1409 AS_HELP_STRING([--enable-dependency-tracking],
1410 [Do not reject slow dependency extractors.])[
1411 --disable-dependency-tracking
1412 Disables generation of dependency information.
1413 Speed up one-time builds.],
1416 AC_ARG_ENABLE(icecream,
1417 AS_HELP_STRING([--enable-icecream],
1418 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1419 It defaults to /opt/icecream for the location of the icecream gcc/g++
1420 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1424 AS_HELP_STRING([--enable-ld=<linker>],
1425 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1426 By default tries to use the best linker possible, use --disable-ld to use the default linker.]),
1429 libo_FUZZ_ARG_ENABLE(cups,
1430 AS_HELP_STRING([--disable-cups],
1431 [Do not build cups support.])
1434 AC_ARG_ENABLE(ccache,
1435 AS_HELP_STRING([--disable-ccache],
1436 [Do not try to use ccache automatically.
1437 By default, unless on Windows, we will try to detect if ccache is available; in that case if
1438 CC/CXX are not yet set, and --enable-icecream is not given, we
1439 attempt to use ccache. --disable-ccache disables ccache completely.
1440 Additionally ccache's depend mode is enabled if possible,
1441 use --enable-ccache=nodepend to enable ccache without depend mode.
1445 AC_ARG_ENABLE(64-bit,
1446 AS_HELP_STRING([--enable-64-bit],
1447 [Build a 64-bit LibreOffice on platforms where the normal build is 32-bit.
1448 At the moment meaningful only for Windows.]), ,)
1450 libo_FUZZ_ARG_ENABLE(online-update,
1451 AS_HELP_STRING([--enable-online-update],
1452 [Enable the online update service that will check for new versions of
1453 LibreOffice. By default, it is enabled on Windows and Mac, disabled on Linux.
1454 If the value is "mar", the experimental Mozilla-like update will be
1455 enabled instead of the traditional update mechanism.]),
1458 AC_ARG_WITH(update-config,
1459 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1460 [Path to the update config ini file]))
1462 libo_FUZZ_ARG_ENABLE(extension-update,
1463 AS_HELP_STRING([--disable-extension-update],
1464 [Disable possibility to update installed extensions.]),
1467 libo_FUZZ_ARG_ENABLE(release-build,
1468 AS_HELP_STRING([--enable-release-build],
1469 [Enable release build. Note that the "release build" choice is orthogonal to
1470 whether symbols are present, debug info is generated, or optimization
1472 See http://wiki.documentfoundation.org/Development/DevBuild]),
1475 AC_ARG_ENABLE(windows-build-signing,
1476 AS_HELP_STRING([--enable-windows-build-signing],
1477 [Enable signing of windows binaries (*.exe, *.dll)]),
1480 AC_ARG_ENABLE(silent-msi,
1481 AS_HELP_STRING([--enable-silent-msi],
1482 [Enable MSI with LIMITUI=1 (silent install).]),
1485 AC_ARG_ENABLE(macosx-code-signing,
1486 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1487 [Sign executables, dylibs, frameworks and the app bundle. If you
1488 don't provide an identity the first suitable certificate
1489 in your keychain is used.]),
1492 AC_ARG_ENABLE(macosx-package-signing,
1493 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1494 [Create a .pkg suitable for uploading to the Mac App Store and sign
1495 it. If you don't provide an identity the first suitable certificate
1496 in your keychain is used.]),
1499 AC_ARG_ENABLE(macosx-sandbox,
1500 AS_HELP_STRING([--enable-macosx-sandbox],
1501 [Make the app bundle run in a sandbox. Requires code signing.
1502 Is required by apps distributed in the Mac App Store, and implies
1503 adherence to App Store rules.]),
1506 AC_ARG_WITH(macosx-bundle-identifier,
1507 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1508 [Define the macOS bundle identifier. Default is the somewhat weird
1509 org.libreoffice.script ("script", huh?).]),
1510 ,with_macosx_bundle_identifier=org.libreoffice.script)
1512 AC_ARG_WITH(product-name,
1513 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1514 [Define the product name. Default is AC_PACKAGE_NAME.]),
1515 ,with_product_name=$PRODUCTNAME)
1517 AC_ARG_WITH(package-version,
1518 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1519 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1522 libo_FUZZ_ARG_ENABLE(readonly-installset,
1523 AS_HELP_STRING([--enable-readonly-installset],
1524 [Prevents any attempts by LibreOffice to write into its installation. That means
1525 at least that no "system-wide" extensions can be added. Partly experimental work in
1526 progress, probably not fully implemented (but is useful for sandboxed macOS builds).]),
1529 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1530 AS_HELP_STRING([--disable-postgresql-sdbc],
1531 [Disable the build of the PostgreSQL-SDBC driver.])
1534 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1535 AS_HELP_STRING([--disable-lotuswordpro],
1536 [Disable the build of the Lotus Word Pro filter.]),
1537 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1539 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1540 AS_HELP_STRING([--disable-firebird-sdbc],
1541 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1542 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1544 AC_ARG_ENABLE(bogus-pkg-config,
1545 AS_HELP_STRING([--enable-bogus-pkg-config],
1546 [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.]),
1549 AC_ARG_ENABLE(openssl,
1550 AS_HELP_STRING([--disable-openssl],
1551 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1552 components will either use GNUTLS or NSS. Work in progress,
1553 use only if you are hacking on it.]),
1554 ,enable_openssl=yes)
1556 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1557 AS_HELP_STRING([--enable-cipher-openssl-backend],
1558 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1559 Requires --enable-openssl.]))
1561 AC_ARG_ENABLE(library-bin-tar,
1562 AS_HELP_STRING([--enable-library-bin-tar],
1563 [Enable the building and reused of tarball of binary build for some 'external' libraries.
1564 Some libraries can save their build result in a tarball
1565 stored in TARFILE_LOCATION. That binary tarball is
1566 uniquely identified by the source tarball,
1567 the content of the config_host.mk file and the content
1568 of the top-level directory in core for that library
1569 If this option is enabled, then if such a tarfile exist, it will be untarred
1570 instead of the source tarfile, and the build step will be skipped for that
1572 If a proper tarfile does not exist, then the normal source-based
1573 build is done for that library and a proper binary tarfile is created
1574 for the next time.]),
1577 AC_ARG_ENABLE(dconf,
1578 AS_HELP_STRING([--disable-dconf],
1579 [Disable the dconf configuration backend (enabled by default where
1582 libo_FUZZ_ARG_ENABLE(formula-logger,
1584 [--enable-formula-logger],
1585 [Enable formula logger for logging formula calculation flow in Calc.]
1590 AS_HELP_STRING([--disable-ldap],
1591 [Disable LDAP support.]),
1594 dnl ===================================================================
1595 dnl Optional Packages (--with/without-)
1596 dnl ===================================================================
1598 AC_ARG_WITH(gcc-home,
1599 AS_HELP_STRING([--with-gcc-home],
1600 [Specify the location of gcc/g++ manually. This can be used in conjunction
1601 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1602 non-default path.]),
1605 AC_ARG_WITH(gnu-patch,
1606 AS_HELP_STRING([--with-gnu-patch],
1607 [Specify location of GNU patch on Solaris or FreeBSD.]),
1610 AC_ARG_WITH(build-platform-configure-options,
1611 AS_HELP_STRING([--with-build-platform-configure-options],
1612 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1616 AS_HELP_STRING([--with-gnu-cp],
1617 [Specify location of GNU cp on Solaris or FreeBSD.]),
1620 AC_ARG_WITH(external-tar,
1621 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1622 [Specify an absolute path of where to find (and store) tarfiles.]),
1623 TARFILE_LOCATION=$withval ,
1626 AC_ARG_WITH(referenced-git,
1627 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1628 [Specify another checkout directory to reference. This makes use of
1629 git submodule update --reference, and saves a lot of diskspace
1630 when having multiple trees side-by-side.]),
1631 GIT_REFERENCE_SRC=$withval ,
1634 AC_ARG_WITH(linked-git,
1635 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
1636 [Specify a directory where the repositories of submodules are located.
1637 This uses a method similar to git-new-workdir to get submodules.]),
1638 GIT_LINK_SRC=$withval ,
1641 AC_ARG_WITH(galleries,
1642 AS_HELP_STRING([--with-galleries],
1643 [Specify how galleries should be built. It is possible either to
1644 build these internally from source ("build"),
1645 or to disable them ("no")]),
1649 AS_HELP_STRING([--with-theme="theme1 theme2..."],
1650 [Choose which themes to include. By default those themes with an '*' are included.
1651 Possible choices: *breeze, *breeze_dark, *breeze_dark_svg, *breeze_svg, *colibre, *colibre_svg, *elementary,
1652 *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sifr_dark, *sifr_dark_svg, *sifr_svg, *tango.]),
1655 libo_FUZZ_ARG_WITH(helppack-integration,
1656 AS_HELP_STRING([--without-helppack-integration],
1657 [It will not integrate the helppacks to the installer
1658 of the product. Please use this switch to use the online help
1659 or separate help packages.]),
1662 libo_FUZZ_ARG_WITH(fonts,
1663 AS_HELP_STRING([--without-fonts],
1664 [LibreOffice includes some third-party fonts to provide a reliable basis for
1665 help content, templates, samples, etc. When these fonts are already
1666 known to be available on the system then you should use this option.]),
1669 AC_ARG_ENABLE(noto-font,
1670 AS_HELP_STRING([--enable-noto-font],
1671 [Add more Google Noto fonts.]),
1675 AS_HELP_STRING([--with-epm],
1676 [Decides which epm to use. Default is to use the one from the system if
1677 one is built. When either this is not there or you say =internal epm
1681 AC_ARG_WITH(package-format,
1682 AS_HELP_STRING([--with-package-format],
1683 [Specify package format(s) for LibreOffice installation sets. The
1684 implicit --without-package-format leads to no installation sets being
1685 generated. Possible values: aix, archive, bsd, deb, dmg,
1686 installed, msi, pkg, and rpm.
1687 Example: --with-package-format='deb rpm']),
1691 AS_HELP_STRING([--with-tls],
1692 [Decides which TLS/SSL and cryptographic implementations to use for
1693 LibreOffice's code. Notice that this doesn't apply for depending
1694 libraries like "neon", for example. Default is to use OpenSSL
1695 although NSS is also possible. Notice that selecting NSS restricts
1696 the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
1697 restrict by now the usage of NSS in LO's code. Possible values:
1698 openssl, nss. Example: --with-tls="nss"]),
1701 AC_ARG_WITH(system-libs,
1702 AS_HELP_STRING([--with-system-libs],
1703 [Use libraries already on system -- enables all --with-system-* flags.]),
1706 AC_ARG_WITH(system-bzip2,
1707 AS_HELP_STRING([--with-system-bzip2],
1708 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
1709 [with_system_bzip2="$with_system_libs"])
1711 AC_ARG_WITH(system-headers,
1712 AS_HELP_STRING([--with-system-headers],
1713 [Use headers already on system -- enables all --with-system-* flags for
1714 external packages whose headers are the only entities used i.e.
1715 boost/odbc/sane-header(s).]),,
1716 [with_system_headers="$with_system_libs"])
1718 AC_ARG_WITH(system-jars,
1719 AS_HELP_STRING([--without-system-jars],
1720 [When building with --with-system-libs, also the needed jars are expected
1721 on the system. Use this to disable that]),,
1722 [with_system_jars="$with_system_libs"])
1724 AC_ARG_WITH(system-cairo,
1725 AS_HELP_STRING([--with-system-cairo],
1726 [Use cairo libraries already on system. Happens automatically for
1727 (implicit) --enable-gtk3.]))
1729 AC_ARG_WITH(system-epoxy,
1730 AS_HELP_STRING([--with-system-epoxy],
1731 [Use epoxy libraries already on system. Happens automatically for
1732 (implicit) --enable-gtk3.]),,
1733 [with_system_epoxy="$with_system_libs"])
1735 AC_ARG_WITH(myspell-dicts,
1736 AS_HELP_STRING([--with-myspell-dicts],
1737 [Adds myspell dictionaries to the LibreOffice installation set]),
1740 AC_ARG_WITH(system-dicts,
1741 AS_HELP_STRING([--without-system-dicts],
1742 [Do not use dictionaries from system paths.]),
1745 AC_ARG_WITH(external-dict-dir,
1746 AS_HELP_STRING([--with-external-dict-dir],
1747 [Specify external dictionary dir.]),
1750 AC_ARG_WITH(external-hyph-dir,
1751 AS_HELP_STRING([--with-external-hyph-dir],
1752 [Specify external hyphenation pattern dir.]),
1755 AC_ARG_WITH(external-thes-dir,
1756 AS_HELP_STRING([--with-external-thes-dir],
1757 [Specify external thesaurus dir.]),
1760 AC_ARG_WITH(system-zlib,
1761 AS_HELP_STRING([--with-system-zlib],
1762 [Use zlib already on system.]),,
1763 [with_system_zlib=auto])
1765 AC_ARG_WITH(system-jpeg,
1766 AS_HELP_STRING([--with-system-jpeg],
1767 [Use jpeg already on system.]),,
1768 [with_system_jpeg="$with_system_libs"])
1770 AC_ARG_WITH(system-clucene,
1771 AS_HELP_STRING([--with-system-clucene],
1772 [Use clucene already on system.]),,
1773 [with_system_clucene="$with_system_libs"])
1775 AC_ARG_WITH(system-expat,
1776 AS_HELP_STRING([--with-system-expat],
1777 [Use expat already on system.]),,
1778 [with_system_expat="$with_system_libs"])
1780 AC_ARG_WITH(system-libxml,
1781 AS_HELP_STRING([--with-system-libxml],
1782 [Use libxml/libxslt already on system.]),,
1783 [with_system_libxml=auto])
1785 AC_ARG_WITH(system-icu,
1786 AS_HELP_STRING([--with-system-icu],
1787 [Use icu already on system.]),,
1788 [with_system_icu="$with_system_libs"])
1790 AC_ARG_WITH(system-ucpp,
1791 AS_HELP_STRING([--with-system-ucpp],
1792 [Use ucpp already on system.]),,
1795 AC_ARG_WITH(system-openldap,
1796 AS_HELP_STRING([--with-system-openldap],
1797 [Use the OpenLDAP LDAP SDK already on system.]),,
1798 [with_system_openldap="$with_system_libs"])
1800 libo_FUZZ_ARG_ENABLE(poppler,
1801 AS_HELP_STRING([--disable-poppler],
1802 [Disable building Poppler.])
1805 AC_ARG_WITH(system-poppler,
1806 AS_HELP_STRING([--with-system-poppler],
1807 [Use system poppler (only needed for PDF import).]),,
1808 [with_system_poppler="$with_system_libs"])
1810 AC_ARG_WITH(system-gpgmepp,
1811 AS_HELP_STRING([--with-system-gpgmepp],
1812 [Use gpgmepp already on system]),,
1813 [with_system_gpgmepp="$with_system_libs"])
1815 AC_ARG_WITH(system-apache-commons,
1816 AS_HELP_STRING([--with-system-apache-commons],
1817 [Use Apache commons libraries already on system.]),,
1818 [with_system_apache_commons="$with_system_jars"])
1820 AC_ARG_WITH(system-mariadb,
1821 AS_HELP_STRING([--with-system-mariadb],
1822 [Use MariaDB/MySQL libraries already on system.]),,
1823 [with_system_mariadb="$with_system_libs"])
1825 AC_ARG_ENABLE(bundle-mariadb,
1826 AS_HELP_STRING([--enable-bundle-mariadb],
1827 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
1830 AC_ARG_WITH(system-postgresql,
1831 AS_HELP_STRING([--with-system-postgresql],
1832 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
1833 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
1834 [with_system_postgresql="$with_system_libs"])
1836 AC_ARG_WITH(libpq-path,
1837 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
1838 [Use this PostgreSQL C interface (libpq) installation for building
1839 the PostgreSQL-SDBC extension.]),
1842 AC_ARG_WITH(system-firebird,
1843 AS_HELP_STRING([--with-system-firebird],
1844 [Use Firebird libraries already on system, for building the Firebird-SDBC
1845 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
1846 [with_system_firebird="$with_system_libs"])
1848 AC_ARG_WITH(system-libtommath,
1849 AS_HELP_STRING([--with-system-libtommath],
1850 [Use libtommath already on system]),,
1851 [with_system_libtommath="$with_system_libs"])
1853 AC_ARG_WITH(system-hsqldb,
1854 AS_HELP_STRING([--with-system-hsqldb],
1855 [Use hsqldb already on system.]))
1857 AC_ARG_WITH(hsqldb-jar,
1858 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
1859 [Specify path to jarfile manually.]),
1860 HSQLDB_JAR=$withval)
1862 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
1863 AS_HELP_STRING([--disable-scripting-beanshell],
1864 [Disable support for scripts in BeanShell.]),
1868 AC_ARG_WITH(system-beanshell,
1869 AS_HELP_STRING([--with-system-beanshell],
1870 [Use beanshell already on system.]),,
1871 [with_system_beanshell="$with_system_jars"])
1873 AC_ARG_WITH(beanshell-jar,
1874 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
1875 [Specify path to jarfile manually.]),
1878 libo_FUZZ_ARG_ENABLE(scripting-javascript,
1879 AS_HELP_STRING([--disable-scripting-javascript],
1880 [Disable support for scripts in JavaScript.]),
1884 AC_ARG_WITH(system-rhino,
1885 AS_HELP_STRING([--with-system-rhino],
1886 [Use rhino already on system.]),,)
1887 # [with_system_rhino="$with_system_jars"])
1888 # Above is not used as we have different debug interface
1889 # patched into internal rhino. This code needs to be fixed
1890 # before we can enable it by default.
1892 AC_ARG_WITH(rhino-jar,
1893 AS_HELP_STRING([--with-rhino-jar=JARFILE],
1894 [Specify path to jarfile manually.]),
1897 AC_ARG_WITH(commons-logging-jar,
1898 AS_HELP_STRING([--with-commons-logging-jar=JARFILE],
1899 [Specify path to jarfile manually.]),
1900 COMMONS_LOGGING_JAR=$withval)
1902 AC_ARG_WITH(system-jfreereport,
1903 AS_HELP_STRING([--with-system-jfreereport],
1904 [Use JFreeReport already on system.]),,
1905 [with_system_jfreereport="$with_system_jars"])
1907 AC_ARG_WITH(sac-jar,
1908 AS_HELP_STRING([--with-sac-jar=JARFILE],
1909 [Specify path to jarfile manually.]),
1912 AC_ARG_WITH(libxml-jar,
1913 AS_HELP_STRING([--with-libxml-jar=JARFILE],
1914 [Specify path to jarfile manually.]),
1915 LIBXML_JAR=$withval)
1917 AC_ARG_WITH(flute-jar,
1918 AS_HELP_STRING([--with-flute-jar=JARFILE],
1919 [Specify path to jarfile manually.]),
1922 AC_ARG_WITH(jfreereport-jar,
1923 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
1924 [Specify path to jarfile manually.]),
1925 JFREEREPORT_JAR=$withval)
1927 AC_ARG_WITH(liblayout-jar,
1928 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
1929 [Specify path to jarfile manually.]),
1930 LIBLAYOUT_JAR=$withval)
1932 AC_ARG_WITH(libloader-jar,
1933 AS_HELP_STRING([--with-libloader-jar=JARFILE],
1934 [Specify path to jarfile manually.]),
1935 LIBLOADER_JAR=$withval)
1937 AC_ARG_WITH(libformula-jar,
1938 AS_HELP_STRING([--with-libformula-jar=JARFILE],
1939 [Specify path to jarfile manually.]),
1940 LIBFORMULA_JAR=$withval)
1942 AC_ARG_WITH(librepository-jar,
1943 AS_HELP_STRING([--with-librepository-jar=JARFILE],
1944 [Specify path to jarfile manually.]),
1945 LIBREPOSITORY_JAR=$withval)
1947 AC_ARG_WITH(libfonts-jar,
1948 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
1949 [Specify path to jarfile manually.]),
1950 LIBFONTS_JAR=$withval)
1952 AC_ARG_WITH(libserializer-jar,
1953 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
1954 [Specify path to jarfile manually.]),
1955 LIBSERIALIZER_JAR=$withval)
1957 AC_ARG_WITH(libbase-jar,
1958 AS_HELP_STRING([--with-libbase-jar=JARFILE],
1959 [Specify path to jarfile manually.]),
1960 LIBBASE_JAR=$withval)
1962 AC_ARG_WITH(system-odbc,
1963 AS_HELP_STRING([--with-system-odbc],
1964 [Use the odbc headers already on system.]),,
1965 [with_system_odbc="auto"])
1967 AC_ARG_WITH(system-sane,
1968 AS_HELP_STRING([--with-system-sane],
1969 [Use sane.h already on system.]),,
1970 [with_system_sane="$with_system_headers"])
1972 AC_ARG_WITH(system-bluez,
1973 AS_HELP_STRING([--with-system-bluez],
1974 [Use bluetooth.h already on system.]),,
1975 [with_system_bluez="$with_system_headers"])
1977 AC_ARG_WITH(system-curl,
1978 AS_HELP_STRING([--with-system-curl],
1979 [Use curl already on system.]),,
1980 [with_system_curl=auto])
1982 AC_ARG_WITH(system-boost,
1983 AS_HELP_STRING([--with-system-boost],
1984 [Use boost already on system.]),,
1985 [with_system_boost="$with_system_headers"])
1987 AC_ARG_WITH(system-glm,
1988 AS_HELP_STRING([--with-system-glm],
1989 [Use glm already on system.]),,
1990 [with_system_glm="$with_system_headers"])
1992 AC_ARG_WITH(system-hunspell,
1993 AS_HELP_STRING([--with-system-hunspell],
1994 [Use libhunspell already on system.]),,
1995 [with_system_hunspell="$with_system_libs"])
1997 libo_FUZZ_ARG_ENABLE(qrcodegen,
1998 AS_HELP_STRING([--disable-qrcodegen],
1999 [Disable use of qrcodegen external library.]))
2001 AC_ARG_WITH(system-qrcodegen,
2002 AS_HELP_STRING([--with-system-qrcodegen],
2003 [Use libqrcodegen already on system.]),,
2004 [with_system_qrcodegen="$with_system_libs"])
2006 AC_ARG_WITH(system-mythes,
2007 AS_HELP_STRING([--with-system-mythes],
2008 [Use mythes already on system.]),,
2009 [with_system_mythes="$with_system_libs"])
2011 AC_ARG_WITH(system-altlinuxhyph,
2012 AS_HELP_STRING([--with-system-altlinuxhyph],
2013 [Use ALTLinuxhyph already on system.]),,
2014 [with_system_altlinuxhyph="$with_system_libs"])
2016 AC_ARG_WITH(system-lpsolve,
2017 AS_HELP_STRING([--with-system-lpsolve],
2018 [Use lpsolve already on system.]),,
2019 [with_system_lpsolve="$with_system_libs"])
2021 AC_ARG_WITH(system-coinmp,
2022 AS_HELP_STRING([--with-system-coinmp],
2023 [Use CoinMP already on system.]),,
2024 [with_system_coinmp="$with_system_libs"])
2026 AC_ARG_WITH(system-liblangtag,
2027 AS_HELP_STRING([--with-system-liblangtag],
2028 [Use liblangtag library already on system.]),,
2029 [with_system_liblangtag="$with_system_libs"])
2032 AS_HELP_STRING([--with-webdav],
2033 [Specify which library to use for webdav implementation.
2034 Possible values: "neon", "serf", "no". The default value is "neon".
2035 Example: --with-webdav="serf"]),
2036 WITH_WEBDAV=$withval,
2039 AC_ARG_WITH(linker-hash-style,
2040 AS_HELP_STRING([--with-linker-hash-style],
2041 [Use linker with --hash-style=<style> when linking shared objects.
2042 Possible values: "sysv", "gnu", "both". The default value is "gnu"
2043 if supported on the build system, and "sysv" otherwise.]))
2045 AC_ARG_WITH(jdk-home,
2046 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
2047 [If you have installed JDK 8 or later on your system please supply the
2048 path here. Note that this is not the location of the java command but the
2049 location of the entire distribution.]),
2053 AS_HELP_STRING([--with-help],
2054 [Enable the build of help. There is a special parameter "common" that
2055 can be used to bundle only the common part, .e.g help-specific icons.
2056 This is useful when you build the helpcontent separately.])
2058 Usage: --with-help build the old local help
2059 --without-help no local help (default)
2060 --with-help=html build the new HTML local help
2061 --with-help=online build the new HTML online help
2065 AC_ARG_WITH(omindex,
2066 AS_HELP_STRING([--with-omindex],
2067 [Enable the support of xapian-omega index for online help.])
2069 Usage: --with-omindex=server prepare the pages for omindex
2070 but let xapian-omega be built in server.
2071 --with-omindex=noxap do not prepare online pages
2076 libo_FUZZ_ARG_WITH(java,
2077 AS_HELP_STRING([--with-java=<java command>],
2078 [Specify the name of the Java interpreter command. Typically "java"
2079 which is the default.
2081 To build without support for Java components, applets, accessibility
2082 or the XML filters written in Java, use --without-java or --with-java=no.]),
2083 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2084 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2087 AC_ARG_WITH(jvm-path,
2088 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2089 [Use a specific JVM search path at runtime.
2090 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2093 AC_ARG_WITH(ant-home,
2094 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2095 [If you have installed Apache Ant on your system, please supply the path here.
2096 Note that this is not the location of the Ant binary but the location
2097 of the entire distribution.]),
2100 AC_ARG_WITH(symbol-config,
2101 AS_HELP_STRING([--with-symbol-config],
2102 [Configuration for the crashreport symbol upload]),
2104 [with_symbol_config=no])
2106 AC_ARG_WITH(export-validation,
2107 AS_HELP_STRING([--without-export-validation],
2108 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2109 ,with_export_validation=auto)
2111 AC_ARG_WITH(bffvalidator,
2112 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2113 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2114 Requires installed Microsoft Office Binary File Format Validator.
2115 Note: export-validation (--with-export-validation) is required to be turned on.
2116 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2117 ,with_bffvalidator=no)
2119 libo_FUZZ_ARG_WITH(junit,
2120 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2121 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2122 --without-junit disables those tests. Not relevant in the --without-java case.]),
2125 AC_ARG_WITH(hamcrest,
2126 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2127 [Specifies the hamcrest jar file to use for JUnit-based tests.
2128 --without-junit disables those tests. Not relevant in the --without-java case.]),
2131 AC_ARG_WITH(perl-home,
2132 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2133 [If you have installed Perl 5 Distribution, on your system, please
2134 supply the path here. Note that this is not the location of the Perl
2135 binary but the location of the entire distribution.]),
2138 libo_FUZZ_ARG_WITH(doxygen,
2140 [--with-doxygen=<absolute path to doxygen executable>],
2141 [Specifies the doxygen executable to use when generating ODK C/C++
2142 documentation. --without-doxygen disables generation of ODK C/C++
2143 documentation. Not relevant in the --disable-odk case.]),
2146 AC_ARG_WITH(visual-studio,
2147 AS_HELP_STRING([--with-visual-studio=<2017>],
2148 [Specify which Visual Studio version to use in case several are
2149 installed. Currently only 2017 is supported.]),
2152 AC_ARG_WITH(windows-sdk,
2153 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10>],
2154 [Specify which Windows SDK, or "Windows Kit", version to use
2155 in case the one that came with the selected Visual Studio
2156 is not what you want for some reason. Note that not all compiler/SDK
2157 combinations are supported. The intent is that this option should not
2162 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2163 [Use this option to build LibreOffice with additional UI language support.
2164 English (US) is always included by default.
2165 Separate multiple languages with space.
2166 For all languages, use --with-lang=ALL.]),
2169 AC_ARG_WITH(locales,
2170 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2171 [Use this option to limit the locale information built in.
2172 Separate multiple locales with space.
2173 Very experimental and might well break stuff.
2174 Just a desperate measure to shrink code and data size.
2175 By default all the locales available is included.
2176 This option is completely unrelated to --with-lang.])
2178 Affects also our character encoding conversion
2179 tables for encodings mainly targeted for a
2180 particular locale, like EUC-CN and EUC-TW for
2181 zh, ISO-2022-JP for ja.
2183 Affects also our add-on break iterator data for
2186 For the default, all locales, don't use this switch at all.
2187 Specifying just the language part of a locale means all matching
2188 locales will be included.
2192 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2193 libo_FUZZ_ARG_WITH(krb5,
2194 AS_HELP_STRING([--with-krb5],
2195 [Enable MIT Kerberos 5 support in modules that support it.
2196 By default automatically enabled on platforms
2197 where a good system Kerberos 5 is available.]),
2200 libo_FUZZ_ARG_WITH(gssapi,
2201 AS_HELP_STRING([--with-gssapi],
2202 [Enable GSSAPI support in modules that support it.
2203 By default automatically enabled on platforms
2204 where a good system GSSAPI is available.]),
2208 AS_HELP_STRING([--with-iwyu],
2209 [Use given IWYU binary path to check unneeded includes instead of building.
2210 Use only if you are hacking on it.]),
2213 libo_FUZZ_ARG_WITH(lxml,
2214 AS_HELP_STRING([--without-lxml],
2215 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2216 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2217 report widget classes and ids.]),
2220 libo_FUZZ_ARG_WITH(latest-c++,
2221 AS_HELP_STRING([--with-latest-c++],
2222 [Try to enable the latest features of the C++ compiler, even if they are not yet part of a
2223 published standard.]),,
2224 [with_latest_c__=no])
2226 dnl ===================================================================
2228 dnl ===================================================================
2230 AC_ARG_WITH(branding,
2231 AS_HELP_STRING([--with-branding=/path/to/images],
2232 [Use given path to retrieve branding images set.])
2234 Search for intro.png about.svg and flat_logo.svg.
2235 If any is missing, default ones will be used instead.
2237 Search also progress.conf for progress
2238 settings on intro screen :
2240 PROGRESSBARCOLOR="255,255,255" Set color of
2241 progress bar. Comma separated RGB decimal values.
2242 PROGRESSSIZE="407,6" Set size of progress bar.
2243 Comma separated decimal values (width, height).
2244 PROGRESSPOSITION="61,317" Set position of progress
2245 bar from left,top. Comma separated decimal values.
2246 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2247 bar frame. Comma separated RGB decimal values.
2248 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2249 bar text. Comma separated RGB decimal values.
2250 PROGRESSTEXTBASELINE="287" Set vertical position of
2251 progress bar text from top. Decimal value.
2253 Default values will be used if not found.
2258 AC_ARG_WITH(extra-buildid,
2259 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2260 [Show addition build identification in about dialog.]),
2265 AS_HELP_STRING([--with-vendor="John the Builder"],
2266 [Set vendor of the build.]),
2269 AC_ARG_WITH(android-package-name,
2270 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2271 [Set Android package name of the build.]),
2274 AC_ARG_WITH(compat-oowrappers,
2275 AS_HELP_STRING([--with-compat-oowrappers],
2276 [Install oo* wrappers in parallel with
2277 lo* ones to keep backward compatibility.
2278 Has effect only with make distro-pack-install]),
2281 AC_ARG_WITH(os-version,
2282 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2283 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2286 AC_ARG_WITH(mingw-cross-compiler,
2287 AS_HELP_STRING([--with-mingw-cross-compiler=<mingw32-g++ command>],
2288 [Specify the MinGW cross-compiler to use.
2289 When building on the ODK on Unix and building unowinreg.dll,
2290 specify the MinGW C++ cross-compiler.]),
2293 AC_ARG_WITH(idlc-cpp,
2294 AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2295 [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2298 AC_ARG_WITH(build-version,
2299 AS_HELP_STRING([--with-build-version="Built by Jim"],
2300 [Allows the builder to add a custom version tag that will appear in the
2301 Help/About box for QA purposes.]),
2302 with_build_version=$withval,
2305 AC_ARG_WITH(parallelism,
2306 AS_HELP_STRING([--with-parallelism],
2307 [Number of jobs to run simultaneously during build. Parallel builds can
2308 save a lot of time on multi-cpu machines. Defaults to the number of
2309 CPUs on the machine, unless you configure --enable-icecream - then to
2313 AC_ARG_WITH(all-tarballs,
2314 AS_HELP_STRING([--with-all-tarballs],
2315 [Download all external tarballs unconditionally]))
2317 AC_ARG_WITH(gdrive-client-id,
2318 AS_HELP_STRING([--with-gdrive-client-id],
2319 [Provides the client id of the application for OAuth2 authentication
2320 on Google Drive. If either this or --with-gdrive-client-secret is
2321 empty, the feature will be disabled]),
2324 AC_ARG_WITH(gdrive-client-secret,
2325 AS_HELP_STRING([--with-gdrive-client-secret],
2326 [Provides the client secret of the application for OAuth2
2327 authentication on Google Drive. If either this or
2328 --with-gdrive-client-id is empty, the feature will be disabled]),
2331 AC_ARG_WITH(alfresco-cloud-client-id,
2332 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2333 [Provides the client id of the application for OAuth2 authentication
2334 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2335 empty, the feature will be disabled]),
2338 AC_ARG_WITH(alfresco-cloud-client-secret,
2339 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2340 [Provides the client secret of the application for OAuth2
2341 authentication on Alfresco Cloud. If either this or
2342 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2345 AC_ARG_WITH(onedrive-client-id,
2346 AS_HELP_STRING([--with-onedrive-client-id],
2347 [Provides the client id of the application for OAuth2 authentication
2348 on OneDrive. If either this or --with-onedrive-client-secret is
2349 empty, the feature will be disabled]),
2352 AC_ARG_WITH(onedrive-client-secret,
2353 AS_HELP_STRING([--with-onedrive-client-secret],
2354 [Provides the client secret of the application for OAuth2
2355 authentication on OneDrive. If either this or
2356 --with-onedrive-client-id is empty, the feature will be disabled]),
2358 dnl ===================================================================
2359 dnl Do we want to use pre-build binary tarball for recompile
2360 dnl ===================================================================
2362 if test "$enable_library_bin_tar" = "yes" ; then
2363 USE_LIBRARY_BIN_TAR=TRUE
2365 USE_LIBRARY_BIN_TAR=
2367 AC_SUBST(USE_LIBRARY_BIN_TAR)
2369 dnl ===================================================================
2370 dnl Test whether build target is Release Build
2371 dnl ===================================================================
2372 AC_MSG_CHECKING([whether build target is Release Build])
2373 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2375 ENABLE_RELEASE_BUILD=
2377 AC_MSG_RESULT([yes])
2378 ENABLE_RELEASE_BUILD=TRUE
2380 AC_SUBST(ENABLE_RELEASE_BUILD)
2382 dnl ===================================================================
2383 dnl Test whether to sign Windows Build
2384 dnl ===================================================================
2385 AC_MSG_CHECKING([whether to sign windows build])
2386 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2387 AC_MSG_RESULT([yes])
2388 WINDOWS_BUILD_SIGNING="TRUE"
2391 WINDOWS_BUILD_SIGNING="FALSE"
2393 AC_SUBST(WINDOWS_BUILD_SIGNING)
2395 dnl ===================================================================
2396 dnl MacOSX build and runtime environment options
2397 dnl ===================================================================
2399 AC_ARG_WITH(macosx-sdk,
2400 AS_HELP_STRING([--with-macosx-sdk=<version>],
2401 [Prefer a specific SDK for building.])
2403 If the requested SDK is not available, a search for the oldest one will be done.
2404 With current Xcode versions, only the latest SDK is included, so this option is
2405 not terribly useful. It works fine to build with a new SDK and run the result
2408 e. g.: --with-macosx-sdk=10.10
2410 there are 3 options to control the MacOSX build:
2411 --with-macosx-sdk (referred as 'sdk' below)
2412 --with-macosx-version-min-required (referred as 'min' below)
2413 --with-macosx-version-max-allowed (referred as 'max' below)
2415 the connection between these value and the default they take is as follow:
2416 ( ? means not specified on the command line, s means the SDK version found,
2417 constraint: 8 <= x <= y <= z)
2419 ==========================================
2420 command line || config result
2421 ==========================================
2422 min | max | sdk || min | max | sdk |
2423 ? | ? | ? || 10.10 | 10.s | 10.s |
2424 ? | ? | 10.x || 10.10 | 10.x | 10.x |
2425 ? | 10.x | ? || 10.10 | 10.s | 10.s |
2426 ? | 10.x | 10.y || 10.10 | 10.x | 10.y |
2427 10.x | ? | ? || 10.x | 10.s | 10.s |
2428 10.x | ? | 10.y || 10.x | 10.y | 10.y |
2429 10.x | 10.y | ? || 10.x | 10.y | 10.y |
2430 10.x | 10.y | 10.z || 10.x | 10.y | 10.z |
2433 see: http://developer.apple.com/library/mac/#technotes/tn2064/_index.html
2434 for a detailed technical explanation of these variables
2436 Note: MACOSX_DEPLOYMENT_TARGET will be set to the value of 'min'.
2440 AC_ARG_WITH(macosx-version-min-required,
2441 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2442 [set the minimum OS version needed to run the built LibreOffice])
2444 e. g.: --with-macos-version-min-required=10.10
2445 see --with-macosx-sdk for more info
2449 AC_ARG_WITH(macosx-version-max-allowed,
2450 AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2451 [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2453 e. g.: --with-macos-version-max-allowed=10.10
2454 see --with-macosx-sdk for more info
2459 dnl ===================================================================
2460 dnl options for stuff used during cross-compilation build
2461 dnl Not quite superseded by --with-build-platform-configure-options.
2462 dnl TODO: check, if the "force" option is still needed anywhere.
2463 dnl ===================================================================
2465 AC_ARG_WITH(system-icu-for-build,
2466 AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2467 [Use icu already on system for build tools (cross-compilation only).]))
2470 dnl ===================================================================
2471 dnl Check for incompatible options set by fuzzing, and reset those
2472 dnl automatically to working combinations
2473 dnl ===================================================================
2475 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2476 "$enable_dbus" != "$enable_avahi"; then
2477 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2478 enable_avahi=$enable_dbus
2483 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2484 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2488 add_lopath_before ()
2493 for dir in $LO_PATH ; do
2494 if test "$dir" != "$1" ; then
2495 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2498 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2501 dnl ===================================================================
2502 dnl check for required programs (grep, awk, sed, bash)
2503 dnl ===================================================================
2507 if test -n "$1"; then
2508 if test "$build_os" = "cygwin"; then
2509 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2511 new_path=`cygpath -sm "$formatted_path"`
2514 new_path=`cygpath -u "$formatted_path"`
2519 if test "$2" = "after"; then
2520 add_lopath_after "$new_path"
2522 add_lopath_before "$new_path"
2529 AC_PATH_PROG( AWK, $AWK)
2530 if test -z "$AWK"; then
2531 AC_MSG_ERROR([install awk to run this script])
2534 AC_PATH_PROG(BASH, bash)
2535 if test -z "$BASH"; then
2536 AC_MSG_ERROR([bash not found in \$PATH])
2540 AC_MSG_CHECKING([for GNU or BSD tar])
2541 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2542 $a --version 2> /dev/null | egrep "GNU|bsdtar" 2>&1 > /dev/null
2543 if test $? -eq 0; then
2548 AC_MSG_RESULT($GNUTAR)
2549 if test -z "$GNUTAR"; then
2550 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2554 AC_MSG_CHECKING([for tar's option to strip components])
2555 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2556 if test $? -eq 0; then
2557 STRIP_COMPONENTS="--strip-components"
2559 $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2560 if test $? -eq 0; then
2561 STRIP_COMPONENTS="--strip-path"
2563 STRIP_COMPONENTS="unsupported"
2566 AC_MSG_RESULT($STRIP_COMPONENTS)
2567 if test x$STRIP_COMPONENTS = xunsupported; then
2568 AC_MSG_ERROR([you need a tar that is able to strip components.])
2570 AC_SUBST(STRIP_COMPONENTS)
2572 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2573 dnl desktop OSes from "mobile" ones.
2575 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2576 dnl In other words, that when building for an OS that is not a
2577 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2579 dnl Note the direction of the implication; there is no assumption that
2580 dnl cross-compiling would imply a non-desktop OS.
2582 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
2583 BUILD_TYPE="$BUILD_TYPE DESKTOP"
2584 AC_DEFINE(HAVE_FEATURE_DESKTOP)
2585 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2588 # Whether to build "avmedia" functionality or not.
2590 if test -z "$enable_avmedia"; then
2594 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2595 if test "$enable_avmedia" = yes; then
2596 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2598 USE_AVMEDIA_DUMMY='TRUE'
2600 AC_SUBST(USE_AVMEDIA_DUMMY)
2602 # Decide whether to build database connectivity stuff (including
2603 # Base) or not. We probably don't want to on non-desktop OSes.
2604 if test -z "$enable_database_connectivity"; then
2605 # --disable-database-connectivity is unfinished work in progress
2606 # and the iOS test app doesn't link if we actually try to use it.
2607 # if test $_os != iOS -a $_os != Android; then
2608 if test $_os != iOS; then
2609 enable_database_connectivity=yes
2613 if test "$enable_database_connectivity" = yes; then
2614 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2615 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2618 if test -z "$enable_extensions"; then
2619 # For iOS and Android disable extensions unless specifically overridden with --enable-extensions.
2620 if test $_os != iOS; then
2621 enable_extensions=yes
2625 if test "$enable_extensions" = yes; then
2626 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2627 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2630 if test -z "$enable_scripting"; then
2631 # Disable scripting for iOS unless specifically overridden
2632 # with --enable-scripting.
2633 if test $_os != iOS; then
2634 enable_scripting=yes
2638 DISABLE_SCRIPTING=''
2639 if test "$enable_scripting" = yes; then
2640 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2641 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2643 DISABLE_SCRIPTING='TRUE'
2644 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2647 if test $_os = iOS -o $_os = Android; then
2648 # Disable dynamic_loading always for iOS and Android
2649 enable_dynamic_loading=no
2650 elif test -z "$enable_dynamic_loading"; then
2651 # Otherwise enable it unless specifically disabled
2652 enable_dynamic_loading=yes
2655 DISABLE_DYNLOADING=''
2656 if test "$enable_dynamic_loading" = yes; then
2657 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
2659 DISABLE_DYNLOADING='TRUE'
2661 AC_SUBST(DISABLE_DYNLOADING)
2663 # remember SYSBASE value
2666 dnl ===================================================================
2667 dnl Sort out various gallery compilation options
2668 dnl ===================================================================
2669 AC_MSG_CHECKING([how to build and package galleries])
2670 if test -n "${with_galleries}"; then
2671 if test "$with_galleries" = "build"; then
2672 WITH_GALLERY_BUILD=TRUE
2673 AC_MSG_RESULT([build from source images internally])
2674 elif test "$with_galleries" = "no"; then
2676 AC_MSG_RESULT([disable non-internal gallery build])
2678 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
2681 if test $_os != iOS -a $_os != Android; then
2682 WITH_GALLERY_BUILD=TRUE
2683 AC_MSG_RESULT([internal src images for desktop])
2686 AC_MSG_RESULT([disable src image build])
2689 AC_SUBST(WITH_GALLERY_BUILD)
2691 dnl ===================================================================
2692 dnl Checks if ccache is available
2693 dnl ===================================================================
2695 if test "$_os" = "WINNT"; then
2696 # on windows/VC build do not use ccache
2698 elif test "$enable_ccache" = "no"; then
2700 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
2701 case "%$CC%$CXX%" in
2702 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
2703 # assume that's good then
2704 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
2705 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
2706 CCACHE_DEPEND_MODE=1
2709 AC_PATH_PROG([CCACHE],[ccache],[not found])
2710 if test "$CCACHE" = "not found"; then
2713 CCACHE_DEPEND_MODE=1
2714 # Need to check for ccache version: otherwise prevents
2715 # caching of the results (like "-x objective-c++" for Mac)
2716 if test $_os = Darwin -o $_os = iOS; then
2717 # Check ccache version
2718 AC_MSG_CHECKING([whether version of ccache is suitable])
2719 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
2720 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
2721 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
2722 AC_MSG_RESULT([yes, $CCACHE_VERSION])
2724 AC_MSG_RESULT([no, $CCACHE_VERSION])
2735 if test "$enable_ccache" = "nodepend"; then
2736 CCACHE_DEPEND_MODE=""
2738 AC_SUBST(CCACHE_DEPEND_MODE)
2740 if test "$CCACHE" != ""; then
2741 ccache_size_msg=$([ccache -s | tail -n 1 | sed 's/^[^0-9]*//' | sed -e 's/\.[0-9]*//'])
2742 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
2743 if test "$ccache_size" = ""; then
2744 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
2745 if test "$ccache_size" = ""; then
2748 # we could not determine the size or it was less than 1GB -> disable auto-ccache
2749 if test $ccache_size -lt 1024; then
2751 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
2752 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
2754 # warn that ccache may be too small for debug build
2755 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
2756 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
2759 if test $ccache_size -lt 5; then
2760 #warn that ccache may be too small for debug build
2761 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
2762 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
2767 dnl ===================================================================
2768 dnl Checks for C compiler,
2769 dnl The check for the C++ compiler is later on.
2770 dnl ===================================================================
2771 if test "$_os" != "WINNT"; then
2773 AC_MSG_CHECKING([gcc home])
2774 if test -z "$with_gcc_home"; then
2775 if test "$enable_icecream" = "yes"; then
2776 if test -d "/usr/lib/icecc/bin"; then
2777 GCC_HOME="/usr/lib/icecc/"
2778 elif test -d "/usr/libexec/icecc/bin"; then
2779 GCC_HOME="/usr/libexec/icecc/"
2780 elif test -d "/opt/icecream/bin"; then
2781 GCC_HOME="/opt/icecream/"
2783 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
2787 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
2788 GCC_HOME_SET="false"
2791 GCC_HOME="$with_gcc_home"
2793 AC_MSG_RESULT($GCC_HOME)
2796 if test "$GCC_HOME_SET" = "true"; then
2797 if test -z "$CC"; then
2798 CC="$GCC_HOME/bin/gcc"
2801 if test -z "$CXX"; then
2802 CXX="$GCC_HOME/bin/g++"
2808 COMPATH=`dirname "$CC"`
2809 if test "$COMPATH" = "."; then
2810 AC_PATH_PROGS(COMPATH, $CC)
2811 dnl double square bracket to get single because of M4 quote...
2812 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
2814 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
2816 dnl ===================================================================
2818 dnl ===================================================================
2819 AC_MSG_CHECKING([whether to build with Java support])
2820 if test "$with_java" != "no"; then
2821 if test "$DISABLE_SCRIPTING" = TRUE; then
2822 AC_MSG_RESULT([no, overridden by --disable-scripting])
2826 AC_MSG_RESULT([yes])
2828 AC_DEFINE(HAVE_FEATURE_JAVA)
2835 AC_SUBST(ENABLE_JAVA)
2837 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
2839 dnl ENABLE_JAVA="" indicate no Java support at all
2841 dnl ===================================================================
2842 dnl Check macOS SDK and compiler
2843 dnl ===================================================================
2845 HAVE_MACOS_LD_PLATFORMVERSION=
2846 if test $_os = Darwin; then
2848 # If no --with-macosx-sdk option is given, look for one
2850 # The intent is that for "most" Mac-based developers, a suitable
2851 # SDK will be found automatically without any configure options.
2853 # For developers with a current Xcode, the lowest-numbered SDK
2854 # higher than or equal to the minimum required should be found.
2856 AC_MSG_CHECKING([what macOS SDK to use])
2857 for _macosx_sdk in ${with_macosx_sdk-11.1 11.0 10.15 10.14 10.13 10.12}; do
2858 MACOSX_SDK_PATH=`xcrun --sdk macosx${_macosx_sdk} --show-sdk-path 2> /dev/null`
2859 if test -d "$MACOSX_SDK_PATH"; then
2860 with_macosx_sdk="${_macosx_sdk}"
2863 MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${_macosx_sdk}.sdk"
2864 if test -d "$MACOSX_SDK_PATH"; then
2865 with_macosx_sdk="${_macosx_sdk}"
2870 if test ! -d "$MACOSX_SDK_PATH"; then
2871 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
2874 AC_MSG_RESULT([SDK $with_macosx_sdk at $MACOSX_SDK_PATH])
2876 case $with_macosx_sdk in
2878 MACOSX_SDK_VERSION=101200
2881 MACOSX_SDK_VERSION=101300
2884 MACOSX_SDK_VERSION=101400
2887 MACOSX_SDK_VERSION=101500
2890 MACOSX_SDK_VERSION=110000
2893 MACOSX_SDK_VERSION=110100
2896 AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value, supported values are 10.12--11.1])
2900 if test "$host_cpu" = arm64 -a $MACOSX_SDK_VERSION -lt 110000; then
2901 AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value for Apple Silicon])
2904 if test "$with_macosx_version_min_required" = "" ; then
2905 if test "$host_cpu" = x86_64; then
2906 with_macosx_version_min_required="10.10";
2908 with_macosx_version_min_required="11.0";
2912 if test "$with_macosx_version_max_allowed" = "" ; then
2913 with_macosx_version_max_allowed="$with_macosx_sdk"
2916 # export this so that "xcrun" invocations later return matching values
2917 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
2918 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
2919 export DEVELOPER_DIR
2920 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
2921 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
2923 AC_MSG_CHECKING([whether Xcode is new enough])
2924 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
2925 my_xcode_ver2=${my_xcode_ver1#Xcode }
2926 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
2927 if test "$my_xcode_ver3" -ge 903; then
2928 AC_MSG_RESULT([yes ($my_xcode_ver2)])
2930 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 9.3])
2933 case "$with_macosx_version_min_required" in
2935 MAC_OS_X_VERSION_MIN_REQUIRED="101000"
2938 MAC_OS_X_VERSION_MIN_REQUIRED="101100"
2941 MAC_OS_X_VERSION_MIN_REQUIRED="101200"
2944 MAC_OS_X_VERSION_MIN_REQUIRED="101300"
2947 MAC_OS_X_VERSION_MIN_REQUIRED="101400"
2950 MAC_OS_X_VERSION_MIN_REQUIRED="101500"
2953 MAC_OS_X_VERSION_MIN_REQUIRED="101600"
2956 MAC_OS_X_VERSION_MIN_REQUIRED="110000"
2959 MAC_OS_X_VERSION_MIN_REQUIRED="110100"
2962 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.10--11.1])
2965 MAC_OS_X_VERSION_MIN_REQUIRED_DOTS=$with_macosx_version_min_required
2967 LIBTOOL=/usr/bin/libtool
2968 INSTALL_NAME_TOOL=install_name_tool
2969 if test -z "$save_CC"; then
2970 stdlib=-stdlib=libc++
2971 if test "$ENABLE_LTO" = TRUE; then
2975 AC_MSG_CHECKING([what C compiler to use])
2976 CC="`xcrun -find clang`"
2977 CC_BASE=`first_arg_basename "$CC"`
2978 if test "$host_cpu" = x86_64; then
2979 CC+=" -target x86_64-apple-macos"
2981 CC+=" -target arm64-apple-macos"
2983 CC+=" $lto -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
2984 AC_MSG_RESULT([$CC])
2986 AC_MSG_CHECKING([what C++ compiler to use])
2987 CXX="`xcrun -find clang++`"
2988 CXX_BASE=`first_arg_basename "$CXX"`
2989 if test "$host_cpu" = x86_64; then
2990 CXX+=" -target x86_64-apple-macos"
2992 CXX+=" -target arm64-apple-macos"
2994 CXX+=" $lto $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
2995 AC_MSG_RESULT([$CXX])
2997 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3000 STRIP=`xcrun -find strip`
3001 LIBTOOL=`xcrun -find libtool`
3002 RANLIB=`xcrun -find ranlib`
3005 case "$with_macosx_version_max_allowed" in
3007 MAC_OS_X_VERSION_MAX_ALLOWED="101000"
3010 MAC_OS_X_VERSION_MAX_ALLOWED="101100"
3013 MAC_OS_X_VERSION_MAX_ALLOWED="101200"
3016 MAC_OS_X_VERSION_MAX_ALLOWED="101300"
3019 MAC_OS_X_VERSION_MAX_ALLOWED="101400"
3022 MAC_OS_X_VERSION_MAX_ALLOWED="101500"
3025 MAC_OS_X_VERSION_MAX_ALLOWED="110000"
3028 MAC_OS_X_VERSION_MAX_ALLOWED="110100"
3031 AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.10--11.1])
3035 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
3036 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
3037 AC_MSG_ERROR([the version minimum required, $MAC_OS_X_VERSION_MIN_REQUIRED, must be <= the version maximum allowed, $MAC_OS_X_VERSION_MAX_ALLOWED])
3042 AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
3043 if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
3044 AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
3048 AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
3049 AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
3051 AC_MSG_CHECKING([whether to do code signing])
3053 if test "$enable_macosx_code_signing" = yes; then
3054 # By default use the first suitable certificate (?).
3056 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
3057 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
3058 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
3059 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
3060 # "Developer ID Application" one.
3062 identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
3063 if test -n "$identity"; then
3064 MACOSX_CODESIGNING_IDENTITY=$identity
3065 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3066 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3068 AC_MSG_ERROR([cannot determine identity to use])
3070 elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
3071 MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
3072 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3073 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
3078 AC_MSG_CHECKING([whether to create a Mac App Store package])
3080 if test -n "$enable_macosx_package_signing" -a -z "$MACOSX_CODESIGNING_IDENTITY"; then
3081 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
3082 elif test "$enable_macosx_package_signing" = yes; then
3083 # By default use the first suitable certificate.
3084 # It should be a "3rd Party Mac Developer Installer" one
3086 identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
3087 if test -n "$identity"; then
3088 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
3089 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3090 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3092 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
3094 elif test -n "$enable_macosx_package_signing"; then
3095 MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
3096 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
3097 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
3102 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
3103 AC_MSG_ERROR([You should not use the same identity for code and package signing])
3106 AC_MSG_CHECKING([whether to sandbox the application])
3108 if test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
3109 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
3110 elif test "$enable_macosx_sandbox" = yes; then
3111 ENABLE_MACOSX_SANDBOX=TRUE
3112 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
3113 AC_MSG_RESULT([yes])
3118 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3119 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3120 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3122 AC_MSG_CHECKING([whether the linker supports -platform_version])
3123 save_LDFLAGS=$LDFLAGS
3124 LDFLAGS="$LDFLAGS -Xlinker -platform_version -Xlinker macos \
3125 -Xlinker $MAC_OS_X_VERSION_MIN_REQUIRED_DOTS -Xlinker 0.0.0"
3126 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
3127 [AC_MSG_RESULT([yes])
3128 HAVE_MACOS_LD_PLATFORMVERSION=TRUE],
3129 [AC_MSG_RESULT([no])])
3130 LDFLAGS=$save_LDFLAGS
3132 AC_SUBST(MACOSX_SDK_PATH)
3133 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3134 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3135 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED_DOTS)
3136 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3137 AC_SUBST(INSTALL_NAME_TOOL)
3138 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3139 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3140 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3141 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3142 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3143 AC_SUBST(HAVE_MACOS_LD_PLATFORMVERSION)
3145 dnl ===================================================================
3146 dnl Check iOS SDK and compiler
3147 dnl ===================================================================
3149 if test $_os = iOS; then
3150 AC_MSG_CHECKING([what iOS SDK to use])
3151 current_sdk_ver=14.4
3152 older_sdk_vers="14.3 14.2 14.1 14.0 13.7 13.6 13.5 13.4 13.2 13.1 13.0 12.4 12.2"
3153 if test "$enable_ios_simulator" = "yes"; then
3154 platform=iPhoneSimulator
3155 versionmin=-mios-simulator-version-min=12.2
3158 versionmin=-miphoneos-version-min=12.2
3160 xcode_developer=`xcode-select -print-path`
3162 for sdkver in $current_sdk_ver $older_sdk_vers; do
3163 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3170 if test -z "$sysroot"; then
3171 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3174 AC_MSG_RESULT($sysroot)
3176 # LTO is not really recommended for iOS builds,
3177 # the link time will be astronomical
3178 if test "$ENABLE_LTO" = TRUE; then
3182 stdlib="-stdlib=libc++"
3184 AC_MSG_CHECKING([what C compiler to use])
3185 CC="`xcrun -find clang`"
3186 CC_BASE=`first_arg_basename "$CC"`
3187 CC+=" -arch $host_cpu_for_clang -isysroot $sysroot $lto $versionmin"
3188 AC_MSG_RESULT([$CC])
3190 AC_MSG_CHECKING([what C++ compiler to use])
3191 CXX="`xcrun -find clang++`"
3192 CXX_BASE=`first_arg_basename "$CXX"`
3193 CXX+=" -arch $host_cpu_for_clang $stdlib -isysroot $sysroot $lto $versionmin"
3194 AC_MSG_RESULT([$CXX])
3196 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3199 STRIP=`xcrun -find strip`
3200 LIBTOOL=`xcrun -find libtool`
3201 RANLIB=`xcrun -find ranlib`
3204 AC_MSG_CHECKING([whether to treat the installation as read-only])
3206 if test \( -z "$enable_readonly_installset" -a "$ENABLE_MACOSX_SANDBOX" = TRUE \) -o \
3207 "$enable_extensions" != yes; then
3208 enable_readonly_installset=yes
3210 if test "$enable_readonly_installset" = yes; then
3211 AC_MSG_RESULT([yes])
3212 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3217 dnl ===================================================================
3218 dnl Structure of install set
3219 dnl ===================================================================
3221 if test $_os = Darwin; then
3222 LIBO_BIN_FOLDER=MacOS
3223 LIBO_ETC_FOLDER=Resources
3224 LIBO_LIBEXEC_FOLDER=MacOS
3225 LIBO_LIB_FOLDER=Frameworks
3226 LIBO_LIB_PYUNO_FOLDER=Resources
3227 LIBO_SHARE_FOLDER=Resources
3228 LIBO_SHARE_HELP_FOLDER=Resources/help
3229 LIBO_SHARE_JAVA_FOLDER=Resources/java
3230 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3231 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3232 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3233 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3234 LIBO_URE_BIN_FOLDER=MacOS
3235 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3236 LIBO_URE_LIB_FOLDER=Frameworks
3237 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3238 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3239 elif test $_os = WINNT; then
3240 LIBO_BIN_FOLDER=program
3241 LIBO_ETC_FOLDER=program
3242 LIBO_LIBEXEC_FOLDER=program
3243 LIBO_LIB_FOLDER=program
3244 LIBO_LIB_PYUNO_FOLDER=program
3245 LIBO_SHARE_FOLDER=share
3246 LIBO_SHARE_HELP_FOLDER=help
3247 LIBO_SHARE_JAVA_FOLDER=program/classes
3248 LIBO_SHARE_PRESETS_FOLDER=presets
3249 LIBO_SHARE_READMES_FOLDER=readmes
3250 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3251 LIBO_SHARE_SHELL_FOLDER=program/shell
3252 LIBO_URE_BIN_FOLDER=program
3253 LIBO_URE_ETC_FOLDER=program
3254 LIBO_URE_LIB_FOLDER=program
3255 LIBO_URE_MISC_FOLDER=program
3256 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3258 LIBO_BIN_FOLDER=program
3259 LIBO_ETC_FOLDER=program
3260 LIBO_LIBEXEC_FOLDER=program
3261 LIBO_LIB_FOLDER=program
3262 LIBO_LIB_PYUNO_FOLDER=program
3263 LIBO_SHARE_FOLDER=share
3264 LIBO_SHARE_HELP_FOLDER=help
3265 LIBO_SHARE_JAVA_FOLDER=program/classes
3266 LIBO_SHARE_PRESETS_FOLDER=presets
3267 LIBO_SHARE_READMES_FOLDER=readmes
3268 if test "$enable_fuzzers" != yes; then
3269 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3271 LIBO_SHARE_RESOURCE_FOLDER=resource
3273 LIBO_SHARE_SHELL_FOLDER=program/shell
3274 LIBO_URE_BIN_FOLDER=program
3275 LIBO_URE_ETC_FOLDER=program
3276 LIBO_URE_LIB_FOLDER=program
3277 LIBO_URE_MISC_FOLDER=program
3278 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3280 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3281 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3282 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3283 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3284 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3285 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3286 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3287 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3288 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3289 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3290 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3291 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3292 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3293 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3294 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3295 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3297 # Not all of them needed in config_host.mk, add more if need arises
3298 AC_SUBST(LIBO_BIN_FOLDER)
3299 AC_SUBST(LIBO_ETC_FOLDER)
3300 AC_SUBST(LIBO_LIB_FOLDER)
3301 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3302 AC_SUBST(LIBO_SHARE_FOLDER)
3303 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3304 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3305 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3306 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3307 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3308 AC_SUBST(LIBO_URE_BIN_FOLDER)
3309 AC_SUBST(LIBO_URE_ETC_FOLDER)
3310 AC_SUBST(LIBO_URE_LIB_FOLDER)
3311 AC_SUBST(LIBO_URE_MISC_FOLDER)
3312 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3314 dnl ===================================================================
3315 dnl Windows specific tests and stuff
3316 dnl ===================================================================
3320 # Return value: $regvalue
3323 local _regentry="/proc/registry${1}/${2}"
3324 if test -f "$_regentry"; then
3325 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3326 # Registry keys read via /proc/registry* are always \0 terminated!
3327 local _regvalue=$(tr -d '\0' < "$_regentry")
3328 if test $? -eq 0; then
3334 # Get a value from the 32-bit side of the Registry
3337 reg_get_value "32" "$1"
3340 # Get a value from the 64-bit side of the Registry
3343 reg_get_value "64" "$1"
3346 if test "$_os" = "WINNT"; then
3347 AC_MSG_CHECKING([whether to build a 64-bit LibreOffice])
3348 if test "$enable_64_bit" = "" -o "$enable_64_bit" = "no"; then
3350 WINDOWS_SDK_ARCH="x86"
3352 AC_MSG_RESULT([yes])
3353 WINDOWS_SDK_ARCH="x64"
3357 AC_SUBST(WINDOWS_SDK_ARCH)
3358 if test "$_os" = "iOS" -o "$build_cpu" != "$host_cpu"; then
3359 cross_compiling="yes"
3361 if test "$cross_compiling" = "yes"; then
3362 export CROSS_COMPILING=TRUE
3365 BUILD_TYPE="$BUILD_TYPE NATIVE"
3367 AC_SUBST(CROSS_COMPILING)
3369 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3370 # NOTE: must _not_ be used for bundled external libraries!
3372 if test "$GCC" = "yes"; then
3373 AC_MSG_CHECKING( for -isystem )
3375 CFLAGS="$CFLAGS -Werror"
3376 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3378 if test -n "$ISYSTEM"; then
3384 if test -z "$ISYSTEM"; then
3385 # fall back to using -I
3390 dnl ===================================================================
3391 dnl Check which Visual Studio compiler is used
3392 dnl ===================================================================
3394 map_vs_year_to_version()
3396 # Return value: $vsversion
3406 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3410 vs_versions_to_check()
3412 # Args: $1 (optional) : versions to check, in the order of preference
3413 # Return value: $vsversions
3417 if test -n "$1"; then
3418 map_vs_year_to_version "$1"
3419 vsversions=$vsversion
3421 # We accept only 2017
3426 win_get_env_from_vsvars32bat()
3428 WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3429 # Also seems to be located in another directory under the same name: vsvars32.bat
3430 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3431 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3432 printf '@setlocal\r\n@echo %%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3433 chmod +x $WRAPPERBATCHFILEPATH
3434 _win_get_env_from_vsvars32bat=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3435 rm -f $WRAPPERBATCHFILEPATH
3436 printf '%s' "$_win_get_env_from_vsvars32bat"
3441 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3442 if test -n "$regvalue"; then
3443 PathFormat "$regvalue"
3444 UCRTSDKDIR=$formatted_path
3445 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3446 UCRTVERSION=$regvalue
3448 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3452 if test -z "$UCRTSDKDIR"; then
3453 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3454 ide_env_file="${ide_env_dir}VsDevCmd.bat"
3455 if test -f "$ide_env_file"; then
3456 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3457 UCRTSDKDIR=$formatted_path
3458 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3459 dnl Hack needed at least by tml:
3460 if test "$UCRTVERSION" = 10.0.15063.0 \
3461 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3462 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3464 UCRTVERSION=10.0.14393.0
3467 AC_MSG_ERROR([No UCRT found])
3474 # Find Visual C++ 2017/2019
3475 # Args: $1 (optional) : The VS version year
3476 # Return values: $vctest, $vcyear, $vcnum, $vcnumwithdot, $vcbuildnumber
3478 unset vctest vcnum vcnumwithdot vcbuildnumber
3480 vs_versions_to_check "$1"
3481 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3482 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3483 PathFormat "$vswhere"
3484 vswhere=$formatted_path
3485 for ver in $vsversions; do
3486 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3487 if test -n "$vswhereoutput"; then
3488 PathFormat "$vswhereoutput"
3489 vctest=$formatted_path
3494 # This fallback is needed on *some* (but not all) VS 2017 installations, where vswhere turns up
3495 # with the empty list for unclear reason. The below hack does not work for VS 2019 anyway, so
3496 # should be removed when upgrading baseline.
3497 if ! test -n "$vctest"; then
3498 for ver in $vsversions; do
3499 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver.0/Setup/VC/ProductDir
3500 if test -n "$regvalue"; then
3504 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/SxS/VS7/$ver.0
3505 if test -n "$regvalue"; then
3506 AC_MSG_RESULT([found: $regvalue])
3507 PathFormat "$regvalue"
3508 vctest=$formatted_path
3514 if test -n "$vctest"; then
3515 vcnumwithdot="$ver.0"
3516 case "$vcnumwithdot" in
3526 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3534 if test "$_os" = "WINNT"; then
3535 AC_MSG_CHECKING([Visual C++])
3536 find_msvc "$with_visual_studio"
3537 if test -z "$vctest"; then
3538 if test -n "$with_visual_studio"; then
3539 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3541 AC_MSG_ERROR([no Visual Studio 2017 installation found])
3545 if test "$BITNESS_OVERRIDE" = ""; then
3546 if test -f "$vctest/VC/Tools/MSVC/$vcbuildnumber/bin/HostX86/x86/cl.exe"; then
3547 VC_PRODUCT_DIR=$vctest/VC
3549 AC_MSG_ERROR([no compiler (cl.exe) in $vctest/VC/Tools/MSVC/$vcbuildnumber/bin/HostX86/x86])
3552 if test -f "$vctest/VC/Tools/MSVC/$vcbuildnumber/bin/HostX64/x64/cl.exe"; then
3553 VC_PRODUCT_DIR=$vctest/VC
3555 AC_MSG_ERROR([no compiler (cl.exe) in $vctest/VC/Tools/MSVC/$vcbuildnumber/bin/HostX64/x64])
3558 AC_MSG_RESULT([$VC_PRODUCT_DIR])
3560 AC_MSG_CHECKING([for short pathname of VC product directory])
3561 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
3562 AC_MSG_RESULT([$VC_PRODUCT_DIR])
3567 AC_MSG_CHECKING([for UCRT location])
3569 # find_ucrt errors out if it doesn't find it
3570 AC_MSG_RESULT([found])
3571 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
3572 ucrtincpath_formatted=$formatted_path
3573 # SOLARINC is used for external modules and must be set too.
3574 # And no, it's not sufficient to set SOLARINC only, as configure
3575 # itself doesn't honour it.
3576 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
3577 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
3578 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
3579 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
3581 AC_SUBST(UCRTSDKDIR)
3582 AC_SUBST(UCRTVERSION)
3584 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
3585 # Find the proper version of MSBuild.exe to use based on the VS version
3586 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
3587 if test -n "$regvalue" ; then
3588 AC_MSG_RESULT([found: $regvalue])
3589 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3591 if test "$vcnumwithdot" = "16.0"; then
3592 if test "$BITNESS_OVERRIDE" = ""; then
3593 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
3595 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
3598 if test "$BITNESS_OVERRIDE" = ""; then
3599 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin"
3601 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64"
3604 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3605 AC_MSG_RESULT([$regvalue])
3608 # Find the version of devenv.exe
3609 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
3610 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
3611 if test ! -e "$DEVENV"; then
3612 AC_MSG_ERROR([No devenv.exe found, Visual Studio installation broken?])
3615 dnl ===========================================================
3616 dnl Check for the corresponding mspdb*.dll
3617 dnl ===========================================================
3623 if "$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/HostX64/x64/cl.exe" -? </dev/null >/dev/null 2>&1; then
3624 VC_HOST_DIR="HostX64"
3625 MSPDB_PATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/$VC_HOST_DIR/x64"
3627 VC_HOST_DIR="HostX86"
3628 MSPDB_PATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/$VC_HOST_DIR/x86"
3631 if test "$BITNESS_OVERRIDE" = ""; then
3632 CL_PATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/$VC_HOST_DIR/x86"
3634 CL_PATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/$VC_HOST_DIR/x64"
3637 # MSVC 15.0 has libraries from 14.0?
3640 if test ! -e "$MSPDB_PATH/mspdb${mspdbnum}.dll"; then
3641 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $MSPDB_PATH, Visual Studio installation broken?])
3644 dnl The path needs to be added before cl is called
3645 TEMP_PATH=`cygpath -d "$MSPDB_PATH"`
3646 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3648 AC_MSG_CHECKING([cl.exe])
3650 # Is there really ever a need to pass CC explicitly? Surely we can hope to get all the
3651 # automagical niceness to work OK? If somebody has some unsupported compiler in some weird
3652 # location, isn't it likely that lots of other things needs changes, too, and just setting CC
3655 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
3656 dnl needed when building CLR code:
3657 if test -z "$MSVC_CXX"; then
3658 if test -f "$CL_PATH/cl.exe"; then
3659 MSVC_CXX="$CL_PATH/cl.exe"
3662 # This gives us a posix path with 8.3 filename restrictions
3663 MSVC_CXX=`win_short_path_for_make "$MSVC_CXX"`
3666 if test -z "$CC"; then
3668 CC_BASE=`first_arg_basename "$CC"`
3670 if test "$BITNESS_OVERRIDE" = ""; then
3671 dnl since MSVC 2012, default for x86 is -arch:SSE2:
3672 MSVC_CXX="$MSVC_CXX -arch:SSE"
3674 if test -z "$CXX"; then
3676 CXX_BASE=`first_arg_basename "$CXX"`
3679 if test -n "$CC"; then
3680 # Remove /cl.exe from CC case insensitive
3681 AC_MSG_RESULT([found Visual C++ $vcyear ($CC)])
3682 if test "$BITNESS_OVERRIDE" = ""; then
3683 COMPATH="$VC_PRODUCT_DIR"
3685 if test -n "$VC_PRODUCT_DIR"; then
3686 COMPATH=$VC_PRODUCT_DIR
3689 if test "$BITNESS_OVERRIDE" = ""; then
3690 dnl since MSVC 2012, default for x86 is -arch:SSE2:
3694 COMPATH="$COMPATH/Tools/MSVC/$vcbuildnumber"
3696 export INCLUDE=`cygpath -d "$COMPATH\Include"`
3698 PathFormat "$COMPATH"
3699 COMPATH=`win_short_path_for_make "$formatted_path"`
3704 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
3705 # are always "better", we list them in reverse chronological order.
3709 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
3713 # The expectation is that --with-windows-sdk should not need to be used
3714 if test -n "$with_windows_sdk"; then
3715 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
3716 *" "$with_windows_sdk" "*)
3717 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
3720 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $MSVSVER])
3725 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
3730 AC_MSG_ERROR([Visual C++ not found after all, huh])
3733 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2017 version 15.7])
3734 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
3735 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
3736 // between Visual Studio versions and _MSC_VER:
3740 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
3742 # Check for 64-bit (cross-)compiler to use to build the 64-bit
3743 # version of the Explorer extension (and maybe other small
3744 # bits, too) needed when installing a 32-bit LibreOffice on a
3745 # 64-bit OS. The 64-bit Explorer extension is a feature that
3746 # has been present since long in OOo. Don't confuse it with
3747 # building LibreOffice itself as 64-bit code.
3752 if test "$BITNESS_OVERRIDE" = ""; then
3753 AC_MSG_CHECKING([for a x64 compiler and libraries for 64-bit Explorer extensions])
3754 if test -f "$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/atlmfc/lib/x64/atls.lib" || \
3755 test -f "$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/atlmfc/lib/spectre/x64/atls.lib"; then
3756 if "$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/$VC_HOST_DIR/x64/cl.exe" -? </dev/null >/dev/null 2>&1; then
3758 CXX_X64_BINARY=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/$VC_HOST_DIR/x64/cl.exe"`
3761 if test "$BUILD_X64" = TRUE; then
3762 AC_MSG_RESULT([found])
3764 AC_MSG_RESULT([not found])
3765 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
3772 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
3773 AC_SUBST(CXX_X64_BINARY)
3775 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
3776 # needed to support TWAIN scan on both 32- and 64-bit systems
3780 if test "$BITNESS_OVERRIDE" = "64"; then
3781 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
3782 if test -n "$CXX_X86_BINARY"; then
3784 AC_MSG_RESULT([preset])
3785 elif "$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/$VC_HOST_DIR/x86/cl.exe" -? </dev/null >/dev/null 2>&1; then
3787 CXX_X86_BINARY=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/$VC_HOST_DIR/x86/cl.exe"`
3788 CXX_X86_BINARY+=" /arch:SSE"
3789 AC_MSG_RESULT([found])
3792 AC_MSG_RESULT([not found])
3793 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
3797 CXX_X86_BINARY=$MSVC_CXX
3800 AC_SUBST(CXX_X86_BINARY)
3809 UNOWINREG_DLL="185d60944ea767075d27247c3162b3bc-unowinreg.dll"
3810 AC_SUBST(UNOWINREG_DLL)
3813 AC_MSG_CHECKING([whether the compiler is actually Clang])
3814 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
3820 [AC_MSG_RESULT([yes])
3822 [AC_MSG_RESULT([no])])
3823 AC_SUBST(COM_IS_CLANG)
3827 if test "$COM_IS_CLANG" = TRUE; then
3828 AC_MSG_CHECKING([whether Clang is new enough])
3829 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
3830 #if !defined __apple_build_version__
3834 [my_apple_clang=yes],[my_apple_clang=])
3835 if test "$my_apple_clang" = yes; then
3836 AC_MSG_RESULT([assumed yes (Apple Clang)])
3838 if test "$_os" = WINNT; then
3839 dnl In which case, assume clang-cl:
3841 dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
3849 CC_PLAIN="$CC_PLAIN $i"
3856 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
3857 CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
3858 CLANGVER=`echo $clang_version \
3859 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
3860 if test "$CLANGVER" -ge 50002; then
3861 AC_MSG_RESULT([yes ($clang_version)])
3863 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
3865 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
3866 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
3870 SHOWINCLUDES_PREFIX=
3871 if test "$_os" = WINNT; then
3872 dnl We need to guess the prefix of the -showIncludes output, it can be
3874 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
3875 echo "#include <stdlib.h>" > conftest.c
3876 SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
3877 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
3878 rm -f conftest.c conftest.obj
3879 if test -z "$SHOWINCLUDES_PREFIX"; then
3880 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
3882 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
3885 AC_SUBST(SHOWINCLUDES_PREFIX)
3888 # prefix C with ccache if needed
3890 if test "$CCACHE" != ""; then
3891 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
3895 CFLAGS="$CFLAGS --ccache-skip -O2"
3896 dnl an empty program will do, we're checking the compiler flags
3897 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
3898 [use_ccache=yes], [use_ccache=no])
3899 if test $use_ccache = yes; then
3900 AC_MSG_RESULT([yes])
3903 CC_BASE="ccache $CC_BASE"
3910 # ===================================================================
3911 # check various GCC options that Clang does not support now but maybe
3912 # will somewhen in the future, check them even for GCC, so that the
3914 # ===================================================================
3917 if test "$GCC" = "yes"; then
3918 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
3920 CFLAGS="$CFLAGS -Werror -ggdb2"
3921 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
3923 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
3924 AC_MSG_RESULT([yes])
3929 if test "$host_cpu" = "m68k"; then
3930 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
3932 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
3933 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
3935 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
3936 AC_MSG_RESULT([yes])
3942 AC_SUBST(HAVE_GCC_GGDB2)
3944 dnl ===================================================================
3945 dnl Test the gcc version
3946 dnl ===================================================================
3947 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
3948 AC_MSG_CHECKING([the GCC version])
3949 _gcc_version=`$CC -dumpversion`
3950 gcc_full_version=$(printf '%s' "$_gcc_version" | \
3951 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
3952 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
3954 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
3956 if test "$gcc_full_version" -lt 70000; then
3957 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
3960 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
3961 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
3962 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
3963 # (which reports itself as GCC 4.2.1).
3966 AC_SUBST(GCC_VERSION)
3968 dnl Set the ENABLE_DBGUTIL variable
3969 dnl ===================================================================
3970 AC_MSG_CHECKING([whether to build with additional debug utilities])
3971 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
3972 ENABLE_DBGUTIL="TRUE"
3973 # this is an extra var so it can have different default on different MSVC
3974 # versions (in case there are version specific problems with it)
3975 MSVC_USE_DEBUG_RUNTIME="TRUE"
3977 AC_MSG_RESULT([yes])
3978 # cppunit and graphite expose STL in public headers
3979 if test "$with_system_cppunit" = "yes"; then
3980 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
3982 with_system_cppunit=no
3984 if test "$with_system_graphite" = "yes"; then
3985 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
3987 with_system_graphite=no
3989 if test "$with_system_orcus" = "yes"; then
3990 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
3992 with_system_orcus=no
3994 if test "$with_system_libcmis" = "yes"; then
3995 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
3997 with_system_libcmis=no
3999 if test "$with_system_hunspell" = "yes"; then
4000 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
4002 with_system_hunspell=no
4004 if test "$with_system_gpgmepp" = "yes"; then
4005 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
4007 with_system_gpgmepp=no
4009 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
4010 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
4011 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
4012 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
4013 # of those two is using the system variant:
4014 if test "$with_system_libnumbertext" = "yes"; then
4015 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
4017 with_system_libnumbertext=no
4019 if test "$with_system_libwps" = "yes"; then
4020 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
4022 with_system_libwps=no
4026 MSVC_USE_DEBUG_RUNTIME=""
4029 AC_SUBST(ENABLE_DBGUTIL)
4030 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
4032 dnl Set the ENABLE_DEBUG variable.
4033 dnl ===================================================================
4034 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
4035 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
4037 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
4038 if test -z "$libo_fuzzed_enable_debug"; then
4039 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
4041 AC_MSG_NOTICE([Resetting --enable-debug=yes])
4046 AC_MSG_CHECKING([whether to do a debug build])
4047 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
4049 if test -n "$ENABLE_DBGUTIL" ; then
4050 AC_MSG_RESULT([yes (dbgutil)])
4052 AC_MSG_RESULT([yes])
4058 AC_SUBST(ENABLE_DEBUG)
4060 dnl ===================================================================
4061 dnl Select the linker to use (gold/lld/ld.bfd).
4062 dnl This is done only after compiler checks (need to know if Clang is
4063 dnl used, for different defaults) and after checking if a debug build
4064 dnl is wanted (non-debug builds get the default linker if not explicitly
4065 dnl specified otherwise).
4066 dnl All checks for linker features/options should come after this.
4067 dnl ===================================================================
4071 use_ld_fail_if_error=$2
4073 AC_MSG_CHECKING([for -fuse-ld=$use_ld linker support])
4074 use_ld_ldflags_save="$LDFLAGS"
4075 LDFLAGS="$LDFLAGS -fuse-ld=$use_ld"
4076 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4079 printf ("hello world\n");
4080 ])], USE_LD=$use_ld, [])
4081 if test -n "$USE_LD"; then
4082 AC_MSG_RESULT( yes )
4085 if test -n "$use_ld_fail_if_error"; then
4091 if test -n "$use_ld_ok"; then
4092 dnl keep the value of LDFLAGS
4095 LDFLAGS="$use_ld_ldflags_save"
4099 if test "$enable_ld" != "no"; then
4100 if test "$GCC" = "yes"; then
4101 if test -n "$enable_ld"; then
4102 check_use_ld "$enable_ld" fail_if_error
4103 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4104 dnl non-debug builds default to the default linker
4106 elif test -n "$COM_IS_CLANG"; then
4108 if test $? -ne 0; then
4112 # For gcc first try gold, new versions also support lld.
4114 if test $? -ne 0; then
4118 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
4120 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
4121 if test -z "$ld_used"; then
4124 AC_MSG_CHECKING([for linker that is used])
4125 AC_MSG_RESULT([$ld_used])
4126 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4127 if echo "$ld_used" | grep -q "^GNU ld"; then
4128 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4129 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4133 if test "$enable_ld" = "yes"; then
4134 AC_MSG_ERROR([--enable-ld not supported])
4140 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4141 if test "$GCC" = "yes"; then
4142 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4143 bsymbolic_functions_ldflags_save=$LDFLAGS
4144 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4145 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4148 printf ("hello world\n");
4149 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4150 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4151 AC_MSG_RESULT( found )
4153 AC_MSG_RESULT( not found )
4155 LDFLAGS=$bsymbolic_functions_ldflags_save
4157 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4161 if test "$enable_split_debug" != no; then
4162 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4163 if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4164 AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4166 CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4167 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4169 if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4170 AC_MSG_RESULT([yes])
4172 if test "$enable_split_debug" = yes; then
4179 if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4180 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4181 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4184 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4187 if test "$enable_gdb_index" != "no"; then
4188 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4189 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -o -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4190 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4192 CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4194 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4195 if test "$have_ggnu_pubnames" != "TRUE"; then
4196 if test "$enable_gdb_index" = "yes"; then
4197 AC_MSG_ERROR( no, --enable-gdb-index not supported )
4202 AC_MSG_RESULT( yes )
4203 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4204 ldflags_save=$LDFLAGS
4205 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4206 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4209 printf ("hello world\n");
4210 ])], ENABLE_GDB_INDEX=TRUE, [])
4211 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4212 AC_MSG_RESULT( yes )
4214 if test "$enable_gdb_index" = "yes"; then
4220 LDFLAGS=$ldflags_save
4224 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4225 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4226 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4229 AC_SUBST(ENABLE_GDB_INDEX)
4231 if test "$enable_sal_log" = yes; then
4234 AC_SUBST(ENABLE_SAL_LOG)
4236 dnl Check for enable symbols option
4237 dnl ===================================================================
4238 AC_MSG_CHECKING([whether to generate debug information])
4239 if test -z "$enable_symbols"; then
4240 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4246 if test "$enable_symbols" = yes; then
4247 ENABLE_SYMBOLS_FOR=all
4248 AC_MSG_RESULT([yes])
4249 elif test "$enable_symbols" = no; then
4253 # Selective debuginfo.
4254 ENABLE_SYMBOLS_FOR="$enable_symbols"
4255 AC_MSG_RESULT([for "$enable_symbols"])
4257 AC_SUBST(ENABLE_SYMBOLS_FOR)
4259 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4260 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4261 AC_MSG_CHECKING([whether enough memory is available for linking])
4262 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4263 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4264 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4265 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4267 AC_MSG_RESULT([yes])
4271 AC_MSG_CHECKING([whether to compile with optimization flags])
4272 if test -z "$enable_optimized"; then
4273 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4276 enable_optimized=yes
4279 if test "$enable_optimized" != no; then
4280 ENABLE_OPTIMIZED=TRUE
4281 AC_MSG_RESULT([yes])
4286 AC_SUBST(ENABLE_OPTIMIZED)
4289 # determine CPUNAME, OS, ...
4290 # The USING_X11 flag tells whether the host os uses X by default. Can be overridden with the --without-x option.
4301 PLATFORMID=aix_powerpc
4310 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
4317 if test "$BITNESS_OVERRIDE" = 64; then
4320 PLATFORMID=windows_x86_64
4322 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
4326 PLATFORMID=windows_x86
4330 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4333 SCPDEFS="$SCPDEFS -D_MSC_VER"
4345 if test "$enable_ios_simulator" = "yes"; then
4350 PLATFORMID=macosx_arm64
4354 if test "$enable_ios_simulator" = "yes"; then
4359 PLATFORMID=macosx_x86_64
4362 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4376 if test "$enable_ios_simulator" = "yes"; then
4377 AC_MSG_ERROR([iOS simulator is only available in macOS not iOS])
4381 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4386 PLATFORMID=ios_arm64
4400 PLATFORMID=dragonfly_x86
4405 PLATFORMID=dragonfly_x86_64
4408 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4424 PLATFORMID=freebsd_x86
4429 PLATFORMID=freebsd_x86_64
4432 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4449 PLATFORMID=haiku_x86
4454 PLATFORMID=haiku_x86_64
4457 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4474 PLATFORMID=kfreebsd_x86
4479 PLATFORMID=kfreebsd_x86_64
4482 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4498 PLATFORMID=linux_aarch64
4500 EPM_FLAGS="-a arm64"
4505 PLATFORMID=linux_alpha
4511 PLATFORMID=linux_arm_eabi
4515 PLATFORMID=linux_arm_oabi
4523 PLATFORMID=linux_hppa
4528 PLATFORMID=linux_x86
4533 PLATFORMID=linux_ia64
4539 PLATFORMID=linux_mips_eb
4544 EPM_FLAGS="-a mips64"
4545 PLATFORMID=linux_mips64_eb
4550 EPM_FLAGS="-a mips64el"
4551 PLATFORMID=linux_mips64_el
4556 EPM_FLAGS="-a mipsel"
4557 PLATFORMID=linux_mips_el
4562 PLATFORMID=linux_m68k
4567 PLATFORMID=linux_powerpc
4572 PLATFORMID=linux_powerpc64
4576 RTL_ARCH=PowerPC_64_LE
4577 PLATFORMID=linux_powerpc64_le
4582 PLATFORMID=linux_sparc
4587 PLATFORMID=linux_sparc64
4592 PLATFORMID=linux_s390
4597 PLATFORMID=linux_s390x
4602 PLATFORMID=linux_x86_64
4605 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4622 PLATFORMID=android_arm_eabi
4627 PLATFORMID=android_aarch64
4632 PLATFORMID=android_x86
4637 PLATFORMID=android_x86_64
4640 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4656 PLATFORMID=netbsd_x86
4661 PLATFORMID=netbsd_powerpc
4666 PLATFORMID=netbsd_sparc
4671 PLATFORMID=netbsd_x86_64
4674 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4690 PLATFORMID=openbsd_x86
4695 PLATFORMID=openbsd_x86_64
4698 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4701 SOLARINC="$SOLARINC -I/usr/local/include"
4715 PLATFORMID=solaris_x86
4720 PLATFORMID=solaris_sparc
4725 PLATFORMID=solaris_sparc64
4728 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4731 SOLARINC="$SOLARINC -I/usr/local/include"
4735 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
4739 if test "$with_x" = "no"; then
4740 AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
4744 if test "$enable_gui" = "no"; then
4745 if test "$USING_X11" != TRUE; then
4746 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
4750 AC_DEFINE(HAVE_FEATURE_UI,0)
4753 AC_SUBST(DISABLE_GUI)
4755 WORKDIR="${BUILDDIR}/workdir"
4756 INSTDIR="${BUILDDIR}/instdir"
4757 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
4758 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
4759 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
4767 AC_SUBST([INSTROOT])
4768 AC_SUBST([INSTROOTBASE])
4772 AC_SUBST(PLATFORMID)
4773 AC_SUBST(WINDOWS_X64)
4774 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
4776 dnl ===================================================================
4777 dnl Test which package format to use
4778 dnl ===================================================================
4779 AC_MSG_CHECKING([which package format to use])
4780 if test -n "$with_package_format" -a "$with_package_format" != no; then
4781 for i in $with_package_format; do
4783 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
4786 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
4787 aix - AIX software distribution
4788 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
4789 deb - Debian software distribution
4790 pkg - Solaris software distribution
4791 rpm - RedHat software distribution
4793 LibreOffice additionally supports:
4794 archive - .tar.gz or .zip
4796 installed - installation tree
4802 # fakeroot is needed to ensure correct file ownerships/permissions
4803 # inside deb packages and tar archives created on Linux and Solaris.
4804 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
4805 AC_PATH_PROG(FAKEROOT, fakeroot, no)
4806 if test "$FAKEROOT" = "no"; then
4808 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
4811 PKGFORMAT="$with_package_format"
4812 AC_MSG_RESULT([$PKGFORMAT])
4815 AC_MSG_RESULT([none])
4819 dnl ===================================================================
4820 dnl Set up a different compiler to produce tools to run on the build
4821 dnl machine when doing cross-compilation
4822 dnl ===================================================================
4824 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
4825 m4_pattern_allow([PKG_CONFIG_LIBDIR])
4826 if test "$cross_compiling" = "yes"; then
4827 AC_MSG_CHECKING([for BUILD platform configuration])
4829 rm -rf CONF-FOR-BUILD config_build.mk
4830 mkdir CONF-FOR-BUILD
4831 # Here must be listed all files needed when running the configure script. In particular, also
4832 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
4833 # keep them in the same order as there.
4834 (cd $SRC_ROOT && tar cf - \
4836 bin/get_config_variables \
4837 solenv/bin/getcompver.awk \
4838 solenv/inc/langlist.mk \
4841 config_host_lang.mk.in \
4843 bin/bffvalidator.sh.in \
4844 bin/odfvalidator.sh.in \
4845 bin/officeotron.sh.in \
4846 instsetoo_native/util/openoffice.lst.in \
4847 setup_native/source/packinfo/finals_instsetoo.txt.in \
4849 sysui/desktop/macosx/Info.plist.in) \
4850 | (cd CONF-FOR-BUILD && tar xf -)
4851 cp configure CONF-FOR-BUILD
4852 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
4854 unset COM USING_X11 OS CPUNAME
4855 unset CC CXX SYSBASE CFLAGS
4856 unset AR NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
4857 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
4858 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC PKG_CONFIG_LIBDIR
4859 if test -n "$CC_FOR_BUILD"; then
4860 export CC="$CC_FOR_BUILD"
4861 CC_BASE=`first_arg_basename "$CC"`
4863 if test -n "$CXX_FOR_BUILD"; then
4864 export CXX="$CXX_FOR_BUILD"
4865 CXX_BASE=`first_arg_basename "$CXX"`
4867 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
4870 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
4871 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
4872 test $with_junit = no && sub_conf_opts="$sub_conf_opts --without-junit"
4873 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
4874 test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
4875 test "$build_for_ios" = "YES" && sub_conf_opts="$sub_conf_opts build_for_ios=YES"
4876 sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options"
4877 # Don't bother having configure look for stuff not needed for the build platform anyway
4880 --disable-gstreamer-1-0 \
4882 --disable-pdfimport \
4883 --disable-postgresql-sdbc \
4884 --enable-icecream="$enable_icecream" \
4885 --with-parallelism="$with_parallelism" \
4890 2>&1 | sed -e 's/^/ /'
4891 test -f ./config_host.mk 2>/dev/null || exit
4892 cp config_host.mk ../config_build.mk
4893 cp config_host_lang.mk ../config_build_lang.mk
4894 mv config.log ../config.Build.log
4895 mkdir -p ../config_build
4896 mv config_host/*.h ../config_build
4897 . ./bin/get_config_variables CC CXX INSTDIR INSTROOT LIBO_BIN_FOLDER LIBO_LIB_FOLDER LIBO_URE_LIB_FOLDER LIBO_URE_MISC_FOLDER OS PATH SDKDIRNAME SYSTEM_LIBXML SYSTEM_LIBXSLT WORKDIR
4899 for V in CC CXX LIBO_BIN_FOLDER LIBO_LIB_FOLDER LIBO_URE_LIB_FOLDER LIBO_URE_MISC_FOLDER OS SDKDIRNAME SYSTEM_LIBXML SYSTEM_LIBXSLT; do
4901 VV=`eval "echo $VV"`
4902 if test -n "$VV"; then
4903 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
4904 echo "$line" >>build-config
4908 for V in INSTDIR INSTROOT WORKDIR; do
4910 VV=`eval "echo $VV"`
4911 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
4912 if test -n "$VV"; then
4913 line="${V}_FOR_BUILD='$VV'"
4914 echo "$line" >>build-config
4918 line=`echo "LO_PATH_FOR_BUILD=$PATH" | sed -e 's,/CONF-FOR-BUILD,,g'`
4919 echo "$line" >>build-config
4922 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([Running configure script for BUILD system failed, see CONF-FOR-BUILD/config.log])
4923 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])
4924 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
4925 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
4927 eval `cat CONF-FOR-BUILD/build-config`
4929 AC_MSG_RESULT([checking for BUILD platform configuration... done])
4931 rm -rf CONF-FOR-BUILD
4935 CXX_FOR_BUILD="$CXX"
4936 INSTDIR_FOR_BUILD="$INSTDIR"
4937 INSTROOT_FOR_BUILD="$INSTROOT"
4938 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
4939 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
4940 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
4941 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
4942 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
4943 WORKDIR_FOR_BUILD="$WORKDIR"
4945 AC_SUBST(OS_FOR_BUILD)
4946 AC_SUBST(INSTDIR_FOR_BUILD)
4947 AC_SUBST(INSTROOT_FOR_BUILD)
4948 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
4949 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
4950 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
4951 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
4952 AC_SUBST(SDKDIRNAME_FOR_BUILD)
4953 AC_SUBST(WORKDIR_FOR_BUILD)
4955 dnl ===================================================================
4956 dnl Check for syslog header
4957 dnl ===================================================================
4958 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
4960 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
4961 dnl ===================================================================
4962 AC_MSG_CHECKING([whether to turn warnings to errors])
4963 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
4964 ENABLE_WERROR="TRUE"
4965 AC_MSG_RESULT([yes])
4967 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
4968 ENABLE_WERROR="TRUE"
4969 AC_MSG_RESULT([yes])
4974 AC_SUBST(ENABLE_WERROR)
4976 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
4977 dnl ===================================================================
4978 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
4979 if test -z "$enable_assert_always_abort"; then
4980 if test "$ENABLE_DEBUG" = TRUE; then
4981 enable_assert_always_abort=yes
4983 enable_assert_always_abort=no
4986 if test "$enable_assert_always_abort" = "yes"; then
4987 ASSERT_ALWAYS_ABORT="TRUE"
4988 AC_MSG_RESULT([yes])
4990 ASSERT_ALWAYS_ABORT="FALSE"
4993 AC_SUBST(ASSERT_ALWAYS_ABORT)
4995 # Determine whether to use ooenv for the instdir installation
4996 # ===================================================================
4997 if test $_os != "WINNT" -a $_os != "Darwin"; then
4998 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
4999 if test "$enable_ooenv" = "no"; then
5003 AC_MSG_RESULT([yes])
5006 AC_SUBST(ENABLE_OOENV)
5008 if test "$USING_X11" != TRUE; then
5009 # be sure to do not mess with unneeded stuff
5014 build_gstreamer_1_0=no
5018 enable_cairo_canvas=no
5021 if test "$OS" = "HAIKU"; then
5022 enable_cairo_canvas=yes
5026 if test "$test_kf5" = "yes" -a "$enable_kde5" = "yes"; then
5027 AC_MSG_WARN([The kde5 VCL plugin was renamed to kf5. Please update your configuration to use --enable-kf5, as --enable-kde5 will be removed after the next major release!])
5028 add_warning "The kde5 VCL plugin was renamed to kf5. Please update your configuration to use --enable-kf5, as --enable-kde5 will be removed after the next major release!"
5032 if test "$test_kf5" = "yes"; then
5036 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
5037 if test "$enable_qt5" = "no"; then
5038 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
5044 dnl ===================================================================
5045 dnl check for cups support
5046 dnl ===================================================================
5049 if test "$enable_cups" = "no"; then
5053 AC_MSG_CHECKING([whether to enable CUPS support])
5054 if test "$test_cups" = "yes"; then
5056 AC_MSG_RESULT([yes])
5058 AC_MSG_CHECKING([whether cups support is present])
5059 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
5060 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
5061 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
5062 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
5069 AC_SUBST(ENABLE_CUPS)
5072 if test "$test_fontconfig" = "yes"; then
5073 PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
5074 SYSTEM_FONTCONFIG=TRUE
5075 FilterLibs "${FONTCONFIG_LIBS}"
5076 FONTCONFIG_LIBS="${filteredlibs}"
5078 AC_SUBST(FONTCONFIG_CFLAGS)
5079 AC_SUBST(FONTCONFIG_LIBS)
5080 AC_SUBST([SYSTEM_FONTCONFIG])
5082 dnl whether to find & fetch external tarballs?
5083 dnl ===================================================================
5084 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
5085 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5086 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
5088 TARFILE_LOCATION="$LODE_HOME/ext_tar"
5091 if test -z "$TARFILE_LOCATION"; then
5092 if test -d "$SRC_ROOT/src" ; then
5093 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
5094 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
5096 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
5098 AbsolutePath "$TARFILE_LOCATION"
5099 PathFormat "${absolute_path}"
5100 TARFILE_LOCATION="${formatted_path}"
5102 AC_SUBST(TARFILE_LOCATION)
5104 AC_MSG_CHECKING([whether we want to fetch tarballs])
5105 if test "$enable_fetch_external" != "no"; then
5106 if test "$with_all_tarballs" = "yes"; then
5107 AC_MSG_RESULT([yes, all of them])
5108 DO_FETCH_TARBALLS="ALL"
5110 AC_MSG_RESULT([yes, if we use them])
5111 DO_FETCH_TARBALLS="TRUE"
5117 AC_SUBST(DO_FETCH_TARBALLS)
5119 AC_MSG_CHECKING([whether to build help])
5120 if test -n "$with_help" -a "$with_help" != "no" -a $_os != iOS -a $_os != Android; then
5121 BUILD_TYPE="$BUILD_TYPE HELP"
5122 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5123 case "$with_help" in
5125 ENABLE_HTMLHELP=TRUE
5126 SCPDEFS="$SCPDEFS -DWITH_HELP"
5127 AC_MSG_RESULT([HTML])
5130 ENABLE_HTMLHELP=TRUE
5132 AC_MSG_RESULT([HTML])
5135 SCPDEFS="$SCPDEFS -DWITH_HELP"
5136 AC_MSG_RESULT([yes])
5139 AC_MSG_ERROR([Unknown --with-help=$with_help])
5145 AC_SUBST([ENABLE_HTMLHELP])
5146 AC_SUBST([HELP_ONLINE])
5148 AC_MSG_CHECKING([whether to enable xapian-omega support for help])
5149 if test -n "$with_omindex" -a "$with_omindex" != "no" -a $_os != iOS -a $_os != Android; then
5150 BUILD_TYPE="$BUILD_TYPE HELP"
5151 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5152 case "$with_omindex" in
5154 ENABLE_HTMLHELP=TRUE
5156 HELP_OMINDEX_PAGE=TRUE
5157 AC_MSG_RESULT([SERVER])
5160 ENABLE_HTMLHELP=TRUE
5162 HELP_OMINDEX_PAGE=FALSE
5163 AC_MSG_RESULT([NOXAP])
5166 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5170 HELP_OMINDEX_PAGE=FALSE
5173 AC_SUBST([ENABLE_HTMLHELP])
5174 AC_SUBST([HELP_OMINDEX_PAGE])
5175 AC_SUBST([HELP_ONLINE])
5178 dnl Test whether to include MySpell dictionaries
5179 dnl ===================================================================
5180 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5181 if test "$with_myspell_dicts" = "yes"; then
5182 AC_MSG_RESULT([yes])
5183 WITH_MYSPELL_DICTS=TRUE
5184 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5185 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5190 AC_SUBST(WITH_MYSPELL_DICTS)
5192 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5193 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5194 if test "$with_system_dicts" = yes; then
5195 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5197 with_system_dicts=no
5200 AC_MSG_CHECKING([whether to use dicts from external paths])
5201 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5202 AC_MSG_RESULT([yes])
5204 AC_MSG_CHECKING([for spelling dictionary directory])
5205 if test -n "$with_external_dict_dir"; then
5206 DICT_SYSTEM_DIR=file://$with_external_dict_dir
5208 DICT_SYSTEM_DIR=file:///usr/share/hunspell
5209 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5210 DICT_SYSTEM_DIR=file:///usr/share/myspell
5213 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5214 AC_MSG_CHECKING([for hyphenation patterns directory])
5215 if test -n "$with_external_hyph_dir"; then
5216 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5218 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5220 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5221 AC_MSG_CHECKING([for thesaurus directory])
5222 if test -n "$with_external_thes_dir"; then
5223 THES_SYSTEM_DIR=file://$with_external_thes_dir
5225 THES_SYSTEM_DIR=file:///usr/share/mythes
5227 AC_MSG_RESULT([$THES_SYSTEM_DIR])
5232 AC_SUBST(SYSTEM_DICTS)
5233 AC_SUBST(DICT_SYSTEM_DIR)
5234 AC_SUBST(HYPH_SYSTEM_DIR)
5235 AC_SUBST(THES_SYSTEM_DIR)
5237 dnl ===================================================================
5238 dnl Precompiled headers.
5240 AC_MSG_CHECKING([whether to enable pch feature])
5241 if test -z "$enable_pch"; then
5242 if test "$_os" = "WINNT"; then
5243 # Enabled by default on Windows.
5249 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5250 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5252 if test "$enable_pch" = "system"; then
5254 AC_MSG_RESULT([yes (system headers)])
5255 elif test "$enable_pch" = "base"; then
5257 AC_MSG_RESULT([yes (system and base headers)])
5258 elif test "$enable_pch" = "normal"; then
5260 AC_MSG_RESULT([yes (normal)])
5261 elif test "$enable_pch" = "full"; then
5263 AC_MSG_RESULT([yes (full)])
5264 elif test "$enable_pch" = "yes"; then
5265 # Pick a suitable default.
5266 if test "$GCC" = "yes"; then
5267 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5268 # while making the PCHs larger and rebuilds more likely.
5270 AC_MSG_RESULT([yes (system and base headers)])
5272 # With MSVC the highest level makes a significant difference,
5273 # and it was the default when there used to be no PCH levels.
5275 AC_MSG_RESULT([yes (full)])
5277 elif test "$enable_pch" = "no"; then
5280 AC_MSG_ERROR([Unknown value for --enable-pch])
5282 AC_SUBST(ENABLE_PCH)
5283 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5284 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5285 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5286 if test "$CCACHE_BIN" != "not found"; then
5287 AC_MSG_CHECKING([ccache version])
5288 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5289 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5290 AC_MSG_RESULT([$CCACHE_VERSION])
5291 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5292 if test "$CCACHE_NUMVER" -gt "030701"; then
5293 AC_MSG_RESULT([yes])
5295 AC_MSG_RESULT([no (not newer than 3.7.1)])
5303 AC_MSG_CHECKING([the GNU Make version])
5304 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5305 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5306 if test "$_make_longver" -ge "038200"; then
5307 AC_MSG_RESULT([$GNUMAKE $_make_version])
5309 elif test "$_make_longver" -ge "038100"; then
5310 if test "$build_os" = "cygwin"; then
5311 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5313 AC_MSG_RESULT([$GNUMAKE $_make_version])
5315 dnl ===================================================================
5316 dnl Search all the common names for sha1sum
5317 dnl ===================================================================
5318 AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5319 if test -z "$SHA1SUM"; then
5320 AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5321 elif test "$SHA1SUM" = "openssl"; then
5322 SHA1SUM="openssl sha1"
5324 AC_MSG_CHECKING([for GNU Make bug 20033])
5325 TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
5326 $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
5327 A := \$(wildcard *.a)
5331 <TAB>@echo survived bug20033.
5335 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
5348 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
5349 <TAB>\$(call d1,\$(CHECKSUM)),\
5350 <TAB>\$(call d2,\$(CHECKSUM)))
5352 if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
5353 no_parallelism_make="YES"
5354 AC_MSG_RESULT([yes, disable parallelism])
5356 AC_MSG_RESULT([no, keep parallelism enabled])
5358 rm -rf $TESTGMAKEBUG20033
5360 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
5363 # find if gnumake support file function
5364 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
5365 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
5366 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5367 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
5369 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
5370 \$(file >test.txt,Success )
5377 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
5378 if test -f $TESTGMAKEFILEFUNC/test.txt; then
5379 HAVE_GNUMAKE_FILE_FUNC=TRUE
5380 AC_MSG_RESULT([yes])
5384 rm -rf $TESTGMAKEFILEFUNC
5385 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
5386 AC_SUBST(GNUMAKE_WIN_NATIVE)
5388 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
5390 if test "$_make_ver_check" = ""; then
5394 HAVE_LD_HASH_STYLE=FALSE
5395 WITH_LINKER_HASH_STYLE=
5396 AC_MSG_CHECKING([for --hash-style gcc linker support])
5397 if test "$GCC" = "yes"; then
5398 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
5399 hash_styles="gnu sysv"
5400 elif test "$with_linker_hash_style" = "no"; then
5403 hash_styles="$with_linker_hash_style"
5406 for hash_style in $hash_styles; do
5407 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
5408 hash_style_ldflags_save=$LDFLAGS
5409 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
5411 AC_RUN_IFELSE([AC_LANG_PROGRAM(
5418 HAVE_LD_HASH_STYLE=TRUE
5419 WITH_LINKER_HASH_STYLE=$hash_style
5421 [HAVE_LD_HASH_STYLE=FALSE],
5422 [HAVE_LD_HASH_STYLE=FALSE])
5423 LDFLAGS=$hash_style_ldflags_save
5426 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
5427 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
5431 LDFLAGS=$hash_style_ldflags_save
5435 AC_SUBST(HAVE_LD_HASH_STYLE)
5436 AC_SUBST(WITH_LINKER_HASH_STYLE)
5438 dnl ===================================================================
5439 dnl Check whether there's a Perl version available.
5440 dnl ===================================================================
5441 if test -z "$with_perl_home"; then
5442 AC_PATH_PROG(PERL, perl)
5444 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
5445 _perl_path="$with_perl_home/bin/perl"
5446 if test -x "$_perl_path"; then
5449 AC_MSG_ERROR([$_perl_path not found])
5453 dnl ===================================================================
5454 dnl Testing for Perl version 5 or greater.
5455 dnl $] is the Perl version variable, it is returned as an integer
5456 dnl ===================================================================
5457 if test "$PERL"; then
5458 AC_MSG_CHECKING([the Perl version])
5459 ${PERL} -e "exit($]);"
5461 if test "$_perl_version" -lt 5; then
5462 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
5464 AC_MSG_RESULT([Perl $_perl_version])
5466 AC_MSG_ERROR([Perl not found, install Perl 5])
5469 dnl ===================================================================
5470 dnl Testing for required Perl modules
5471 dnl ===================================================================
5473 AC_MSG_CHECKING([for required Perl modules])
5474 perl_use_string="use Cwd ; use Digest::MD5"
5475 if test "$_os" = "WINNT"; then
5476 if test -n "$PKGFORMAT"; then
5477 for i in $PKGFORMAT; do
5480 # for getting fonts versions to use in MSI
5481 perl_use_string="$perl_use_string ; use Font::TTF::Font"
5487 if test "$with_system_hsqldb" = "yes"; then
5488 perl_use_string="$perl_use_string ; use Archive::Zip"
5490 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
5491 AC_MSG_RESULT([all modules found])
5493 AC_MSG_RESULT([failed to find some modules])
5494 # Find out which modules are missing.
5495 for i in $perl_use_string; do
5496 if test "$i" != "use" -a "$i" != ";"; then
5497 if ! $PERL -e "use $i;">/dev/null 2>&1; then
5498 missing_perl_modules="$missing_perl_modules $i"
5503 The missing Perl modules are: $missing_perl_modules
5504 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
5507 dnl ===================================================================
5508 dnl Check for pkg-config
5509 dnl ===================================================================
5510 if test "$_os" != "WINNT"; then
5514 if test "$_os" != "WINNT"; then
5516 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
5517 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
5518 # explicitly. Or put /path/to/compiler in PATH yourself.
5520 # Use wrappers for LTO
5521 if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
5522 AC_CHECK_TOOL(AR,gcc-ar)
5523 AC_CHECK_TOOL(NM,gcc-nm)
5524 AC_CHECK_TOOL(RANLIB,gcc-ranlib)
5526 AC_CHECK_TOOL(AR,ar)
5527 AC_CHECK_TOOL(NM,nm)
5528 AC_CHECK_TOOL(RANLIB,ranlib)
5530 AC_CHECK_TOOL(OBJDUMP,objdump)
5531 AC_CHECK_TOOL(READELF,readelf)
5532 AC_CHECK_TOOL(STRIP,strip)
5533 if test "$_os" = "WINNT"; then
5534 AC_CHECK_TOOL(DLLTOOL,dlltool)
5535 AC_CHECK_TOOL(WINDRES,windres)
5542 AC_SUBST(PKG_CONFIG)
5548 dnl ===================================================================
5549 dnl pkg-config checks on macOS
5550 dnl ===================================================================
5552 if test $_os = Darwin; then
5553 AC_MSG_CHECKING([for bogus pkg-config])
5554 if test -n "$PKG_CONFIG"; then
5555 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
5556 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
5558 if test "$enable_bogus_pkg_config" = "yes"; then
5559 AC_MSG_RESULT([yes, user-approved from unknown origin.])
5561 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.])
5565 AC_MSG_RESULT([no, good])
5571 # Return value: $csctest
5575 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
5576 if test -n "$regvalue"; then
5584 # Return value: $altest
5588 # We need this check to detect 4.6.1 or above.
5589 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
5590 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
5591 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
5597 for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
5598 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
5599 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
5612 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
5613 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
5614 if test -n "$regvalue"; then
5621 find_winsdk_version()
5623 # Args: $1 : SDK version as in "8.0", "8.1A" etc
5624 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
5626 unset winsdktest winsdkbinsubdir winsdklibsubdir
5630 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
5631 if test -n "$regvalue"; then
5632 winsdktest=$regvalue
5633 winsdklibsubdir=win8
5638 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
5639 if test -n "$regvalue"; then
5640 winsdktest=$regvalue
5641 winsdklibsubdir=winv6.3
5646 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
5647 if test -n "$regvalue"; then
5648 winsdktest=$regvalue
5649 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
5650 if test -n "$regvalue"; then
5651 winsdkbinsubdir="$regvalue".0
5652 winsdklibsubdir=$winsdkbinsubdir
5653 tmppath="$winsdktest\\Include\\$winsdklibsubdir"
5654 # test exist the SDK path
5655 if test -d "$tmppath"; then
5656 # when path is convertible to a short path then path is okay
5657 cygpath -d "$tmppath" >/dev/null 2>&1
5658 if test $? -ne 0; then
5659 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
5662 AC_MSG_ERROR([The Windows SDK not found, check the installation])
5673 # Return value: From find_winsdk_version
5677 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
5678 find_winsdk_version $ver
5679 if test -n "$winsdktest"; then
5687 AC_MSG_CHECKING([for MSVC merge modules directory])
5688 my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm
5691 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
5694 for f in $my_msm_files; do
5695 echo "$as_me:$LINENO: searching for $f" >&5
5699 for ver in 14.0 15.0; do
5700 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir
5701 if test -n "$regvalue"; then
5702 for f in ${my_msm_files}; do
5703 if test -e "$regvalue/${f}"; then
5710 dnl Is the following fallback really necessary, or was it added in response
5711 dnl to never having started Visual Studio on a given machine, so the
5712 dnl registry keys checked above had presumably not yet been created?
5713 dnl Anyway, if it really is necessary, it might be worthwhile to extend it
5714 dnl to also check %CommonProgramFiles(X86)% (typically expanding to
5715 dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles%
5716 dnl expanding to "C:\Program Files\Common Files"), which would need
5717 dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to
5718 dnl obtain its value from cygwin:
5719 if test -z "$msmdir"; then
5720 my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/"
5721 for f in ${my_msm_files}; do
5722 if test -e "$my_msm_dir/${f}"; then
5728 dnl Starting from MSVC 15.0, merge modules are located in different directory
5731 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
5732 echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5
5733 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
5734 for f in ${my_msm_files}; do
5735 if test -e "$my_msm_dir/${f}"; then
5744 if test -n "$msmdir"; then
5745 msmdir=`cygpath -m "$msmdir"`
5746 AC_MSG_RESULT([$msmdir])
5748 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
5749 AC_MSG_FAILURE([not found])
5751 AC_MSG_WARN([not found (check config.log)])
5752 add_warning "MSM none of ${my_msm_files} found"
5757 find_msvc_x64_dlls()
5759 AC_MSG_CHECKING([for MSVC x64 DLL path])
5760 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
5763 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
5764 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5
5765 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then
5766 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"
5769 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5
5770 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then
5771 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"
5774 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC150.CRT" >&5
5775 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/onecore/x64/Microsoft.VC150.CRT"; then
5776 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/onecore/x64/Microsoft.VC150.CRT"
5782 AC_MSG_RESULT([$msvcdllpath])
5783 AC_MSG_CHECKING([for MSVC x64 DLLs])
5784 msvcdlls="msvcp140.dll vcruntime140.dll"
5785 for dll in $msvcdlls; do
5786 if ! test -f "$msvcdllpath/$dll"; then
5787 AC_MSG_FAILURE([missing $dll])
5790 AC_MSG_RESULT([found all ($msvcdlls)])
5793 dnl =========================================
5794 dnl Check for the Windows SDK.
5795 dnl =========================================
5796 if test "$_os" = "WINNT"; then
5797 AC_MSG_CHECKING([for Windows SDK])
5798 if test "$build_os" = "cygwin"; then
5800 WINDOWS_SDK_HOME=$winsdktest
5802 # normalize if found
5803 if test -n "$WINDOWS_SDK_HOME"; then
5804 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
5805 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
5808 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
5811 if test -n "$WINDOWS_SDK_HOME"; then
5812 # Remove a possible trailing backslash
5813 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
5815 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
5816 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
5817 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
5818 have_windows_sdk_headers=yes
5819 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
5820 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
5821 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
5822 have_windows_sdk_headers=yes
5823 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
5824 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
5825 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
5826 have_windows_sdk_headers=yes
5828 have_windows_sdk_headers=no
5831 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
5832 have_windows_sdk_libs=yes
5833 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WINDOWS_SDK_ARCH/user32.lib"; then
5834 have_windows_sdk_libs=yes
5836 have_windows_sdk_libs=no
5839 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
5840 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
5841 the Windows SDK are installed.])
5845 if test -z "$WINDOWS_SDK_HOME"; then
5846 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
5847 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
5848 WINDOWS_SDK_VERSION=80
5849 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
5850 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
5851 WINDOWS_SDK_VERSION=81
5852 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
5853 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
5854 WINDOWS_SDK_VERSION=10
5855 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
5857 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
5859 PathFormat "$WINDOWS_SDK_HOME"
5860 WINDOWS_SDK_HOME="$formatted_path"
5861 if test "$build_os" = "cygwin"; then
5862 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
5863 if test -d "$WINDOWS_SDK_HOME/include/um"; then
5864 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
5865 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
5866 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
5870 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
5871 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
5872 dnl but not in v8.0), so allow this to be overridden with a
5873 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
5874 dnl and configuration error if no WiLangId.vbs is found would arguably be
5875 dnl better, but I do not know under which conditions exactly it is needed by
5877 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
5878 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
5879 if ! test -e "$WINDOWS_SDK_WILANGID" ; then
5880 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WINDOWS_SDK_ARCH}/WiLangId.vbs"
5882 if ! test -e "$WINDOWS_SDK_WILANGID" ; then
5883 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WINDOWS_SDK_ARCH/WiLangId.vbs
5885 if ! test -e "$WINDOWS_SDK_WILANGID" ; then
5886 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WINDOWS_SDK_ARCH/WiLangId.vbs")
5889 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
5890 if test -n "$with_package_format" -a "$with_package_format" != no; then
5891 for i in "$with_package_format"; do
5892 if test "$i" = "msi"; then
5893 if ! test -e "$WINDOWS_SDK_WILANGID" ; then
5894 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
5901 AC_SUBST(WINDOWS_SDK_HOME)
5902 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
5903 AC_SUBST(WINDOWS_SDK_VERSION)
5904 AC_SUBST(WINDOWS_SDK_WILANGID)
5906 if test "$build_os" = "cygwin"; then
5907 dnl Check midl.exe; this being the first check for a tool in the SDK bin
5908 dnl dir, it also determines that dir's path w/o an arch segment if any,
5909 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
5910 AC_MSG_CHECKING([for midl.exe])
5913 if test -n "$winsdkbinsubdir" \
5914 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WINDOWS_SDK_ARCH/midl.exe"
5916 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WINDOWS_SDK_ARCH
5917 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
5918 elif test -f "$winsdktest/Bin/$WINDOWS_SDK_ARCH/midl.exe"; then
5919 MIDL_PATH=$winsdktest/Bin/$WINDOWS_SDK_ARCH
5920 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
5921 elif test -f "$winsdktest/Bin/midl.exe"; then
5922 MIDL_PATH=$winsdktest/Bin
5923 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
5925 if test ! -f "$MIDL_PATH/midl.exe"; then
5926 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WINDOWS_SDK_ARCH, Windows SDK installation broken?])
5928 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
5931 # Convert to posix path with 8.3 filename restrictions ( No spaces )
5932 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
5934 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
5935 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
5936 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
5937 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
5938 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
5939 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
5940 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
5941 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
5942 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
5943 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
5944 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
5945 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
5947 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
5951 AC_MSG_CHECKING([for csc.exe])
5953 if test -f "$csctest/csc.exe"; then
5956 if test ! -f "$CSC_PATH/csc.exe"; then
5957 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
5959 AC_MSG_RESULT([$CSC_PATH/csc.exe])
5962 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
5965 AC_MSG_CHECKING([for al.exe])
5967 if test -n "$winsdkbinsubdir" \
5968 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WINDOWS_SDK_ARCH/al.exe"
5970 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WINDOWS_SDK_ARCH"
5971 elif test -f "$winsdktest/Bin/$WINDOWS_SDK_ARCH/al.exe"; then
5972 AL_PATH="$winsdktest/Bin/$WINDOWS_SDK_ARCH"
5973 elif test -f "$winsdktest/Bin/al.exe"; then
5974 AL_PATH="$winsdktest/Bin"
5977 if test -z "$AL_PATH"; then
5979 if test -f "$altest/bin/al.exe"; then
5980 AL_PATH="$altest/bin"
5981 elif test -f "$altest/al.exe"; then
5985 if test ! -f "$AL_PATH/al.exe"; then
5986 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
5988 AC_MSG_RESULT([$AL_PATH/al.exe])
5991 AL_PATH=`win_short_path_for_make "$AL_PATH"`
5993 dnl Check mscoree.lib / .NET Framework dir
5994 AC_MSG_CHECKING(.NET Framework)
5996 PathFormat "$frametest"
5997 frametest="$formatted_path"
5998 if test -f "$frametest/Lib/um/$WINDOWS_SDK_ARCH/mscoree.lib"; then
5999 DOTNET_FRAMEWORK_HOME="$frametest"
6002 if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WINDOWS_SDK_ARCH/mscoree.lib"; then
6003 DOTNET_FRAMEWORK_HOME="$winsdktest"
6006 if test ! -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib" -a ! -f "$DOTNET_FRAMEWORK_HOME/lib/$winsdklibsubdir/um/$WINDOWS_SDK_ARCH/mscoree.lib" -a ! -f "$DOTNET_FRAMEWORK_HOME/Lib/um/$WINDOWS_SDK_ARCH/mscoree.lib"; then
6007 AC_MSG_ERROR([mscoree.lib not found])
6009 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
6011 PathFormat "$MIDL_PATH"
6012 MIDL_PATH="$formatted_path"
6014 PathFormat "$AL_PATH"
6015 AL_PATH="$formatted_path"
6017 PathFormat "$DOTNET_FRAMEWORK_HOME"
6018 DOTNET_FRAMEWORK_HOME="$formatted_path"
6020 PathFormat "$CSC_PATH"
6021 CSC_PATH="$formatted_path"
6024 dnl ===================================================================
6025 dnl Check if stdc headers are available excluding MSVC.
6026 dnl ===================================================================
6027 if test "$_os" != "WINNT"; then
6031 dnl ===================================================================
6032 dnl Testing for C++ compiler and version...
6033 dnl ===================================================================
6035 if test "$_os" != "WINNT"; then
6036 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
6037 save_CXXFLAGS=$CXXFLAGS
6039 CXXFLAGS=$save_CXXFLAGS
6040 if test -z "$CXX_BASE"; then
6041 CXX_BASE=`first_arg_basename "$CXX"`
6045 dnl check for GNU C++ compiler version
6046 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
6047 AC_MSG_CHECKING([the GNU C++ compiler version])
6049 _gpp_version=`$CXX -dumpversion`
6050 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
6052 if test "$_gpp_majmin" -lt "700"; then
6053 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
6055 AC_MSG_RESULT([ok (g++ $_gpp_version)])
6058 dnl see https://code.google.com/p/android/issues/detail?id=41770
6062 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
6063 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
6064 #include <bits/c++config.h>]],[[
6065 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
6066 && !defined(_GLIBCXX__PTHREADS) \
6067 && !defined(_GLIBCXX_HAS_GTHREADS)
6070 ]])],[AC_MSG_RESULT([yes])
6071 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
6073 if test $glibcxx_threads = yes; then
6074 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
6077 AC_SUBST(BOOST_CXXFLAGS)
6080 # prefx CXX with ccache if needed
6082 if test "$CCACHE" != ""; then
6083 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
6085 save_CXXFLAGS=$CXXFLAGS
6086 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
6087 dnl an empty program will do, we're checking the compiler flags
6088 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
6089 [use_ccache=yes], [use_ccache=no])
6090 if test $use_ccache = yes; then
6091 AC_MSG_RESULT([yes])
6094 CXX_BASE="ccache $CXX_BASE"
6097 CXXFLAGS=$save_CXXFLAGS
6101 dnl ===================================================================
6102 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
6103 dnl ===================================================================
6105 if test "$_os" != "WINNT"; then
6108 dnl Check whether there's a C pre-processor.
6113 dnl ===================================================================
6114 dnl Find integral type sizes and alignments
6115 dnl ===================================================================
6117 if test "$_os" != "WINNT"; then
6119 if test "$_os" = "iOS"; then
6120 AC_MSG_CHECKING([iOS setting sizes long, short, int, long long, double, voidp])
6122 ac_cv_sizeof_short=2
6124 ac_cv_sizeof_long_long=8
6125 ac_cv_sizeof_double=8
6126 ac_cv_sizeof_voidp=8
6128 AC_CHECK_SIZEOF(long)
6129 AC_CHECK_SIZEOF(short)
6130 AC_CHECK_SIZEOF(int)
6131 AC_CHECK_SIZEOF(long long)
6132 AC_CHECK_SIZEOF(double)
6133 AC_CHECK_SIZEOF(void*)
6136 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
6137 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
6138 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
6139 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
6140 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
6142 dnl Allow build without AC_CHECK_ALIGNOF, grrr
6143 m4_pattern_allow([AC_CHECK_ALIGNOF])
6144 m4_ifdef([AC_CHECK_ALIGNOF],
6146 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6147 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6148 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6149 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6152 case "$_os-$host_cpu" in
6154 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6155 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6156 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6157 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6160 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6161 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6162 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6163 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6166 if test -z "$ac_cv_alignof_short" -o \
6167 -z "$ac_cv_alignof_int" -o \
6168 -z "$ac_cv_alignof_long" -o \
6169 -z "$ac_cv_alignof_double"; then
6170 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.])
6176 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6177 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6178 if test $ac_cv_sizeof_long -eq 8; then
6179 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6180 elif test $ac_cv_sizeof_double -eq 8; then
6181 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6183 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6186 dnl Check for large file support
6188 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6189 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6191 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6192 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6196 SAL_TYPES_SIZEOFSHORT=2
6197 SAL_TYPES_SIZEOFINT=4
6198 SAL_TYPES_SIZEOFLONG=4
6199 SAL_TYPES_SIZEOFLONGLONG=8
6200 if test "$BITNESS_OVERRIDE" = ""; then
6201 SAL_TYPES_SIZEOFPOINTER=4
6203 SAL_TYPES_SIZEOFPOINTER=8
6205 SAL_TYPES_ALIGNMENT2=2
6206 SAL_TYPES_ALIGNMENT4=4
6207 SAL_TYPES_ALIGNMENT8=8
6210 AC_SUBST(LFS_CFLAGS)
6212 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6213 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6214 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6215 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6216 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6217 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6218 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6219 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6221 dnl ===================================================================
6222 dnl Check whether to enable runtime optimizations
6223 dnl ===================================================================
6224 ENABLE_RUNTIME_OPTIMIZATIONS=
6225 AC_MSG_CHECKING([whether to enable runtime optimizations])
6226 if test -z "$enable_runtime_optimizations"; then
6230 enable_runtime_optimizations=no
6236 if test "$enable_runtime_optimizations" != no; then
6237 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6238 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6239 AC_MSG_RESULT([yes])
6243 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6245 dnl ===================================================================
6246 dnl Check if valgrind headers are available
6247 dnl ===================================================================
6249 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6250 prev_cppflags=$CPPFLAGS
6251 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6252 # or where does it come from?
6253 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6254 AC_CHECK_HEADER([valgrind/valgrind.h],
6255 [ENABLE_VALGRIND=TRUE])
6256 CPPFLAGS=$prev_cppflags
6258 AC_SUBST([ENABLE_VALGRIND])
6259 if test -z "$ENABLE_VALGRIND"; then
6260 if test "$with_valgrind" = yes; then
6261 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6265 AC_SUBST([VALGRIND_CFLAGS])
6268 dnl ===================================================================
6269 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6270 dnl ===================================================================
6272 # We need at least the sys/sdt.h include header.
6273 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6274 if test "$SDT_H_FOUND" = "TRUE"; then
6275 # Found sys/sdt.h header, now make sure the c++ compiler works.
6276 # Old g++ versions had problems with probes in constructors/destructors.
6277 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6279 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6280 #include <sys/sdt.h>
6288 ProbeClass(int& v, const char *n) : ref(v), name(n)
6290 DTRACE_PROBE2(_test_, cons, name, ref);
6293 void method(int min)
6295 DTRACE_PROBE3(_test_, meth, name, ref, min);
6301 DTRACE_PROBE2(_test_, dest, name, ref);
6306 DTRACE_PROBE1(_test_, call, i);
6307 ProbeClass inst = ProbeClass(i, "call");
6309 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6310 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6313 AC_CONFIG_HEADERS([config_host/config_probes.h])
6315 dnl ===================================================================
6317 dnl ===================================================================
6318 HAVE_GCC_STACK_CLASH_PROTECTION=
6319 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6320 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6322 CFLAGS="$CFLAGS -fstack-clash-protection"
6324 [AC_LANG_PROGRAM(, [[return 0;]])],
6325 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6326 [AC_MSG_RESULT([no])])
6329 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6331 CFLAGS="$CFLAGS -Werror -mno-avx"
6332 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6334 if test "$HAVE_GCC_AVX" = "TRUE"; then
6335 AC_MSG_RESULT([yes])
6340 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6341 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6343 if (__sync_add_and_fetch(&v, 1) != 1 ||
6344 __sync_sub_and_fetch(&v, 1) != 0)
6346 __sync_synchronize();
6347 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6351 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6352 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6353 AC_MSG_RESULT([yes])
6354 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
6359 AC_MSG_CHECKING([whether $CC_BASE supports __builtin_ffs])
6360 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return __builtin_ffs(1); ]])],[HAVE_GCC_BUILTIN_FFS=TRUE],[])
6361 if test "$HAVE_GCC_BUILTIN_FFS" = "TRUE"; then
6362 AC_MSG_RESULT([yes])
6363 AC_DEFINE(HAVE_GCC_BUILTIN_FFS)
6368 AC_MSG_CHECKING([whether $CC_BASE supports __attribute__((deprecated(message)))])
6370 CFLAGS="$CFLAGS -Werror"
6371 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6372 __attribute__((deprecated("test"))) void f();
6374 AC_DEFINE([HAVE_GCC_DEPRECATED_MESSAGE],[1])
6375 AC_MSG_RESULT([yes])
6376 ], [AC_MSG_RESULT([no])])
6379 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
6381 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6384 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
6386 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
6387 AC_MSG_RESULT([yes])
6388 ], [AC_MSG_RESULT([no])])
6391 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
6393 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6396 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
6398 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
6399 AC_MSG_RESULT([yes])
6400 ], [AC_MSG_RESULT([no])])
6403 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
6405 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6407 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
6409 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
6410 AC_MSG_RESULT([yes])
6411 ], [AC_MSG_RESULT([no])])
6414 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
6416 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6419 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
6421 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
6422 AC_MSG_RESULT([yes])
6423 ], [AC_MSG_RESULT([no])])
6426 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exceptions in cxxabi.h])
6428 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6431 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exceptions); }
6433 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTIONS],[1])
6434 AC_MSG_RESULT([yes])
6435 ], [AC_MSG_RESULT([no])])
6438 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
6440 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6442 void * f() { return __cxxabiv1::__cxa_get_globals(); }
6444 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
6445 AC_MSG_RESULT([yes])
6446 ], [AC_MSG_RESULT([no])])
6449 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
6451 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6453 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
6455 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
6456 AC_MSG_RESULT([yes])
6457 ], [AC_MSG_RESULT([no])])
6460 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
6462 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6464 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
6466 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
6467 AC_MSG_RESULT([yes])
6468 ], [AC_MSG_RESULT([no])])
6471 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
6473 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6476 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
6478 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
6479 AC_MSG_RESULT([yes])
6480 ], [AC_MSG_RESULT([no])])
6483 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
6485 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6488 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
6490 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
6491 AC_MSG_RESULT([yes])
6492 ], [AC_MSG_RESULT([no])])
6495 dnl Available in GCC 4.9 and at least since Clang 3.4:
6496 AC_MSG_CHECKING([whether $CXX_BASE supports __attribute__((warn_unused))])
6498 save_CXXFLAGS=$CXXFLAGS
6499 CXXFLAGS="$CXXFLAGS -Werror"
6500 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6501 struct __attribute__((warn_unused)) dummy {};
6503 AC_DEFINE([HAVE_GCC_ATTRIBUTE_WARN_UNUSED],[1])
6504 AC_MSG_RESULT([yes])
6505 ], [AC_MSG_RESULT([no])])
6506 CXXFLAGS=$save_CXXFLAGS
6510 AC_SUBST(HAVE_GCC_AVX)
6511 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
6512 AC_SUBST(HAVE_GCC_BUILTIN_FFS)
6513 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
6515 dnl ===================================================================
6516 dnl Identify the C++ library
6517 dnl ===================================================================
6519 AC_MSG_CHECKING([what the C++ library is])
6521 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6527 [CPP_LIBRARY=GLIBCXX
6528 cpp_library_name="GNU libstdc++"
6530 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6532 #ifndef _LIBCPP_VERSION
6537 cpp_library_name="LLVM libc++"
6538 AC_DEFINE([HAVE_LIBCXX])
6540 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6547 cpp_library_name="Microsoft"
6549 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
6550 AC_MSG_RESULT([$cpp_library_name])
6553 dnl ===================================================================
6555 dnl ===================================================================
6556 AC_PATH_PROG(GPERF, gperf)
6557 if test -z "$GPERF"; then
6558 AC_MSG_ERROR([gperf not found but needed. Install it.])
6560 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6561 GPERF=`cygpath -m $GPERF`
6563 AC_MSG_CHECKING([whether gperf is new enough])
6564 my_gperf_ver1=$($GPERF --version | head -n 1)
6565 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
6566 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
6567 if test "$my_gperf_ver3" -ge 301; then
6568 AC_MSG_RESULT([yes ($my_gperf_ver2)])
6570 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
6574 dnl ===================================================================
6575 dnl Check for system libcmis
6576 dnl ===================================================================
6577 # libcmis requires curl and we can't build curl for iOS
6578 if test $_os != iOS; then
6579 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
6584 AC_SUBST(ENABLE_LIBCMIS)
6586 dnl ===================================================================
6588 dnl ===================================================================
6590 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
6592 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
6593 if test "$with_latest_c__" = yes; then
6594 CXXFLAGS_CXX11=-std:c++latest
6596 CXXFLAGS_CXX11=-std:c++17
6598 CXXFLAGS_CXX11="$CXXFLAGS_CXX11 -Zc:__cplusplus"
6599 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6600 my_flags='-std=c++17 -std=c++1z'
6601 if test "$with_latest_c__" = yes; then
6602 my_flags="-std=gnu++2a -std=c++2a $my_flags"
6604 for flag in $my_flags; do
6605 if test "$COM" = MSC; then
6606 flag="-Xclang $flag"
6608 save_CXXFLAGS=$CXXFLAGS
6609 CXXFLAGS="$CXXFLAGS $flag -Werror"
6610 if test "$SYSTEM_LIBCMIS" = TRUE; then
6611 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
6614 dnl Clang 3.9 supports __float128 since
6615 dnl <http://llvm.org/viewvc/llvm-project?view=revision&revision=268898> "Enable support for
6616 dnl __float128 in Clang and enable it on pertinent platforms", but Clang 3.8 may need a
6617 dnl hacky workaround to be able to include <vector> (as is done in the main check whether
6618 dnl $flag is supported below, so check this first):
6620 my_float128hack_impl=-D__float128=void
6621 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6623 // some Clang fail when compiling against libstdc++ headers with -std=gnu++0x
6627 dnl The only reason why libstdc++ headers fail with Clang in C++11 mode is because they
6628 dnl use the __float128 type that Clang doesn't know (libstdc++ checks whether __float128
6629 dnl is available during its build, but it's usually built using GCC, and so c++config.h
6630 dnl hardcodes __float128 being supported). At least for some older libstdc++, the only
6631 dnl place where __float128 is used is in a template specialization, -D__float128=void
6632 dnl will avoid the problem there while still causing a problem if somebody actually uses
6633 dnl the type. (But some later libstdc++ are known to use __float128 also in algorithm ->
6634 dnl bits/stl_alog.h -> cstdlib -> bits/std_abs.h, in a way that unfortunately cannot be
6635 dnl "fixed" with this hack):
6636 CXXFLAGS="$CXXFLAGS $my_float128hack_impl"
6637 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6639 // some Clang fail when compiling against libstdc++ headers with -std=gnu++0x
6642 ],[my_float128hack=$my_float128hack_impl])
6644 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6645 #include <algorithm>
6646 #include <functional>
6649 #if defined SYSTEM_LIBCMIS
6650 // See ucb/source/ucp/cmis/auth_provider.hxx:
6651 #if !defined __clang__
6652 #pragma GCC diagnostic push
6653 #pragma GCC diagnostic ignored "-Wdeprecated"
6654 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
6656 #include <libcmis/libcmis.hxx>
6657 #if !defined __clang__
6658 #pragma GCC diagnostic pop
6662 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
6663 std::sort(v.begin(), v.end(), fn);
6665 ]])],[CXXFLAGS_CXX11=$flag $my_float128hack])
6667 CXXFLAGS=$save_CXXFLAGS
6668 if test -n "$CXXFLAGS_CXX11"; then
6673 if test -n "$CXXFLAGS_CXX11"; then
6674 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
6678 AC_SUBST(CXXFLAGS_CXX11)
6680 if test "$GCC" = "yes"; then
6681 save_CXXFLAGS=$CXXFLAGS
6682 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
6684 CXXFLAGS=$save_CXXFLAGS
6685 AC_SUBST(ATOMIC_LIB)
6688 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
6689 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
6690 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
6691 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
6692 dnl again towards 4.7.2:
6693 if test $CPP_LIBRARY = GLIBCXX; then
6694 AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
6696 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6698 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
6699 // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
6700 // GCC 4.7.0: 20120322
6701 // GCC 4.7.1: 20120614
6702 // and using a range check is not possible as the mapping between
6703 // __GLIBCXX__ values and GCC versions is not monotonic
6708 ]])], [AC_MSG_RESULT(no, ok)],
6709 [AC_MSG_ERROR(yes)])
6713 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
6714 save_CXXFLAGS=$CXXFLAGS
6715 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
6718 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6721 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
6737 a thinga[]={{0,0}, {1,1}};
6738 b thingb[]={{0,0}, {1,1}};
6739 size_t i = sizeof(sal_n_array_size(thinga));
6740 size_t j = sizeof(sal_n_array_size(thingb));
6741 return !(i != 0 && j != 0);
6743 ], [ AC_MSG_RESULT(yes) ],
6744 [ AC_MSG_ERROR(no)])
6746 CXXFLAGS=$save_CXXFLAGS
6748 dnl _Pragma support (may require C++11)
6749 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6750 AC_MSG_CHECKING([whether $CXX_BASE supports _Pragma operator])
6752 save_CXXFLAGS=$CXXFLAGS
6753 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror"
6754 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6755 _Pragma("GCC diagnostic ignored \"-Wformat\"")
6757 AC_DEFINE([HAVE_GCC_PRAGMA_OPERATOR],[1])
6758 AC_MSG_RESULT([yes])
6759 ], [AC_MSG_RESULT([no])])
6761 CXXFLAGS=$save_CXXFLAGS
6764 HAVE_GCC_FNO_SIZED_DEALLOCATION=
6765 if test "$GCC" = yes; then
6766 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
6768 save_CXXFLAGS=$CXXFLAGS
6769 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
6770 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
6771 CXXFLAGS=$save_CXXFLAGS
6773 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
6774 AC_MSG_RESULT([yes])
6779 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
6781 AC_MSG_CHECKING([whether $CXX_BASE supports guaranteed copy elision])
6783 save_CXXFLAGS=$CXXFLAGS
6784 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
6785 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6786 // At least VS 2017 15.8.1 defines __cpp_guaranteed_copy_elision as 201606L without actually
6788 #if !defined __cpp_guaranteed_copy_elision || (defined _MSC_VER && !defined __clang__)
6797 void f() { S c(copy()); }
6800 AC_DEFINE([HAVE_CPP_GUARANTEED_COPY_ELISION],[1])
6801 AC_MSG_RESULT([yes])
6802 ], [AC_MSG_RESULT([no])])
6803 CXXFLAGS=$save_CXXFLAGS
6806 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
6808 save_CXXFLAGS=$CXXFLAGS
6809 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
6810 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6811 #include <algorithm>
6812 #include <initializer_list>
6814 template<typename T> class S {
6818 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
6820 constinit S<int> s{3, 2, 1};
6822 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
6823 AC_MSG_RESULT([yes])
6824 ], [AC_MSG_RESULT([no])])
6825 CXXFLAGS=$save_CXXFLAGS
6828 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a <span> with unsigned size_type])
6830 save_CXXFLAGS=$CXXFLAGS
6831 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
6832 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6834 #include <type_traits>
6835 // Don't check size_type directly, as it was called index_type before P1872R0:
6836 void f(std::span<int> s) { static_assert(std::is_unsigned_v<decltype(s.size())>); };
6838 AC_DEFINE([HAVE_CPP_SPAN],[1])
6839 AC_MSG_RESULT([yes])
6840 ], [AC_MSG_RESULT([no])])
6841 CXXFLAGS=$save_CXXFLAGS
6844 AC_MSG_CHECKING([whether $CXX_BASE has GCC bug 87150])
6846 save_CXXFLAGS=$CXXFLAGS
6847 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
6848 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6849 struct S1 { S1(S1 &&); };
6851 S1 f(S2 s) { return s; }
6853 AC_DEFINE([HAVE_GCC_BUG_87150],[1])
6854 AC_MSG_RESULT([yes])
6855 ], [AC_MSG_RESULT([no])])
6856 CXXFLAGS=$save_CXXFLAGS
6859 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
6860 dnl uninitialized warning for code like
6863 dnl boost::optional<OString> * g(bool b) {
6864 dnl boost::optional<OString> o;
6866 dnl return new boost::optional<OString>(o);
6869 dnl (as is e.g. present, in a slightly more elaborate form, in
6870 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
6871 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
6872 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
6873 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
6874 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
6876 save_CXXFLAGS=$CXXFLAGS
6877 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
6878 if test "$ENABLE_OPTIMIZED" = TRUE; then
6879 CXXFLAGS="$CXXFLAGS -O2"
6881 CXXFLAGS="$CXXFLAGS -O0"
6883 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
6892 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
6893 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
6899 char stg[sizeof (S1)];
6907 ]])], [AC_MSG_RESULT([no])], [
6908 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
6909 AC_MSG_RESULT([yes])
6911 CXXFLAGS=$save_CXXFLAGS
6914 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
6916 dnl ===================================================================
6917 dnl CPU Intrinsics support - SSE, AVX
6918 dnl ===================================================================
6920 INTRINSICS_CXXFLAGS=""
6922 if test "$GCC" = "yes"; then
6923 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
6925 save_CXXFLAGS=$CXXFLAGS
6926 CXXFLAGS="$CXXFLAGS -msse2"
6927 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6928 #include <emmintrin.h>
6930 volatile __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
6931 c = _mm_xor_si128 (a, b);
6935 [can_compile_sse2=yes],
6936 [can_compile_sse2=no])
6938 CXXFLAGS=$save_CXXFLAGS
6939 AC_MSG_RESULT([${can_compile_sse2}])
6940 if test "${can_compile_sse2}" = "yes" ; then
6941 INTRINSICS_CXXFLAGS="-msse2"
6943 AC_MSG_WARN([cannot compile SSE2 intrinsics])
6946 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
6948 save_CXXFLAGS=$CXXFLAGS
6949 CXXFLAGS="$CXXFLAGS -mssse3"
6950 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6951 #include <tmmintrin.h>
6953 volatile __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
6954 c = _mm_maddubs_epi16 (a, b);
6958 [can_compile_ssse3=yes],
6959 [can_compile_ssse3=no])
6961 CXXFLAGS=$save_CXXFLAGS
6962 AC_MSG_RESULT([${can_compile_ssse3}])
6963 if test "${can_compile_ssse3}" = "yes" ; then
6964 INTRINSICS_CXXFLAGS="-mssse3"
6966 AC_MSG_WARN([cannot compile SSSE3 intrinsics])
6969 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
6971 save_CXXFLAGS=$CXXFLAGS
6972 CXXFLAGS="$CXXFLAGS -mavx"
6973 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6974 #include <immintrin.h>
6976 volatile __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
6977 c = _mm256_xor_ps(a, b);
6981 [can_compile_avx=yes],
6982 [can_compile_avx=no])
6984 CXXFLAGS=$save_CXXFLAGS
6985 AC_MSG_RESULT([${can_compile_avx}])
6986 if test "${can_compile_avx}" = "yes" ; then
6987 INTRINSICS_CXXFLAGS="-mavx"
6989 AC_MSG_WARN([cannot compile AVX intrinsics])
6992 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
6994 save_CXXFLAGS=$CXXFLAGS
6995 CXXFLAGS="$CXXFLAGS -mavx2"
6996 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6997 #include <immintrin.h>
6999 volatile __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
7000 c = _mm256_maddubs_epi16(a, b);
7004 [can_compile_avx2=yes],
7005 [can_compile_avx2=no])
7007 CXXFLAGS=$save_CXXFLAGS
7008 AC_MSG_RESULT([${can_compile_avx2}])
7009 if test "${can_compile_avx2}" = "yes" ; then
7010 INTRINSICS_CXXFLAGS="-mavx2"
7012 AC_MSG_WARN([cannot compile AVX2 intrinsics])
7016 AC_SUBST([INTRINSICS_CXXFLAGS])
7018 dnl ===================================================================
7019 dnl system stl sanity tests
7020 dnl ===================================================================
7021 if test "$_os" != "WINNT"; then
7025 save_CPPFLAGS="$CPPFLAGS"
7026 if test -n "$MACOSX_SDK_PATH"; then
7027 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
7030 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
7032 if test "$CPP_LIBRARY" = GLIBCXX; then
7033 dnl gcc#19664, gcc#22482, rhbz#162935
7034 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
7035 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
7036 AC_MSG_RESULT([$stlvisok])
7037 if test "$stlvisok" = "no"; then
7038 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
7042 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
7043 # when we don't make any dynamic libraries?
7044 if test "$DISABLE_DYNLOADING" = ""; then
7045 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
7046 cat > conftestlib1.cc <<_ACEOF
7047 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7048 struct S2: S1<int> { virtual ~S2(); };
7051 cat > conftestlib2.cc <<_ACEOF
7052 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
7053 struct S2: S1<int> { virtual ~S2(); };
7054 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
7056 gccvisinlineshiddenok=yes
7057 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
7058 gccvisinlineshiddenok=no
7060 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
7061 dnl known to not work with -z defs (unsetting which makes the test
7063 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
7064 if test "$COM_IS_CLANG" = TRUE; then
7065 for i in $CXX $CXXFLAGS; do
7068 my_linkflagsnoundefs=
7074 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
7075 gccvisinlineshiddenok=no
7080 AC_MSG_RESULT([$gccvisinlineshiddenok])
7081 if test "$gccvisinlineshiddenok" = "no"; then
7082 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
7086 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
7087 cat >visibility.cxx <<_ACEOF
7088 #pragma GCC visibility push(hidden)
7089 struct __attribute__ ((visibility ("default"))) TestStruct {
7092 __attribute__ ((visibility ("default"))) void TestFunc() {
7096 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
7101 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
7104 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
7116 rm -f visibility.s visibility.cxx
7118 AC_MSG_RESULT([$gccvisbroken])
7119 if test "$gccvisbroken" = "yes"; then
7120 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
7123 CPPFLAGS="$save_CPPFLAGS"
7128 dnl ===================================================================
7130 dnl ===================================================================
7132 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
7133 if test "$GCC" = "yes"; then
7134 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
7136 save_CXXFLAGS=$CXXFLAGS
7137 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
7138 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
7139 CXXFLAGS=$save_CXXFLAGS
7141 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
7142 AC_MSG_RESULT([yes])
7147 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
7149 dnl ===================================================================
7150 dnl Compiler plugins
7151 dnl ===================================================================
7154 # currently only Clang
7156 if test "$COM_IS_CLANG" != "TRUE"; then
7157 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
7158 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
7159 enable_compiler_plugins=no
7163 if test "$COM_IS_CLANG" = "TRUE"; then
7164 if test -n "$enable_compiler_plugins"; then
7165 compiler_plugins="$enable_compiler_plugins"
7166 elif test -n "$ENABLE_DBGUTIL"; then
7167 compiler_plugins=test
7171 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7172 if test "$CLANGVER" -lt 50002; then
7173 if test "$compiler_plugins" = yes; then
7174 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7180 if test "$compiler_plugins" != "no"; then
7181 dnl The prefix where Clang resides, override to where Clang resides if
7182 dnl using a source build:
7183 if test -z "$CLANGDIR"; then
7184 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $CXX))))
7186 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7187 if test -z "$COMPILER_PLUGINS_CXX"; then
7188 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7190 clangbindir=$CLANGDIR/bin
7191 if test "$build_os" = "cygwin"; then
7192 clangbindir=$(cygpath -u "$clangbindir")
7194 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
7195 if test -n "$LLVM_CONFIG"; then
7196 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
7197 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
7198 if test -z "$CLANGLIBDIR"; then
7199 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
7201 # Try if clang is built from source (in which case its includes are not together with llvm includes).
7202 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
7203 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
7204 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
7205 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
7207 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
7208 clangobjdir=$($LLVM_CONFIG --obj-root)
7209 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
7210 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
7213 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
7217 save_CPPFLAGS=$CPPFLAGS
7218 save_CXXFLAGS=$CXXFLAGS
7219 save_LDFLAGS=$LDFLAGS
7221 CXX=$COMPILER_PLUGINS_CXX
7222 CXXCPP="$COMPILER_PLUGINS_CXX -E"
7223 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7224 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7225 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
7226 [COMPILER_PLUGINS=TRUE],
7228 if test "$compiler_plugins" = "yes"; then
7229 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
7231 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
7232 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
7235 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
7236 dnl comment in compilerplugins/Makefile-clang.mk:
7237 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
7239 AC_MSG_CHECKING([for clang libraries to use])
7240 if test -z "$CLANGTOOLLIBS"; then
7241 LIBS="-lclangTooling -lclangDriver -lclangFrontend -lclangParse -lclangSema -lclangEdit \
7242 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
7244 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7245 [[ clang::FullSourceLoc().dump(); ]])
7246 ],[CLANGTOOLLIBS="$LIBS"],[])
7248 if test -z "$CLANGTOOLLIBS"; then
7249 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
7251 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7252 [[ clang::FullSourceLoc().dump(); ]])
7253 ],[CLANGTOOLLIBS="$LIBS"],[])
7255 AC_MSG_RESULT([$CLANGTOOLLIBS])
7256 if test -z "$CLANGTOOLLIBS"; then
7257 if test "$compiler_plugins" = "yes"; then
7258 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
7260 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
7261 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
7265 if test -n "$COMPILER_PLUGINS"; then
7266 if test -z "$CLANGSYSINCLUDE"; then
7267 if test -n "$LLVM_CONFIG"; then
7268 # Path to the clang system headers (no idea if there's a better way to get it).
7269 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/svn//')/include
7276 CPPFLAGS=$save_CPPFLAGS
7277 CXXFLAGS=$save_CXXFLAGS
7278 LDFLAGS=$save_LDFLAGS
7283 if test "$enable_compiler_plugins" = "yes"; then
7284 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
7287 AC_SUBST(COMPILER_PLUGINS)
7288 AC_SUBST(COMPILER_PLUGINS_CXX)
7289 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
7290 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
7291 AC_SUBST(COMPILER_PLUGINS_DEBUG)
7292 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
7294 AC_SUBST(CLANGLIBDIR)
7295 AC_SUBST(CLANGTOOLLIBS)
7296 AC_SUBST(CLANGSYSINCLUDE)
7298 # Plugin to help linker.
7299 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
7300 # This makes --enable-lto build with clang work.
7303 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
7304 AC_SUBST(HAVE_POSIX_FALLOCATE)
7306 dnl ===================================================================
7307 dnl Custom build version
7308 dnl ===================================================================
7310 AC_MSG_CHECKING([whether to add custom build version])
7311 if test "$with_build_version" != ""; then
7312 BUILD_VER_STRING=$with_build_version
7313 AC_MSG_RESULT([yes, $BUILD_VER_STRING])
7318 AC_SUBST(BUILD_VER_STRING)
7320 JITC_PROCESSOR_TYPE=""
7321 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
7322 # IBMs JDK needs this...
7323 JITC_PROCESSOR_TYPE=6
7324 export JITC_PROCESSOR_TYPE
7326 AC_SUBST([JITC_PROCESSOR_TYPE])
7328 # Misc Windows Stuff
7329 AC_ARG_WITH(ucrt-dir,
7330 AS_HELP_STRING([--with-ucrt-dir],
7331 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
7332 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
7333 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
7334 Windows6.1-KB2999226-x64.msu
7335 Windows6.1-KB2999226-x86.msu
7336 Windows8.1-KB2999226-x64.msu
7337 Windows8.1-KB2999226-x86.msu
7338 Windows8-RT-KB2999226-x64.msu
7339 Windows8-RT-KB2999226-x86.msu
7340 A zip archive including those files is available from Microsoft site:
7341 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
7343 UCRT_REDISTDIR="$with_ucrt_dir"
7344 if test $_os = "WINNT"; then
7347 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
7348 MSVC_DLLS="$msvcdlls"
7349 MSM_PATH=`win_short_path_for_make "$msmdir"`
7350 # MSVC 15.3 changed it to VC141
7351 if echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
7352 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
7354 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
7357 if test "$UCRT_REDISTDIR" = "no"; then
7358 dnl explicitly disabled
7361 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
7362 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
7363 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
7364 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
7365 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
7366 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
7368 if test -n "$PKGFORMAT"; then
7369 for i in $PKGFORMAT; do
7372 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
7373 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
7382 AC_SUBST(UCRT_REDISTDIR)
7383 AC_SUBST(MSVC_DLL_PATH)
7387 dnl ===================================================================
7389 dnl ===================================================================
7390 if test "$ENABLE_JAVA" != ""; then
7392 # Windows-specific tests
7393 if test "$build_os" = "cygwin"; then
7394 if test "$BITNESS_OVERRIDE" = 64; then
7400 if test -z "$with_jdk_home"; then
7401 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
7402 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
7403 reg_get_value "$bitness" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
7404 if test -n "$regvalue"; then
7406 reg_get_value "$bitness" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
7409 if test -z "$with_jdk_home"; then
7411 reg_get_value "$bitness" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Development Kit/$ver/JavaHome"
7412 if test -n "$regvalue"; then
7418 if test -f "$_jdk_home/lib/jvm.lib" -a -f "$_jdk_home/bin/java.exe"; then
7419 with_jdk_home="$_jdk_home"
7420 howfound="found automatically"
7422 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option pointing to a $bitness-bit JDK])
7425 test "$build_os" = "cygwin" && with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
7426 howfound="you passed"
7430 # 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.
7431 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
7432 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
7433 with_jdk_home=`/usr/libexec/java_home`
7436 JAVA_HOME=; export JAVA_HOME
7437 if test -z "$with_jdk_home"; then
7438 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
7440 _java_path="$with_jdk_home/bin/$with_java"
7441 dnl Check if there is a Java interpreter at all.
7442 if test -x "$_java_path"; then
7443 JAVAINTERPRETER=$_java_path
7445 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
7449 dnl Check that the JDK found is correct architecture (at least 2 reasons to
7450 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
7451 dnl loaded by java to run JunitTests:
7452 if test "$build_os" = "cygwin"; then
7453 shortjdkhome=`cygpath -d "$with_jdk_home"`
7454 if test "$BITNESS_OVERRIDE" = 64 -a -f "$with_jdk_home/bin/java.exe" -a "`$shortjdkhome/bin/java.exe -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
7455 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
7456 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
7457 elif test "$BITNESS_OVERRIDE" = "" -a -f "$_jdk_home/bin/java.exe" -a "`$shortjdkhome/bin/java.exe -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
7458 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
7459 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
7462 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
7463 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
7465 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
7466 elif test "$cross_compiling" != "yes"; then
7468 AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
7469 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
7470 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
7471 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
7474 *) # assumption: everything else 32-bit
7475 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
7476 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
7477 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
7484 dnl ===================================================================
7486 dnl ===================================================================
7488 # Note that JAVA_HOME as for now always means the *build* platform's
7489 # JAVA_HOME. Whether all the complexity here actually is needed any
7490 # more or not, no idea.
7492 if test "$ENABLE_JAVA" != ""; then
7494 AC_MSG_CHECKING([the installed JDK])
7495 if test -n "$JAVAINTERPRETER"; then
7496 dnl java -version sends output to stderr!
7497 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
7498 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
7499 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
7500 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
7501 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
7502 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
7503 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
7506 dnl IBM JDK specific tests
7507 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED s/[[-A-Za-z]]*//`
7508 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
7510 if test "$_jdk_ver" -lt 10800; then
7511 AC_MSG_ERROR([IBM JDK is too old, you need at least 8])
7514 AC_MSG_RESULT([found (IBM JDK $_jdk)])
7516 if test "$with_jdk_home" = ""; then
7517 AC_MSG_ERROR([In order to successfully build LibreOffice using the IBM JDK,
7518 you must use the "--with-jdk-home" configure option explicitly])
7521 JAVA_HOME=$with_jdk_home
7525 dnl Sun JDK specific tests
7526 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
7527 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
7529 if test "$_jdk_ver" -lt 10800; then
7530 AC_MSG_ERROR([JDK is too old, you need at least 8])
7532 if test "$_jdk_ver" -gt 10800; then
7533 JAVA_CLASSPATH_NOT_SET=TRUE
7536 AC_MSG_RESULT([found (JDK $_jdk)])
7537 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
7538 if test "$_os" = "WINNT"; then
7539 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
7542 # set to limit VM usage for JunitTests
7544 # set to limit VM usage for javac
7545 JAVAFLAGS=-J-Xmx128M
7548 AC_MSG_ERROR([Java not found. You need at least JDK 8])
7556 dnl ===================================================================
7557 dnl Checks for javac
7558 dnl ===================================================================
7559 if test "$ENABLE_JAVA" != ""; then
7560 javacompiler="javac"
7561 : ${JAVA_SOURCE_VER=8}
7562 : ${JAVA_TARGET_VER=8}
7563 if test -z "$with_jdk_home"; then
7564 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
7566 _javac_path="$with_jdk_home/bin/$javacompiler"
7567 dnl Check if there is a Java compiler at all.
7568 if test -x "$_javac_path"; then
7569 JAVACOMPILER=$_javac_path
7572 if test -z "$JAVACOMPILER"; then
7573 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
7575 if test "$build_os" = "cygwin"; then
7576 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
7577 JAVACOMPILER="${JAVACOMPILER}.exe"
7579 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
7583 dnl ===================================================================
7584 dnl Checks for javadoc
7585 dnl ===================================================================
7586 if test "$ENABLE_JAVA" != ""; then
7587 if test -z "$with_jdk_home"; then
7588 AC_PATH_PROG(JAVADOC, javadoc)
7590 _javadoc_path="$with_jdk_home/bin/javadoc"
7591 dnl Check if there is a javadoc at all.
7592 if test -x "$_javadoc_path"; then
7593 JAVADOC=$_javadoc_path
7595 AC_PATH_PROG(JAVADOC, javadoc)
7598 if test -z "$JAVADOC"; then
7599 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
7601 if test "$build_os" = "cygwin"; then
7602 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
7603 JAVADOC="${JAVADOC}.exe"
7605 JAVADOC=`win_short_path_for_make "$JAVADOC"`
7608 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
7609 JAVADOCISGJDOC="yes"
7612 AC_SUBST(JAVADOCISGJDOC)
7614 if test "$ENABLE_JAVA" != ""; then
7615 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
7616 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
7617 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
7618 # try to recover first by looking whether we have an alternative
7619 # system as in Debian or newer SuSEs where following /usr/bin/javac
7620 # over /etc/alternatives/javac leads to the right bindir where we
7621 # just need to strip a bit away to get a valid JAVA_HOME
7622 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
7623 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
7624 # maybe only one level of symlink (e.g. on Mac)
7625 JAVA_HOME=$(readlink $JAVACOMPILER)
7626 if test "$(dirname $JAVA_HOME)" = "."; then
7627 # we've got no path to trim back
7632 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
7633 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
7634 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
7635 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
7637 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
7638 if test "$JAVA_HOME" != "/usr"; then
7639 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
7640 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
7641 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
7642 dnl Tiger already returns a JDK path...
7643 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
7645 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
7646 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
7647 dnl that checks which version to run
7648 if test -f "$JAVA_HOME"; then
7649 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
7654 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
7656 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
7657 if test -z "$JAVA_HOME"; then
7658 if test "x$with_jdk_home" = "x"; then
7659 cat > findhome.java <<_ACEOF
7660 [import java.io.File;
7664 public static void main(String args[])
7666 String jrelocation = System.getProperty("java.home");
7667 File jre = new File(jrelocation);
7668 System.out.println(jre.getParent());
7672 AC_MSG_CHECKING([if javac works])
7673 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
7674 AC_TRY_EVAL(javac_cmd)
7675 if test $? = 0 -a -f ./findhome.class; then
7676 AC_MSG_RESULT([javac works])
7678 echo "configure: javac test failed" >&5
7679 cat findhome.java >&5
7680 AC_MSG_ERROR([javac does not work - java projects will not build!])
7682 AC_MSG_CHECKING([if gij knows its java.home])
7683 JAVA_HOME=`$JAVAINTERPRETER findhome`
7684 if test $? = 0 -a "$JAVA_HOME" != ""; then
7685 AC_MSG_RESULT([$JAVA_HOME])
7687 echo "configure: java test failed" >&5
7688 cat findhome.java >&5
7689 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
7691 # clean-up after ourselves
7692 rm -f ./findhome.java ./findhome.class
7694 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
7698 # now check if $JAVA_HOME is really valid
7699 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
7700 case "${JAVA_HOME}" in
7701 /Library/Java/JavaVirtualMachines/*)
7704 AC_MSG_ERROR([JDK in $JAVA_HOME cannot be used in CppUnit tests - install Oracle JDK])
7707 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
7710 elif test ! -d "$JAVA_HOME/jre" -a "x$with_jdk_home" = "x"; then
7713 if test "$JAVA_HOME_OK" = "NO"; then
7714 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
7715 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
7716 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
7717 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
7718 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
7719 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
7721 PathFormat "$JAVA_HOME"
7722 JAVA_HOME="$formatted_path"
7725 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
7728 AC_MSG_CHECKING([for JAWT lib])
7729 if test "$_os" = WINNT; then
7730 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
7735 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
7736 JAVA_ARCH=$my_java_arch
7751 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
7752 JAVA_ARCH=$my_java_arch
7755 my_java_arch=sparcv9
7761 my_java_arch=$host_cpu
7764 # This is where JDK9 puts the library
7765 if test -e "$JAVA_HOME/lib/libjawt.so"; then
7766 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
7768 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
7770 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
7772 AC_MSG_RESULT([$JAWTLIB])
7776 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
7780 JAVAINC="-I$JAVA_HOME/include"
7781 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
7782 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
7786 JAVAINC="-I$JAVA_HOME/include/win32"
7787 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
7791 if test -d "$JAVA_HOME/include/darwin"; then
7792 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
7794 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
7799 JAVAINC="-I$JAVA_HOME/include"
7800 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
7804 JAVAINC="-I$JAVA_HOME/include"
7805 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
7806 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
7807 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
7808 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
7812 JAVAINC="-I$JAVA_HOME/include"
7813 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
7814 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
7818 JAVAINC="-I$JAVA_HOME/include"
7819 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
7820 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
7824 JAVAINC="-I$JAVA_HOME/include"
7825 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
7826 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
7830 JAVAINC="-I$JAVA_HOME/include"
7831 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
7832 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
7836 JAVAINC="-I$JAVA_HOME/include"
7837 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
7838 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
7842 SOLARINC="$SOLARINC $JAVAINC"
7844 AC_SUBST(JAVACOMPILER)
7846 AC_SUBST(JAVAINTERPRETER)
7847 AC_SUBST(JAVAIFLAGS)
7849 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
7851 AC_SUBST(JAVA_SOURCE_VER)
7852 AC_SUBST(JAVA_TARGET_VER)
7856 dnl ===================================================================
7857 dnl Export file validation
7858 dnl ===================================================================
7859 AC_MSG_CHECKING([whether to enable export file validation])
7860 if test "$with_export_validation" != "no"; then
7861 if test -z "$ENABLE_JAVA"; then
7862 if test "$with_export_validation" = "yes"; then
7863 AC_MSG_ERROR([requested, but Java is disabled])
7865 AC_MSG_RESULT([no, as Java is disabled])
7867 elif ! test -d "${SRC_ROOT}/schema"; then
7868 if test "$with_export_validation" = "yes"; then
7869 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
7871 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
7874 AC_MSG_RESULT([yes])
7875 AC_DEFINE(HAVE_EXPORT_VALIDATION)
7877 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
7878 if test -z "$ODFVALIDATOR"; then
7879 # remember to download the ODF toolkit with validator later
7880 AC_MSG_NOTICE([no odfvalidator found, will download it])
7881 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
7882 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
7884 # and fetch name of odfvalidator jar name from download.lst
7885 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
7886 AC_SUBST(ODFVALIDATOR_JAR)
7888 if test -z "$ODFVALIDATOR_JAR"; then
7889 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
7892 if test "$build_os" = "cygwin"; then
7893 # In case of Cygwin it will be executed from Windows,
7894 # so we need to run bash and absolute path to validator
7895 # so instead of "odfvalidator" it will be
7896 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
7897 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
7899 ODFVALIDATOR="sh $ODFVALIDATOR"
7901 AC_SUBST(ODFVALIDATOR)
7904 AC_PATH_PROGS(OFFICEOTRON, officeotron)
7905 if test -z "$OFFICEOTRON"; then
7906 # remember to download the officeotron with validator later
7907 AC_MSG_NOTICE([no officeotron found, will download it])
7908 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
7909 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
7911 # and fetch name of officeotron jar name from download.lst
7912 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
7913 AC_SUBST(OFFICEOTRON_JAR)
7915 if test -z "$OFFICEOTRON_JAR"; then
7916 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
7919 # check version of existing officeotron
7920 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
7921 if test 0"$OFFICEOTRON_VER" -lt 704; then
7922 AC_MSG_ERROR([officeotron too old])
7925 if test "$build_os" = "cygwin"; then
7926 # In case of Cygwin it will be executed from Windows,
7927 # so we need to run bash and absolute path to validator
7928 # so instead of "odfvalidator" it will be
7929 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
7930 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
7932 OFFICEOTRON="sh $OFFICEOTRON"
7935 AC_SUBST(OFFICEOTRON)
7940 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
7941 if test "$with_bffvalidator" != "no"; then
7942 AC_DEFINE(HAVE_BFFVALIDATOR)
7944 if test "$with_export_validation" = "no"; then
7945 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
7948 if test "$with_bffvalidator" = "yes"; then
7949 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
7951 BFFVALIDATOR="$with_bffvalidator"
7954 if test "$build_os" = "cygwin"; then
7955 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
7956 AC_MSG_RESULT($BFFVALIDATOR)
7958 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
7960 elif test -n "$BFFVALIDATOR"; then
7961 # We are not in Cygwin but need to run Windows binary with wine
7962 AC_PATH_PROGS(WINE, wine)
7964 # so swap in a shell wrapper that converts paths transparently
7965 BFFVALIDATOR_EXE="$BFFVALIDATOR"
7966 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
7967 AC_SUBST(BFFVALIDATOR_EXE)
7968 AC_MSG_RESULT($BFFVALIDATOR)
7970 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
7972 AC_SUBST(BFFVALIDATOR)
7977 dnl ===================================================================
7978 dnl Check for C preprocessor to use
7979 dnl ===================================================================
7980 AC_MSG_CHECKING([which C preprocessor to use in idlc])
7981 if test -n "$with_idlc_cpp"; then
7982 AC_MSG_RESULT([$with_idlc_cpp])
7983 AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
7985 AC_MSG_RESULT([ucpp])
7986 AC_MSG_CHECKING([which ucpp tp use])
7987 if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
7988 AC_MSG_RESULT([external])
7989 AC_PATH_PROG(SYSTEM_UCPP, ucpp)
7991 AC_MSG_RESULT([internal])
7992 BUILD_TYPE="$BUILD_TYPE UCPP"
7995 AC_SUBST(SYSTEM_UCPP)
7997 dnl ===================================================================
7998 dnl Check for epm (not needed for Windows)
7999 dnl ===================================================================
8000 AC_MSG_CHECKING([whether to enable EPM for packing])
8001 if test "$enable_epm" = "yes"; then
8002 AC_MSG_RESULT([yes])
8003 if test "$_os" != "WINNT"; then
8004 if test $_os = Darwin; then
8006 elif test -n "$with_epm"; then
8009 AC_PATH_PROG(EPM, epm, no)
8011 if test "$EPM" = "no" -o "$EPM" = "internal"; then
8012 AC_MSG_NOTICE([EPM will be built.])
8013 BUILD_TYPE="$BUILD_TYPE EPM"
8014 EPM=${WORKDIR}/UnpackedTarball/epm/epm
8016 # Gentoo has some epm which is something different...
8017 AC_MSG_CHECKING([whether the found epm is the right epm])
8018 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
8019 AC_MSG_RESULT([yes])
8021 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8023 AC_MSG_CHECKING([epm version])
8024 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
8025 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
8026 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
8027 AC_MSG_RESULT([OK, >= 3.7])
8029 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
8030 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
8035 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
8036 AC_MSG_CHECKING([for rpm])
8037 for a in "$RPM" rpmbuild rpm; do
8038 $a --usage >/dev/null 2> /dev/null
8039 if test $? -eq 0; then
8043 $a --version >/dev/null 2> /dev/null
8044 if test $? -eq 0; then
8050 if test -z "$RPM"; then
8051 AC_MSG_ERROR([not found])
8052 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
8053 RPM_PATH=`which $RPM`
8054 AC_MSG_RESULT([$RPM_PATH])
8055 SCPDEFS="$SCPDEFS -DWITH_RPM"
8057 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
8060 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
8061 AC_PATH_PROG(DPKG, dpkg, no)
8062 if test "$DPKG" = "no"; then
8063 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
8066 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
8067 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8068 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
8069 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
8070 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
8071 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
8072 AC_MSG_RESULT([yes])
8075 if echo "$PKGFORMAT" | $GREP -q rpm; then
8077 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
8078 add_warning "the rpms will need to be installed with --nodeps"
8082 AC_MSG_WARN([the ${_pt}s will not be relocatable])
8083 add_warning "the ${_pt}s will not be relocatable"
8084 AC_MSG_WARN([if you want to make sure installation without --nodeps and
8085 relocation will work, you need to patch your epm with the
8086 patch in epm/epm-3.7.patch or build with
8087 --with-epm=internal which will build a suitable epm])
8092 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
8093 AC_PATH_PROG(PKGMK, pkgmk, no)
8094 if test "$PKGMK" = "no"; then
8095 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
8102 for i in $PKGFORMAT; do
8104 aix | bsd | deb | pkg | rpm | native | portable)
8106 [--with-package-format='$PKGFORMAT' requires --enable-epm])
8116 if test "$enable_lotuswordpro" = "yes"; then
8119 AC_SUBST(ENABLE_LWP)
8121 dnl ===================================================================
8122 dnl Check for building ODK
8123 dnl ===================================================================
8124 if test "$enable_odk" = no; then
8127 if test "$with_doxygen" = no; then
8128 AC_MSG_CHECKING([for doxygen])
8132 if test "$with_doxygen" = yes; then
8133 AC_PATH_PROG([DOXYGEN], [doxygen])
8134 if test -z "$DOXYGEN"; then
8135 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
8137 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
8138 if ! dot -V 2>/dev/null; then
8139 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
8143 AC_MSG_CHECKING([for doxygen])
8144 DOXYGEN=$with_doxygen
8145 AC_MSG_RESULT([$DOXYGEN])
8147 if test -n "$DOXYGEN"; then
8148 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
8149 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
8150 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
8151 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
8158 AC_MSG_CHECKING([whether to build the ODK])
8159 if test "$enable_odk" = "" -o "$enable_odk" != "no"; then
8160 AC_MSG_RESULT([yes])
8162 if test "$with_java" != "no"; then
8163 AC_MSG_CHECKING([whether to build unowinreg.dll])
8164 if test "$_os" = "WINNT" -a "$enable_build_unowinreg" = ""; then
8165 # build on Win by default
8166 enable_build_unowinreg=yes
8168 if test "$enable_build_unowinreg" = "" -o "$enable_build_unowinreg" = "no"; then
8172 AC_MSG_RESULT([yes])
8173 BUILD_UNOWINREG=TRUE
8175 if test "$_os" != "WINNT" -a "$BUILD_UNOWINREG" = "TRUE"; then
8176 if test -z "$with_mingw_cross_compiler"; then
8178 AC_CHECK_PROGS(MINGWCXX,i386-mingw32msvc-g++ i586-pc-mingw32-g++ i686-pc-mingw32-g++ i686-w64-mingw32-g++,false)
8179 elif test -x "$with_mingw_cross_compiler"; then
8180 MINGWCXX="$with_mingw_cross_compiler"
8182 AC_CHECK_TOOL(MINGWCXX, "$with_mingw_cross_compiler", false)
8185 if test "$MINGWCXX" = "false"; then
8186 AC_MSG_ERROR([MinGW32 C++ cross-compiler not found.])
8189 mingwstrip_test="`echo $MINGWCXX | $SED -e s/g++/strip/`"
8190 if test -x "$mingwstrip_test"; then
8191 MINGWSTRIP="$mingwstrip_test"
8193 AC_CHECK_TOOL(MINGWSTRIP, "$mingwstrip_test", false)
8196 if test "$MINGWSTRIP" = "false"; then
8197 AC_MSG_ERROR(MinGW32 binutils not found.)
8201 BUILD_TYPE="$BUILD_TYPE ODK"
8206 AC_SUBST(BUILD_UNOWINREG)
8208 AC_SUBST(MINGWSTRIP)
8210 dnl ===================================================================
8211 dnl Check for system zlib
8212 dnl ===================================================================
8213 if test "$with_system_zlib" = "auto"; then
8216 with_system_zlib="$with_system_libs"
8219 if test "$enable_fuzzers" != "yes"; then
8220 with_system_zlib=yes
8228 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8229 dnl and has no pkg-config for it at least on some tinderboxes,
8230 dnl so leaving that out for now
8231 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8232 AC_MSG_CHECKING([which zlib to use])
8233 if test "$with_system_zlib" = "yes"; then
8234 AC_MSG_RESULT([external])
8236 AC_CHECK_HEADER(zlib.h, [],
8237 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8238 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8239 [AC_MSG_ERROR(zlib not found or functional)], [])
8241 AC_MSG_RESULT([internal])
8243 BUILD_TYPE="$BUILD_TYPE ZLIB"
8244 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
8245 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
8247 AC_SUBST(ZLIB_CFLAGS)
8249 AC_SUBST(SYSTEM_ZLIB)
8251 dnl ===================================================================
8252 dnl Check for system jpeg
8253 dnl ===================================================================
8254 AC_MSG_CHECKING([which libjpeg to use])
8255 if test "$with_system_jpeg" = "yes"; then
8256 AC_MSG_RESULT([external])
8258 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
8259 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
8260 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
8261 [AC_MSG_ERROR(jpeg library not found or functional)], [])
8264 AC_MSG_RESULT([internal, libjpeg-turbo])
8265 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
8266 LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo"
8267 if test "$COM" = "MSC"; then
8268 LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib"
8270 LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg"
8274 x86_64 | amd64 | i*86 | x86 | ia32)
8275 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
8276 if test -z "$NASM" -a "$build_os" = "cygwin"; then
8277 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
8278 NASM="$LODE_HOME/opt/bin/nasm"
8279 elif test -x "/opt/lo/bin/nasm"; then
8280 NASM="/opt/lo/bin/nasm"
8284 if test -n "$NASM"; then
8285 AC_MSG_CHECKING([for object file format of host system])
8287 cygwin* | mingw* | pw32* | interix*)
8297 msdosdjgpp* | go32*)
8300 os2-emx*) # not tested
8301 objfmt='MSOMF' # obj
8303 linux*coff* | linux*oldld*)
8319 kfreebsd* | freebsd* | netbsd* | openbsd*)
8320 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
8333 solaris* | sunos* | sysv* | sco*)
8343 darwin* | rhapsody* | nextstep* | openstep* | macos*)
8358 AC_MSG_RESULT([$objfmt])
8359 if test "$objfmt" = 'ELF ?'; then
8361 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
8364 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
8366 MSOMF) NAFLAGS='-fobj -DOBJ32';;
8367 Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
8368 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
8369 COFF) NAFLAGS='-fcoff -DCOFF';;
8370 a.out) NAFLAGS='-faout -DAOUT';;
8371 BSD-a.out) NAFLAGS='-faoutb -DAOUT';;
8372 ELF) NAFLAGS='-felf -DELF';;
8373 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__';;
8374 RDF) NAFLAGS='-frdf -DRDF';;
8375 Mach-O) NAFLAGS='-fmacho -DMACHO';;
8376 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
8378 AC_MSG_RESULT([$NAFLAGS])
8380 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
8381 cat > conftest.asm << EOF
8382 [%line __oline__ "configure"
8390 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
8391 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
8394 echo "configure: failed program was:" >&AC_FD_CC
8395 cat conftest.asm >&AC_FD_CC
8398 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
8404 if test -z "$NASM"; then
8406 ****************************************************************************
8407 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
8411 if test "$build_os" = "cygwin"; then
8413 install a pre-compiled binary for Win32
8415 mkdir -p /opt/lo/bin
8417 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
8420 or get and install one from http://www.nasm.us/
8422 Then re-run autogen.sh
8424 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
8425 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
8430 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
8434 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
8435 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
8442 AC_SUBST(LIBJPEG_CFLAGS)
8443 AC_SUBST(LIBJPEG_LIBS)
8444 AC_SUBST(SYSTEM_LIBJPEG)
8446 dnl ===================================================================
8447 dnl Check for system clucene
8448 dnl ===================================================================
8449 dnl we should rather be using
8450 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
8451 dnl but the contribs-lib check seems tricky
8452 AC_MSG_CHECKING([which clucene to use])
8453 if test "$with_system_clucene" = "yes"; then
8454 AC_MSG_RESULT([external])
8456 PKG_CHECK_MODULES(CLUCENE, libclucene-core)
8457 CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
8458 FilterLibs "${CLUCENE_LIBS}"
8459 CLUCENE_LIBS="${filteredlibs}"
8461 save_CXXFLAGS=$CXXFLAGS
8462 save_CPPFLAGS=$CPPFLAGS
8463 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
8464 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
8465 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
8466 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
8467 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
8468 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
8469 CXXFLAGS=$save_CXXFLAGS
8470 CPPFLAGS=$save_CPPFLAGS
8473 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
8475 AC_MSG_RESULT([internal])
8477 BUILD_TYPE="$BUILD_TYPE CLUCENE"
8479 AC_SUBST(SYSTEM_CLUCENE)
8480 AC_SUBST(CLUCENE_CFLAGS)
8481 AC_SUBST(CLUCENE_LIBS)
8483 dnl ===================================================================
8484 dnl Check for system expat
8485 dnl ===================================================================
8486 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
8488 dnl ===================================================================
8489 dnl Check for system xmlsec
8490 dnl ===================================================================
8491 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
8493 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
8494 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
8496 AC_DEFINE([ENABLE_EOT])
8497 AC_MSG_RESULT([yes])
8499 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
8504 AC_SUBST([ENABLE_EOT])
8506 dnl ===================================================================
8507 dnl Check for DLP libs
8508 dnl ===================================================================
8509 AS_IF([test "$COM" = "MSC"],
8510 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
8511 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
8513 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
8515 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
8517 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
8519 AS_IF([test "$COM" = "MSC"],
8520 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
8521 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
8523 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
8525 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
8527 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
8528 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.10])
8530 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
8532 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
8534 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
8536 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
8537 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.15])
8539 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
8540 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
8542 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
8544 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
8545 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
8547 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
8549 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
8551 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
8553 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
8555 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
8556 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.6])
8558 dnl ===================================================================
8559 dnl Check for system lcms2
8560 dnl ===================================================================
8561 if test "$with_system_lcms2" != "yes"; then
8564 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
8565 if test "$GCC" = "yes"; then
8566 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
8568 if test "$COM" = "MSC"; then # override the above
8569 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
8572 dnl ===================================================================
8573 dnl Check for system cppunit
8574 dnl ===================================================================
8575 if test "$_os" != "Android" ; then
8576 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
8579 dnl ===================================================================
8580 dnl Check whether freetype is available
8581 dnl ===================================================================
8582 if test "$test_freetype" = "yes"; then
8583 AC_MSG_CHECKING([whether freetype is available])
8584 # FreeType has 3 different kinds of versions
8585 # * release, like 2.4.10
8586 # * libtool, like 13.0.7 (this what pkg-config returns)
8588 # FreeType's docs/VERSION.DLL provides a table mapping between the three
8591 PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
8592 FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
8593 FilterLibs "${FREETYPE_LIBS}"
8594 FREETYPE_LIBS="${filteredlibs}"
8595 SYSTEM_FREETYPE=TRUE
8597 FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
8598 if test "x$ac_config_site_64bit_host" = xYES; then
8599 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib64 -lfreetype"
8601 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
8604 AC_SUBST(FREETYPE_CFLAGS)
8605 AC_SUBST(FREETYPE_LIBS)
8606 AC_SUBST([SYSTEM_FREETYPE])
8608 # ===================================================================
8609 # Check for system libxslt
8610 # to prevent incompatibilities between internal libxml2 and external libxslt,
8611 # or vice versa, use with_system_libxml here
8612 # ===================================================================
8613 if test "$with_system_libxml" = "auto"; then
8616 with_system_libxml="$with_system_libs"
8619 if test "$enable_fuzzers" != "yes"; then
8620 with_system_libxml=yes
8622 with_system_libxml=no
8628 AC_MSG_CHECKING([which libxslt to use])
8629 if test "$with_system_libxml" = "yes"; then
8630 AC_MSG_RESULT([external])
8632 if test "$_os" = "Darwin"; then
8633 dnl make sure to use SDK path
8634 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
8635 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
8637 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
8638 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
8640 PKG_CHECK_MODULES(LIBXSLT, libxslt)
8641 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
8642 FilterLibs "${LIBXSLT_LIBS}"
8643 LIBXSLT_LIBS="${filteredlibs}"
8644 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
8645 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
8646 FilterLibs "${LIBEXSLT_LIBS}"
8647 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
8650 dnl Check for xsltproc
8651 AC_PATH_PROG(XSLTPROC, xsltproc, no)
8652 if test "$XSLTPROC" = "no"; then
8653 AC_MSG_ERROR([xsltproc is required])
8656 AC_MSG_RESULT([internal])
8658 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
8660 if test "$cross_compiling" = "yes"; then
8661 AC_PATH_PROG(XSLTPROC, xsltproc, no)
8662 if test "$XSLTPROC" = "no"; then
8663 AC_MSG_ERROR([xsltproc is required])
8667 AC_SUBST(SYSTEM_LIBXSLT)
8668 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
8669 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
8671 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
8673 AC_SUBST(LIBEXSLT_CFLAGS)
8674 AC_SUBST(LIBEXSLT_LIBS)
8675 AC_SUBST(LIBXSLT_CFLAGS)
8676 AC_SUBST(LIBXSLT_LIBS)
8679 # ===================================================================
8680 # Check for system libxml
8681 # ===================================================================
8682 AC_MSG_CHECKING([which libxml to use])
8683 if test "$with_system_libxml" = "yes"; then
8684 AC_MSG_RESULT([external])
8686 if test "$_os" = "Darwin"; then
8687 dnl make sure to use SDK path
8688 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
8690 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
8691 elif test $_os = iOS; then
8692 dnl make sure to use SDK path
8693 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
8694 LIBXML_CFLAGS="-I$usr/include/libxml2"
8695 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
8697 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
8698 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
8699 FilterLibs "${LIBXML_LIBS}"
8700 LIBXML_LIBS="${filteredlibs}"
8703 dnl Check for xmllint
8704 AC_PATH_PROG(XMLLINT, xmllint, no)
8705 if test "$XMLLINT" = "no"; then
8706 AC_MSG_ERROR([xmllint is required])
8709 AC_MSG_RESULT([internal])
8711 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
8712 if test "$COM" = "MSC"; then
8713 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
8715 if test "$COM" = "MSC"; then
8716 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
8718 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
8720 BUILD_TYPE="$BUILD_TYPE LIBXML2"
8722 AC_SUBST(SYSTEM_LIBXML)
8723 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
8724 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
8726 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
8727 AC_SUBST(LIBXML_CFLAGS)
8728 AC_SUBST(LIBXML_LIBS)
8731 # =====================================================================
8732 # Checking for a Python interpreter with version >= 2.7.
8733 # Build and runtime requires Python 3 compatible version (>= 2.7).
8734 # Optionally user can pass an option to configure, i. e.
8735 # ./configure PYTHON=/usr/bin/python
8736 # =====================================================================
8737 if test $_os = Darwin -a "$enable_python" != no -a "$enable_python" != fully-internal -a "$enable_python" != internal; then
8738 # Only allowed choices for macOS are 'no', 'internal' (default), and 'fully-internal'
8739 enable_python=internal
8741 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
8742 if test -n "$PYTHON"; then
8743 PYTHON_FOR_BUILD=$PYTHON
8745 # This allows a lack of system python with no error, we use internal one in that case.
8746 AM_PATH_PYTHON([2.7],, [:])
8747 # Clean PYTHON_VERSION checked below if cross-compiling
8749 if test "$PYTHON" != ":"; then
8750 PYTHON_FOR_BUILD=$PYTHON
8754 AC_SUBST(PYTHON_FOR_BUILD)
8756 # Checks for Python to use for Pyuno
8757 AC_MSG_CHECKING([which Python to use for Pyuno])
8758 case "$enable_python" in
8760 if test -z $PYTHON_FOR_BUILD; then
8761 # Python is required to build LibreOffice. In theory we could separate the build-time Python
8762 # requirement from the choice whether to include Python stuff in the installer, but why
8764 AC_MSG_ERROR([Python is required at build time.])
8767 AC_MSG_RESULT([none])
8770 if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
8771 AC_MSG_RESULT([no, overridden by --disable-scripting])
8773 elif test $build_os = cygwin; then
8774 dnl When building on Windows we don't attempt to use any installed
8775 dnl "system" Python.
8776 AC_MSG_RESULT([fully internal])
8777 enable_python=internal
8778 elif test "$cross_compiling" = yes; then
8779 AC_MSG_RESULT([system])
8780 enable_python=system
8782 # Unset variables set by the above AM_PATH_PYTHON so that
8783 # we actually do check anew.
8785 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
8786 AM_PATH_PYTHON([3.3],, [:])
8787 AC_MSG_CHECKING([which Python to use for Pyuno])
8788 if test "$PYTHON" = ":"; then
8789 if test -z "$PYTHON_FOR_BUILD"; then
8790 AC_MSG_RESULT([fully internal])
8792 AC_MSG_RESULT([internal])
8794 enable_python=internal
8796 AC_MSG_RESULT([system])
8797 enable_python=system
8802 AC_MSG_RESULT([internal])
8805 AC_MSG_RESULT([fully internal])
8806 enable_python=internal
8809 AC_MSG_RESULT([system])
8810 if test "$_os" = Darwin; then
8811 AC_MSG_ERROR([--enable-python=system doesn't work on macOS: /System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/unicodeobject.h is known to contain uses of "register", which is removed from C++17])
8815 AC_MSG_ERROR([Incorrect --enable-python option])
8819 if test $enable_python != no; then
8820 BUILD_TYPE="$BUILD_TYPE PYUNO"
8823 if test $enable_python = system; then
8824 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
8825 # Fallback: Accept these in the environment, or as set above
8828 elif test "$cross_compiling" != yes; then
8829 # Unset variables set by the above AM_PATH_PYTHON so that
8830 # we actually do check anew.
8831 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
8832 # This causes an error if no python command is found
8833 AM_PATH_PYTHON([3.3])
8834 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
8835 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
8836 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
8837 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
8838 if test -z "$PKG_CONFIG"; then
8839 PYTHON_CFLAGS="-I$python_include"
8840 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
8841 elif $PKG_CONFIG --exists python-$python_version-embed; then
8842 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
8843 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
8844 elif $PKG_CONFIG --exists python-$python_version; then
8845 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
8846 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
8848 PYTHON_CFLAGS="-I$python_include"
8849 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
8851 FilterLibs "${PYTHON_LIBS}"
8852 PYTHON_LIBS="${filteredlibs}"
8854 dnl How to find out the cross-compilation Python installation path?
8855 AC_MSG_CHECKING([for python version])
8856 AS_IF([test -n "$PYTHON_VERSION"],
8857 [AC_MSG_RESULT([$PYTHON_VERSION])],
8858 [AC_MSG_RESULT([not found])
8859 AC_MSG_ERROR([no usable python found])])
8860 test -n "$PYTHON_CFLAGS" && break
8863 dnl Check if the headers really work
8864 save_CPPFLAGS="$CPPFLAGS"
8865 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
8866 AC_CHECK_HEADER(Python.h)
8867 CPPFLAGS="$save_CPPFLAGS"
8869 # let the PYTHON_FOR_BUILD match the same python installation that
8870 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
8871 # better for PythonTests.
8872 PYTHON_FOR_BUILD=$PYTHON
8875 if test "$with_lxml" != no; then
8876 if test -z "$PYTHON_FOR_BUILD"; then
8879 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
8882 if test "$cross_compiling" != yes ; then
8883 BUILD_TYPE="$BUILD_TYPE LXML"
8888 AC_MSG_CHECKING([for python lxml])
8889 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
8890 AC_MSG_RESULT([yes])
8894 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
8897 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
8898 if test -n ${SYSTEM_LIBXSLT} -o -n ${SYSTEM_LIBXML}; then
8899 AC_MSG_RESULT([no, and no system libxml/libxslt, gla11y will only report widget classes and ids])
8901 BUILD_TYPE="$BUILD_TYPE LXML"
8902 AC_MSG_RESULT([no, using internal lxml])
8905 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
8913 dnl By now enable_python should be "system", "internal" or "no"
8914 case $enable_python in
8918 if test "x$ac_cv_header_Python_h" != "xyes"; then
8919 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
8923 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
8924 AC_MSG_CHECKING([for correct python library version])
8925 AC_RUN_IFELSE([AC_LANG_SOURCE([[
8928 int main(int argc, char **argv) {
8929 if ((PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION >= 7) ||
8930 (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
8933 ]])],[AC_MSG_RESULT([ok])],[AC_MSG_ERROR([Python >= 3.3 is needed when building with Python 3, or Python >= 2.7 when building with Python 2])],[AC_MSG_RESULT([skipped; cross-compiling])])
8937 dnl FIXME Check if the Python library can be linked with, too?
8942 PYTHON_VERSION_MAJOR=3
8943 PYTHON_VERSION_MINOR=7
8944 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.10
8945 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
8946 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
8948 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"3.7.7"])
8949 BUILD_TYPE="$BUILD_TYPE PYTHON"
8950 if test "$OS" = LINUX; then
8951 BUILD_TYPE="$BUILD_TYPE LIBFFI"
8953 # Embedded Python dies without Home set
8954 if test "$HOME" = ""; then
8963 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
8967 AC_SUBST(DISABLE_PYTHON)
8968 AC_SUBST(SYSTEM_PYTHON)
8969 AC_SUBST(PYTHON_CFLAGS)
8970 AC_SUBST(PYTHON_LIBS)
8971 AC_SUBST(PYTHON_VERSION)
8972 AC_SUBST(PYTHON_VERSION_MAJOR)
8973 AC_SUBST(PYTHON_VERSION_MINOR)
8975 ENABLE_MARIADBC=TRUE
8976 if test "$_os" = "Android" -o "$_os" = "iOS" -o "$enable_mpl_subset" = "yes"; then
8982 if test "$ENABLE_MARIADBC" = "TRUE"; then
8983 BUILD_TYPE="$BUILD_TYPE MARIADBC"
8986 AC_SUBST(ENABLE_MARIADBC)
8987 AC_SUBST(MARIADBC_MAJOR)
8988 AC_SUBST(MARIADBC_MINOR)
8989 AC_SUBST(MARIADBC_MICRO)
8991 if test "$ENABLE_MARIADBC" = "TRUE"; then
8992 dnl ===================================================================
8993 dnl Check for system MariaDB
8994 dnl ===================================================================
8995 AC_MSG_CHECKING([which MariaDB to use])
8996 if test "$with_system_mariadb" = "yes"; then
8997 AC_MSG_RESULT([external])
8998 SYSTEM_MARIADB_CONNECTOR_C=TRUE
8999 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
9000 if test -z "$MARIADBCONFIG"; then
9001 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
9002 if test -z "$MARIADBCONFIG"; then
9003 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
9004 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
9007 AC_MSG_CHECKING([MariaDB version])
9008 MARIADB_VERSION=`$MARIADBCONFIG --version`
9009 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
9010 if test "$MARIADB_MAJOR" -ge "5"; then
9013 AC_MSG_ERROR([too old, use 5.0.x or later])
9015 AC_MSG_CHECKING([for MariaDB Client library])
9016 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
9017 if test "$COM_IS_CLANG" = TRUE; then
9018 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
9020 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
9021 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
9022 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
9024 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
9025 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
9026 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
9027 | sed -e 's|/lib64/|/lib/|')
9029 FilterLibs "${MARIADB_LIBS}"
9030 MARIADB_LIBS="${filteredlibs}"
9031 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
9032 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
9033 if test "$enable_bundle_mariadb" = "yes"; then
9034 AC_MSG_RESULT([yes])
9035 BUNDLE_MARIADB_CONNECTOR_C=TRUE
9036 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
9038 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
9040 /g' | grep -E '(mysqlclient|mariadb)')
9041 if test "$_os" = "Darwin"; then
9042 LIBMARIADB=${LIBMARIADB}.dylib
9043 elif test "$_os" = "WINNT"; then
9044 LIBMARIADB=${LIBMARIADB}.dll
9046 LIBMARIADB=${LIBMARIADB}.so
9048 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
9049 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
9050 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
9051 AC_MSG_RESULT([found.])
9052 PathFormat "$LIBMARIADB_PATH"
9053 LIBMARIADB_PATH="$formatted_path"
9055 AC_MSG_ERROR([not found.])
9059 BUNDLE_MARIADB_CONNECTOR_C=
9062 AC_MSG_RESULT([internal])
9063 SYSTEM_MARIADB_CONNECTOR_C=
9064 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
9065 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
9066 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
9069 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
9070 AC_SUBST(MARIADB_CFLAGS)
9071 AC_SUBST(MARIADB_LIBS)
9072 AC_SUBST(LIBMARIADB)
9073 AC_SUBST(LIBMARIADB_PATH)
9074 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
9077 dnl ===================================================================
9078 dnl Check for system hsqldb
9079 dnl ===================================================================
9080 if test "$with_java" != "no"; then
9081 HSQLDB_USE_JDBC_4_1=
9082 AC_MSG_CHECKING([which hsqldb to use])
9083 if test "$with_system_hsqldb" = "yes"; then
9084 AC_MSG_RESULT([external])
9086 if test -z $HSQLDB_JAR; then
9087 HSQLDB_JAR=/usr/share/java/hsqldb.jar
9089 if ! test -f $HSQLDB_JAR; then
9090 AC_MSG_ERROR(hsqldb.jar not found.)
9092 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
9096 my $file = "$ENV{'HSQLDB_JAR'}";
9097 my $zip = Archive::Zip->new( $file );
9098 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
9099 if ( $mf =~ m/Specification-Version: 1.8.*/ )
9101 push @l, split(/\n/, $mf);
9102 foreach my $line (@l)
9104 if ($line =~ m/Specification-Version:/)
9106 ($t, $version) = split (/:/,$line);
9107 $version =~ s/^\s//;
9108 ($a, $b, $c, $d) = split (/\./,$version);
9109 if ($c == "0" && $d > "8")
9124 AC_MSG_RESULT([yes])
9126 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
9129 AC_MSG_RESULT([internal])
9131 BUILD_TYPE="$BUILD_TYPE HSQLDB"
9133 AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
9134 javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
9135 if expr "$javanumver" '>=' 000100060000 > /dev/null; then
9136 AC_MSG_RESULT([yes])
9137 HSQLDB_USE_JDBC_4_1=TRUE
9142 AC_SUBST(SYSTEM_HSQLDB)
9143 AC_SUBST(HSQLDB_JAR)
9144 AC_SUBST([HSQLDB_USE_JDBC_4_1])
9147 dnl ===================================================================
9148 dnl Check for PostgreSQL stuff
9149 dnl ===================================================================
9150 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
9151 if test "x$enable_postgresql_sdbc" != "xno"; then
9152 AC_MSG_RESULT([yes])
9153 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
9155 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
9156 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
9158 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
9159 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
9162 postgres_interface=""
9163 if test "$with_system_postgresql" = "yes"; then
9164 postgres_interface="external PostgreSQL"
9165 SYSTEM_POSTGRESQL=TRUE
9166 if test "$_os" = Darwin; then
9168 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
9169 pg_supp_path="$P_SEP$d$pg_supp_path"
9172 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
9173 if test -n "$PGCONFIG"; then
9174 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
9175 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
9177 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
9178 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
9179 POSTGRESQL_LIB=$POSTGRESQL_LIBS
9181 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9184 FilterLibs "${POSTGRESQL_LIB}"
9185 POSTGRESQL_LIB="${filteredlibs}"
9187 # if/when anything else than PostgreSQL uses Kerberos,
9188 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9193 # macOS has system MIT Kerberos 5 since 10.4
9194 if test "$with_krb5" != "no"; then
9197 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9198 # that the libraries where these functions are located on macOS will change, is it?
9199 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9200 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9203 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9204 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9205 KRB5_LIBS="$KRB5_LIBS $LIBS"
9208 if test "$with_gssapi" != "no"; then
9211 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9212 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9218 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9219 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9222 Linux|GNU|*BSD|DragonFly)
9223 if test "$with_krb5" != "no"; then
9226 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9227 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9230 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9231 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9232 KRB5_LIBS="$KRB5_LIBS $LIBS"
9235 if test "$with_gssapi" != "no"; then
9238 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9239 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9245 if test "$with_krb5" = "yes"; then
9248 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9249 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9252 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9253 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9254 KRB5_LIBS="$KRB5_LIBS $LIBS"
9257 if test "$with_gssapi" = "yes"; then
9260 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9261 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9267 if test -n "$with_libpq_path"; then
9268 SYSTEM_POSTGRESQL=TRUE
9269 postgres_interface="external libpq"
9270 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
9271 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
9274 postgres_interface="internal"
9276 POSTGRESQL_INC="%OVERRIDE_ME%"
9277 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
9281 AC_MSG_CHECKING([PostgreSQL C interface])
9282 AC_MSG_RESULT([$postgres_interface])
9284 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
9285 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
9287 save_CPPFLAGS=$CPPFLAGS
9289 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
9290 LIBS="${LIBS} ${POSTGRESQL_LIB}"
9291 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
9292 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
9293 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
9295 CPPFLAGS=$save_CPPFLAGS
9298 BUILD_POSTGRESQL_SDBC=TRUE
9303 AC_SUBST(WITH_GSSAPI)
9304 AC_SUBST(GSSAPI_LIBS)
9306 AC_SUBST(BUILD_POSTGRESQL_SDBC)
9307 AC_SUBST(SYSTEM_POSTGRESQL)
9308 AC_SUBST(POSTGRESQL_INC)
9309 AC_SUBST(POSTGRESQL_LIB)
9311 dnl ===================================================================
9312 dnl Check for Firebird stuff
9313 dnl ===================================================================
9314 ENABLE_FIREBIRD_SDBC=
9315 if test "$enable_firebird_sdbc" = "yes" ; then
9316 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
9318 dnl ===================================================================
9319 dnl Check for system Firebird
9320 dnl ===================================================================
9321 AC_MSG_CHECKING([which Firebird to use])
9322 if test "$with_system_firebird" = "yes"; then
9323 AC_MSG_RESULT([external])
9324 SYSTEM_FIREBIRD=TRUE
9325 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
9326 if test -z "$FIREBIRDCONFIG"; then
9327 AC_MSG_NOTICE([No fb_config -- using pkg-config])
9328 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
9329 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
9331 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
9333 AC_MSG_NOTICE([fb_config found])
9334 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
9335 AC_MSG_CHECKING([for Firebird Client library])
9336 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
9337 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
9338 FilterLibs "${FIREBIRD_LIBS}"
9339 FIREBIRD_LIBS="${filteredlibs}"
9341 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
9342 AC_MSG_CHECKING([Firebird version])
9343 if test -n "${FIREBIRD_VERSION}"; then
9344 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
9345 FIREBIRD_MINOR=`echo $FIREBIRD_VERSION | cut -d"." -f2`
9346 if test "$FIREBIRD_MAJOR" -eq "3" -a "$FIREBIRD_MINOR" -eq "0"; then
9349 AC_MSG_ERROR([Ensure firebird 3.0.x is installed])
9352 __save_CFLAGS="${CFLAGS}"
9353 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
9354 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
9355 #if defined(FB_API_VER) && FB_API_VER == 30
9356 int fb_api_is_30(void) { return 0; }
9358 #error "Wrong Firebird API version"
9359 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
9360 CFLAGS="${__save_CFLAGS}"
9362 ENABLE_FIREBIRD_SDBC=TRUE
9363 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9364 elif test "$enable_database_connectivity" != yes; then
9365 AC_MSG_RESULT([none])
9366 elif test "$cross_compiling" = "yes"; then
9367 AC_MSG_RESULT([none])
9369 dnl Embedded Firebird has version 3.0
9370 AC_DEFINE(HAVE_FIREBIRD_30, 1)
9371 dnl We need libatomic_ops for any non X86/X64 system
9372 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
9373 dnl ===================================================================
9374 dnl Check for system libatomic_ops
9375 dnl ===================================================================
9376 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[ATOMIC_OPS],[atomic_ops >= 0.7.2])
9377 if test "$with_system_libatomic_ops" = "yes"; then
9378 SYSTEM_LIBATOMIC_OPS=TRUE
9379 AC_CHECK_HEADERS(atomic_ops.h, [],
9380 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
9382 SYSTEM_LIBATOMIC_OPS=
9383 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
9384 LIBATOMIC_OPS_LIBS="-latomic_ops"
9385 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
9389 AC_MSG_RESULT([internal])
9391 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
9392 FIREBIRD_LIBS="-lfbclient"
9394 if test "$with_system_libtommath" = "yes"; then
9395 SYSTEM_LIBTOMMATH=TRUE
9396 dnl check for tommath presence
9398 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
9399 AC_CHECK_LIB(tommath, mp_init, TOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
9403 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
9404 LIBTOMMATH_LIBS="-ltommath"
9405 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
9408 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
9409 ENABLE_FIREBIRD_SDBC=TRUE
9410 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9413 AC_SUBST(ENABLE_FIREBIRD_SDBC)
9414 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
9415 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
9416 AC_SUBST(LIBATOMIC_OPS_LIBS)
9417 AC_SUBST(SYSTEM_FIREBIRD)
9418 AC_SUBST(FIREBIRD_CFLAGS)
9419 AC_SUBST(FIREBIRD_LIBS)
9420 AC_SUBST([TOMMATH_CFLAGS])
9421 AC_SUBST([TOMMATH_LIBS])
9423 dnl ===================================================================
9424 dnl Check for system curl
9425 dnl ===================================================================
9426 AC_MSG_CHECKING([which libcurl to use])
9427 if test "$with_system_curl" = "auto"; then
9428 with_system_curl="$with_system_libs"
9431 if test "$with_system_curl" = "yes"; then
9432 AC_MSG_RESULT([external])
9435 # First try PKGCONFIG and then fall back
9436 PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
9438 if test -n "$CURL_PKG_ERRORS"; then
9439 AC_PATH_PROG(CURLCONFIG, curl-config)
9440 if test -z "$CURLCONFIG"; then
9441 AC_MSG_ERROR([curl development files not found])
9443 CURL_LIBS=`$CURLCONFIG --libs`
9444 FilterLibs "${CURL_LIBS}"
9445 CURL_LIBS="${filteredlibs}"
9446 CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
9447 curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
9449 AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
9450 case $curl_version in
9451 dnl brackets doubled below because Autoconf uses them as m4 quote characters,
9452 dnl so they need to be doubled to end up in the configure script
9453 7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
9454 AC_MSG_RESULT([yes])
9457 AC_MSG_ERROR([no, you have $curl_version])
9464 AC_MSG_RESULT([internal])
9466 BUILD_TYPE="$BUILD_TYPE CURL"
9469 AC_SUBST(SYSTEM_CURL)
9470 AC_SUBST(CURL_CFLAGS)
9472 AC_SUBST(ENABLE_CURL)
9474 dnl ===================================================================
9475 dnl Check for system boost
9476 dnl ===================================================================
9477 AC_MSG_CHECKING([which boost to use])
9478 if test "$with_system_boost" = "yes"; then
9479 AC_MSG_RESULT([external])
9487 save_CXXFLAGS=$CXXFLAGS
9488 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
9489 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
9490 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
9491 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
9492 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
9493 CXXFLAGS=$save_CXXFLAGS
9495 # this is in m4/ax_boost_base.m4
9496 FilterLibs "${BOOST_LDFLAGS}"
9497 BOOST_LDFLAGS="${filteredlibs}"
9499 AC_MSG_RESULT([internal])
9500 BUILD_TYPE="$BUILD_TYPE BOOST"
9502 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
9503 # use warning-suppressing wrapper headers
9504 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
9506 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
9509 AC_SUBST(SYSTEM_BOOST)
9511 dnl ===================================================================
9512 dnl Check for system mdds
9513 dnl ===================================================================
9514 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
9516 dnl ===================================================================
9517 dnl Check for system glm
9518 dnl ===================================================================
9519 AC_MSG_CHECKING([which glm to use])
9520 if test "$with_system_glm" = "yes"; then
9521 AC_MSG_RESULT([external])
9524 AC_CHECK_HEADER([glm/glm.hpp], [],
9525 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
9528 AC_MSG_RESULT([internal])
9529 BUILD_TYPE="$BUILD_TYPE GLM"
9531 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
9533 AC_SUBST([GLM_CFLAGS])
9534 AC_SUBST([SYSTEM_GLM])
9536 dnl ===================================================================
9537 dnl Check for system odbc
9538 dnl ===================================================================
9539 AC_MSG_CHECKING([which odbc headers to use])
9540 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
9541 AC_MSG_RESULT([external])
9542 SYSTEM_ODBC_HEADERS=TRUE
9544 if test "$build_os" = "cygwin"; then
9545 save_CPPFLAGS=$CPPFLAGS
9547 PathFormat "$winsdktest"
9548 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"
9549 AC_CHECK_HEADER(sqlext.h, [],
9550 [AC_MSG_ERROR(odbc not found. install odbc)],
9551 [#include <windows.h>])
9552 CPPFLAGS=$save_CPPFLAGS
9554 AC_CHECK_HEADER(sqlext.h, [],
9555 [AC_MSG_ERROR(odbc not found. install odbc)],[])
9557 elif test "$enable_database_connectivity" != yes; then
9558 AC_MSG_RESULT([none])
9560 AC_MSG_RESULT([internal])
9561 SYSTEM_ODBC_HEADERS=
9563 AC_SUBST(SYSTEM_ODBC_HEADERS)
9565 dnl ===================================================================
9566 dnl Enable LDAP support
9567 dnl ===================================================================
9569 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then
9570 AC_MSG_CHECKING([whether to enable LDAP support])
9571 if test "$enable_ldap" != "yes"; then
9576 AC_MSG_RESULT([yes])
9578 AC_DEFINE(HAVE_FEATURE_LDAP)
9581 AC_SUBST(ENABLE_LDAP)
9583 dnl ===================================================================
9584 dnl Check for system openldap
9585 dnl ===================================================================
9587 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then
9588 AC_MSG_CHECKING([which openldap library to use])
9589 if test "$with_system_openldap" = "yes"; then
9590 AC_MSG_RESULT([external])
9591 SYSTEM_OPENLDAP=TRUE
9592 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
9593 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
9594 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
9596 AC_MSG_RESULT([internal])
9598 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
9601 AC_SUBST(SYSTEM_OPENLDAP)
9603 dnl ===================================================================
9604 dnl Check for system NSS
9605 dnl ===================================================================
9606 if test "$enable_fuzzers" != "yes"; then
9607 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
9608 AC_DEFINE(HAVE_FEATURE_NSS)
9610 AC_DEFINE(ENABLE_NSS)
9611 elif test $_os != iOS ; then
9614 AC_SUBST(ENABLE_NSS)
9616 dnl ===================================================================
9617 dnl Check for TLS/SSL and cryptographic implementation to use
9618 dnl ===================================================================
9619 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
9620 if test -n "$with_tls"; then
9623 AC_DEFINE(USE_TLS_OPENSSL)
9626 if test "$enable_openssl" != "yes"; then
9627 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
9630 # warn that OpenSSL has been selected but not all TLS code has this option
9631 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
9632 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
9635 AC_DEFINE(USE_TLS_NSS)
9639 AC_MSG_WARN([Skipping TLS/SSL])
9642 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
9644 nss - Mozilla's Network Security Services (NSS)
9649 # default to using NSS, it results in smaller oox lib
9650 AC_DEFINE(USE_TLS_NSS)
9653 AC_MSG_RESULT([$TLS])
9656 dnl ===================================================================
9657 dnl Check for system sane
9658 dnl ===================================================================
9659 AC_MSG_CHECKING([which sane header to use])
9660 if test "$with_system_sane" = "yes"; then
9661 AC_MSG_RESULT([external])
9662 AC_CHECK_HEADER(sane/sane.h, [],
9663 [AC_MSG_ERROR(sane not found. install sane)], [])
9665 AC_MSG_RESULT([internal])
9666 BUILD_TYPE="$BUILD_TYPE SANE"
9669 dnl ===================================================================
9670 dnl Check for system icu
9671 dnl ===================================================================
9678 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
9679 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
9680 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
9681 AC_MSG_CHECKING([which icu to use])
9682 if test "$with_system_icu" = "yes"; then
9683 AC_MSG_RESULT([external])
9686 AC_MSG_CHECKING([for unicode/rbbi.h])
9687 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
9690 if test "$cross_compiling" != "yes"; then
9691 PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
9692 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
9693 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
9694 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
9697 if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
9698 ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
9699 ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
9700 ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
9701 AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
9702 if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
9703 AC_MSG_RESULT([yes])
9706 if test "$with_system_icu_for_build" != "force"; then
9707 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
9708 You can use --with-system-icu-for-build=force to use it anyway.])
9713 if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
9714 # using the system icu tools can lead to version confusion, use the
9715 # ones from the build environment when cross-compiling
9716 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
9717 if test -z "$SYSTEM_GENBRK"; then
9718 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
9720 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
9721 if test -z "$SYSTEM_GENCCODE"; then
9722 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
9724 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
9725 if test -z "$SYSTEM_GENCMN"; then
9726 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
9728 if test "$ICU_MAJOR" -ge "49"; then
9729 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
9730 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
9731 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
9733 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
9734 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
9735 ICU_RECLASSIFIED_HEBREW_LETTER=
9739 if test "$cross_compiling" = "yes"; then
9740 if test "$ICU_MAJOR" -ge "50"; then
9741 AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
9746 AC_MSG_RESULT([internal])
9748 BUILD_TYPE="$BUILD_TYPE ICU"
9749 # surprisingly set these only for "internal" (to be used by various other
9750 # external libs): the system icu-config is quite unhelpful and spits out
9751 # dozens of weird flags and also default path -I/usr/include
9752 ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9753 ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
9755 if test "$ICU_MAJOR" -ge "59"; then
9756 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
9757 # with -std=c++11 but not all external libraries can be built with that,
9758 # for those use a bit-compatible typedef uint16_t UChar; see
9759 # icu/source/common/unicode/umachine.h
9760 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
9764 AC_SUBST(SYSTEM_ICU)
9765 AC_SUBST(SYSTEM_GENBRK)
9766 AC_SUBST(SYSTEM_GENCCODE)
9767 AC_SUBST(SYSTEM_GENCMN)
9770 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
9771 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
9772 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
9773 AC_SUBST(ICU_CFLAGS)
9775 AC_SUBST(ICU_UCHAR_TYPE)
9777 dnl ==================================================================
9779 dnl ==================================================================
9780 DEFAULT_CRASHDUMP_VALUE="true"
9781 AC_MSG_CHECKING([whether to enable breakpad])
9782 if test "$enable_breakpad" != yes; then
9785 AC_MSG_RESULT([yes])
9786 ENABLE_BREAKPAD="TRUE"
9787 AC_DEFINE(ENABLE_BREAKPAD)
9788 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
9789 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
9791 AC_MSG_CHECKING([for disable crash dump])
9792 if test "$enable_crashdump" = no; then
9793 DEFAULT_CRASHDUMP_VALUE="false"
9794 AC_MSG_RESULT([yes])
9799 AC_MSG_CHECKING([for crashreport config])
9800 if test "$with_symbol_config" = "no"; then
9801 BREAKPAD_SYMBOL_CONFIG="invalid"
9804 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
9805 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
9806 AC_MSG_RESULT([yes])
9808 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
9810 AC_SUBST(ENABLE_BREAKPAD)
9811 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
9813 dnl ==================================================================
9815 dnl ==================================================================
9816 AC_MSG_CHECKING([whether to enable fuzzers])
9817 if test "$enable_fuzzers" != yes; then
9820 AC_MSG_RESULT([yes])
9821 ENABLE_FUZZERS="TRUE"
9822 AC_DEFINE([ENABLE_FUZZERS],1)
9823 BUILD_TYPE="$BUILD_TYPE FUZZERS"
9825 AC_SUBST(ENABLE_FUZZERS)
9827 dnl ===================================================================
9829 dnl ===================================================================
9830 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.15 >= 0.15.0])
9831 if test "$with_system_orcus" != "yes"; then
9832 if test "$SYSTEM_BOOST" = "TRUE"; then
9833 # ===========================================================
9834 # Determine if we are going to need to link with Boost.System
9835 # ===========================================================
9836 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
9837 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
9838 dnl in documentation has no effect.
9839 AC_MSG_CHECKING([if we need to link with Boost.System])
9841 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
9842 @%:@include <boost/version.hpp>
9844 #if BOOST_VERSION >= 105000
9845 # error yes, we need to link with Boost.System
9850 AC_MSG_RESULT([yes])
9856 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
9857 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
9858 AC_SUBST([BOOST_SYSTEM_LIB])
9859 AC_SUBST(SYSTEM_LIBORCUS)
9861 dnl ===================================================================
9863 dnl ===================================================================
9864 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
9865 ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
9866 ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
9868 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
9869 ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
9870 ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
9872 if test "$COM" = "MSC"; then # override the above
9873 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
9874 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
9877 if test "$with_system_harfbuzz" = "yes"; then
9878 if test "$with_system_graphite" = "no"; then
9879 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
9881 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
9883 _save_cflags="$CFLAGS"
9884 LIBS="$LIBS $HARFBUZZ_LIBS"
9885 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
9886 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
9888 CFLAGS="$_save_cflags"
9890 if test "$with_system_graphite" = "yes"; then
9891 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
9895 AC_MSG_CHECKING([whether to use X11])
9896 dnl ***************************************
9897 dnl testing for X libraries and includes...
9898 dnl ***************************************
9899 if test "$USING_X11" = TRUE; then
9900 AC_DEFINE(HAVE_FEATURE_X11)
9902 AC_MSG_RESULT([$USING_X11])
9904 if test "$USING_X11" = TRUE; then
9907 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
9909 if test -z "$x_includes"; then
9910 x_includes="default_x_includes"
9912 if test -z "$x_libraries"; then
9913 x_libraries="default_x_libraries"
9915 CFLAGS="$CFLAGS $X_CFLAGS"
9916 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
9917 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
9919 x_includes="no_x_includes"
9920 x_libraries="no_x_libraries"
9923 if test "$USING_X11" = TRUE; then
9924 dnl ===================================================================
9925 dnl Check for extension headers
9926 dnl ===================================================================
9927 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
9928 [#include <X11/extensions/shape.h>])
9930 # vcl needs ICE and SM
9931 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
9932 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
9933 [AC_MSG_ERROR(ICE library not found)])
9934 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
9935 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
9936 [AC_MSG_ERROR(SM library not found)])
9939 dnl ===================================================================
9940 dnl Check for system Xrender
9941 dnl ===================================================================
9942 AC_MSG_CHECKING([whether to use Xrender])
9943 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
9944 AC_MSG_RESULT([yes])
9945 PKG_CHECK_MODULES(XRENDER, xrender)
9946 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9947 FilterLibs "${XRENDER_LIBS}"
9948 XRENDER_LIBS="${filteredlibs}"
9949 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
9950 [AC_MSG_ERROR(libXrender not found or functional)], [])
9951 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
9952 [AC_MSG_ERROR(Xrender not found. install X)], [])
9956 AC_SUBST(XRENDER_CFLAGS)
9957 AC_SUBST(XRENDER_LIBS)
9959 dnl ===================================================================
9960 dnl Check for XRandr
9961 dnl ===================================================================
9962 AC_MSG_CHECKING([whether to enable RandR support])
9963 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
9964 AC_MSG_RESULT([yes])
9965 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
9966 if test "$ENABLE_RANDR" != "TRUE"; then
9967 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
9968 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
9970 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
9971 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
9972 XRANDR_LIBS="-lXrandr "
9975 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9976 FilterLibs "${XRANDR_LIBS}"
9977 XRANDR_LIBS="${filteredlibs}"
9982 AC_SUBST(XRANDR_CFLAGS)
9983 AC_SUBST(XRANDR_LIBS)
9984 AC_SUBST(ENABLE_RANDR)
9986 if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
9987 if test -z "$WITH_WEBDAV"; then
9991 if test $_os = iOS -o $_os = Android; then
9994 AC_MSG_CHECKING([for webdav library])
9995 case "$WITH_WEBDAV" in
9997 AC_MSG_RESULT([serf])
9998 # Check for system apr-util
9999 libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
10000 ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
10001 ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
10002 if test "$COM" = "MSC"; then
10004 test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
10005 APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
10008 # Check for system serf
10009 libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"],
10010 ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"])
10011 if test "$COM" = "MSC"; then
10012 SERF_LIB_DIR="Release"
10013 test -n "${MSVC_USE_DEBUG_RUNTIME}" && SERF_LIB_DIR="Debug"
10014 SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/${SERF_LIB_DIR}/serf-1.lib"
10018 AC_MSG_RESULT([neon])
10019 # Check for system neon
10020 libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.26.0])
10021 if test "$with_system_neon" = "yes"; then
10022 NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
10026 AC_SUBST(NEON_VERSION)
10029 AC_MSG_RESULT([none, disabled])
10033 AC_SUBST(WITH_WEBDAV)
10035 dnl ===================================================================
10036 dnl Check for disabling cve_tests
10037 dnl ===================================================================
10038 AC_MSG_CHECKING([whether to execute CVE tests])
10039 # If not explicitly enabled or disabled, default
10040 if test -z "$enable_cve_tests"; then
10043 # Default cves off for Windows with its wild and wonderful
10044 # variety of AV software kicking in and panicking
10045 enable_cve_tests=no
10049 enable_cve_tests=yes
10053 if test "$enable_cve_tests" = "no"; then
10054 AC_MSG_RESULT([no])
10055 DISABLE_CVE_TESTS=TRUE
10056 AC_SUBST(DISABLE_CVE_TESTS)
10058 AC_MSG_RESULT([yes])
10061 dnl ===================================================================
10062 dnl Check for enabling chart XShape tests
10063 dnl ===================================================================
10064 AC_MSG_CHECKING([whether to execute chart XShape tests])
10065 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
10066 AC_MSG_RESULT([yes])
10067 ENABLE_CHART_TESTS=TRUE
10068 AC_SUBST(ENABLE_CHART_TESTS)
10070 AC_MSG_RESULT([no])
10073 dnl ===================================================================
10074 dnl Check for system openssl
10075 dnl ===================================================================
10077 AC_MSG_CHECKING([whether to disable OpenSSL usage])
10078 if test "$enable_openssl" = "yes"; then
10079 AC_MSG_RESULT([no])
10080 if test "$_os" = Darwin ; then
10081 # OpenSSL is deprecated when building for 10.7 or later.
10083 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
10084 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
10086 with_system_openssl=no
10087 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10088 elif test "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
10089 && test "$with_system_openssl" != "no"; then
10090 with_system_openssl=yes
10091 SYSTEM_OPENSSL=TRUE
10093 OPENSSL_LIBS="-lssl -lcrypto"
10095 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
10097 if test "$with_system_openssl" = "yes"; then
10098 AC_MSG_CHECKING([whether openssl supports SHA512])
10100 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
10101 SHA512_CTX context;
10102 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
10106 AC_MSG_RESULT([yes])
10107 DISABLE_OPENSSL=TRUE
10109 # warn that although OpenSSL is disabled, system libraries may depend on it
10110 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
10111 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
10114 AC_SUBST([DISABLE_OPENSSL])
10116 if test "$enable_cipher_openssl_backend" = yes && test "$DISABLE_OPENSSL" = TRUE; then
10117 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
10118 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
10119 enable_cipher_openssl_backend=no
10121 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
10124 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
10125 ENABLE_CIPHER_OPENSSL_BACKEND=
10126 if test "$enable_cipher_openssl_backend" = yes; then
10127 AC_MSG_RESULT([yes])
10128 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
10130 AC_MSG_RESULT([no])
10132 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
10134 dnl ===================================================================
10135 dnl Check for building gnutls
10136 dnl ===================================================================
10137 AC_MSG_CHECKING([whether to use gnutls])
10138 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
10139 AC_MSG_RESULT([yes])
10140 AM_PATH_LIBGCRYPT()
10141 PKG_CHECK_MODULES(GNUTLS, [gnutls],,
10142 AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
10143 available in the system to use as replacement.]]))
10144 FilterLibs "${LIBGCRYPT_LIBS}"
10145 LIBGCRYPT_LIBS="${filteredlibs}"
10147 AC_MSG_RESULT([no])
10150 AC_SUBST([LIBGCRYPT_CFLAGS])
10151 AC_SUBST([LIBGCRYPT_LIBS])
10153 dnl ===================================================================
10154 dnl Check for system redland
10155 dnl ===================================================================
10156 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
10157 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
10158 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
10159 if test "$with_system_redland" = "yes"; then
10160 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
10161 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
10167 AC_SUBST(RAPTOR_MAJOR)
10168 AC_SUBST(RASQAL_MAJOR)
10169 AC_SUBST(REDLAND_MAJOR)
10171 dnl ===================================================================
10172 dnl Check for system hunspell
10173 dnl ===================================================================
10174 AC_MSG_CHECKING([which libhunspell to use])
10175 if test "$with_system_hunspell" = "yes"; then
10176 AC_MSG_RESULT([external])
10177 SYSTEM_HUNSPELL=TRUE
10178 AC_LANG_PUSH([C++])
10179 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10180 if test "$HUNSPELL_PC" != "TRUE"; then
10181 AC_CHECK_HEADER(hunspell.hxx, [],
10183 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10184 [AC_MSG_ERROR(hunspell headers not found.)], [])
10186 AC_CHECK_LIB([hunspell], [main], [:],
10187 [ AC_MSG_ERROR(hunspell library not found.) ], [])
10188 HUNSPELL_LIBS=-lhunspell
10191 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10192 FilterLibs "${HUNSPELL_LIBS}"
10193 HUNSPELL_LIBS="${filteredlibs}"
10195 AC_MSG_RESULT([internal])
10197 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10198 if test "$COM" = "MSC"; then
10199 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10201 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10203 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
10205 AC_SUBST(SYSTEM_HUNSPELL)
10206 AC_SUBST(HUNSPELL_CFLAGS)
10207 AC_SUBST(HUNSPELL_LIBS)
10209 dnl ===================================================================
10210 dnl Check for system qrcodegen
10211 dnl ===================================================================
10212 AC_MSG_CHECKING([whether to use libqrcodegen])
10213 if test "$enable_qrcodegen" = "no"; then
10214 AC_MSG_RESULT([no])
10218 AC_MSG_RESULT([yes])
10219 ENABLE_QRCODEGEN=TRUE
10220 AC_MSG_CHECKING([which libqrcodegen to use])
10221 if test "$with_system_qrcodegen" = "yes"; then
10222 AC_MSG_RESULT([external])
10223 SYSTEM_QRCODEGEN=TRUE
10224 AC_LANG_PUSH([C++])
10225 AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
10226 [AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
10227 AC_CHECK_LIB([qrcodegencpp], [main], [:],
10228 [ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
10229 QRCODEGEN_LIBS=-lqrcodegencpp
10231 QRCODEGEN_CFLAGS=$(printf '%s' "$QRCODEGEN_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10232 FilterLibs "${QRCODEGEN_LIBS}"
10233 QRCODEGEN_LIBS="${filteredlibs}"
10235 AC_MSG_RESULT([internal])
10237 BUILD_TYPE="$BUILD_TYPE QRCODEGEN"
10239 if test "$ENABLE_QRCODEGEN" = TRUE; then
10240 AC_DEFINE(ENABLE_QRCODEGEN)
10243 AC_SUBST(SYSTEM_QRCODEGEN)
10244 AC_SUBST(ENABLE_QRCODEGEN)
10245 AC_SUBST(QRCODEGEN_CFLAGS)
10246 AC_SUBST(QRCODEGEN_LIBS)
10248 dnl ===================================================================
10249 dnl Checking for altlinuxhyph
10250 dnl ===================================================================
10251 AC_MSG_CHECKING([which altlinuxhyph to use])
10252 if test "$with_system_altlinuxhyph" = "yes"; then
10253 AC_MSG_RESULT([external])
10255 AC_CHECK_HEADER(hyphen.h, [],
10256 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
10257 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
10258 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
10259 [#include <hyphen.h>])
10260 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
10261 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10262 if test -z "$HYPHEN_LIB"; then
10263 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
10264 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10266 if test -z "$HYPHEN_LIB"; then
10267 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
10268 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10271 AC_MSG_RESULT([internal])
10273 BUILD_TYPE="$BUILD_TYPE HYPHEN"
10274 if test "$COM" = "MSC"; then
10275 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
10277 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
10280 AC_SUBST(SYSTEM_HYPH)
10281 AC_SUBST(HYPHEN_LIB)
10283 dnl ===================================================================
10284 dnl Checking for mythes
10285 dnl ===================================================================
10286 AC_MSG_CHECKING([which mythes to use])
10287 if test "$with_system_mythes" = "yes"; then
10288 AC_MSG_RESULT([external])
10290 AC_LANG_PUSH([C++])
10291 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
10292 if test "$MYTHES_PKGCONFIG" = "no"; then
10293 AC_CHECK_HEADER(mythes.hxx, [],
10294 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
10295 AC_CHECK_LIB([mythes-1.2], [main], [:],
10296 [ MYTHES_FOUND=no], [])
10297 if test "$MYTHES_FOUND" = "no"; then
10298 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
10299 [ MYTHES_FOUND=no], [])
10301 if test "$MYTHES_FOUND" = "no"; then
10302 AC_MSG_ERROR([mythes library not found!.])
10306 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10307 FilterLibs "${MYTHES_LIBS}"
10308 MYTHES_LIBS="${filteredlibs}"
10310 AC_MSG_RESULT([internal])
10312 BUILD_TYPE="$BUILD_TYPE MYTHES"
10313 if test "$COM" = "MSC"; then
10314 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
10316 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
10319 AC_SUBST(SYSTEM_MYTHES)
10320 AC_SUBST(MYTHES_CFLAGS)
10321 AC_SUBST(MYTHES_LIBS)
10323 dnl ===================================================================
10324 dnl How should we build the linear programming solver ?
10325 dnl ===================================================================
10328 AC_MSG_CHECKING([whether to build with CoinMP])
10329 if test "$enable_coinmp" != "no"; then
10331 AC_MSG_RESULT([yes])
10332 if test "$with_system_coinmp" = "yes"; then
10334 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
10335 FilterLibs "${COINMP_LIBS}"
10336 COINMP_LIBS="${filteredlibs}"
10338 BUILD_TYPE="$BUILD_TYPE COINMP"
10341 AC_MSG_RESULT([no])
10343 AC_SUBST(ENABLE_COINMP)
10344 AC_SUBST(SYSTEM_COINMP)
10345 AC_SUBST(COINMP_CFLAGS)
10346 AC_SUBST(COINMP_LIBS)
10349 AC_MSG_CHECKING([whether to build with lpsolve])
10350 if test "$enable_lpsolve" != "no"; then
10351 ENABLE_LPSOLVE=TRUE
10352 AC_MSG_RESULT([yes])
10354 AC_MSG_RESULT([no])
10356 AC_SUBST(ENABLE_LPSOLVE)
10358 if test "$ENABLE_LPSOLVE" = TRUE; then
10359 AC_MSG_CHECKING([which lpsolve to use])
10360 if test "$with_system_lpsolve" = "yes"; then
10361 AC_MSG_RESULT([external])
10362 SYSTEM_LPSOLVE=TRUE
10363 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
10364 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
10366 # some systems need this. Like Ubuntu...
10367 AC_CHECK_LIB(m, floor)
10368 AC_CHECK_LIB(dl, dlopen)
10369 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
10370 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
10373 AC_MSG_RESULT([internal])
10375 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
10378 AC_SUBST(SYSTEM_LPSOLVE)
10380 dnl ===================================================================
10381 dnl Checking for libexttextcat
10382 dnl ===================================================================
10383 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
10384 if test "$with_system_libexttextcat" = "yes"; then
10385 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
10387 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
10389 dnl ===================================================================
10390 dnl Checking for libnumbertext
10391 dnl ===================================================================
10392 AC_MSG_CHECKING([whether to use libnumbertext])
10393 if test "$enable_libnumbertext" = "no"; then
10394 AC_MSG_RESULT([no])
10395 ENABLE_LIBNUMBERTEXT=
10396 SYSTEM_LIBNUMBERTEXT=
10398 AC_MSG_RESULT([yes])
10399 ENABLE_LIBNUMBERTEXT=TRUE
10400 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.0])
10401 if test "$with_system_libnumbertext" = "yes"; then
10402 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
10403 SYSTEM_LIBNUMBERTEXT=YES
10405 SYSTEM_LIBNUMBERTEXT=
10406 AC_LANG_PUSH([C++])
10407 save_CPPFLAGS=$CPPFLAGS
10408 CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
10409 AC_CHECK_HEADERS([codecvt regex])
10410 AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
10411 [ ENABLE_LIBNUMBERTEXT=''
10412 LIBNUMBERTEXT_CFLAGS=''
10413 AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
10414 Enable libnumbertext fallback (missing number to number name conversion).])
10416 CPPFLAGS=$save_CPPFLAGS
10419 if test "$ENABLE_LIBNUMBERTEXT" = TRUE; then
10420 AC_DEFINE(ENABLE_LIBNUMBERTEXT)
10423 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
10424 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
10425 AC_SUBST(ENABLE_LIBNUMBERTEXT)
10426 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
10428 dnl ***************************************
10429 dnl testing libc version for Linux...
10430 dnl ***************************************
10431 if test "$_os" = "Linux"; then
10432 AC_MSG_CHECKING([whether libc is >= 2.1.1])
10433 exec 6>/dev/null # no output
10434 AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
10435 exec 6>&1 # output on again
10436 if test "$HAVE_LIBC"; then
10437 AC_MSG_RESULT([yes])
10439 AC_MSG_ERROR([no, upgrade libc])
10443 dnl =========================================
10444 dnl Check for uuidgen
10445 dnl =========================================
10446 if test "$_os" = "WINNT" -a "$cross_compiling" != "yes"; then
10447 # presence is already tested above in the WINDOWS_SDK_HOME check
10448 UUIDGEN=uuidgen.exe
10451 AC_PATH_PROG([UUIDGEN], [uuidgen])
10452 if test -z "$UUIDGEN"; then
10453 AC_MSG_WARN([uuid is needed for building installation sets])
10457 dnl ***************************************
10458 dnl Checking for bison and flex
10459 dnl ***************************************
10460 AC_PATH_PROG(BISON, bison)
10461 if test -z "$BISON"; then
10462 AC_MSG_ERROR([no bison found in \$PATH, install it])
10464 AC_MSG_CHECKING([the bison version])
10465 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
10466 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
10467 # Accept newer than 2.0
10468 if test "$_bison_longver" -lt 2000; then
10469 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
10473 AC_PATH_PROG(FLEX, flex)
10474 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
10475 FLEX=`cygpath -m $FLEX`
10477 if test -z "$FLEX"; then
10478 AC_MSG_ERROR([no flex found in \$PATH, install it])
10480 AC_MSG_CHECKING([the flex version])
10481 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
10482 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
10483 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
10487 dnl ***************************************
10488 dnl Checking for patch
10489 dnl ***************************************
10490 AC_PATH_PROG(PATCH, patch)
10491 if test -z "$PATCH"; then
10492 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
10495 dnl On Solaris, FreeBSD or macOS, check if --with-gnu-patch was used
10496 if test "$_os" = "SunOS" -o "$_os" = "FreeBSD" -o "$_os" = "Darwin"; then
10497 if test -z "$with_gnu_patch"; then
10500 if test -x "$with_gnu_patch"; then
10501 GNUPATCH=$with_gnu_patch
10503 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
10507 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
10508 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
10509 AC_MSG_RESULT([yes])
10511 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
10517 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
10518 GNUPATCH=`cygpath -m $GNUPATCH`
10521 dnl We also need to check for --with-gnu-cp
10523 if test -z "$with_gnu_cp"; then
10524 # check the place where the good stuff is hidden on Solaris...
10525 if test -x /usr/gnu/bin/cp; then
10526 GNUCP=/usr/gnu/bin/cp
10528 AC_PATH_PROGS(GNUCP, gnucp cp)
10530 if test -z $GNUCP; then
10531 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
10534 if test -x "$with_gnu_cp"; then
10537 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
10541 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
10542 GNUCP=`cygpath -m $GNUCP`
10545 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
10546 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
10547 AC_MSG_RESULT([yes])
10548 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
10549 AC_MSG_RESULT([yes])
10551 case "$build_os" in
10552 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
10555 AC_MSG_RESULT([no gnucp found - using the system's cp command])
10558 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
10567 dnl ***************************************
10568 dnl testing assembler path
10569 dnl ***************************************
10571 if test "$_os" = "WINNT"; then
10572 if test "$BITNESS_OVERRIDE" = ""; then
10578 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
10579 if test -f "$CL_PATH/$assembler"; then
10580 ML_EXE=`win_short_path_for_make "$CL_PATH/$assembler"`
10581 AC_MSG_RESULT([$ML_EXE])
10583 AC_MSG_ERROR([not found])
10589 dnl ===================================================================
10590 dnl We need zip and unzip
10591 dnl ===================================================================
10592 AC_PATH_PROG(ZIP, zip)
10593 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
10594 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
10595 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],,)
10598 AC_PATH_PROG(UNZIP, unzip)
10599 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
10601 dnl ===================================================================
10602 dnl Zip must be a specific type for different build types.
10603 dnl ===================================================================
10604 if test $build_os = cygwin; then
10605 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
10606 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
10610 dnl ===================================================================
10611 dnl We need touch with -h option support.
10612 dnl ===================================================================
10613 AC_PATH_PROG(TOUCH, touch)
10614 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
10616 if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then
10617 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],,)
10620 dnl ===================================================================
10621 dnl Check for system epoxy
10622 dnl ===================================================================
10623 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
10625 dnl ===================================================================
10626 dnl Set vcl option: coordinate device in double or sal_Int32
10627 dnl ===================================================================
10629 dnl disabled for now, we don't want subtle differences between OSs
10630 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
10631 dnl if test "$_os" = "Darwin" -o $_os = iOS ; then
10632 dnl AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
10633 dnl AC_MSG_RESULT([double])
10635 dnl AC_MSG_RESULT([sal_Int32])
10638 dnl ===================================================================
10639 dnl Test which vclplugs have to be built.
10640 dnl ===================================================================
10642 if test "$USING_X11" != TRUE; then
10648 if test "x$enable_gtk3" = "xyes"; then
10649 if test "$with_system_cairo" = no; then
10650 AC_MSG_ERROR([System cairo required for gtk3 support, do not combine --enable-gtk3 with --without-system-cairo])
10652 : ${with_system_cairo:=yes}
10653 PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= 3.18 gtk+-unix-print-3.0 gmodule-no-export-2.0 glib-2.0 >= 2.38 cairo, ENABLE_GTK3="TRUE", ENABLE_GTK3="")
10654 if test "x$ENABLE_GTK3" = "xTRUE"; then
10655 AC_DEFINE(ENABLE_GTK3)
10658 AC_MSG_ERROR([gtk3 or dependent libraries of the correct versions, not found])
10660 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10661 FilterLibs "${GTK3_LIBS}"
10662 GTK3_LIBS="${filteredlibs}"
10664 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
10665 if test "$with_system_epoxy" != "yes"; then
10666 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
10667 AC_CHECK_HEADER(EGL/eglplatform.h, [],
10668 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
10671 AC_SUBST(GTK3_LIBS)
10672 AC_SUBST(GTK3_CFLAGS)
10673 AC_SUBST(ENABLE_GTK3)
10675 if test "$enable_introspection" = yes; then
10676 if test "$ENABLE_GTK3" = TRUE; then
10677 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
10679 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
10684 if test "x$enable_qt5" = "xyes"; then
10686 AC_DEFINE(ENABLE_QT5)
10689 AC_SUBST(ENABLE_QT5)
10692 if test "x$enable_kf5" = "xyes"; then
10694 AC_DEFINE(ENABLE_KF5)
10697 AC_SUBST(ENABLE_KF5)
10699 ENABLE_GTK3_KDE5=""
10700 if test "x$enable_gtk3_kde5" = "xyes"; then
10701 ENABLE_GTK3_KDE5="TRUE"
10702 AC_DEFINE(ENABLE_GTK3_KDE5)
10705 AC_SUBST(ENABLE_GTK3_KDE5)
10707 if test "$_os" = "WINNT"; then
10709 elif test "$_os" = "Darwin"; then
10711 elif test "$_os" = "iOS"; then
10715 build_vcl_plugins="$R"
10716 if test -z "$build_vcl_plugins"; then
10717 build_vcl_plugins="none"
10719 AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins])
10721 dnl ===================================================================
10722 dnl check for dbus support
10723 dnl ===================================================================
10727 DBUS_GLIB_CFLAGS=""
10731 if test "$enable_dbus" = "no"; then
10735 AC_MSG_CHECKING([whether to enable DBUS support])
10736 if test "$test_dbus" = "yes"; then
10738 AC_MSG_RESULT([yes])
10739 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
10740 AC_DEFINE(ENABLE_DBUS)
10741 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10742 FilterLibs "${DBUS_LIBS}"
10743 DBUS_LIBS="${filteredlibs}"
10745 # Glib is needed for BluetoothServer
10746 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
10747 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
10749 DBUS_HAVE_GLIB="TRUE"
10750 AC_DEFINE(DBUS_HAVE_GLIB,1)
10752 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
10755 AC_MSG_RESULT([no])
10758 AC_SUBST(ENABLE_DBUS)
10759 AC_SUBST(DBUS_CFLAGS)
10760 AC_SUBST(DBUS_LIBS)
10761 AC_SUBST(DBUS_GLIB_CFLAGS)
10762 AC_SUBST(DBUS_GLIB_LIBS)
10763 AC_SUBST(DBUS_HAVE_GLIB)
10765 AC_MSG_CHECKING([whether to enable Impress remote control])
10766 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
10767 AC_MSG_RESULT([yes])
10768 ENABLE_SDREMOTE=TRUE
10769 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
10771 if test $OS = MACOSX && test "$MAC_OS_X_VERSION_MAX_ALLOWED" -ge 101500; then
10772 # The Bluetooth code doesn't compile with macOS SDK 10.15
10773 enable_sdremote_bluetooth=no
10775 # If not explicitly enabled or disabled, default
10776 if test -z "$enable_sdremote_bluetooth"; then
10779 # Default to yes for these
10780 enable_sdremote_bluetooth=yes
10784 enable_sdremote_bluetooth=no
10788 # $enable_sdremote_bluetooth is guaranteed non-empty now
10790 if test "$enable_sdremote_bluetooth" != "no"; then
10791 if test "$OS" = "LINUX"; then
10792 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
10793 AC_MSG_RESULT([yes])
10794 ENABLE_SDREMOTE_BLUETOOTH=TRUE
10795 dnl ===================================================================
10796 dnl Check for system bluez
10797 dnl ===================================================================
10798 AC_MSG_CHECKING([which Bluetooth header to use])
10799 if test "$with_system_bluez" = "yes"; then
10800 AC_MSG_RESULT([external])
10801 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
10802 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
10805 AC_MSG_RESULT([internal])
10809 AC_MSG_RESULT([no, dbus disabled])
10810 ENABLE_SDREMOTE_BLUETOOTH=
10814 AC_MSG_RESULT([yes])
10815 ENABLE_SDREMOTE_BLUETOOTH=TRUE
10819 AC_MSG_RESULT([no])
10820 ENABLE_SDREMOTE_BLUETOOTH=
10826 AC_MSG_RESULT([no])
10828 AC_SUBST(ENABLE_SDREMOTE)
10829 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
10830 AC_SUBST(SYSTEM_BLUEZ)
10832 dnl ===================================================================
10833 dnl Check whether to enable GIO support
10834 dnl ===================================================================
10835 if test "$ENABLE_GTK3" = "TRUE"; then
10836 AC_MSG_CHECKING([whether to enable GIO support])
10837 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
10838 dnl Need at least 2.26 for the dbus support.
10839 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
10840 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
10841 if test "$ENABLE_GIO" = "TRUE"; then
10842 AC_DEFINE(ENABLE_GIO)
10843 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10844 FilterLibs "${GIO_LIBS}"
10845 GIO_LIBS="${filteredlibs}"
10848 AC_MSG_RESULT([no])
10851 AC_SUBST(ENABLE_GIO)
10852 AC_SUBST(GIO_CFLAGS)
10856 dnl ===================================================================
10858 SPLIT_APP_MODULES=""
10859 if test "$enable_split_app_modules" = "yes"; then
10860 SPLIT_APP_MODULES="TRUE"
10862 AC_SUBST(SPLIT_APP_MODULES)
10864 SPLIT_OPT_FEATURES=""
10865 if test "$enable_split_opt_features" = "yes"; then
10866 SPLIT_OPT_FEATURES="TRUE"
10868 AC_SUBST(SPLIT_OPT_FEATURES)
10870 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then
10871 if test "$enable_cairo_canvas" = yes; then
10872 AC_MSG_ERROR([The cairo canvas should not be used for this platform])
10874 enable_cairo_canvas=no
10875 elif test -z "$enable_cairo_canvas"; then
10876 enable_cairo_canvas=yes
10879 ENABLE_CAIRO_CANVAS=""
10880 if test "$enable_cairo_canvas" = "yes"; then
10882 ENABLE_CAIRO_CANVAS="TRUE"
10883 AC_DEFINE(ENABLE_CAIRO_CANVAS)
10885 AC_SUBST(ENABLE_CAIRO_CANVAS)
10887 dnl ===================================================================
10888 dnl Check whether the GStreamer libraries are available.
10889 dnl ===================================================================
10891 ENABLE_GSTREAMER_1_0=""
10893 if test "$build_gstreamer_1_0" = "yes"; then
10895 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
10896 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
10897 ENABLE_GSTREAMER_1_0="TRUE"
10898 AC_MSG_RESULT([yes])
10899 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
10900 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10901 FilterLibs "${GSTREAMER_1_0_LIBS}"
10902 GSTREAMER_1_0_LIBS="${filteredlibs}"
10903 AC_DEFINE(ENABLE_GSTREAMER_1_0)
10905 AC_MSG_RESULT([no])
10908 AC_SUBST(GSTREAMER_1_0_CFLAGS)
10909 AC_SUBST(GSTREAMER_1_0_LIBS)
10910 AC_SUBST(ENABLE_GSTREAMER_1_0)
10912 dnl ===================================================================
10913 dnl Check whether to build the VLC avmedia backend
10914 dnl ===================================================================
10918 AC_MSG_CHECKING([whether to enable the VLC avmedia backend])
10919 if test "$enable_avmedia" = yes -a $_os != iOS -a $_os != Android -a "$enable_vlc" = yes; then
10921 AC_MSG_RESULT([yes])
10923 AC_MSG_RESULT([no])
10925 AC_SUBST(ENABLE_VLC)
10927 ENABLE_OPENGL_TRANSITIONS=
10928 ENABLE_OPENGL_CANVAS=
10929 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
10931 elif test "$_os" = "Darwin"; then
10932 # We use frameworks on macOS, no need for detail checks
10933 ENABLE_OPENGL_TRANSITIONS=TRUE
10934 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
10935 ENABLE_OPENGL_CANVAS=TRUE
10936 elif test $_os = WINNT; then
10937 ENABLE_OPENGL_TRANSITIONS=TRUE
10938 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
10939 ENABLE_OPENGL_CANVAS=TRUE
10941 if test "$USING_X11" = TRUE; then
10942 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
10943 ENABLE_OPENGL_TRANSITIONS=TRUE
10944 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
10945 ENABLE_OPENGL_CANVAS=TRUE
10949 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
10950 AC_SUBST(ENABLE_OPENGL_CANVAS)
10952 dnl =================================================
10953 dnl Check whether to build with OpenCL support.
10954 dnl =================================================
10956 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE"; then
10957 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
10958 # platform (optional at run-time, used through clew).
10959 BUILD_TYPE="$BUILD_TYPE OPENCL"
10960 AC_DEFINE(HAVE_FEATURE_OPENCL)
10963 dnl =================================================
10964 dnl Check whether to build with dconf support.
10965 dnl =================================================
10967 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
10968 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
10969 if test "$enable_dconf" = yes; then
10970 AC_MSG_ERROR([dconf not found])
10975 AC_MSG_CHECKING([whether to enable dconf])
10976 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
10980 AC_MSG_RESULT([no])
10983 AC_DEFINE(ENABLE_DCONF)
10984 AC_MSG_RESULT([yes])
10986 AC_SUBST([DCONF_CFLAGS])
10987 AC_SUBST([DCONF_LIBS])
10988 AC_SUBST([ENABLE_DCONF])
10991 AC_MSG_CHECKING([whether to build the PDF import feature])
10993 if test $_os != Android -a \( -z "$enable_pdfimport" -o "$enable_pdfimport" = yes \); then
10994 AC_MSG_RESULT([yes])
10995 ENABLE_PDFIMPORT=TRUE
10996 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
10998 AC_MSG_RESULT([no])
11002 AC_MSG_CHECKING([whether to build PDFium])
11004 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
11005 AC_MSG_RESULT([yes])
11007 AC_DEFINE(HAVE_FEATURE_PDFIUM)
11008 BUILD_TYPE="$BUILD_TYPE PDFIUM"
11010 AC_MSG_RESULT([no])
11012 AC_SUBST(ENABLE_PDFIUM)
11014 dnl ===================================================================
11015 dnl Check for poppler
11016 dnl ===================================================================
11018 AC_MSG_CHECKING([whether to build Poppler])
11019 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_poppler" = yes; then
11020 AC_MSG_RESULT([yes])
11021 ENABLE_POPPLER=TRUE
11022 AC_DEFINE(HAVE_FEATURE_POPPLER)
11024 AC_MSG_RESULT([no])
11026 AC_SUBST(ENABLE_POPPLER)
11028 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
11029 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
11032 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
11033 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
11036 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
11037 dnl ===================================================================
11038 dnl Check for system poppler
11039 dnl ===================================================================
11040 AC_MSG_CHECKING([which PDF import poppler to use])
11041 if test "$with_system_poppler" = "yes"; then
11042 AC_MSG_RESULT([external])
11043 SYSTEM_POPPLER=TRUE
11044 PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
11045 AC_LANG_PUSH([C++])
11046 save_CXXFLAGS=$CXXFLAGS
11047 save_CPPFLAGS=$CPPFLAGS
11048 CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
11049 CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
11050 AC_CHECK_HEADER([cpp/poppler-version.h],
11051 [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
11053 CXXFLAGS=$save_CXXFLAGS
11054 CPPFLAGS=$save_CPPFLAGS
11056 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11058 FilterLibs "${POPPLER_LIBS}"
11059 POPPLER_LIBS="${filteredlibs}"
11061 AC_MSG_RESULT([internal])
11063 BUILD_TYPE="$BUILD_TYPE POPPLER"
11064 AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
11066 AC_DEFINE([ENABLE_PDFIMPORT],1)
11068 AC_SUBST(ENABLE_PDFIMPORT)
11069 AC_SUBST(SYSTEM_POPPLER)
11070 AC_SUBST(POPPLER_CFLAGS)
11071 AC_SUBST(POPPLER_LIBS)
11075 if test "$build_for_ios" = "YES"; then
11076 AC_MSG_CHECKING([whether gpgmepp should be disabled due to iOS])
11077 AC_MSG_RESULT([yes])
11078 elif test "$enable_mpl_subset" = "yes"; then
11079 AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
11080 AC_MSG_RESULT([yes])
11081 elif test "$enable_fuzzers" = "yes"; then
11082 AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
11083 AC_MSG_RESULT([yes])
11084 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
11085 dnl ===================================================================
11086 dnl Check for system gpgme
11087 dnl ===================================================================
11088 AC_MSG_CHECKING([which gpgmepp to use])
11089 if test "$with_system_gpgmepp" = "yes"; then
11090 AC_MSG_RESULT([external])
11091 SYSTEM_GPGMEPP=TRUE
11093 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
11094 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
11095 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
11096 # progress_callback is the only func with plain C linkage
11097 # checking for it also filters out older, KDE-dependent libgpgmepp versions
11098 AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
11099 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
11100 AC_CHECK_HEADER(gpgme.h, [],
11101 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
11103 AC_MSG_RESULT([internal])
11104 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
11105 AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
11107 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
11108 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
11109 if test "$_os" != "WINNT"; then
11110 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
11111 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
11112 elif test "$host_cpu" = "i686" -a "$WINDOWS_SDK_ARCH" = "x64"; then
11113 AC_MSG_ERROR(gpgme cannot be built on cygwin32 for Win64.)
11116 ENABLE_GPGMEPP=TRUE
11117 AC_DEFINE([HAVE_FEATURE_GPGME])
11118 AC_PATH_PROG(GPG, gpg)
11119 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
11120 # so let's exclude that manually for the moment
11121 if test -n "$GPG" -a "$_os" != "WINNT"; then
11122 # make sure we not only have a working gpgme, but a full working
11123 # gpg installation to run OpenPGP signature verification
11124 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
11126 if test "$_os" = "Linux"; then
11128 AC_MSG_CHECKING([for /run/user/$uid])
11129 if test -d /run/user/$uid; then
11130 AC_MSG_RESULT([yes])
11131 AC_PATH_PROG(GPGCONF, gpgconf)
11133 # Older versions of gpgconf are not working as expected, since
11134 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
11135 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
11136 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
11137 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
11138 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
11139 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
11140 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
11141 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
11142 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
11143 if $GPGCONF --dump-options > /dev/null ; then
11144 if $GPGCONF --dump-options | grep -q create-socketdir ; then
11145 AC_MSG_RESULT([yes])
11146 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
11147 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
11149 AC_MSG_RESULT([no])
11152 AC_MSG_RESULT([no. missing or broken gpgconf?])
11155 AC_MSG_RESULT([no, $GPGCONF_VERSION])
11158 AC_MSG_RESULT([no])
11162 AC_SUBST(ENABLE_GPGMEPP)
11163 AC_SUBST(SYSTEM_GPGMEPP)
11164 AC_SUBST(GPG_ERROR_CFLAGS)
11165 AC_SUBST(GPG_ERROR_LIBS)
11166 AC_SUBST(LIBASSUAN_CFLAGS)
11167 AC_SUBST(LIBASSUAN_LIBS)
11168 AC_SUBST(GPGMEPP_CFLAGS)
11169 AC_SUBST(GPGMEPP_LIBS)
11171 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
11172 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
11173 AC_MSG_RESULT([yes])
11174 ENABLE_MEDIAWIKI=TRUE
11175 BUILD_TYPE="$BUILD_TYPE XSLTML"
11176 if test "x$with_java" = "xno"; then
11177 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
11180 AC_MSG_RESULT([no])
11182 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
11184 AC_SUBST(ENABLE_MEDIAWIKI)
11186 AC_MSG_CHECKING([whether to build the Report Builder])
11187 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
11188 AC_MSG_RESULT([yes])
11189 ENABLE_REPORTBUILDER=TRUE
11190 AC_MSG_CHECKING([which jfreereport libs to use])
11191 if test "$with_system_jfreereport" = "yes"; then
11192 SYSTEM_JFREEREPORT=TRUE
11193 AC_MSG_RESULT([external])
11194 if test -z $SAC_JAR; then
11195 SAC_JAR=/usr/share/java/sac.jar
11197 if ! test -f $SAC_JAR; then
11198 AC_MSG_ERROR(sac.jar not found.)
11201 if test -z $LIBXML_JAR; then
11202 if test -f /usr/share/java/libxml-1.0.0.jar; then
11203 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
11204 elif test -f /usr/share/java/libxml.jar; then
11205 LIBXML_JAR=/usr/share/java/libxml.jar
11207 AC_MSG_ERROR(libxml.jar replacement not found.)
11209 elif ! test -f $LIBXML_JAR; then
11210 AC_MSG_ERROR(libxml.jar not found.)
11213 if test -z $FLUTE_JAR; then
11214 if test -f/usr/share/java/flute-1.3.0.jar; then
11215 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
11216 elif test -f /usr/share/java/flute.jar; then
11217 FLUTE_JAR=/usr/share/java/flute.jar
11219 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
11221 elif ! test -f $FLUTE_JAR; then
11222 AC_MSG_ERROR(flute-1.3.0.jar not found.)
11225 if test -z $JFREEREPORT_JAR; then
11226 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
11227 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
11228 elif test -f /usr/share/java/flow-engine.jar; then
11229 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
11231 AC_MSG_ERROR(jfreereport.jar replacement not found.)
11233 elif ! test -f $JFREEREPORT_JAR; then
11234 AC_MSG_ERROR(jfreereport.jar not found.)
11237 if test -z $LIBLAYOUT_JAR; then
11238 if test -f /usr/share/java/liblayout-0.2.9.jar; then
11239 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
11240 elif test -f /usr/share/java/liblayout.jar; then
11241 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
11243 AC_MSG_ERROR(liblayout.jar replacement not found.)
11245 elif ! test -f $LIBLAYOUT_JAR; then
11246 AC_MSG_ERROR(liblayout.jar not found.)
11249 if test -z $LIBLOADER_JAR; then
11250 if test -f /usr/share/java/libloader-1.0.0.jar; then
11251 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
11252 elif test -f /usr/share/java/libloader.jar; then
11253 LIBLOADER_JAR=/usr/share/java/libloader.jar
11255 AC_MSG_ERROR(libloader.jar replacement not found.)
11257 elif ! test -f $LIBLOADER_JAR; then
11258 AC_MSG_ERROR(libloader.jar not found.)
11261 if test -z $LIBFORMULA_JAR; then
11262 if test -f /usr/share/java/libformula-0.2.0.jar; then
11263 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
11264 elif test -f /usr/share/java/libformula.jar; then
11265 LIBFORMULA_JAR=/usr/share/java/libformula.jar
11267 AC_MSG_ERROR(libformula.jar replacement not found.)
11269 elif ! test -f $LIBFORMULA_JAR; then
11270 AC_MSG_ERROR(libformula.jar not found.)
11273 if test -z $LIBREPOSITORY_JAR; then
11274 if test -f /usr/share/java/librepository-1.0.0.jar; then
11275 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
11276 elif test -f /usr/share/java/librepository.jar; then
11277 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
11279 AC_MSG_ERROR(librepository.jar replacement not found.)
11281 elif ! test -f $LIBREPOSITORY_JAR; then
11282 AC_MSG_ERROR(librepository.jar not found.)
11285 if test -z $LIBFONTS_JAR; then
11286 if test -f /usr/share/java/libfonts-1.0.0.jar; then
11287 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
11288 elif test -f /usr/share/java/libfonts.jar; then
11289 LIBFONTS_JAR=/usr/share/java/libfonts.jar
11291 AC_MSG_ERROR(libfonts.jar replacement not found.)
11293 elif ! test -f $LIBFONTS_JAR; then
11294 AC_MSG_ERROR(libfonts.jar not found.)
11297 if test -z $LIBSERIALIZER_JAR; then
11298 if test -f /usr/share/java/libserializer-1.0.0.jar; then
11299 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
11300 elif test -f /usr/share/java/libserializer.jar; then
11301 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
11303 AC_MSG_ERROR(libserializer.jar replacement not found.)
11305 elif ! test -f $LIBSERIALIZER_JAR; then
11306 AC_MSG_ERROR(libserializer.jar not found.)
11309 if test -z $LIBBASE_JAR; then
11310 if test -f /usr/share/java/libbase-1.0.0.jar; then
11311 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
11312 elif test -f /usr/share/java/libbase.jar; then
11313 LIBBASE_JAR=/usr/share/java/libbase.jar
11315 AC_MSG_ERROR(libbase.jar replacement not found.)
11317 elif ! test -f $LIBBASE_JAR; then
11318 AC_MSG_ERROR(libbase.jar not found.)
11322 AC_MSG_RESULT([internal])
11323 SYSTEM_JFREEREPORT=
11324 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
11328 AC_MSG_RESULT([no])
11329 ENABLE_REPORTBUILDER=
11330 SYSTEM_JFREEREPORT=
11332 AC_SUBST(ENABLE_REPORTBUILDER)
11333 AC_SUBST(SYSTEM_JFREEREPORT)
11335 AC_SUBST(LIBXML_JAR)
11336 AC_SUBST(FLUTE_JAR)
11337 AC_SUBST(JFREEREPORT_JAR)
11338 AC_SUBST(LIBBASE_JAR)
11339 AC_SUBST(LIBLAYOUT_JAR)
11340 AC_SUBST(LIBLOADER_JAR)
11341 AC_SUBST(LIBFORMULA_JAR)
11342 AC_SUBST(LIBREPOSITORY_JAR)
11343 AC_SUBST(LIBFONTS_JAR)
11344 AC_SUBST(LIBSERIALIZER_JAR)
11346 # this has to be here because both the Wiki Publisher and the SRB use
11348 COMMONS_LOGGING_VERSION=1.2
11349 if test "$ENABLE_REPORTBUILDER" = "TRUE"; then
11350 AC_MSG_CHECKING([which Apache commons-* libs to use])
11351 if test "$with_system_apache_commons" = "yes"; then
11352 SYSTEM_APACHE_COMMONS=TRUE
11353 AC_MSG_RESULT([external])
11354 if test -z $COMMONS_LOGGING_JAR; then
11355 if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then
11356 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar
11357 elif test -f /usr/share/java/commons-logging.jar; then
11358 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar
11360 AC_MSG_ERROR(commons-logging.jar replacement not found.)
11362 elif ! test -f $COMMONS_LOGGING_JAR; then
11363 AC_MSG_ERROR(commons-logging.jar not found.)
11366 AC_MSG_RESULT([internal])
11367 SYSTEM_APACHE_COMMONS=
11368 BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS"
11372 AC_SUBST(SYSTEM_APACHE_COMMONS)
11373 AC_SUBST(COMMONS_LOGGING_JAR)
11374 AC_SUBST(COMMONS_LOGGING_VERSION)
11376 # scripting provider for BeanShell?
11377 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
11378 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
11379 AC_MSG_RESULT([yes])
11380 ENABLE_SCRIPTING_BEANSHELL=TRUE
11382 dnl ===================================================================
11383 dnl Check for system beanshell
11384 dnl ===================================================================
11385 AC_MSG_CHECKING([which beanshell to use])
11386 if test "$with_system_beanshell" = "yes"; then
11387 AC_MSG_RESULT([external])
11389 if test -z $BSH_JAR; then
11390 BSH_JAR=/usr/share/java/bsh.jar
11392 if ! test -f $BSH_JAR; then
11393 AC_MSG_ERROR(bsh.jar not found.)
11396 AC_MSG_RESULT([internal])
11398 BUILD_TYPE="$BUILD_TYPE BSH"
11401 AC_MSG_RESULT([no])
11402 ENABLE_SCRIPTING_BEANSHELL=
11403 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
11405 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
11406 AC_SUBST(SYSTEM_BSH)
11409 # scripting provider for JavaScript?
11410 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
11411 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
11412 AC_MSG_RESULT([yes])
11413 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
11415 dnl ===================================================================
11416 dnl Check for system rhino
11417 dnl ===================================================================
11418 AC_MSG_CHECKING([which rhino to use])
11419 if test "$with_system_rhino" = "yes"; then
11420 AC_MSG_RESULT([external])
11422 if test -z $RHINO_JAR; then
11423 RHINO_JAR=/usr/share/java/js.jar
11425 if ! test -f $RHINO_JAR; then
11426 AC_MSG_ERROR(js.jar not found.)
11429 AC_MSG_RESULT([internal])
11431 BUILD_TYPE="$BUILD_TYPE RHINO"
11435 AC_MSG_RESULT([no])
11436 ENABLE_SCRIPTING_JAVASCRIPT=
11437 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
11439 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
11440 AC_SUBST(SYSTEM_RHINO)
11441 AC_SUBST(RHINO_JAR)
11443 # This is only used in Qt5/KF5 checks to determine if /usr/lib64
11444 # paths should be added to library search path. So lets put all 64-bit
11447 case "$host_cpu" in
11448 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
11449 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
11450 supports_multilib="yes"
11457 dnl ===================================================================
11458 dnl QT5 Integration
11459 dnl ===================================================================
11465 QT5_GOBJECT_CFLAGS=""
11466 QT5_GOBJECT_LIBS=""
11467 QT5_HAVE_GOBJECT=""
11468 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
11469 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
11470 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
11472 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
11473 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
11475 if test -n "$supports_multilib"; then
11476 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
11479 qt5_test_include="QtWidgets/qapplication.h"
11480 qt5_test_library="libQt5Widgets.so"
11482 dnl Check for qmake5
11483 AC_PATH_PROGS( QMAKE5, [qmake-qt5 qmake], no, [$QT5DIR/bin:$PATH])
11484 if test "$QMAKE5" = "no"; then
11485 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
11487 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
11488 if test -z "$qmake5_test_ver"; then
11489 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
11491 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
11492 qt5_minimal_minor="6"
11493 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
11494 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
11496 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
11500 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
11501 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
11503 AC_MSG_CHECKING([for Qt5 headers])
11505 for inc_dir in $qt5_incdirs; do
11506 if test -r "$inc_dir/$qt5_test_include"; then
11507 qt5_incdir="$inc_dir"
11511 AC_MSG_RESULT([$qt5_incdir])
11512 if test "x$qt5_incdir" = "xno"; then
11513 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
11516 AC_MSG_CHECKING([for Qt5 libraries])
11518 for lib_dir in $qt5_libdirs; do
11519 if test -r "$lib_dir/$qt5_test_library"; then
11520 qt5_libdir="$lib_dir"
11524 AC_MSG_RESULT([$qt5_libdir])
11525 if test "x$qt5_libdir" = "xno"; then
11526 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
11529 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
11530 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11531 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
11533 if test "$USING_X11" = TRUE; then
11534 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
11535 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
11536 QT5_HAVE_XCB_ICCCM=1
11537 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
11539 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)])
11540 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
11542 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
11543 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
11545 AC_DEFINE(QT5_USING_X11)
11548 dnl Check for Meta Object Compiler
11550 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
11551 if test "$MOC5" = "no"; then
11552 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
11553 the root of your Qt installation by exporting QT5DIR before running "configure".])
11556 if test "$build_gstreamer_1_0" = "yes"; then
11557 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
11559 AC_DEFINE(QT5_HAVE_GOBJECT)
11561 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
11565 AC_SUBST(QT5_CFLAGS)
11568 AC_SUBST(QT5_GOBJECT_CFLAGS)
11569 AC_SUBST(QT5_GOBJECT_LIBS)
11570 AC_SUBST(QT5_HAVE_GOBJECT)
11572 dnl ===================================================================
11573 dnl KF5 Integration
11574 dnl ===================================================================
11578 KF5_CONFIG="kf5-config"
11579 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
11580 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
11582 if test "$OS" = "HAIKU"; then
11583 haiku_arch="`echo $RTL_ARCH | tr X x`"
11584 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
11585 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
11588 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
11589 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
11590 if test -n "$supports_multilib"; then
11591 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
11594 kf5_test_include="KF5/kcoreaddons_version.h"
11595 kf5_test_library="libKF5CoreAddons.so"
11596 kf5_libdirs="$qt5_libdir $kf5_libdirs"
11598 dnl kf5 KDE4 support compatibility installed
11599 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
11600 if test "$KF5_CONFIG" != "no"; then
11601 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
11602 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
11605 dnl Check for KF5 headers
11606 AC_MSG_CHECKING([for KF5 headers])
11608 for kf5_check in $kf5_incdirs; do
11609 if test -r "$kf5_check/$kf5_test_include"; then
11610 kf5_incdir="$kf5_check/KF5"
11614 AC_MSG_RESULT([$kf5_incdir])
11615 if test "x$kf5_incdir" = "xno"; then
11616 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
11619 dnl Check for KF5 libraries
11620 AC_MSG_CHECKING([for KF5 libraries])
11622 for kf5_check in $kf5_libdirs; do
11623 if test -r "$kf5_check/$kf5_test_library"; then
11624 kf5_libdir="$kf5_check"
11629 AC_MSG_RESULT([$kf5_libdir])
11630 if test "x$kf5_libdir" = "xno"; then
11631 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
11634 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"
11635 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
11636 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11638 if test "$USING_X11" = TRUE; then
11639 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
11642 AC_LANG_PUSH([C++])
11643 save_CXXFLAGS=$CXXFLAGS
11644 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
11645 AC_MSG_CHECKING([whether KDE is >= 5.0])
11646 AC_RUN_IFELSE([AC_LANG_SOURCE([[
11647 #include <kcoreaddons_version.h>
11649 int main(int argc, char **argv) {
11650 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
11653 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
11654 CXXFLAGS=$save_CXXFLAGS
11657 AC_SUBST(KF5_CFLAGS)
11660 dnl ===================================================================
11661 dnl Test whether to include Evolution 2 support
11662 dnl ===================================================================
11663 AC_MSG_CHECKING([whether to enable evolution 2 support])
11664 if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then
11665 AC_MSG_RESULT([yes])
11666 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
11667 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11668 FilterLibs "${GOBJECT_LIBS}"
11669 GOBJECT_LIBS="${filteredlibs}"
11670 ENABLE_EVOAB2="TRUE"
11673 AC_MSG_RESULT([no])
11675 AC_SUBST(ENABLE_EVOAB2)
11676 AC_SUBST(GOBJECT_CFLAGS)
11677 AC_SUBST(GOBJECT_LIBS)
11679 dnl ===================================================================
11680 dnl Test which themes to include
11681 dnl ===================================================================
11682 AC_MSG_CHECKING([which themes to include])
11683 # if none given use default subset of available themes
11684 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
11685 with_theme="breeze breeze_dark breeze_dark_svg breeze_svg colibre colibre_svg elementary elementary_svg karasa_jaga karasa_jaga_svg sifr sifr_svg sifr_dark sifr_dark_svg tango"
11689 if test "x$with_theme" != "xno"; then
11690 for theme in $with_theme; do
11692 breeze|breeze_dark|breeze_dark_svg|breeze_svg|colibre|colibre_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg|sifr|sifr_svg|sifr_dark|sifr_dark_svg|tango) real_theme="$theme" ;;
11693 default) real_theme=colibre ;;
11694 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
11696 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
11699 AC_MSG_RESULT([$WITH_THEMES])
11700 AC_SUBST([WITH_THEMES])
11701 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
11702 for theme in $with_theme; do
11704 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
11709 dnl ===================================================================
11710 dnl Test whether to integrate helppacks into the product's installer
11711 dnl ===================================================================
11712 AC_MSG_CHECKING([for helppack integration])
11713 if test "$with_helppack_integration" = "no"; then
11714 AC_MSG_RESULT([no integration])
11716 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
11717 AC_MSG_RESULT([integration])
11720 ###############################################################################
11721 # Extensions checking
11722 ###############################################################################
11723 AC_MSG_CHECKING([for extensions integration])
11724 if test "x$enable_extension_integration" != "xno"; then
11725 WITH_EXTENSION_INTEGRATION=TRUE
11726 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
11727 AC_MSG_RESULT([yes, use integration])
11729 WITH_EXTENSION_INTEGRATION=
11730 AC_MSG_RESULT([no, do not integrate])
11732 AC_SUBST(WITH_EXTENSION_INTEGRATION)
11734 dnl Should any extra extensions be included?
11735 dnl There are standalone tests for each of these below.
11736 WITH_EXTRA_EXTENSIONS=
11737 AC_SUBST([WITH_EXTRA_EXTENSIONS])
11739 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
11740 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
11741 if test "x$with_java" != "xno"; then
11742 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
11743 libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
11746 AC_MSG_CHECKING([whether to build opens___.ttf])
11747 if test "$enable_build_opensymbol" = "yes"; then
11748 AC_MSG_RESULT([yes])
11749 AC_PATH_PROG(FONTFORGE, fontforge)
11750 if test -z "$FONTFORGE"; then
11751 AC_MSG_ERROR([fontforge not installed])
11754 AC_MSG_RESULT([no])
11755 OPENSYMBOL_TTF=884ed41809687c3e168fc7c19b16585149ff058eca79acbf3ee784f6630704cc-opens___.ttf
11756 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
11758 AC_SUBST(OPENSYMBOL_TTF)
11759 AC_SUBST(FONTFORGE)
11761 dnl ===================================================================
11762 dnl Test whether to include fonts
11763 dnl ===================================================================
11764 AC_MSG_CHECKING([whether to include third-party fonts])
11765 if test "$with_fonts" != "no"; then
11766 AC_MSG_RESULT([yes])
11768 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
11769 AC_DEFINE(HAVE_MORE_FONTS)
11771 AC_MSG_RESULT([no])
11773 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
11775 AC_SUBST(WITH_FONTS)
11777 dnl Test whether to include more Google Noto fonts
11778 dnl ===================================================================
11779 AC_MSG_CHECKING([whether to include more Google Noto fonts])
11780 if test "$enable_noto_font" = "" -o "$enable_noto_font" = "no" -o "$with_fonts" = "no"; then
11781 AC_MSG_RESULT([no])
11784 AC_MSG_RESULT([yes])
11785 WITH_NOTO_FONT=TRUE
11786 BUILD_TYPE="$BUILD_TYPE NOTO_FONT"
11787 SCPDEFS="$SCPDEFS -DWITH_NOTO_FONT"
11789 AC_SUBST(WITH_NOTO_FONT)
11791 dnl ===================================================================
11792 dnl Test whether to enable online update service
11793 dnl ===================================================================
11794 AC_MSG_CHECKING([whether to enable online update])
11795 ENABLE_ONLINE_UPDATE=
11796 ENABLE_ONLINE_UPDATE_MAR=
11798 if test "$enable_online_update" = ""; then
11799 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
11800 AC_MSG_RESULT([yes])
11801 ENABLE_ONLINE_UPDATE="TRUE"
11803 AC_MSG_RESULT([no])
11806 if test "$enable_online_update" = "mar"; then
11807 AC_MSG_RESULT([yes - MAR-based online update])
11808 ENABLE_ONLINE_UPDATE_MAR="TRUE"
11809 if test "$with_update_config" = ""; then
11810 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
11812 UPDATE_CONFIG="$with_update_config"
11813 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
11814 elif test "$enable_online_update" = "yes"; then
11815 AC_MSG_RESULT([yes])
11816 ENABLE_ONLINE_UPDATE="TRUE"
11818 AC_MSG_RESULT([no])
11821 AC_SUBST(ENABLE_ONLINE_UPDATE)
11822 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
11823 AC_SUBST(UPDATE_CONFIG)
11825 dnl ===================================================================
11826 dnl Test whether we need bzip2
11827 dnl ===================================================================
11829 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
11830 AC_MSG_CHECKING([whether to use system bzip2])
11831 if test "$with_system_bzip2" = yes; then
11833 AC_MSG_RESULT([yes])
11834 PKG_CHECK_MODULES(BZIP2, bzip2)
11835 FilterLibs "${BZIP2_LIBS}"
11836 BZIP2_LIBS="${filteredlibs}"
11838 AC_MSG_RESULT([no])
11839 BUILD_TYPE="$BUILD_TYPE BZIP2"
11842 AC_SUBST(SYSTEM_BZIP2)
11843 AC_SUBST(BZIP2_CFLAGS)
11844 AC_SUBST(BZIP2_LIBS)
11846 dnl ===================================================================
11847 dnl Test whether to enable extension update
11848 dnl ===================================================================
11849 AC_MSG_CHECKING([whether to enable extension update])
11850 ENABLE_EXTENSION_UPDATE=
11851 if test "x$enable_extension_update" = "xno"; then
11852 AC_MSG_RESULT([no])
11854 AC_MSG_RESULT([yes])
11855 ENABLE_EXTENSION_UPDATE="TRUE"
11856 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
11857 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
11859 AC_SUBST(ENABLE_EXTENSION_UPDATE)
11862 dnl ===================================================================
11863 dnl Test whether to create MSI with LIMITUI=1 (silent install)
11864 dnl ===================================================================
11865 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
11866 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
11867 AC_MSG_RESULT([no])
11870 AC_MSG_RESULT([yes])
11871 ENABLE_SILENT_MSI=TRUE
11872 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
11874 AC_SUBST(ENABLE_SILENT_MSI)
11876 AC_MSG_CHECKING([whether and how to use Xinerama])
11877 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
11878 if test "$x_libraries" = "default_x_libraries"; then
11879 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
11880 if test "x$XINERAMALIB" = x; then
11881 XINERAMALIB="/usr/lib"
11884 XINERAMALIB="$x_libraries"
11886 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
11887 # we have both versions, let the user decide but use the dynamic one
11890 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
11891 XINERAMA_LINK=dynamic
11893 XINERAMA_LINK=static
11895 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
11896 # we have only the dynamic version
11898 XINERAMA_LINK=dynamic
11899 elif test -e "$XINERAMALIB/libXinerama.a"; then
11901 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
11903 XINERAMA_LINK=static
11913 if test "$USE_XINERAMA" = "TRUE"; then
11914 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
11915 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
11916 [AC_MSG_ERROR(Xinerama header not found.)], [])
11917 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
11918 if test "x$XEXTLIB" = x; then
11919 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
11921 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
11922 if test "$_os" = "FreeBSD"; then
11923 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
11925 if test "$_os" = "Linux"; then
11926 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
11928 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
11929 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
11931 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
11936 AC_MSG_RESULT([no])
11938 AC_SUBST(USE_XINERAMA)
11939 AC_SUBST(XINERAMA_LINK)
11941 dnl ===================================================================
11942 dnl Test whether to build cairo or rely on the system version
11943 dnl ===================================================================
11945 if test "$USING_X11" = TRUE; then
11946 # Used in vcl/Library_vclplug_gen.mk
11950 if test "$test_cairo" = "yes"; then
11951 AC_MSG_CHECKING([whether to use the system cairo])
11953 : ${with_system_cairo:=$with_system_libs}
11954 if test "$with_system_cairo" = "yes"; then
11956 AC_MSG_RESULT([yes])
11958 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
11959 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11960 FilterLibs "${CAIRO_LIBS}"
11961 CAIRO_LIBS="${filteredlibs}"
11963 if test "$test_xrender" = "yes"; then
11964 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
11966 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
11967 #ifdef PictStandardA8
11971 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
11977 AC_MSG_RESULT([no])
11979 BUILD_TYPE="$BUILD_TYPE CAIRO"
11983 AC_SUBST(SYSTEM_CAIRO)
11984 AC_SUBST(CAIRO_CFLAGS)
11985 AC_SUBST(CAIRO_LIBS)
11987 dnl ===================================================================
11988 dnl Test whether to use avahi
11989 dnl ===================================================================
11990 if test "$_os" = "WINNT"; then
11991 # Windows uses bundled mDNSResponder
11992 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
11993 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
11994 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
11995 [ENABLE_AVAHI="TRUE"])
11996 AC_DEFINE(HAVE_FEATURE_AVAHI)
11997 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11998 FilterLibs "${AVAHI_LIBS}"
11999 AVAHI_LIBS="${filteredlibs}"
12002 AC_SUBST(ENABLE_AVAHI)
12003 AC_SUBST(AVAHI_CFLAGS)
12004 AC_SUBST(AVAHI_LIBS)
12006 dnl ===================================================================
12007 dnl Test whether to use liblangtag
12008 dnl ===================================================================
12010 AC_MSG_CHECKING([whether to use system liblangtag])
12011 if test "$with_system_liblangtag" = yes; then
12012 SYSTEM_LIBLANGTAG=TRUE
12013 AC_MSG_RESULT([yes])
12014 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
12015 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
12016 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
12017 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
12018 FilterLibs "${LIBLANGTAG_LIBS}"
12019 LIBLANGTAG_LIBS="${filteredlibs}"
12022 AC_MSG_RESULT([no])
12023 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
12024 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
12025 if test "$COM" = "MSC"; then
12026 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
12028 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
12031 AC_SUBST(SYSTEM_LIBLANGTAG)
12032 AC_SUBST(LIBLANGTAG_CFLAGS)
12033 AC_SUBST(LIBLANGTAG_LIBS)
12035 dnl ===================================================================
12036 dnl Test whether to build libpng or rely on the system version
12037 dnl ===================================================================
12039 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
12041 dnl ===================================================================
12042 dnl Check for runtime JVM search path
12043 dnl ===================================================================
12044 if test "$ENABLE_JAVA" != ""; then
12045 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
12046 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
12047 AC_MSG_RESULT([yes])
12048 if ! test -d "$with_jvm_path"; then
12049 AC_MSG_ERROR(["$with_jvm_path" not a directory])
12051 if ! test -d "$with_jvm_path"jvm; then
12052 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
12054 JVM_ONE_PATH_CHECK="$with_jvm_path"
12055 AC_SUBST(JVM_ONE_PATH_CHECK)
12057 AC_MSG_RESULT([no])
12061 dnl ===================================================================
12062 dnl Test for the presence of Ant and that it works
12063 dnl ===================================================================
12065 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE"; then
12066 ANT_HOME=; export ANT_HOME
12067 WITH_ANT_HOME=; export WITH_ANT_HOME
12068 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
12069 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
12070 if test "$_os" = "WINNT"; then
12071 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
12073 with_ant_home="$LODE_HOME/opt/ant"
12075 elif test -x "$LODE_HOME/opt/bin/ant" ; then
12076 with_ant_home="$LODE_HOME/opt/ant"
12079 if test -z "$with_ant_home"; then
12080 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
12082 if test "$_os" = "WINNT"; then
12083 # AC_PATH_PROGS needs unix path
12084 with_ant_home=`cygpath -u "$with_ant_home"`
12086 AbsolutePath "$with_ant_home"
12087 with_ant_home=$absolute_path
12088 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
12089 WITH_ANT_HOME=$with_ant_home
12090 ANT_HOME=$with_ant_home
12093 if test -z "$ANT"; then
12094 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
12096 # resolve relative or absolute symlink
12097 while test -h "$ANT"; do
12099 a_basename=`basename "$ANT"`
12100 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
12101 cd "`dirname "$ANT"`"
12102 cd "`dirname "$a_script"`"
12103 ANT="`pwd`"/"`basename "$a_script"`"
12107 AC_MSG_CHECKING([if $ANT works])
12108 mkdir -p conftest.dir
12111 cat > conftest.java << EOF
12112 public class conftest {
12113 int testmethod(int a, int b) {
12119 cat > conftest.xml << EOF
12120 <project name="conftest" default="conftest">
12121 <target name="conftest">
12122 <javac srcdir="." includes="conftest.java">
12128 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
12129 if test $? = 0 -a -f ./conftest.class; then
12130 AC_MSG_RESULT([Ant works])
12131 if test -z "$WITH_ANT_HOME"; then
12132 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
12133 if test -z "$ANT_HOME"; then
12134 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
12137 ANT_HOME="$WITH_ANT_HOME"
12140 echo "configure: Ant test failed" >&5
12141 cat conftest.java >&5
12142 cat conftest.xml >&5
12143 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
12146 rm -fr conftest.dir
12148 if test -z "$ANT_HOME"; then
12149 ANT_HOME="NO_ANT_HOME"
12151 PathFormat "$ANT_HOME"
12152 ANT_HOME="$formatted_path"
12154 ANT="$formatted_path"
12159 dnl Checking for ant.jar
12160 if test "$ANT_HOME" != "NO_ANT_HOME"; then
12161 AC_MSG_CHECKING([Ant lib directory])
12162 if test -f $ANT_HOME/lib/ant.jar; then
12163 ANT_LIB="$ANT_HOME/lib"
12165 if test -f $ANT_HOME/ant.jar; then
12166 ANT_LIB="$ANT_HOME"
12168 if test -f /usr/share/java/ant.jar; then
12169 ANT_LIB=/usr/share/java
12171 if test -f /usr/share/ant-core/lib/ant.jar; then
12172 ANT_LIB=/usr/share/ant-core/lib
12174 if test -f $ANT_HOME/lib/ant/ant.jar; then
12175 ANT_LIB="$ANT_HOME/lib/ant"
12177 if test -f /usr/share/lib/ant/ant.jar; then
12178 ANT_LIB=/usr/share/lib/ant
12180 AC_MSG_ERROR([Ant libraries not found!])
12187 PathFormat "$ANT_LIB"
12188 ANT_LIB="$formatted_path"
12189 AC_MSG_RESULT([Ant lib directory found.])
12194 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
12196 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
12197 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
12198 ant_version_major=`echo $ant_version | cut -d. -f1`
12199 ant_version_minor=`echo $ant_version | cut -d. -f2`
12200 echo "configure: ant_version $ant_version " >&5
12201 echo "configure: ant_version_major $ant_version_major " >&5
12202 echo "configure: ant_version_minor $ant_version_minor " >&5
12203 if test "$ant_version_major" -ge "2"; then
12204 AC_MSG_RESULT([yes, $ant_version])
12205 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
12206 AC_MSG_RESULT([yes, $ant_version])
12208 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
12211 rm -f conftest* core core.* *.core
12215 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no"; then
12216 AC_MSG_CHECKING([for JUnit 4])
12217 if test "$with_junit" = "yes"; then
12218 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
12219 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
12220 elif test -e /usr/share/java/junit4.jar; then
12221 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
12223 if test -e /usr/share/lib/java/junit.jar; then
12224 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
12226 OOO_JUNIT_JAR=/usr/share/java/junit.jar
12230 OOO_JUNIT_JAR=$with_junit
12232 if test "$_os" = "WINNT"; then
12233 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
12235 printf 'import org.junit.Before;' > conftest.java
12236 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
12237 AC_MSG_RESULT([$OOO_JUNIT_JAR])
12240 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
12241 specify its pathname via --with-junit=..., or disable it via --without-junit])
12243 rm -f conftest.class conftest.java
12244 if test $OOO_JUNIT_JAR != ""; then
12245 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
12248 AC_SUBST(OOO_JUNIT_JAR)
12251 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no"; then
12252 AC_MSG_CHECKING([for included Hamcrest])
12253 printf 'import org.hamcrest.BaseDescription;' > conftest.java
12254 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
12255 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
12257 AC_MSG_RESULT([Not included])
12258 AC_MSG_CHECKING([for standalone hamcrest jar.])
12259 if test "$with_hamcrest" = "yes"; then
12260 if test -e /usr/share/lib/java/hamcrest.jar; then
12261 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
12262 elif test -e /usr/share/java/hamcrest/core.jar; then
12263 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
12265 HAMCREST_JAR=/usr/share/java/hamcrest.jar
12268 HAMCREST_JAR=$with_hamcrest
12270 if test "$_os" = "WINNT"; then
12271 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
12273 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
12274 AC_MSG_RESULT([$HAMCREST_JAR])
12276 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),
12277 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
12280 rm -f conftest.class conftest.java
12282 AC_SUBST(HAMCREST_JAR)
12288 # check for wget and curl
12293 if test "$enable_fetch_external" != "no"; then
12295 CURL=`which curl 2>/dev/null`
12297 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
12299 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
12300 if test $? -eq 0; then
12306 if test -z "$WGET" -a -z "$CURL"; then
12307 AC_MSG_ERROR([neither wget nor curl found!])
12316 # check for sha256sum
12320 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
12321 eval "$i -a 256 --version" > /dev/null 2>&1
12323 if test $ret -eq 0; then
12324 SHA256SUM="$i -a 256"
12329 if test -z "$SHA256SUM"; then
12330 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
12331 eval "$i --version" > /dev/null 2>&1
12333 if test $ret -eq 0; then
12340 if test -z "$SHA256SUM"; then
12341 AC_MSG_ERROR([no sha256sum found!])
12344 AC_SUBST(SHA256SUM)
12346 dnl ===================================================================
12347 dnl Dealing with l10n options
12348 dnl ===================================================================
12349 AC_MSG_CHECKING([which languages to be built])
12350 # get list of all languages
12351 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
12352 # the sed command does the following:
12353 # + if a line ends with a backslash, append the next line to it
12354 # + adds " on the beginning of the value (after =)
12355 # + adds " at the end of the value
12356 # + removes en-US; we want to put it on the beginning
12357 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
12358 [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)]
12359 ALL_LANGS="en-US $completelangiso"
12360 # check the configured localizations
12361 WITH_LANG="$with_lang"
12363 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
12364 # (Norwegian is "nb" and "nn".)
12365 if test "$WITH_LANG" = "no"; then
12369 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
12370 AC_MSG_RESULT([en-US])
12372 AC_MSG_RESULT([$WITH_LANG])
12373 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
12374 if test -z "$MSGFMT"; then
12375 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
12376 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
12377 elif test -x "/opt/lo/bin/msgfmt"; then
12378 MSGFMT="/opt/lo/bin/msgfmt"
12380 AC_CHECK_PROGS(MSGFMT, [msgfmt])
12381 if test -z "$MSGFMT"; then
12382 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
12386 if test -z "$MSGUNIQ"; then
12387 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
12388 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
12389 elif test -x "/opt/lo/bin/msguniq"; then
12390 MSGUNIQ="/opt/lo/bin/msguniq"
12392 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
12393 if test -z "$MSGUNIQ"; then
12394 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
12401 # check that the list is valid
12402 for lang in $WITH_LANG; do
12403 test "$lang" = "ALL" && continue
12404 # need to check for the exact string, so add space before and after the list of all languages
12405 for vl in $ALL_LANGS; do
12406 if test "$vl" = "$lang"; then
12410 if test "$vl" != "$lang"; then
12411 # if you're reading this - you prolly quoted your languages remove the quotes ...
12412 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
12415 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
12416 echo $WITH_LANG | grep -q en-US
12417 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
12419 # list with substituted ALL
12420 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
12421 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
12422 test "$WITH_LANG" = "en-US" && WITH_LANG=
12423 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
12424 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
12425 ALL_LANGS=`echo $ALL_LANGS qtz`
12427 AC_SUBST(ALL_LANGS)
12428 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
12429 AC_SUBST(WITH_LANG)
12430 AC_SUBST(WITH_LANG_LIST)
12431 AC_SUBST(GIT_NEEDED_SUBMODULES)
12433 WITH_POOR_HELP_LOCALIZATIONS=
12434 if test -d "$SRC_ROOT/translations/source"; then
12435 for l in `ls -1 $SRC_ROOT/translations/source`; do
12436 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
12437 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
12441 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
12443 if test -n "$with_locales"; then
12444 WITH_LOCALES="$with_locales"
12446 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
12447 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
12448 # config_host/config_locales.h.in
12449 for locale in $WITH_LOCALES; do
12452 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
12456 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
12459 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
12464 AC_DEFINE(WITH_LOCALE_ALL)
12466 AC_SUBST(WITH_LOCALES)
12468 dnl git submodule update --reference
12469 dnl ===================================================================
12470 if test -n "${GIT_REFERENCE_SRC}"; then
12471 for repo in ${GIT_NEEDED_SUBMODULES}; do
12472 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
12473 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
12477 AC_SUBST(GIT_REFERENCE_SRC)
12479 dnl git submodules linked dirs
12480 dnl ===================================================================
12481 if test -n "${GIT_LINK_SRC}"; then
12482 for repo in ${GIT_NEEDED_SUBMODULES}; do
12483 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
12484 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
12488 AC_SUBST(GIT_LINK_SRC)
12491 dnl ===================================================================
12492 AC_MSG_CHECKING([for alternative branding images directory])
12493 # initialize mapped arrays
12494 BRAND_INTRO_IMAGES="flat_logo.svg intro.png intro-highres.png"
12495 brand_files="$BRAND_INTRO_IMAGES about.svg"
12497 if test -z "$with_branding" -o "$with_branding" = "no"; then
12498 AC_MSG_RESULT([none])
12499 DEFAULT_BRAND_IMAGES="$brand_files"
12501 if ! test -d $with_branding ; then
12502 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
12504 AC_MSG_RESULT([$with_branding])
12505 CUSTOM_BRAND_DIR="$with_branding"
12506 for lfile in $brand_files
12508 if ! test -f $with_branding/$lfile ; then
12509 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
12510 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
12512 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
12515 check_for_progress="yes"
12518 AC_SUBST([BRAND_INTRO_IMAGES])
12519 AC_SUBST([CUSTOM_BRAND_DIR])
12520 AC_SUBST([CUSTOM_BRAND_IMAGES])
12521 AC_SUBST([DEFAULT_BRAND_IMAGES])
12524 AC_MSG_CHECKING([for 'intro' progress settings])
12528 PROGRESSFRAMECOLOR=
12530 PROGRESSTEXTBASELINE=
12532 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
12533 source "$with_branding/progress.conf"
12534 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
12536 AC_MSG_RESULT([none])
12539 AC_SUBST(PROGRESSBARCOLOR)
12540 AC_SUBST(PROGRESSSIZE)
12541 AC_SUBST(PROGRESSPOSITION)
12542 AC_SUBST(PROGRESSFRAMECOLOR)
12543 AC_SUBST(PROGRESSTEXTCOLOR)
12544 AC_SUBST(PROGRESSTEXTBASELINE)
12547 AC_MSG_CHECKING([for extra build ID])
12548 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
12549 EXTRA_BUILDID="$with_extra_buildid"
12551 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
12552 if test -n "$EXTRA_BUILDID" ; then
12553 AC_MSG_RESULT([$EXTRA_BUILDID])
12555 AC_MSG_RESULT([not set])
12557 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
12560 AC_MSG_CHECKING([for vendor])
12561 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
12562 OOO_VENDOR="$USERNAME"
12564 if test -z "$OOO_VENDOR"; then
12568 if test -z "$OOO_VENDOR"; then
12569 OOO_VENDOR="`id -u -n`"
12572 AC_MSG_RESULT([not set, using $OOO_VENDOR])
12574 OOO_VENDOR="$with_vendor"
12575 AC_MSG_RESULT([$OOO_VENDOR])
12577 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
12578 AC_SUBST(OOO_VENDOR)
12580 if test "$_os" = "Android" ; then
12581 ANDROID_PACKAGE_NAME=
12582 AC_MSG_CHECKING([for Android package name])
12583 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
12584 if test -n "$ENABLE_DEBUG"; then
12585 # Default to the package name that makes ndk-gdb happy.
12586 ANDROID_PACKAGE_NAME="org.libreoffice"
12588 ANDROID_PACKAGE_NAME="org.example.libreoffice"
12591 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
12593 ANDROID_PACKAGE_NAME="$with_android_package_name"
12594 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
12596 AC_SUBST(ANDROID_PACKAGE_NAME)
12599 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
12600 if test "$with_compat_oowrappers" = "yes"; then
12601 WITH_COMPAT_OOWRAPPERS=TRUE
12604 WITH_COMPAT_OOWRAPPERS=
12607 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
12609 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{gsub(" ", "", $0);print tolower($0)}'`
12610 AC_MSG_CHECKING([for install dirname])
12611 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
12612 INSTALLDIRNAME="$with_install_dirname"
12614 AC_MSG_RESULT([$INSTALLDIRNAME])
12615 AC_SUBST(INSTALLDIRNAME)
12617 AC_MSG_CHECKING([for prefix])
12618 test "x$prefix" = xNONE && prefix=$ac_default_prefix
12619 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
12620 PREFIXDIR="$prefix"
12621 AC_MSG_RESULT([$PREFIXDIR])
12622 AC_SUBST(PREFIXDIR)
12624 LIBDIR=[$(eval echo $(eval echo $libdir))]
12627 DATADIR=[$(eval echo $(eval echo $datadir))]
12630 MANDIR=[$(eval echo $(eval echo $mandir))]
12633 DOCDIR=[$(eval echo $(eval echo $docdir))]
12636 BINDIR=[$(eval echo $(eval echo $bindir))]
12639 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
12640 AC_SUBST(INSTALLDIR)
12642 TESTINSTALLDIR="${BUILDDIR}/test-install"
12643 AC_SUBST(TESTINSTALLDIR)
12646 # ===================================================================
12647 # OAuth2 id and secrets
12648 # ===================================================================
12650 AC_MSG_CHECKING([for Google Drive client id and secret])
12651 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
12652 AC_MSG_RESULT([not set])
12653 GDRIVE_CLIENT_ID="\"\""
12654 GDRIVE_CLIENT_SECRET="\"\""
12656 AC_MSG_RESULT([set])
12657 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
12658 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
12660 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
12661 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
12663 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
12664 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
12665 AC_MSG_RESULT([not set])
12666 ALFRESCO_CLOUD_CLIENT_ID="\"\""
12667 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
12669 AC_MSG_RESULT([set])
12670 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
12671 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
12673 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
12674 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
12676 AC_MSG_CHECKING([for OneDrive client id and secret])
12677 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
12678 AC_MSG_RESULT([not set])
12679 ONEDRIVE_CLIENT_ID="\"\""
12680 ONEDRIVE_CLIENT_SECRET="\"\""
12682 AC_MSG_RESULT([set])
12683 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
12684 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
12686 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
12687 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
12690 dnl ===================================================================
12691 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
12692 dnl --enable-dependency-tracking configure option
12693 dnl ===================================================================
12694 AC_MSG_CHECKING([whether to enable dependency tracking])
12695 if test "$enable_dependency_tracking" = "no"; then
12697 AC_MSG_RESULT([no])
12699 AC_MSG_RESULT([yes])
12703 dnl ===================================================================
12704 dnl Number of CPUs to use during the build
12705 dnl ===================================================================
12706 AC_MSG_CHECKING([for number of processors to use])
12707 # plain --with-parallelism is just the default
12708 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
12709 if test "$with_parallelism" = "no"; then
12712 PARALLELISM=$with_parallelism
12715 if test "$enable_icecream" = "yes"; then
12720 Darwin|FreeBSD|NetBSD|OpenBSD)
12721 PARALLELISM=`sysctl -n hw.ncpu`
12725 PARALLELISM=`getconf _NPROCESSORS_ONLN`
12727 # what else than above does profit here *and* has /proc?
12729 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
12733 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
12734 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
12738 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
12739 if test -z "$with_parallelism"; then
12740 AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
12741 add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
12744 add_warning "make 3.81 is prone to crashes with parallelism > 1. Since --with-parallelism was explicitly given, it is honored, but do not complain when make segfaults on you."
12748 if test $PARALLELISM -eq 0; then
12749 AC_MSG_RESULT([explicit make -j option needed])
12751 AC_MSG_RESULT([$PARALLELISM])
12753 AC_SUBST(PARALLELISM)
12755 IWYU_PATH="$with_iwyu"
12756 AC_SUBST(IWYU_PATH)
12757 if test ! -z "$IWYU_PATH"; then
12758 if test ! -f "$IWYU_PATH"; then
12759 AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
12764 # Set up ILIB for MSVC build
12767 if test "$build_os" = "cygwin"; then
12769 if test -n "$JAVA_HOME"; then
12770 ILIB="$ILIB;$JAVA_HOME/lib"
12773 if test "$BITNESS_OVERRIDE" = 64; then
12774 ILIB="$ILIB;$COMPATH/lib/x64"
12775 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/x64"
12776 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/x64"
12777 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/x64"
12778 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
12779 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/x64"
12780 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/x64"
12782 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/x64"
12783 ucrtlibpath_formatted=$formatted_path
12784 ILIB="$ILIB;$ucrtlibpath_formatted"
12785 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
12787 ILIB="$ILIB;$COMPATH/lib/x86"
12788 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/x86"
12789 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib"
12790 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib"
12791 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
12792 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/x86"
12793 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/x86"
12795 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/x86"
12796 ucrtlibpath_formatted=$formatted_path
12797 ILIB="$ILIB;$ucrtlibpath_formatted"
12798 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
12800 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
12801 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
12803 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WINDOWS_SDK_ARCH"
12809 # ===================================================================
12810 # Creating bigger shared library to link against
12811 # ===================================================================
12812 AC_MSG_CHECKING([whether to create huge library])
12815 if test $_os = iOS -o $_os = Android; then
12816 # Never any point in mergelibs for these as we build just static
12817 # libraries anyway...
12818 enable_mergelibs=no
12821 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
12822 if test $_os != Linux -a $_os != WINNT; then
12823 add_warning "--enable-mergelibs is not tested for this platform"
12826 AC_MSG_RESULT([yes])
12828 AC_MSG_RESULT([no])
12830 AC_SUBST([MERGELIBS])
12832 dnl ===================================================================
12833 dnl icerun is a wrapper that stops us spawning tens of processes
12834 dnl locally - for tools that can't be executed on the compile cluster
12835 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
12836 dnl ===================================================================
12837 AC_MSG_CHECKING([whether to use icerun wrapper])
12839 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
12840 ICECREAM_RUN=icerun
12841 AC_MSG_RESULT([yes])
12843 AC_MSG_RESULT([no])
12845 AC_SUBST(ICECREAM_RUN)
12847 dnl ===================================================================
12848 dnl Setup the ICECC_VERSION for the build the same way it was set for
12849 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
12850 dnl ===================================================================
12851 x_ICECC_VERSION=[\#]
12852 if test -n "$ICECC_VERSION" ; then
12855 AC_SUBST(x_ICECC_VERSION)
12856 AC_SUBST(ICECC_VERSION)
12858 dnl ===================================================================
12860 AC_MSG_CHECKING([MPL subset])
12863 if test "$enable_mpl_subset" = "yes"; then
12865 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12867 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
12870 if test "$warn_report" = "true"; then
12871 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
12873 if test "x$enable_postgresql_sdbc" != "xno"; then
12874 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
12876 if test "$enable_lotuswordpro" = "yes"; then
12877 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
12879 if test "$WITH_WEBDAV" = "neon"; then
12880 AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
12882 if test -n "$ENABLE_POPPLER"; then
12883 if test "x$SYSTEM_POPPLER" = "x"; then
12884 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
12887 # cf. m4/libo_check_extension.m4
12888 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
12889 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
12891 for theme in $WITH_THEMES; do
12893 breeze|breeze_dark|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #blacklist of icon themes under GPL or LGPL
12894 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=tango]) ;;
12899 ENABLE_OPENGL_TRANSITIONS=
12901 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
12902 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
12906 AC_DEFINE(MPL_HAVE_SUBSET)
12907 AC_MSG_RESULT([only])
12909 AC_MSG_RESULT([no restrictions])
12911 AC_SUBST(MPL_SUBSET)
12913 dnl ===================================================================
12915 AC_MSG_CHECKING([formula logger])
12916 ENABLE_FORMULA_LOGGER=
12918 if test "x$enable_formula_logger" = "xyes"; then
12919 AC_MSG_RESULT([yes])
12920 AC_DEFINE(ENABLE_FORMULA_LOGGER)
12921 ENABLE_FORMULA_LOGGER=TRUE
12922 elif test -n "$ENABLE_DBGUTIL" ; then
12923 AC_MSG_RESULT([yes])
12924 AC_DEFINE(ENABLE_FORMULA_LOGGER)
12925 ENABLE_FORMULA_LOGGER=TRUE
12927 AC_MSG_RESULT([no])
12930 AC_SUBST(ENABLE_FORMULA_LOGGER)
12932 dnl ===================================================================
12933 dnl Setting up the environment.
12934 dnl ===================================================================
12935 AC_MSG_NOTICE([setting up the build environment variables...])
12939 if test "$build_os" = "cygwin"; then
12940 if test -d "$COMPATH/atlmfc/lib/spectre"; then
12941 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
12942 ATL_INCLUDE="$COMPATH/atlmfc/include"
12943 elif test -d "$COMPATH/atlmfc/lib"; then
12944 ATL_LIB="$COMPATH/atlmfc/lib"
12945 ATL_INCLUDE="$COMPATH/atlmfc/include"
12947 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
12948 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
12950 if test "$BITNESS_OVERRIDE" = 64; then
12951 ATL_LIB="$ATL_LIB/x64"
12953 ATL_LIB="$ATL_LIB/x86"
12955 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
12956 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
12958 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
12959 PathFormat "/usr/bin/find.exe"
12960 FIND="$formatted_path"
12961 PathFormat "/usr/bin/sort.exe"
12962 SORT="$formatted_path"
12963 PathFormat "/usr/bin/grep.exe"
12964 WIN_GREP="$formatted_path"
12965 PathFormat "/usr/bin/ls.exe"
12966 WIN_LS="$formatted_path"
12967 PathFormat "/usr/bin/touch.exe"
12968 WIN_TOUCH="$formatted_path"
12974 AC_SUBST(ATL_INCLUDE)
12980 AC_SUBST(WIN_TOUCH)
12982 AC_SUBST(BUILD_TYPE)
12987 PERL="$formatted_path"
12990 if test -n "$TMPDIR"; then
12991 TEMP_DIRECTORY="$TMPDIR"
12993 TEMP_DIRECTORY="/tmp"
12995 if test "$build_os" = "cygwin"; then
12996 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
12998 AC_SUBST(TEMP_DIRECTORY)
13000 # setup the PATH for the environment
13001 if test -n "$LO_PATH_FOR_BUILD"; then
13002 LO_PATH="$LO_PATH_FOR_BUILD"
13008 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
13009 if test "$ENABLE_JAVA" != ""; then
13010 pathmunge "$JAVA_HOME/bin" "after"
13015 # Win32 make needs native paths
13016 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
13017 LO_PATH=`cygpath -p -m "$PATH"`
13019 if test "$BITNESS_OVERRIDE" = 64; then
13020 # needed for msi packaging
13021 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
13023 # .NET 4.6 and higher don't have bin directory
13024 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
13025 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
13027 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
13028 pathmunge "$CSC_PATH" "before"
13029 pathmunge "$MIDL_PATH" "before"
13030 pathmunge "$AL_PATH" "before"
13031 pathmunge "$MSPDB_PATH" "before"
13032 if test "$MSPDB_PATH" != "$CL_PATH" ; then
13033 pathmunge "$CL_PATH" "before"
13035 if test -n "$MSBUILD_PATH" ; then
13036 pathmunge "$MSBUILD_PATH" "before"
13038 if test "$BITNESS_OVERRIDE" = 64; then
13039 pathmunge "$COMPATH/bin/amd64" "before"
13040 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x64" "before"
13042 pathmunge "$COMPATH/bin" "before"
13043 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
13045 if test "$ENABLE_JAVA" != ""; then
13046 if test -d "$JAVA_HOME/jre/bin/client"; then
13047 pathmunge "$JAVA_HOME/jre/bin/client" "before"
13049 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
13050 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
13052 pathmunge "$JAVA_HOME/bin" "before"
13057 pathmunge "/usr/css/bin" "before"
13058 if test "$ENABLE_JAVA" != ""; then
13059 pathmunge "$JAVA_HOME/bin" "after"
13069 # Generate a configuration sha256 we can use for deps
13070 if test -f config_host.mk; then
13071 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
13073 if test -f config_host_lang.mk; then
13074 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
13077 CFLAGS=$my_original_CFLAGS
13078 CXXFLAGS=$my_original_CXXFLAGS
13079 CPPFLAGS=$my_original_CPPFLAGS
13081 AC_CONFIG_LINKS([include:include])
13082 AC_CONFIG_FILES([config_host.mk
13083 config_host_lang.mk
13085 bin/bffvalidator.sh
13086 bin/odfvalidator.sh
13088 instsetoo_native/util/openoffice.lst
13089 setup_native/source/packinfo/finals_instsetoo.txt
13090 sysui/desktop/macosx/Info.plist])
13091 AC_CONFIG_HEADERS([config_host/config_buildid.h])
13092 AC_CONFIG_HEADERS([config_host/config_clang.h])
13093 AC_CONFIG_HEADERS([config_host/config_dconf.h])
13094 AC_CONFIG_HEADERS([config_host/config_eot.h])
13095 AC_CONFIG_HEADERS([config_host/config_extensions.h])
13096 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
13097 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
13098 AC_CONFIG_HEADERS([config_host/config_dbus.h])
13099 AC_CONFIG_HEADERS([config_host/config_features.h])
13100 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
13101 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
13102 AC_CONFIG_HEADERS([config_host/config_firebird.h])
13103 AC_CONFIG_HEADERS([config_host/config_folders.h])
13104 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
13105 AC_CONFIG_HEADERS([config_host/config_gio.h])
13106 AC_CONFIG_HEADERS([config_host/config_global.h])
13107 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
13108 AC_CONFIG_HEADERS([config_host/config_java.h])
13109 AC_CONFIG_HEADERS([config_host/config_langs.h])
13110 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
13111 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
13112 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
13113 AC_CONFIG_HEADERS([config_host/config_libnumbertext.h])
13114 AC_CONFIG_HEADERS([config_host/config_locales.h])
13115 AC_CONFIG_HEADERS([config_host/config_mpl.h])
13116 AC_CONFIG_HEADERS([config_host/config_oox.h])
13117 AC_CONFIG_HEADERS([config_host/config_options.h])
13118 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
13119 AC_CONFIG_HEADERS([config_host/config_qrcodegen.h])
13120 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
13121 AC_CONFIG_HEADERS([config_host/config_vendor.h])
13122 AC_CONFIG_HEADERS([config_host/config_vcl.h])
13123 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
13124 AC_CONFIG_HEADERS([config_host/config_version.h])
13125 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
13126 AC_CONFIG_HEADERS([config_host/config_poppler.h])
13127 AC_CONFIG_HEADERS([config_host/config_python.h])
13128 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
13131 if test "$CROSS_COMPILING" = TRUE; then
13132 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
13135 # touch the config timestamp file
13136 if test ! -f config_host.mk.stamp; then
13137 echo > config_host.mk.stamp
13138 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
13139 echo "Host Configuration unchanged - avoiding scp2 stamp update"
13141 echo > config_host.mk.stamp
13144 # touch the config lang timestamp file
13145 if test ! -f config_host_lang.mk.stamp; then
13146 echo > config_host_lang.mk.stamp
13147 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
13148 echo "Language Configuration unchanged - avoiding scp2 stamp update"
13150 echo > config_host_lang.mk.stamp
13154 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
13155 -a "$build_os" = "cygwin"; then
13158 ****************************************************************************
13160 Your make version is known to be horribly slow, and hard to debug
13161 problems with. To get a reasonably functional make please do:
13163 to install a pre-compiled binary make for Win32
13165 mkdir -p /opt/lo/bin
13167 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
13168 cp make-4.2.1-msvc.exe make
13171 to install from source:
13172 place yourself in a working directory of you choice.
13174 git clone git://git.savannah.gnu.org/make.git
13176 [go to Start menu, open "Visual Studio 2017", click "VS2017 x86 Native Tools Command Prompt" or "VS2017 x64 Native Tools Command Prompt"]
13177 set PATH=%PATH%;C:\Cygwin\bin
13178 [or Cygwin64, if that is what you have]
13179 cd path-to-make-repo-you-cloned-above
13180 build_w32.bat --without-guile
13182 should result in a WinRel/gnumake.exe.
13183 Copy it to the Cygwin /opt/lo/bin directory as make.exe
13185 Then re-run autogen.sh
13187 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
13188 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
13191 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
13192 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
13198 ****************************************************************************
13203 To view some help, run:
13208 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
13210 After the build of LibreOffice has finished successfully, you can immediately run LibreOffice using the command:
13213 if test $_os = Darwin; then
13214 echo open instdir/$PRODUCTNAME.app
13216 echo instdir/program/soffice
13220 If you want to run the smoketest, run:
13226 if test -f warn; then
13231 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: