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([LibreOffice],[6.4.0.2.0+],[],[],[http://documentfoundation.org/])
14 dnl libnumbertext needs autoconf 2.68, but that can pick up autoconf268 just fine if it is installed
15 dnl whereas aclocal (as run by autogen.sh) insists on using autoconf and fails hard
16 dnl so check for the version of autoconf that is actually used to create the configure script
18 m4_if(m4_version_compare(m4_defn([AC_AUTOCONF_VERSION]), [2.68]), -1,
19 [AC_MSG_ERROR([at least autoconf version 2.68 is needed (you can use AUTOCONF environment variable to point to a suitable one)])])
21 if test -n "$BUILD_TYPE"; then
22 AC_MSG_ERROR([You have sourced config_host.mk in this shell. This may lead to trouble, please run in a fresh (login) shell.])
36 CC_BASE=`first_arg_basename "$CC"`
37 CXX_BASE=`first_arg_basename "$CXX"`
41 GIT_NEEDED_SUBMODULES=""
42 LO_PATH= # used by path_munge to construct a PATH variable
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"
189 AC_MSG_RESULT([$PRODUCTNAME])
190 AC_SUBST(PRODUCTNAME)
191 PRODUCTNAME_WITHOUT_SPACES=$(printf %s "$PRODUCTNAME" | sed 's/ //g')
192 AC_SUBST(PRODUCTNAME_WITHOUT_SPACES)
194 dnl ===================================================================
195 dnl Our version is defined by the AC_INIT() at the top of this script.
196 dnl ===================================================================
198 AC_MSG_CHECKING([for package version])
199 if test -n "$with_package_version" -a "$with_package_version" != no; then
200 PACKAGE_VERSION="$with_package_version"
202 AC_MSG_RESULT([$PACKAGE_VERSION])
204 set `echo "$PACKAGE_VERSION" | sed "s/\./ /g"`
206 LIBO_VERSION_MAJOR=$1
207 LIBO_VERSION_MINOR=$2
208 LIBO_VERSION_MICRO=$3
209 LIBO_VERSION_PATCH=$4
211 # The CFBundleShortVersionString in Info.plist consists of three integers, so encode the third
212 # as the micro version times 1000 plus the patch number. Unfortunately the LIBO_VERSION_SUFFIX can be anything so
213 # no way to encode that into an integer in general.
214 MACOSX_BUNDLE_SHORTVERSION=$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR.`expr $LIBO_VERSION_MICRO '*' 1000 + $LIBO_VERSION_PATCH`
216 LIBO_VERSION_SUFFIX=$5
217 # Split out LIBO_VERSION_SUFFIX_SUFFIX... horrible crack. But apparently wanted separately in
218 # openoffice.lst as ABOUTBOXPRODUCTVERSIONSUFFIX. Note that the double brackets are for m4's sake,
219 # they get undoubled before actually passed to sed.
220 LIBO_VERSION_SUFFIX_SUFFIX=`echo "$LIBO_VERSION_SUFFIX" | sed -e 's/.*[[a-zA-Z0-9]]\([[^a-zA-Z0-9]]*\)$/\1/'`
221 test -n "$LIBO_VERSION_SUFFIX_SUFFIX" && LIBO_VERSION_SUFFIX="${LIBO_VERSION_SUFFIX%${LIBO_VERSION_SUFFIX_SUFFIX}}"
222 # LIBO_VERSION_SUFFIX, if non-empty, should include the period separator
223 test -n "$LIBO_VERSION_SUFFIX" && LIBO_VERSION_SUFFIX=".$LIBO_VERSION_SUFFIX"
225 AC_SUBST(LIBO_VERSION_MAJOR)
226 AC_SUBST(LIBO_VERSION_MINOR)
227 AC_SUBST(LIBO_VERSION_MICRO)
228 AC_SUBST(LIBO_VERSION_PATCH)
229 AC_SUBST(MACOSX_BUNDLE_SHORTVERSION)
230 AC_SUBST(LIBO_VERSION_SUFFIX)
231 AC_SUBST(LIBO_VERSION_SUFFIX_SUFFIX)
233 AC_DEFINE_UNQUOTED(LIBO_VERSION_MAJOR,$LIBO_VERSION_MAJOR)
234 AC_DEFINE_UNQUOTED(LIBO_VERSION_MINOR,$LIBO_VERSION_MINOR)
235 AC_DEFINE_UNQUOTED(LIBO_VERSION_MICRO,$LIBO_VERSION_MICRO)
236 AC_DEFINE_UNQUOTED(LIBO_VERSION_PATCH,$LIBO_VERSION_PATCH)
238 LIBO_THIS_YEAR=`date +%Y`
239 AC_DEFINE_UNQUOTED(LIBO_THIS_YEAR,$LIBO_THIS_YEAR)
241 dnl ===================================================================
243 dnl ===================================================================
244 AC_MSG_CHECKING([for product version])
245 PRODUCTVERSION="$LIBO_VERSION_MAJOR.$LIBO_VERSION_MINOR"
246 AC_MSG_RESULT([$PRODUCTVERSION])
247 AC_SUBST(PRODUCTVERSION)
250 # AC_PROG_EGREP doesn't set GREP on all systems as well
251 AC_PATH_PROG(GREP, grep)
259 dnl ======================================
260 dnl Required GObject introspection version
261 dnl ======================================
262 INTROSPECTION_REQUIRED_VERSION=1.32.0
264 dnl ===================================================================
265 dnl Search all the common names for GNU Make
266 dnl ===================================================================
267 AC_MSG_CHECKING([for GNU Make])
269 # try to use our own make if it is available and GNUMAKE was not already defined
270 if test -z "$GNUMAKE"; then
271 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/make" ; then
272 GNUMAKE="$LODE_HOME/opt/bin/make"
273 elif test -x "/opt/lo/bin/make"; then
274 GNUMAKE="/opt/lo/bin/make"
279 for a in "$MAKE" "$GNUMAKE" make gmake gnumake; do
280 if test -n "$a"; then
281 $a --version 2> /dev/null | grep GNU 2>&1 > /dev/null
282 if test $? -eq 0; then
283 if test "$build_os" = "cygwin"; then
284 if test -n "$($a -v | grep 'Built for Windows')" ; then
285 GNUMAKE="$(cygpath -m "$(which "$(cygpath -u $a)")")"
286 GNUMAKE_WIN_NATIVE="TRUE"
297 AC_MSG_RESULT($GNUMAKE)
298 if test -z "$GNUMAKE"; then
299 AC_MSG_ERROR([not found. install GNU Make.])
301 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
302 AC_MSG_NOTICE([Using a native Win32 GNU Make version.])
306 win_short_path_for_make()
308 local_short_path="$1"
309 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
310 cygpath -sm "$local_short_path"
312 cygpath -u "$(cygpath -d "$local_short_path")"
317 if test "$build_os" = "cygwin"; then
318 PathFormat "$SRC_ROOT"
319 SRC_ROOT="$formatted_path"
320 PathFormat "$BUILDDIR"
321 BUILDDIR="$formatted_path"
323 AC_MSG_CHECKING(for explicit COMSPEC)
324 if test -z "$COMSPEC"; then
325 AC_MSG_ERROR([COMSPEC not set in environment, please set it and rerun])
327 AC_MSG_RESULT([found: $COMSPEC])
334 AC_DEFINE_UNQUOTED(SRCDIR,"$SRC_ROOT")
335 AC_DEFINE_UNQUOTED(SRC_ROOT,"$SRC_ROOT")
336 AC_DEFINE_UNQUOTED(BUILDDIR,"$BUILDDIR")
338 if test "z$EUID" = "z0" -a "`uname -o 2>/dev/null`" = "Cygwin"; then
339 AC_MSG_ERROR([You must build LibreOffice as a normal user - not using an administrative account])
342 # need sed in os checks...
343 AC_PATH_PROGS(SED, sed)
344 if test -z "$SED"; then
345 AC_MSG_ERROR([install sed to run this script])
348 # Set the ENABLE_LTO variable
349 # ===================================================================
350 AC_MSG_CHECKING([whether to use link-time optimization])
351 if test -n "$enable_lto" -a "$enable_lto" != "no"; then
354 AC_DEFINE(STATIC_LINKING)
361 AC_ARG_ENABLE(fuzz-options,
362 AS_HELP_STRING([--enable-fuzz-options],
363 [Randomly enable or disable each of those configurable options
364 that are supposed to be freely selectable without interdependencies,
365 or where bad interaction from interdependencies is automatically avoided.])
368 dnl ===================================================================
369 dnl When building for Android, --with-android-ndk,
370 dnl --with-android-ndk-toolchain-version and --with-android-sdk are
372 dnl ===================================================================
374 AC_ARG_WITH(android-ndk,
375 AS_HELP_STRING([--with-android-ndk],
376 [Specify location of the Android Native Development Kit. Mandatory when building for Android.]),
379 AC_ARG_WITH(android-ndk-toolchain-version,
380 AS_HELP_STRING([--with-android-ndk-toolchain-version],
381 [Specify which toolchain version to use, of those present in the
382 Android NDK you are using. The default (and only supported version currently) is "clang5.0"]),,
383 with_android_ndk_toolchain_version=clang5.0)
385 AC_ARG_WITH(android-sdk,
386 AS_HELP_STRING([--with-android-sdk],
387 [Specify location of the Android SDK. Mandatory when building for Android.]),
390 AC_ARG_WITH(android-api-level,
391 AS_HELP_STRING([--with-android-api-level],
392 [Specify the API level when building for Android. Defaults to 16 for ARM and x86 and to 21 for ARM64 and x86-64]),
396 if test -z "$with_android_ndk" -a -e "$SRC_ROOT/external/android-ndk" -a "$build" != "$host"; then
397 with_android_ndk="$SRC_ROOT/external/android-ndk"
399 if test -n "$with_android_ndk"; then
400 eval ANDROID_NDK_HOME=$with_android_ndk
402 # Set up a lot of pre-canned defaults
404 if test ! -f $ANDROID_NDK_HOME/RELEASE.TXT; then
405 if test ! -f $ANDROID_NDK_HOME/source.properties; then
406 AC_MSG_ERROR([Unrecognized Android NDK. Missing RELEASE.TXT or source.properties file in $ANDROID_NDK_HOME.])
408 ANDROID_NDK_VERSION=`sed -n -e 's/Pkg.Revision = //p' $ANDROID_NDK_HOME/source.properties`
410 ANDROID_NDK_VERSION=`cut -f1 -d' ' <$ANDROID_NDK_HOME/RELEASE.TXT`
412 if test -z "$ANDROID_NDK_VERSION"; then
413 AC_MSG_ERROR([Failed to determine Android NDK version. Please check your installation.])
415 case $ANDROID_NDK_VERSION in
417 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x*])
419 11.1.*|12.1.*|13.1.*|14.1.*)
420 AC_MSG_ERROR([Building for Android is only supported with NDK versions above 16.x.*])
422 16.*|17.*|18.*|19.*|20.*)
425 AC_MSG_WARN([Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk.])
426 add_warning "Untested Android NDK version $ANDROID_NDK_VERSION, only versions 16.* til 20.* have been used successfully. Proceed at your own risk."
431 if test -n "$with_android_api_level" ; then
432 ANDROID_API_LEVEL="$with_android_api_level"
435 android_cpu=$host_cpu
436 if test $host_cpu = arm; then
437 android_platform_prefix=arm-linux-androideabi
438 android_gnu_prefix=$android_platform_prefix
439 LLVM_TRIPLE=armv7a-linux-androideabi
440 ANDROID_APP_ABI=armeabi-v7a
441 ANDROIDCFLAGS="-mthumb -march=armv7-a -mfloat-abi=softfp -mfpu=neon -Wl,--fix-cortex-a8"
442 elif test $host_cpu = aarch64; then
443 android_platform_prefix=aarch64-linux-android
444 android_gnu_prefix=$android_platform_prefix
445 LLVM_TRIPLE=$android_platform_prefix
446 # minimum android version that supports aarch64
447 if test "$ANDROID_API_LEVEL" -lt "21" ; then
450 ANDROID_APP_ABI=arm64-v8a
451 elif test $host_cpu = x86_64; then
452 android_platform_prefix=x86_64-linux-android
453 android_gnu_prefix=$android_platform_prefix
454 LLVM_TRIPLE=$android_platform_prefix
455 # minimum android version that supports x86_64
457 ANDROID_APP_ABI=x86_64
459 # host_cpu is something like "i386" or "i686" I guess, NDK uses
460 # "x86" in some contexts
462 android_platform_prefix=$android_cpu
463 android_gnu_prefix=i686-linux-android
464 LLVM_TRIPLE=$android_gnu_prefix
468 case "$with_android_ndk_toolchain_version" in
470 ANDROID_GCC_TOOLCHAIN_VERSION=4.9
473 AC_MSG_ERROR([Unrecognized value for the --with-android-ndk-toolchain-version option. Building for Android is only supported with Clang 5.*])
476 AC_MSG_NOTICE([using the Android API level... $ANDROID_API_LEVEL])
478 # NDK 15 or later toolchain is 64bit-only, except for Windows that we don't support. Using a 64-bit
479 # linker is required if you compile large parts of the code with -g. A 32-bit linker just won't
480 # manage to link the (app-specific) single huge .so that is built for the app in
481 # android/source/ if there is debug information in a significant part of the object files.
482 # (A 64-bit ld.gold grows too much over 10 gigabytes of virtual space when linking such a .so if
483 # all objects have been built with debug information.)
486 android_HOST_TAG=linux-x86_64
489 android_HOST_TAG=darwin-x86_64
492 AC_MSG_ERROR([We only support building for Android from Linux or macOS])
493 # ndk would also support windows and windows-x86_64
496 android_TOOLCHAIN=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/$android_HOST_TAG
497 ANDROID_COMPILER_BIN=$android_TOOLCHAIN/bin
498 dnl TODO: NSS build uses it...
499 ANDROID_BINUTILS_PREBUILT_ROOT=$ANDROID_NDK_HOME/toolchains/$android_platform_prefix-$ANDROID_GCC_TOOLCHAIN_VERSION/prebuilt/$android_HOST_TAG
500 AC_SUBST(ANDROID_BINUTILS_PREBUILT_ROOT)
502 test -z "$AR" && AR=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ar
503 test -z "$NM" && NM=$ANDROID_COMPILER_BIN/$android_gnu_prefix-nm
504 test -z "$OBJDUMP" && OBJDUMP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-objdump
505 test -z "$RANLIB" && RANLIB=$ANDROID_COMPILER_BIN/$android_gnu_prefix-ranlib
506 test -z "$STRIP" && STRIP=$ANDROID_COMPILER_BIN/$android_gnu_prefix-strip
508 ANDROIDCFLAGS="$ANDROIDCFLAGS -target ${LLVM_TRIPLE}${ANDROID_API_LEVEL}"
509 ANDROIDCFLAGS="$ANDROIDCFLAGS -no-canonical-prefixes -ffunction-sections -fdata-sections -Qunused-arguments"
510 if test "$ENABLE_LTO" = TRUE; then
511 # -flto comes from com_GCC_defs.mk, too, but we need to make sure it gets passed as part of
512 # $CC and $CXX when building external libraries
513 ANDROIDCFLAGS="$ANDROIDCFLAGS -flto -fuse-linker-plugin -O2"
516 ANDROIDCXXFLAGS="$ANDROIDCFLAGS -stdlib=libc++"
518 if test -z "$CC"; then
519 CC="$ANDROID_COMPILER_BIN/clang $ANDROIDCFLAGS"
522 if test -z "$CXX"; then
523 CXX="$ANDROID_COMPILER_BIN/clang++ $ANDROIDCXXFLAGS"
527 # remember to download the ownCloud Android library later
528 BUILD_TYPE="$BUILD_TYPE OWNCLOUD_ANDROID_LIB"
530 AC_SUBST(ANDROID_NDK_HOME)
531 AC_SUBST(ANDROID_APP_ABI)
532 AC_SUBST(ANDROID_GCC_TOOLCHAIN_VERSION)
534 dnl ===================================================================
535 dnl --with-android-sdk
536 dnl ===================================================================
538 if test -z "$with_android_sdk" -a -e "$SRC_ROOT/external/android-sdk-linux" -a "$build" != "$host"; then
539 with_android_sdk="$SRC_ROOT/external/android-sdk-linux"
541 if test -n "$with_android_sdk"; then
542 eval ANDROID_SDK_HOME=$with_android_sdk
543 PATH="$ANDROID_SDK_HOME/platform-tools:$ANDROID_SDK_HOME/tools:$PATH"
545 AC_SUBST(ANDROID_SDK_HOME)
547 libo_FUZZ_ARG_ENABLE([android-editing],
548 AS_HELP_STRING([--enable-android-editing],
549 [Enable the experimental editing feature on Android.])
551 ENABLE_ANDROID_EDITING=
552 if test "$enable_android_editing" = yes; then
553 ENABLE_ANDROID_EDITING=TRUE
555 AC_SUBST([ENABLE_ANDROID_EDITING])
557 dnl ===================================================================
558 dnl The following is a list of supported systems.
559 dnl Sequential to keep the logic very simple
560 dnl These values may be checked and reset later.
561 dnl ===================================================================
562 #defaults unless the os test overrides this:
572 # Default values, as such probably valid just for Linux, set
573 # differently below just for Mac OSX, but at least better than
574 # hardcoding these as we used to do. Much of this is duplicated also
575 # in solenv for old build system and for gbuild, ideally we should
576 # perhaps define stuff like this only here in configure.ac?
578 LINKFLAGSSHL="-shared"
582 LINKFLAGSNOUNDEFS="-Wl,-z,defs"
585 INSTROOTCONTENTSUFFIX=
591 build_gstreamer_1_0=yes
595 dnl ===========================================================
596 dnl Check whether we're using Solaris 10 - SPARC or Intel.
597 dnl ===========================================================
598 AC_MSG_CHECKING([the Solaris operating system release])
599 _os_release=`echo $host_os | $SED -e s/solaris2\.//`
600 if test "$_os_release" -lt "10"; then
601 AC_MSG_ERROR([use Solaris >= 10 to build LibreOffice])
603 AC_MSG_RESULT([ok ($_os_release)])
606 dnl Check whether we're using a SPARC or i386 processor
607 AC_MSG_CHECKING([the processor type])
608 if test "$host_cpu" = "sparc" -o "$host_cpu" = "i386"; then
609 AC_MSG_RESULT([ok ($host_cpu)])
611 AC_MSG_ERROR([only SPARC and i386 processors are supported])
615 linux-gnu*|k*bsd*-gnu*)
616 build_gstreamer_1_0=yes
621 if test "$enable_fuzzers" != yes; then
627 BUILD_TYPE="$BUILD_TYPE FONTCONFIG FREETYPE"
640 # When building on Windows normally with MSVC under Cygwin,
641 # configure thinks that the host platform (the platform the
642 # built code will run on) is Cygwin, even if it obviously is
643 # Windows, which in Autoconf terminology is called
644 # "mingw32". (Which is misleading as MinGW is the name of the
645 # tool-chain, not an operating system.)
647 # Somewhat confusing, yes. But this configure script doesn't
648 # look at $host etc that much, it mostly uses its own $_os
649 # variable, set here in this case statement.
663 darwin*) # macOS or iOS
669 if test -n "$LODE_HOME" ; then
671 AC_MSG_NOTICE([sanitized the PATH to $PATH])
673 if test "$host_cpu" = "arm64" -o "$enable_ios_simulator" = "yes"; then
677 enable_mpl_subset=yes
678 enable_lotuswordpro=no
681 enable_postgresql_sdbc=no
682 enable_extension_integration=no
683 enable_report_builder=no
685 if test "$enable_ios_simulator" = "yes"; then
686 host=x86_64-apple-darwin
690 INSTROOTBASESUFFIX=/$PRODUCTNAME_WITHOUT_SPACES.app
691 INSTROOTCONTENTSUFFIX=/Contents
692 SDKDIRNAME=AC_PACKAGE_NAME${PRODUCTVERSION}_SDK
694 # See comment above the case "$host_os"
695 LINKFLAGSSHL="-dynamiclib -single_module"
702 # -undefined error is the default
707 build_gstreamer_1_0=yes
711 AC_MSG_CHECKING([the FreeBSD operating system release])
712 if test -n "$with_os_version"; then
713 OSVERSION="$with_os_version"
715 OSVERSION=`/sbin/sysctl -n kern.osreldate`
717 AC_MSG_RESULT([found OSVERSION=$OSVERSION])
718 AC_MSG_CHECKING([which thread library to use])
719 if test "$OSVERSION" -lt "500016"; then
720 PTHREAD_CFLAGS="-D_THREAD_SAFE"
721 PTHREAD_LIBS="-pthread"
722 elif test "$OSVERSION" -lt "502102"; then
723 PTHREAD_CFLAGS="-D_THREAD_SAFE"
727 PTHREAD_LIBS="-pthread"
729 AC_MSG_RESULT([$PTHREAD_LIBS])
734 build_gstreamer_1_0=yes
738 PTHREAD_LIBS="-pthread -lpthread"
745 PTHREAD_LIBS=-pthread
751 PTHREAD_CFLAGS="-D_THREAD_SAFE"
752 PTHREAD_LIBS="-pthread"
757 build_gstreamer_1_0=yes
761 PTHREAD_LIBS="-pthread"
766 build_gstreamer_1_0=no
767 enable_lotuswordpro=no
768 enable_mpl_subset=yes
771 enable_report_builder=no
773 enable_postgresql_sdbc=no
786 AC_DEFINE(HAVE_FT_FACE_GETCHARVARIANTINDEX)
787 BUILD_TYPE="$BUILD_TYPE CAIRO FONTCONFIG FREETYPE"
797 enable_gstreamer_1_0=no
802 enable_postgresql_sdbc=no
803 enable_firebird_sdbc=no
808 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
812 if test "$_os" = "Android" ; then
813 # Verify that the NDK and SDK options are proper
814 if test -z "$with_android_ndk"; then
815 AC_MSG_ERROR([the --with-android-ndk option is mandatory, unless it is available at external/android-ndk/.])
816 elif test ! -f "$ANDROID_NDK_HOME/meta/abis.json"; then
817 AC_MSG_ERROR([the --with-android-ndk option does not point to an Android NDK])
820 if test -z "$ANDROID_SDK_HOME"; then
821 AC_MSG_ERROR([the --with-android-sdk option is mandatory, unless it is available at external/android-sdk-linux/.])
822 elif test ! -d "$ANDROID_SDK_HOME/platforms"; then
823 AC_MSG_ERROR([the --with-android-sdk option does not point to an Android SDK])
826 BUILD_TOOLS_VERSION=`$SED -n -e 's/.*buildToolsVersion "\(.*\)"/\1/p' $SRC_ROOT/android/source/build.gradle`
827 if test ! -d "$ANDROID_SDK_HOME/build-tools/$BUILD_TOOLS_VERSION"; then
828 AC_MSG_WARN([android build-tools $BUILD_TOOLS_VERSION not found - install with
829 $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION
830 or adjust change $SRC_ROOT/android/source/build.gradle accordingly])
831 add_warning "android build-tools $BUILD_TOOLS_VERSION not found - install with"
832 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --all --filter build-tools-$BUILD_TOOLS_VERSION"
833 add_warning "or adjust $SRC_ROOT/android/source/build.gradle accordingly"
835 if test ! -f "$ANDROID_SDK_HOME/extras/android/m2repository/source.properties"; then
836 AC_MSG_WARN([android support repository not found - install with
837 $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository
838 to allow the build to download the specified version of the android support libraries])
839 add_warning "android support repository not found - install with"
840 add_warning " $ANDROID_SDK_HOME/tools/android update sdk -u --filter extra-android-m2repository"
841 add_warning "to allow the build to download the specified version of the android support libraries"
845 if test "$_os" = "AIX"; then
846 AC_PATH_PROG(GAWK, gawk)
847 if test -z "$GAWK"; then
848 AC_MSG_ERROR([gawk not found in \$PATH])
854 AC_SUBST(PTHREAD_CFLAGS)
855 AC_SUBST(PTHREAD_LIBS)
857 # Check for explicit A/C/CXX/OBJC/OBJCXX/LDFLAGS.
858 # By default use the ones specified by our build system,
859 # but explicit override is possible.
860 AC_MSG_CHECKING(for explicit AFLAGS)
861 if test -n "$AFLAGS"; then
862 AC_MSG_RESULT([$AFLAGS])
868 AC_MSG_CHECKING(for explicit CFLAGS)
869 if test -n "$CFLAGS"; then
870 AC_MSG_RESULT([$CFLAGS])
876 AC_MSG_CHECKING(for explicit CXXFLAGS)
877 if test -n "$CXXFLAGS"; then
878 AC_MSG_RESULT([$CXXFLAGS])
884 AC_MSG_CHECKING(for explicit OBJCFLAGS)
885 if test -n "$OBJCFLAGS"; then
886 AC_MSG_RESULT([$OBJCFLAGS])
892 AC_MSG_CHECKING(for explicit OBJCXXFLAGS)
893 if test -n "$OBJCXXFLAGS"; then
894 AC_MSG_RESULT([$OBJCXXFLAGS])
900 AC_MSG_CHECKING(for explicit LDFLAGS)
901 if test -n "$LDFLAGS"; then
902 AC_MSG_RESULT([$LDFLAGS])
912 AC_SUBST(OBJCXXFLAGS)
917 AC_SUBST(x_OBJCFLAGS)
918 AC_SUBST(x_OBJCXXFLAGS)
921 dnl These are potentially set for MSVC, in the code checking for UCRT below:
922 my_original_CFLAGS=$CFLAGS
923 my_original_CXXFLAGS=$CXXFLAGS
924 my_original_CPPFLAGS=$CPPFLAGS
926 dnl The following checks for gcc, cc and then cl (if it weren't guarded for win32)
927 dnl Needs to precede the AC_C_BIGENDIAN and AC_SEARCH_LIBS calls below, which apparently call
928 dnl AC_PROG_CC internally.
929 if test "$_os" != "WINNT"; then
930 # AC_PROG_CC sets CFLAGS to -g -O2 if not set, avoid that
934 if test -z "$CC_BASE"; then
935 CC_BASE=`first_arg_basename "$CC"`
939 if test "$_os" != "WINNT"; then
940 AC_C_BIGENDIAN([ENDIANNESS=big], [ENDIANNESS=little])
946 if test $_os != "WINNT"; then
948 AC_SEARCH_LIBS([dlsym], [dl],
949 [case "$ac_cv_search_dlsym" in -l*) DLOPEN_LIBS="$ac_cv_search_dlsym";; esac],
950 [AC_MSG_ERROR([dlsym not found in either libc nor libdl])])
953 AC_SUBST(DLOPEN_LIBS)
955 AC_ARG_ENABLE(ios-simulator,
956 AS_HELP_STRING([--enable-ios-simulator],
957 [build i386 or x86_64 for ios simulator])
960 AC_ARG_ENABLE(ios-libreofficelight-app,
961 AS_HELP_STRING([--enable-ios-libreofficelight-app],
962 [When building for iOS, build stuff relevant only for the 'LibreOfficeLight' app
963 (in ios/LibreOfficeLight). Note that this app is not known to work in any useful manner,
964 and also that its actual build (in Xcode) requires some obvious modifications to the project.])
967 ENABLE_IOS_LIBREOFFICELIGHT_APP=
968 if test "$enable_ios_libreofficelight_app" = yes; then
969 ENABLE_IOS_LIBREOFFICELIGHT_APP=TRUE
971 AC_SUBST(ENABLE_IOS_LIBREOFFICELIGHT_APP)
973 ###############################################################################
974 # Extensions switches --enable/--disable
975 ###############################################################################
976 # By default these should be enabled unless having extra dependencies.
977 # If there is extra dependency over configure options then the enable should
978 # be automagic based on whether the requiring feature is enabled or not.
979 # All this options change anything only with --enable-extension-integration.
981 # The name of this option and its help string makes it sound as if
982 # extensions are built anyway, just not integrated in the installer,
983 # if you use --disable-extension-integration. Is that really the
986 libo_FUZZ_ARG_ENABLE(extension-integration,
987 AS_HELP_STRING([--disable-extension-integration],
988 [Disable integration of the built extensions in the installer of the
989 product. Use this switch to disable the integration.])
992 AC_ARG_ENABLE(avmedia,
993 AS_HELP_STRING([--disable-avmedia],
994 [Disable displaying and inserting AV media in documents. Work in progress, use only if you are hacking on it.])
997 AC_ARG_ENABLE(database-connectivity,
998 AS_HELP_STRING([--disable-database-connectivity],
999 [Disable various database connectivity. Work in progress, use only if you are hacking on it.])
1002 # This doesn't mean not building (or "integrating") extensions
1003 # (although it probably should; i.e. it should imply
1004 # --disable-extension-integration I guess), it means not supporting
1005 # any extension mechanism at all
1006 libo_FUZZ_ARG_ENABLE(extensions,
1007 AS_HELP_STRING([--disable-extensions],
1008 [Disable all add-on extension functionality. Work in progress, use only if you are hacking on it.])
1011 AC_ARG_ENABLE(scripting,
1012 AS_HELP_STRING([--disable-scripting],
1013 [Disable BASIC, Java and Python. Work in progress, use only if you are hacking on it.])
1016 # This is mainly for Android and iOS, but could potentially be used in some
1017 # special case otherwise, too, so factored out as a separate setting
1019 AC_ARG_ENABLE(dynamic-loading,
1020 AS_HELP_STRING([--disable-dynamic-loading],
1021 [Disable any use of dynamic loading of code. Work in progress, use only if you are hacking on it.])
1024 libo_FUZZ_ARG_ENABLE(report-builder,
1025 AS_HELP_STRING([--disable-report-builder],
1026 [Disable the Report Builder.])
1029 libo_FUZZ_ARG_ENABLE(ext-wiki-publisher,
1030 AS_HELP_STRING([--enable-ext-wiki-publisher],
1031 [Enable the Wiki Publisher extension.])
1034 libo_FUZZ_ARG_ENABLE(lpsolve,
1035 AS_HELP_STRING([--disable-lpsolve],
1036 [Disable compilation of the lp solve solver ])
1038 libo_FUZZ_ARG_ENABLE(coinmp,
1039 AS_HELP_STRING([--disable-coinmp],
1040 [Disable compilation of the CoinMP solver ])
1043 libo_FUZZ_ARG_ENABLE(pdfimport,
1044 AS_HELP_STRING([--disable-pdfimport],
1045 [Disable building the PDF import feature.])
1048 libo_FUZZ_ARG_ENABLE(pdfium,
1049 AS_HELP_STRING([--disable-pdfium],
1050 [Disable building PDFium.])
1053 ###############################################################################
1055 dnl ---------- *** ----------
1057 libo_FUZZ_ARG_ENABLE(mergelibs,
1058 AS_HELP_STRING([--enable-mergelibs],
1059 [Merge several of the smaller libraries into one big, "merged", one.])
1062 libo_FUZZ_ARG_ENABLE(breakpad,
1063 AS_HELP_STRING([--enable-breakpad],
1064 [Enables breakpad for crash reporting.])
1067 libo_FUZZ_ARG_ENABLE(crashdump,
1068 AS_HELP_STRING([--disable-crashdump],
1069 [Disable dump.ini and dump-file, when --enable-breakpad])
1072 AC_ARG_ENABLE(fetch-external,
1073 AS_HELP_STRING([--disable-fetch-external],
1074 [Disables fetching external tarballs from web sources.])
1077 AC_ARG_ENABLE(fuzzers,
1078 AS_HELP_STRING([--enable-fuzzers],
1079 [Enables building libfuzzer targets for fuzz testing.])
1082 libo_FUZZ_ARG_ENABLE(pch,
1083 AS_HELP_STRING([--enable-pch=<yes/no/system/base/normal/full>],
1084 [Enables precompiled header support for C++. Forced default on Windows/VC build.
1085 Using 'system' will include only external headers, 'base' will add also headers
1086 from base modules, 'normal' will also add all headers except from the module built,
1087 'full' will use all suitable headers even from a module itself.])
1090 libo_FUZZ_ARG_ENABLE(epm,
1091 AS_HELP_STRING([--enable-epm],
1092 [LibreOffice includes self-packaging code, that requires epm, however epm is
1093 useless for large scale package building.])
1096 libo_FUZZ_ARG_ENABLE(odk,
1097 AS_HELP_STRING([--disable-odk],
1098 [LibreOffice includes an ODK, office development kit which some packagers may
1099 wish to build without.])
1102 AC_ARG_ENABLE(mpl-subset,
1103 AS_HELP_STRING([--enable-mpl-subset],
1104 [Don't compile any pieces which are not MPL or more liberally licensed])
1107 libo_FUZZ_ARG_ENABLE(evolution2,
1108 AS_HELP_STRING([--enable-evolution2],
1109 [Allows the built-in evolution 2 addressbook connectivity build to be
1113 AC_ARG_ENABLE(avahi,
1114 AS_HELP_STRING([--enable-avahi],
1115 [Determines whether to use Avahi to advertise Impress to remote controls.])
1118 libo_FUZZ_ARG_ENABLE(werror,
1119 AS_HELP_STRING([--enable-werror],
1120 [Turn warnings to errors. (Has no effect in modules where the treating
1121 of warnings as errors is disabled explicitly.)]),
1124 libo_FUZZ_ARG_ENABLE(assert-always-abort,
1125 AS_HELP_STRING([--enable-assert-always-abort],
1126 [make assert() failures abort even when building without --enable-debug or --enable-dbgutil.]),
1129 libo_FUZZ_ARG_ENABLE(dbgutil,
1130 AS_HELP_STRING([--enable-dbgutil],
1131 [Provide debugging support from --enable-debug and include additional debugging
1132 utilities such as object counting or more expensive checks.
1133 This is the recommended option for developers.
1134 Note that this makes the build ABI incompatible, it is not possible to mix object
1135 files or libraries from a --enable-dbgutil and a --disable-dbgutil build.]))
1137 libo_FUZZ_ARG_ENABLE(debug,
1138 AS_HELP_STRING([--enable-debug],
1139 [Include debugging information, disable compiler optimization and inlining plus
1140 extra debugging code like assertions. Extra large build! (enables -g compiler flag).]))
1142 libo_FUZZ_ARG_ENABLE(split-debug,
1143 AS_HELP_STRING([--disable-split-debug],
1144 [Disable using split debug information (-gsplit-dwarf compile flag). Split debug information
1145 saves disk space and build time, but requires tools that support it (both build tools and debuggers).]))
1147 libo_FUZZ_ARG_ENABLE(gdb-index,
1148 AS_HELP_STRING([--disable-gdb-index],
1149 [Disables creating debug information in the gdb index format, which makes gdb start faster.
1150 The feature requires the gold or lld linker.]))
1152 libo_FUZZ_ARG_ENABLE(sal-log,
1153 AS_HELP_STRING([--enable-sal-log],
1154 [Make SAL_INFO and SAL_WARN calls do something even in a non-debug build.]))
1156 libo_FUZZ_ARG_ENABLE(symbols,
1157 AS_HELP_STRING([--enable-symbols],
1158 [Generate debug information.
1159 By default, enabled for --enable-debug and --enable-dbgutil, disabled
1160 otherwise. It is possible to explicitly specify gbuild build targets
1161 (where 'all' means everything, '-' prepended means to not enable, '/' appended means
1162 everything in the directory; there is no ordering, more specific overrides
1163 more general, and disabling takes precedence).
1164 Example: --enable-symbols="all -sw/ -Library_sc".]))
1166 libo_FUZZ_ARG_ENABLE(optimized,
1167 AS_HELP_STRING([--disable-optimized],
1168 [Whether to compile with optimization flags.
1169 By default, disabled for --enable-debug and --enable-dbgutil, enabled
1172 libo_FUZZ_ARG_ENABLE(runtime-optimizations,
1173 AS_HELP_STRING([--disable-runtime-optimizations],
1174 [Statically disable certain runtime optimizations (like rtl/alloc.h or
1175 JVM JIT) that are known to interact badly with certain dynamic analysis
1176 tools (like -fsanitize=address or Valgrind). By default, disabled iff
1177 CC contains "-fsanitize=*". (For Valgrind, those runtime optimizations
1178 are typically disabled dynamically via RUNNING_ON_VALGRIND.)]))
1180 AC_ARG_WITH(valgrind,
1181 AS_HELP_STRING([--with-valgrind],
1182 [Make availability of Valgrind headers a hard requirement.]))
1184 libo_FUZZ_ARG_ENABLE(compiler-plugins,
1185 AS_HELP_STRING([--enable-compiler-plugins],
1186 [Enable compiler plugins that will perform additional checks during
1187 building. Enabled automatically by --enable-dbgutil.
1188 Use --enable-compiler-plugins=debug to also enable debug code in the plugins.]))
1189 COMPILER_PLUGINS_DEBUG=
1190 if test "$enable_compiler_plugins" = debug; then
1191 enable_compiler_plugins=yes
1192 COMPILER_PLUGINS_DEBUG=TRUE
1195 libo_FUZZ_ARG_ENABLE(ooenv,
1196 AS_HELP_STRING([--disable-ooenv],
1197 [Disable ooenv for the instdir installation.]))
1199 libo_FUZZ_ARG_ENABLE(libnumbertext,
1200 AS_HELP_STRING([--disable-libnumbertext],
1201 [Disable use of numbertext external library.]))
1204 AS_HELP_STRING([--enable-lto],
1205 [Enable link-time optimization. Suitable for (optimised) product builds. Building might take
1206 longer but libraries and executables are optimized for speed. For GCC, best to use the 'gold'
1207 linker. For MSVC, this option is broken at the moment. This is experimental work
1208 in progress that shouldn't be used unless you are working on it.)]))
1210 AC_ARG_ENABLE(python,
1211 AS_HELP_STRING([--enable-python=<no/auto/system/internal/fully-internal>],
1212 [Enables or disables Python support at run-time.
1213 Also specifies what Python to use. 'auto' is the default.
1214 'fully-internal' even forces the internal version for uses of Python
1215 during the build.]))
1217 libo_FUZZ_ARG_ENABLE(gtk3,
1218 AS_HELP_STRING([--disable-gtk3],
1219 [Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.]),
1220 ,test "${enable_gtk3+set}" = set || enable_gtk3=yes)
1222 AC_ARG_ENABLE(introspection,
1223 AS_HELP_STRING([--enable-introspection],
1224 [Generate files for GObject introspection. Requires --enable-gtk3. (Typically used by
1225 Linux distributions.)]))
1227 AC_ARG_ENABLE(split-app-modules,
1228 AS_HELP_STRING([--enable-split-app-modules],
1229 [Split file lists for app modules, e.g. base, calc.
1230 Has effect only with make distro-pack-install]),
1233 AC_ARG_ENABLE(split-opt-features,
1234 AS_HELP_STRING([--enable-split-opt-features],
1235 [Split file lists for some optional features, e.g. pyuno, testtool.
1236 Has effect only with make distro-pack-install]),
1239 libo_FUZZ_ARG_ENABLE(cairo-canvas,
1240 AS_HELP_STRING([--disable-cairo-canvas],
1241 [Determines whether to build the Cairo canvas on platforms where Cairo is available.]),
1244 libo_FUZZ_ARG_ENABLE(dbus,
1245 AS_HELP_STRING([--disable-dbus],
1246 [Determines whether to enable features that depend on dbus.
1247 e.g. Presentation mode screensaver control, bluetooth presentation control, automatic font install]),
1248 ,test "${enable_dbus+set}" = set || enable_dbus=yes)
1250 libo_FUZZ_ARG_ENABLE(sdremote,
1251 AS_HELP_STRING([--disable-sdremote],
1252 [Determines whether to enable Impress remote control (i.e. the server component).]),
1253 ,test "${enable_sdremote+set}" = set || enable_sdremote=yes)
1255 libo_FUZZ_ARG_ENABLE(sdremote-bluetooth,
1256 AS_HELP_STRING([--disable-sdremote-bluetooth],
1257 [Determines whether to build sdremote with bluetooth support.
1258 Requires dbus on Linux.]))
1260 libo_FUZZ_ARG_ENABLE(gio,
1261 AS_HELP_STRING([--disable-gio],
1262 [Determines whether to use the GIO support.]),
1263 ,test "${enable_gio+set}" = set || enable_gio=yes)
1266 AS_HELP_STRING([--enable-qt5],
1267 [Determines whether to use Qt5 vclplug on platforms where Qt5 is
1272 AS_HELP_STRING([--enable-kf5],
1273 [Determines whether to use Qt5/KF5 vclplug on platforms where Qt5 and
1274 KF5 are available.]),
1278 AS_HELP_STRING([--enable-kde5],
1279 [Compatibility switch for the kde5 => kf5 rename. Use --enable-kf5!])
1282 AC_ARG_ENABLE(gtk3_kde5,
1283 AS_HELP_STRING([--enable-gtk3-kde5],
1284 [Determines whether to use Gtk3 vclplug with KF5 file dialogs on
1285 platforms where Gtk3, Qt5 and Plasma is available.]),
1289 AS_HELP_STRING([--disable-gui],
1290 [Disable use of X11 or Wayland to reduce dependencies (e.g. for building LibreOfficeKit).]),
1293 libo_FUZZ_ARG_ENABLE(randr,
1294 AS_HELP_STRING([--disable-randr],
1295 [Disable RandR support in the vcl project.]),
1296 ,test "${enable_randr+set}" = set || enable_randr=yes)
1298 libo_FUZZ_ARG_ENABLE(gstreamer-1-0,
1299 AS_HELP_STRING([--disable-gstreamer-1-0],
1300 [Disable building with the gstreamer 1.0 avmedia backend.]),
1301 ,test "${enable_gstreamer_1_0+set}" = set || enable_gstreamer_1_0=yes)
1303 libo_FUZZ_ARG_ENABLE(vlc,
1304 AS_HELP_STRING([--enable-vlc],
1305 [Enable building with the (experimental) VLC avmedia backend.]),
1306 ,test "${enable_vlc+set}" = set || enable_vlc=no)
1308 libo_FUZZ_ARG_ENABLE(neon,
1309 AS_HELP_STRING([--disable-neon],
1310 [Disable neon and the compilation of webdav binding.]),
1313 libo_FUZZ_ARG_ENABLE([eot],
1314 [AS_HELP_STRING([--enable-eot],
1315 [Enable support for Embedded OpenType fonts.])],
1316 ,test "${enable_eot+set}" = set || enable_eot=no)
1318 libo_FUZZ_ARG_ENABLE(cve-tests,
1319 AS_HELP_STRING([--disable-cve-tests],
1320 [Prevent CVE tests to be executed]),
1323 libo_FUZZ_ARG_ENABLE(chart-tests,
1324 AS_HELP_STRING([--enable-chart-tests],
1325 [Executes chart XShape tests. In a perfect world these tests would be
1326 stable and everyone could run them, in reality it is best to run them
1327 only on a few machines that are known to work and maintained by people
1328 who can judge if a test failure is a regression or not.]),
1331 AC_ARG_ENABLE(build-unowinreg,
1332 AS_HELP_STRING([--enable-build-unowinreg],
1333 [Do not use the prebuilt unowinreg.dll. Build it instead. The MinGW C++
1334 compiler is needed on Linux.]),
1337 AC_ARG_ENABLE(build-opensymbol,
1338 AS_HELP_STRING([--enable-build-opensymbol],
1339 [Do not use the prebuilt opens___.ttf. Build it instead. This needs
1340 fontforge installed.]),
1343 AC_ARG_ENABLE(dependency-tracking,
1344 AS_HELP_STRING([--enable-dependency-tracking],
1345 [Do not reject slow dependency extractors.])[
1346 --disable-dependency-tracking
1347 Disables generation of dependency information.
1348 Speed up one-time builds.],
1351 AC_ARG_ENABLE(icecream,
1352 AS_HELP_STRING([--enable-icecream],
1353 [Use the 'icecream' distributed compiling tool to speedup the compilation.
1354 It defaults to /opt/icecream for the location of the icecream gcc/g++
1355 wrappers, you can override that using --with-gcc-home=/the/path switch.]),
1359 AS_HELP_STRING([--enable-ld=<linker>],
1360 [Use the specified linker. Both 'gold' and 'lld' linkers generally use less memory and link faster.
1361 By default tries to use the best linker possible, use --disable-ld to use the default linker.]),
1364 libo_FUZZ_ARG_ENABLE(cups,
1365 AS_HELP_STRING([--disable-cups],
1366 [Do not build cups support.])
1369 AC_ARG_ENABLE(ccache,
1370 AS_HELP_STRING([--disable-ccache],
1371 [Do not try to use ccache automatically.
1372 By default, unless on Windows, we will try to detect if ccache is available; in that case if
1373 CC/CXX are not yet set, and --enable-icecream is not given, we
1374 attempt to use ccache. --disable-ccache disables ccache completely.
1375 Additionally ccache's depend mode is enabled if possible,
1376 use --enable-ccache=nodepend to enable ccache without depend mode.
1380 AC_ARG_ENABLE(64-bit,
1381 AS_HELP_STRING([--enable-64-bit],
1382 [Build a 64-bit LibreOffice on platforms where the normal build is 32-bit.
1383 At the moment meaningful only for Windows.]), ,)
1385 libo_FUZZ_ARG_ENABLE(online-update,
1386 AS_HELP_STRING([--enable-online-update],
1387 [Enable the online update service that will check for new versions of
1388 LibreOffice. By default, it is enabled on Windows and Mac, disabled on Linux.
1389 If the value is "mar", the experimental Mozilla-like update will be
1390 enabled instead of the traditional update mechanism.]),
1393 AC_ARG_WITH(update-config,
1394 AS_HELP_STRING([--with-update-config=/tmp/update.ini],
1395 [Path to the update config ini file]))
1397 libo_FUZZ_ARG_ENABLE(extension-update,
1398 AS_HELP_STRING([--disable-extension-update],
1399 [Disable possibility to update installed extensions.]),
1402 libo_FUZZ_ARG_ENABLE(release-build,
1403 AS_HELP_STRING([--enable-release-build],
1404 [Enable release build. Note that the "release build" choice is orthogonal to
1405 whether symbols are present, debug info is generated, or optimization
1407 See http://wiki.documentfoundation.org/Development/DevBuild]),
1410 AC_ARG_ENABLE(windows-build-signing,
1411 AS_HELP_STRING([--enable-windows-build-signing],
1412 [Enable signing of windows binaries (*.exe, *.dll)]),
1415 AC_ARG_ENABLE(silent-msi,
1416 AS_HELP_STRING([--enable-silent-msi],
1417 [Enable MSI with LIMITUI=1 (silent install).]),
1420 AC_ARG_ENABLE(macosx-code-signing,
1421 AS_HELP_STRING([--enable-macosx-code-signing=<identity>],
1422 [Sign executables, dylibs, frameworks and the app bundle. If you
1423 don't provide an identity the first suitable certificate
1424 in your keychain is used.]),
1427 AC_ARG_ENABLE(macosx-package-signing,
1428 AS_HELP_STRING([--enable-macosx-package-signing=<identity>],
1429 [Create a .pkg suitable for uploading to the Mac App Store and sign
1430 it. If you don't provide an identity the first suitable certificate
1431 in your keychain is used.]),
1434 AC_ARG_ENABLE(macosx-sandbox,
1435 AS_HELP_STRING([--enable-macosx-sandbox],
1436 [Make the app bundle run in a sandbox. Requires code signing.
1437 Is required by apps distributed in the Mac App Store, and implies
1438 adherence to App Store rules.]),
1441 AC_ARG_WITH(macosx-bundle-identifier,
1442 AS_HELP_STRING([--with-macosx-bundle-identifier=tld.mumble.orifice.TheOffice],
1443 [Define the macOS bundle identifier. Default is the somewhat weird
1444 org.libreoffice.script ("script", huh?).]),
1445 ,with_macosx_bundle_identifier=org.libreoffice.script)
1447 AC_ARG_WITH(product-name,
1448 AS_HELP_STRING([--with-product-name='My Own Office Suite'],
1449 [Define the product name. Default is AC_PACKAGE_NAME.]),
1450 ,with_product_name=$PRODUCTNAME)
1452 AC_ARG_WITH(package-version,
1453 AS_HELP_STRING([--with-package-version='3.1.4.5'],
1454 [Define the package version. Default is AC_PACKAGE_VERSION. Use only if you distribute an own build for macOS.]),
1457 libo_FUZZ_ARG_ENABLE(readonly-installset,
1458 AS_HELP_STRING([--enable-readonly-installset],
1459 [Prevents any attempts by LibreOffice to write into its installation. That means
1460 at least that no "system-wide" extensions can be added. Partly experimental work in
1461 progress, probably not fully implemented (but is useful for sandboxed macOS builds).]),
1464 libo_FUZZ_ARG_ENABLE(postgresql-sdbc,
1465 AS_HELP_STRING([--disable-postgresql-sdbc],
1466 [Disable the build of the PostgreSQL-SDBC driver.])
1469 libo_FUZZ_ARG_ENABLE(lotuswordpro,
1470 AS_HELP_STRING([--disable-lotuswordpro],
1471 [Disable the build of the Lotus Word Pro filter.]),
1472 ,test "${enable_lotuswordpro+set}" = set || enable_lotuswordpro=yes)
1474 libo_FUZZ_ARG_ENABLE(firebird-sdbc,
1475 AS_HELP_STRING([--disable-firebird-sdbc],
1476 [Disable the build of the Firebird-SDBC driver if it doesn't compile for you.]),
1477 ,test "${enable_firebird_sdbc+set}" = set || enable_firebird_sdbc=yes)
1479 AC_ARG_ENABLE(bogus-pkg-config,
1480 AS_HELP_STRING([--enable-bogus-pkg-config],
1481 [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.]),
1484 AC_ARG_ENABLE(openssl,
1485 AS_HELP_STRING([--disable-openssl],
1486 [Disable using libssl/libcrypto from OpenSSL. If disabled,
1487 components will either use GNUTLS or NSS. Work in progress,
1488 use only if you are hacking on it.]),
1489 ,enable_openssl=yes)
1491 libo_FUZZ_ARG_ENABLE(cipher-openssl-backend,
1492 AS_HELP_STRING([--enable-cipher-openssl-backend],
1493 [Enable using OpenSSL as the actual implementation of the rtl/cipher.h functionality.
1494 Requires --enable-openssl.]))
1496 AC_ARG_ENABLE(library-bin-tar,
1497 AS_HELP_STRING([--enable-library-bin-tar],
1498 [Enable the building and reused of tarball of binary build for some 'external' libraries.
1499 Some libraries can save their build result in a tarball
1500 stored in TARFILE_LOCATION. That binary tarball is
1501 uniquely identified by the source tarball,
1502 the content of the config_host.mk file and the content
1503 of the top-level directory in core for that library
1504 If this option is enabled, then if such a tarfile exist, it will be untarred
1505 instead of the source tarfile, and the build step will be skipped for that
1507 If a proper tarfile does not exist, then the normal source-based
1508 build is done for that library and a proper binary tarfile is created
1509 for the next time.]),
1512 AC_ARG_ENABLE(dconf,
1513 AS_HELP_STRING([--disable-dconf],
1514 [Disable the dconf configuration backend (enabled by default where
1517 libo_FUZZ_ARG_ENABLE(formula-logger,
1519 [--enable-formula-logger],
1520 [Enable formula logger for logging formula calculation flow in Calc.]
1525 AS_HELP_STRING([--disable-ldap],
1526 [Disable LDAP support.]),
1529 dnl ===================================================================
1530 dnl Optional Packages (--with/without-)
1531 dnl ===================================================================
1533 AC_ARG_WITH(gcc-home,
1534 AS_HELP_STRING([--with-gcc-home],
1535 [Specify the location of gcc/g++ manually. This can be used in conjunction
1536 with --enable-icecream when icecream gcc/g++ wrappers are installed in a
1537 non-default path.]),
1540 AC_ARG_WITH(gnu-patch,
1541 AS_HELP_STRING([--with-gnu-patch],
1542 [Specify location of GNU patch on Solaris or FreeBSD.]),
1545 AC_ARG_WITH(build-platform-configure-options,
1546 AS_HELP_STRING([--with-build-platform-configure-options],
1547 [Specify options for the configure script run for the *build* platform in a cross-compilation]),
1551 AS_HELP_STRING([--with-gnu-cp],
1552 [Specify location of GNU cp on Solaris or FreeBSD.]),
1555 AC_ARG_WITH(external-tar,
1556 AS_HELP_STRING([--with-external-tar=<TARFILE_PATH>],
1557 [Specify an absolute path of where to find (and store) tarfiles.]),
1558 TARFILE_LOCATION=$withval ,
1561 AC_ARG_WITH(referenced-git,
1562 AS_HELP_STRING([--with-referenced-git=<OTHER_CHECKOUT_DIR>],
1563 [Specify another checkout directory to reference. This makes use of
1564 git submodule update --reference, and saves a lot of diskspace
1565 when having multiple trees side-by-side.]),
1566 GIT_REFERENCE_SRC=$withval ,
1569 AC_ARG_WITH(linked-git,
1570 AS_HELP_STRING([--with-linked-git=<submodules repo basedir>],
1571 [Specify a directory where the repositories of submodules are located.
1572 This uses a method similar to git-new-workdir to get submodules.]),
1573 GIT_LINK_SRC=$withval ,
1576 AC_ARG_WITH(galleries,
1577 AS_HELP_STRING([--with-galleries],
1578 [Specify how galleries should be built. It is possible either to
1579 build these internally from source ("build"),
1580 or to disable them ("no")]),
1584 AS_HELP_STRING([--with-theme="theme1 theme2..."],
1585 [Choose which themes to include. By default those themes with an '*' are included.
1586 Possible choices: *breeze, *breeze_dark, *breeze_svg, *colibre, *colibre_svg, *elementary,
1587 *elementary_svg, *karasa_jaga, *karasa_jaga_svg, *sifr, *sif_svg, *sifr_dark, *tango.]),
1590 libo_FUZZ_ARG_WITH(helppack-integration,
1591 AS_HELP_STRING([--without-helppack-integration],
1592 [It will not integrate the helppacks to the installer
1593 of the product. Please use this switch to use the online help
1594 or separate help packages.]),
1597 libo_FUZZ_ARG_WITH(fonts,
1598 AS_HELP_STRING([--without-fonts],
1599 [LibreOffice includes some third-party fonts to provide a reliable basis for
1600 help content, templates, samples, etc. When these fonts are already
1601 known to be available on the system then you should use this option.]),
1605 AS_HELP_STRING([--with-epm],
1606 [Decides which epm to use. Default is to use the one from the system if
1607 one is built. When either this is not there or you say =internal epm
1611 AC_ARG_WITH(package-format,
1612 AS_HELP_STRING([--with-package-format],
1613 [Specify package format(s) for LibreOffice installation sets. The
1614 implicit --without-package-format leads to no installation sets being
1615 generated. Possible values: aix, archive, bsd, deb, dmg,
1616 installed, msi, pkg, and rpm.
1617 Example: --with-package-format='deb rpm']),
1621 AS_HELP_STRING([--with-tls],
1622 [Decides which TLS/SSL and cryptographic implementations to use for
1623 LibreOffice's code. Notice that this doesn't apply for depending
1624 libraries like "neon", for example. Default is to use OpenSSL
1625 although NSS is also possible. Notice that selecting NSS restricts
1626 the usage of OpenSSL in LO's code but selecting OpenSSL doesn't
1627 restrict by now the usage of NSS in LO's code. Possible values:
1628 openssl, nss. Example: --with-tls="nss"]),
1631 AC_ARG_WITH(system-libs,
1632 AS_HELP_STRING([--with-system-libs],
1633 [Use libraries already on system -- enables all --with-system-* flags.]),
1636 AC_ARG_WITH(system-bzip2,
1637 AS_HELP_STRING([--with-system-bzip2],
1638 [Use bzip2 already on system. Used only when --enable-online-update=mar]),,
1639 [with_system_bzip2="$with_system_libs"])
1641 AC_ARG_WITH(system-headers,
1642 AS_HELP_STRING([--with-system-headers],
1643 [Use headers already on system -- enables all --with-system-* flags for
1644 external packages whose headers are the only entities used i.e.
1645 boost/odbc/sane-header(s).]),,
1646 [with_system_headers="$with_system_libs"])
1648 AC_ARG_WITH(system-jars,
1649 AS_HELP_STRING([--without-system-jars],
1650 [When building with --with-system-libs, also the needed jars are expected
1651 on the system. Use this to disable that]),,
1652 [with_system_jars="$with_system_libs"])
1654 AC_ARG_WITH(system-cairo,
1655 AS_HELP_STRING([--with-system-cairo],
1656 [Use cairo libraries already on system. Happens automatically for
1657 (implicit) --enable-gtk3.]))
1659 AC_ARG_WITH(system-epoxy,
1660 AS_HELP_STRING([--with-system-epoxy],
1661 [Use epoxy libraries already on system. Happens automatically for
1662 (implicit) --enable-gtk3.]),,
1663 [with_system_epoxy="$with_system_libs"])
1665 AC_ARG_WITH(myspell-dicts,
1666 AS_HELP_STRING([--with-myspell-dicts],
1667 [Adds myspell dictionaries to the LibreOffice installation set]),
1670 AC_ARG_WITH(system-dicts,
1671 AS_HELP_STRING([--without-system-dicts],
1672 [Do not use dictionaries from system paths.]),
1675 AC_ARG_WITH(external-dict-dir,
1676 AS_HELP_STRING([--with-external-dict-dir],
1677 [Specify external dictionary dir.]),
1680 AC_ARG_WITH(external-hyph-dir,
1681 AS_HELP_STRING([--with-external-hyph-dir],
1682 [Specify external hyphenation pattern dir.]),
1685 AC_ARG_WITH(external-thes-dir,
1686 AS_HELP_STRING([--with-external-thes-dir],
1687 [Specify external thesaurus dir.]),
1690 AC_ARG_WITH(system-zlib,
1691 AS_HELP_STRING([--with-system-zlib],
1692 [Use zlib already on system.]),,
1693 [with_system_zlib=auto])
1695 AC_ARG_WITH(system-jpeg,
1696 AS_HELP_STRING([--with-system-jpeg],
1697 [Use jpeg already on system.]),,
1698 [with_system_jpeg="$with_system_libs"])
1700 AC_ARG_WITH(system-clucene,
1701 AS_HELP_STRING([--with-system-clucene],
1702 [Use clucene already on system.]),,
1703 [with_system_clucene="$with_system_libs"])
1705 AC_ARG_WITH(system-expat,
1706 AS_HELP_STRING([--with-system-expat],
1707 [Use expat already on system.]),,
1708 [with_system_expat="$with_system_libs"])
1710 AC_ARG_WITH(system-libxml,
1711 AS_HELP_STRING([--with-system-libxml],
1712 [Use libxml/libxslt already on system.]),,
1713 [with_system_libxml=auto])
1715 AC_ARG_WITH(system-icu,
1716 AS_HELP_STRING([--with-system-icu],
1717 [Use icu already on system.]),,
1718 [with_system_icu="$with_system_libs"])
1720 AC_ARG_WITH(system-ucpp,
1721 AS_HELP_STRING([--with-system-ucpp],
1722 [Use ucpp already on system.]),,
1725 AC_ARG_WITH(system-openldap,
1726 AS_HELP_STRING([--with-system-openldap],
1727 [Use the OpenLDAP LDAP SDK already on system.]),,
1728 [with_system_openldap="$with_system_libs"])
1730 libo_FUZZ_ARG_ENABLE(poppler,
1731 AS_HELP_STRING([--disable-poppler],
1732 [Disable building Poppler.])
1735 AC_ARG_WITH(system-poppler,
1736 AS_HELP_STRING([--with-system-poppler],
1737 [Use system poppler (only needed for PDF import).]),,
1738 [with_system_poppler="$with_system_libs"])
1740 AC_ARG_WITH(system-gpgmepp,
1741 AS_HELP_STRING([--with-system-gpgmepp],
1742 [Use gpgmepp already on system]),,
1743 [with_system_gpgmepp="$with_system_libs"])
1745 AC_ARG_WITH(system-apache-commons,
1746 AS_HELP_STRING([--with-system-apache-commons],
1747 [Use Apache commons libraries already on system.]),,
1748 [with_system_apache_commons="$with_system_jars"])
1750 AC_ARG_WITH(system-mariadb,
1751 AS_HELP_STRING([--with-system-mariadb],
1752 [Use MariaDB/MySQL libraries already on system.]),,
1753 [with_system_mariadb="$with_system_libs"])
1755 AC_ARG_ENABLE(bundle-mariadb,
1756 AS_HELP_STRING([--enable-bundle-mariadb],
1757 [When using MariaDB/MySQL libraries already on system, bundle them with the MariaDB Connector/LibreOffice.])
1760 AC_ARG_WITH(system-postgresql,
1761 AS_HELP_STRING([--with-system-postgresql],
1762 [Use PostgreSQL libraries already on system, for building the PostgreSQL-SDBC
1763 driver. If pg_config is not in PATH, use PGCONFIG to point to it.]),,
1764 [with_system_postgresql="$with_system_libs"])
1766 AC_ARG_WITH(libpq-path,
1767 AS_HELP_STRING([--with-libpq-path=<absolute path to your libpq installation>],
1768 [Use this PostgreSQL C interface (libpq) installation for building
1769 the PostgreSQL-SDBC extension.]),
1772 AC_ARG_WITH(system-firebird,
1773 AS_HELP_STRING([--with-system-firebird],
1774 [Use Firebird libraries already on system, for building the Firebird-SDBC
1775 driver. If fb_config is not in PATH, use FBCONFIG to point to it.]),,
1776 [with_system_firebird="$with_system_libs"])
1778 AC_ARG_WITH(system-libtommath,
1779 AS_HELP_STRING([--with-system-libtommath],
1780 [Use libtommath already on system]),,
1781 [with_system_libtommath="$with_system_libs"])
1783 AC_ARG_WITH(system-hsqldb,
1784 AS_HELP_STRING([--with-system-hsqldb],
1785 [Use hsqldb already on system.]))
1787 AC_ARG_WITH(hsqldb-jar,
1788 AS_HELP_STRING([--with-hsqldb-jar=JARFILE],
1789 [Specify path to jarfile manually.]),
1790 HSQLDB_JAR=$withval)
1792 libo_FUZZ_ARG_ENABLE(scripting-beanshell,
1793 AS_HELP_STRING([--disable-scripting-beanshell],
1794 [Disable support for scripts in BeanShell.]),
1798 AC_ARG_WITH(system-beanshell,
1799 AS_HELP_STRING([--with-system-beanshell],
1800 [Use beanshell already on system.]),,
1801 [with_system_beanshell="$with_system_jars"])
1803 AC_ARG_WITH(beanshell-jar,
1804 AS_HELP_STRING([--with-beanshell-jar=JARFILE],
1805 [Specify path to jarfile manually.]),
1808 libo_FUZZ_ARG_ENABLE(scripting-javascript,
1809 AS_HELP_STRING([--disable-scripting-javascript],
1810 [Disable support for scripts in JavaScript.]),
1814 AC_ARG_WITH(system-rhino,
1815 AS_HELP_STRING([--with-system-rhino],
1816 [Use rhino already on system.]),,)
1817 # [with_system_rhino="$with_system_jars"])
1818 # Above is not used as we have different debug interface
1819 # patched into internal rhino. This code needs to be fixed
1820 # before we can enable it by default.
1822 AC_ARG_WITH(rhino-jar,
1823 AS_HELP_STRING([--with-rhino-jar=JARFILE],
1824 [Specify path to jarfile manually.]),
1827 AC_ARG_WITH(commons-logging-jar,
1828 AS_HELP_STRING([--with-commons-logging-jar=JARFILE],
1829 [Specify path to jarfile manually.]),
1830 COMMONS_LOGGING_JAR=$withval)
1832 AC_ARG_WITH(system-jfreereport,
1833 AS_HELP_STRING([--with-system-jfreereport],
1834 [Use JFreeReport already on system.]),,
1835 [with_system_jfreereport="$with_system_jars"])
1837 AC_ARG_WITH(sac-jar,
1838 AS_HELP_STRING([--with-sac-jar=JARFILE],
1839 [Specify path to jarfile manually.]),
1842 AC_ARG_WITH(libxml-jar,
1843 AS_HELP_STRING([--with-libxml-jar=JARFILE],
1844 [Specify path to jarfile manually.]),
1845 LIBXML_JAR=$withval)
1847 AC_ARG_WITH(flute-jar,
1848 AS_HELP_STRING([--with-flute-jar=JARFILE],
1849 [Specify path to jarfile manually.]),
1852 AC_ARG_WITH(jfreereport-jar,
1853 AS_HELP_STRING([--with-jfreereport-jar=JARFILE],
1854 [Specify path to jarfile manually.]),
1855 JFREEREPORT_JAR=$withval)
1857 AC_ARG_WITH(liblayout-jar,
1858 AS_HELP_STRING([--with-liblayout-jar=JARFILE],
1859 [Specify path to jarfile manually.]),
1860 LIBLAYOUT_JAR=$withval)
1862 AC_ARG_WITH(libloader-jar,
1863 AS_HELP_STRING([--with-libloader-jar=JARFILE],
1864 [Specify path to jarfile manually.]),
1865 LIBLOADER_JAR=$withval)
1867 AC_ARG_WITH(libformula-jar,
1868 AS_HELP_STRING([--with-libformula-jar=JARFILE],
1869 [Specify path to jarfile manually.]),
1870 LIBFORMULA_JAR=$withval)
1872 AC_ARG_WITH(librepository-jar,
1873 AS_HELP_STRING([--with-librepository-jar=JARFILE],
1874 [Specify path to jarfile manually.]),
1875 LIBREPOSITORY_JAR=$withval)
1877 AC_ARG_WITH(libfonts-jar,
1878 AS_HELP_STRING([--with-libfonts-jar=JARFILE],
1879 [Specify path to jarfile manually.]),
1880 LIBFONTS_JAR=$withval)
1882 AC_ARG_WITH(libserializer-jar,
1883 AS_HELP_STRING([--with-libserializer-jar=JARFILE],
1884 [Specify path to jarfile manually.]),
1885 LIBSERIALIZER_JAR=$withval)
1887 AC_ARG_WITH(libbase-jar,
1888 AS_HELP_STRING([--with-libbase-jar=JARFILE],
1889 [Specify path to jarfile manually.]),
1890 LIBBASE_JAR=$withval)
1892 AC_ARG_WITH(system-odbc,
1893 AS_HELP_STRING([--with-system-odbc],
1894 [Use the odbc headers already on system.]),,
1895 [with_system_odbc="auto"])
1897 AC_ARG_WITH(system-sane,
1898 AS_HELP_STRING([--with-system-sane],
1899 [Use sane.h already on system.]),,
1900 [with_system_sane="$with_system_headers"])
1902 AC_ARG_WITH(system-bluez,
1903 AS_HELP_STRING([--with-system-bluez],
1904 [Use bluetooth.h already on system.]),,
1905 [with_system_bluez="$with_system_headers"])
1907 AC_ARG_WITH(system-curl,
1908 AS_HELP_STRING([--with-system-curl],
1909 [Use curl already on system.]),,
1910 [with_system_curl=auto])
1912 AC_ARG_WITH(system-boost,
1913 AS_HELP_STRING([--with-system-boost],
1914 [Use boost already on system.]),,
1915 [with_system_boost="$with_system_headers"])
1917 AC_ARG_WITH(system-glm,
1918 AS_HELP_STRING([--with-system-glm],
1919 [Use glm already on system.]),,
1920 [with_system_glm="$with_system_headers"])
1922 AC_ARG_WITH(system-hunspell,
1923 AS_HELP_STRING([--with-system-hunspell],
1924 [Use libhunspell already on system.]),,
1925 [with_system_hunspell="$with_system_libs"])
1927 AC_ARG_WITH(system-qrcodegen,
1928 AS_HELP_STRING([--with-system-qrcodegen],
1929 [Use libqrcodegen already on system.]),,
1930 [with_system_qrcodegen="$with_system_libs"])
1932 AC_ARG_WITH(system-mythes,
1933 AS_HELP_STRING([--with-system-mythes],
1934 [Use mythes already on system.]),,
1935 [with_system_mythes="$with_system_libs"])
1937 AC_ARG_WITH(system-altlinuxhyph,
1938 AS_HELP_STRING([--with-system-altlinuxhyph],
1939 [Use ALTLinuxhyph already on system.]),,
1940 [with_system_altlinuxhyph="$with_system_libs"])
1942 AC_ARG_WITH(system-lpsolve,
1943 AS_HELP_STRING([--with-system-lpsolve],
1944 [Use lpsolve already on system.]),,
1945 [with_system_lpsolve="$with_system_libs"])
1947 AC_ARG_WITH(system-coinmp,
1948 AS_HELP_STRING([--with-system-coinmp],
1949 [Use CoinMP already on system.]),,
1950 [with_system_coinmp="$with_system_libs"])
1952 AC_ARG_WITH(system-liblangtag,
1953 AS_HELP_STRING([--with-system-liblangtag],
1954 [Use liblangtag library already on system.]),,
1955 [with_system_liblangtag="$with_system_libs"])
1958 AS_HELP_STRING([--with-webdav],
1959 [Specify which library to use for webdav implementation.
1960 Possible values: "neon", "serf", "no". The default value is "neon".
1961 Example: --with-webdav="serf"]),
1962 WITH_WEBDAV=$withval,
1965 AC_ARG_WITH(linker-hash-style,
1966 AS_HELP_STRING([--with-linker-hash-style],
1967 [Use linker with --hash-style=<style> when linking shared objects.
1968 Possible values: "sysv", "gnu", "both". The default value is "gnu"
1969 if supported on the build system, and "sysv" otherwise.]))
1971 AC_ARG_WITH(jdk-home,
1972 AS_HELP_STRING([--with-jdk-home=<absolute path to JDK home>],
1973 [If you have installed JDK 8 or later on your system please supply the
1974 path here. Note that this is not the location of the java command but the
1975 location of the entire distribution.]),
1979 AS_HELP_STRING([--with-help],
1980 [Enable the build of help. There is a special parameter "common" that
1981 can be used to bundle only the common part, .e.g help-specific icons.
1982 This is useful when you build the helpcontent separately.])
1984 Usage: --with-help build the old local help
1985 --without-help no local help (default)
1986 --with-help=html build the new HTML local help
1987 --with-help=online build the new HTML online help
1991 AC_ARG_WITH(omindex,
1992 AS_HELP_STRING([--with-omindex],
1993 [Enable the support of xapian-omega index for online help.])
1995 Usage: --with-omindex=server prepare the pages for omindex
1996 but let xapian-omega be built in server.
1997 --with-omindex=noxap do not prepare online pages
2002 libo_FUZZ_ARG_WITH(java,
2003 AS_HELP_STRING([--with-java=<java command>],
2004 [Specify the name of the Java interpreter command. Typically "java"
2005 which is the default.
2007 To build without support for Java components, applets, accessibility
2008 or the XML filters written in Java, use --without-java or --with-java=no.]),
2009 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ],
2010 [ test -z "$with_java" -o "$with_java" = "yes" && with_java=java ]
2013 AC_ARG_WITH(jvm-path,
2014 AS_HELP_STRING([--with-jvm-path=<absolute path to parent of jvm home>],
2015 [Use a specific JVM search path at runtime.
2016 e.g. use --with-jvm-path=/usr/lib/ to find JRE/JDK in /usr/lib/jvm/]),
2019 AC_ARG_WITH(ant-home,
2020 AS_HELP_STRING([--with-ant-home=<absolute path to Ant home>],
2021 [If you have installed Apache Ant on your system, please supply the path here.
2022 Note that this is not the location of the Ant binary but the location
2023 of the entire distribution.]),
2026 AC_ARG_WITH(symbol-config,
2027 AS_HELP_STRING([--with-symbol-config],
2028 [Configuration for the crashreport symbol upload]),
2030 [with_symbol_config=no])
2032 AC_ARG_WITH(export-validation,
2033 AS_HELP_STRING([--without-export-validation],
2034 [Disable validating OOXML and ODF files as exported from in-tree tests.]),
2035 ,with_export_validation=auto)
2037 AC_ARG_WITH(bffvalidator,
2038 AS_HELP_STRING([--with-bffvalidator=<absolute path to BFFValidator>],
2039 [Enables export validation for Microsoft Binary formats (doc, xls, ppt).
2040 Requires installed Microsoft Office Binary File Format Validator.
2041 Note: export-validation (--with-export-validation) is required to be turned on.
2042 See https://www.microsoft.com/en-us/download/details.aspx?id=26794]),
2043 ,with_bffvalidator=no)
2045 libo_FUZZ_ARG_WITH(junit,
2046 AS_HELP_STRING([--with-junit=<absolute path to JUnit 4 jar>],
2047 [Specifies the JUnit 4 jar file to use for JUnit-based tests.
2048 --without-junit disables those tests. Not relevant in the --without-java case.]),
2051 AC_ARG_WITH(hamcrest,
2052 AS_HELP_STRING([--with-hamcrest=<absolute path to hamcrest jar>],
2053 [Specifies the hamcrest jar file to use for JUnit-based tests.
2054 --without-junit disables those tests. Not relevant in the --without-java case.]),
2057 AC_ARG_WITH(perl-home,
2058 AS_HELP_STRING([--with-perl-home=<abs. path to Perl 5 home>],
2059 [If you have installed Perl 5 Distribution, on your system, please
2060 supply the path here. Note that this is not the location of the Perl
2061 binary but the location of the entire distribution.]),
2064 libo_FUZZ_ARG_WITH(doxygen,
2066 [--with-doxygen=<absolute path to doxygen executable>],
2067 [Specifies the doxygen executable to use when generating ODK C/C++
2068 documentation. --without-doxygen disables generation of ODK C/C++
2069 documentation. Not relevant in the --disable-odk case.]),
2072 AC_ARG_WITH(visual-studio,
2073 AS_HELP_STRING([--with-visual-studio=<2017>],
2074 [Specify which Visual Studio version to use in case several are
2075 installed. Currently only 2017 is supported.]),
2078 AC_ARG_WITH(windows-sdk,
2079 AS_HELP_STRING([--with-windows-sdk=<8.0(A)/8.1(A)/10>],
2080 [Specify which Windows SDK, or "Windows Kit", version to use
2081 in case the one that came with the selected Visual Studio
2082 is not what you want for some reason. Note that not all compiler/SDK
2083 combinations are supported. The intent is that this option should not
2088 AS_HELP_STRING([--with-lang="es sw tu cs sk"],
2089 [Use this option to build LibreOffice with additional UI language support.
2090 English (US) is always included by default.
2091 Separate multiple languages with space.
2092 For all languages, use --with-lang=ALL.]),
2095 AC_ARG_WITH(locales,
2096 AS_HELP_STRING([--with-locales="en es pt fr zh kr ja"],
2097 [Use this option to limit the locale information built in.
2098 Separate multiple locales with space.
2099 Very experimental and might well break stuff.
2100 Just a desperate measure to shrink code and data size.
2101 By default all the locales available is included.
2102 This option is completely unrelated to --with-lang.])
2104 Affects also our character encoding conversion
2105 tables for encodings mainly targeted for a
2106 particular locale, like EUC-CN and EUC-TW for
2107 zh, ISO-2022-JP for ja.
2109 Affects also our add-on break iterator data for
2112 For the default, all locales, don't use this switch at all.
2113 Specifying just the language part of a locale means all matching
2114 locales will be included.
2118 # Kerberos and GSSAPI used only by PostgreSQL as of LibO 3.5
2119 libo_FUZZ_ARG_WITH(krb5,
2120 AS_HELP_STRING([--with-krb5],
2121 [Enable MIT Kerberos 5 support in modules that support it.
2122 By default automatically enabled on platforms
2123 where a good system Kerberos 5 is available.]),
2126 libo_FUZZ_ARG_WITH(gssapi,
2127 AS_HELP_STRING([--with-gssapi],
2128 [Enable GSSAPI support in modules that support it.
2129 By default automatically enabled on platforms
2130 where a good system GSSAPI is available.]),
2134 AS_HELP_STRING([--with-iwyu],
2135 [Use given IWYU binary path to check unneeded includes instead of building.
2136 Use only if you are hacking on it.]),
2139 libo_FUZZ_ARG_WITH(lxml,
2140 AS_HELP_STRING([--without-lxml],
2141 [gla11y will use python lxml when available, potentially building a local copy if necessary.
2142 --without-lxml tells it to not use python lxml at all, which means that gla11y will only
2143 report widget classes and ids.]),
2146 dnl ===================================================================
2148 dnl ===================================================================
2150 AC_ARG_WITH(branding,
2151 AS_HELP_STRING([--with-branding=/path/to/images],
2152 [Use given path to retrieve branding images set.])
2154 Search for intro.png about.svg and flat_logo.svg.
2155 If any is missing, default ones will be used instead.
2157 Search also progress.conf for progress
2158 settings on intro screen :
2160 PROGRESSBARCOLOR="255,255,255" Set color of
2161 progress bar. Comma separated RGB decimal values.
2162 PROGRESSSIZE="407,6" Set size of progress bar.
2163 Comma separated decimal values (width, height).
2164 PROGRESSPOSITION="61,317" Set position of progress
2165 bar from left,top. Comma separated decimal values.
2166 PROGRESSFRAMECOLOR="20,136,3" Set color of progress
2167 bar frame. Comma separated RGB decimal values.
2168 PROGRESSTEXTCOLOR="0,0,0" Set color of progress
2169 bar text. Comma separated RGB decimal values.
2170 PROGRESSTEXTBASELINE="287" Set vertical position of
2171 progress bar text from top. Decimal value.
2173 Default values will be used if not found.
2178 AC_ARG_WITH(extra-buildid,
2179 AS_HELP_STRING([--with-extra-buildid="Tinderbox: Win-x86@6, Branch:master, Date:2012-11-26_00.29.34"],
2180 [Show addition build identification in about dialog.]),
2185 AS_HELP_STRING([--with-vendor="John the Builder"],
2186 [Set vendor of the build.]),
2189 AC_ARG_WITH(android-package-name,
2190 AS_HELP_STRING([--with-android-package-name="org.libreoffice"],
2191 [Set Android package name of the build.]),
2194 AC_ARG_WITH(compat-oowrappers,
2195 AS_HELP_STRING([--with-compat-oowrappers],
2196 [Install oo* wrappers in parallel with
2197 lo* ones to keep backward compatibility.
2198 Has effect only with make distro-pack-install]),
2201 AC_ARG_WITH(os-version,
2202 AS_HELP_STRING([--with-os-version=<OSVERSION>],
2203 [For FreeBSD users, use this option to override the detected OSVERSION.]),
2206 AC_ARG_WITH(mingw-cross-compiler,
2207 AS_HELP_STRING([--with-mingw-cross-compiler=<mingw32-g++ command>],
2208 [Specify the MinGW cross-compiler to use.
2209 When building on the ODK on Unix and building unowinreg.dll,
2210 specify the MinGW C++ cross-compiler.]),
2213 AC_ARG_WITH(idlc-cpp,
2214 AS_HELP_STRING([--with-idlc-cpp=<cpp/ucpp>],
2215 [Specify the C Preprocessor to use for idlc. Default is ucpp.]),
2218 AC_ARG_WITH(build-version,
2219 AS_HELP_STRING([--with-build-version="Built by Jim"],
2220 [Allows the builder to add a custom version tag that will appear in the
2221 Help/About box for QA purposes.]),
2222 with_build_version=$withval,
2225 AC_ARG_WITH(parallelism,
2226 AS_HELP_STRING([--with-parallelism],
2227 [Number of jobs to run simultaneously during build. Parallel builds can
2228 save a lot of time on multi-cpu machines. Defaults to the number of
2229 CPUs on the machine, unless you configure --enable-icecream - then to
2233 AC_ARG_WITH(all-tarballs,
2234 AS_HELP_STRING([--with-all-tarballs],
2235 [Download all external tarballs unconditionally]))
2237 AC_ARG_WITH(gdrive-client-id,
2238 AS_HELP_STRING([--with-gdrive-client-id],
2239 [Provides the client id of the application for OAuth2 authentication
2240 on Google Drive. If either this or --with-gdrive-client-secret is
2241 empty, the feature will be disabled]),
2244 AC_ARG_WITH(gdrive-client-secret,
2245 AS_HELP_STRING([--with-gdrive-client-secret],
2246 [Provides the client secret of the application for OAuth2
2247 authentication on Google Drive. If either this or
2248 --with-gdrive-client-id is empty, the feature will be disabled]),
2251 AC_ARG_WITH(alfresco-cloud-client-id,
2252 AS_HELP_STRING([--with-alfresco-cloud-client-id],
2253 [Provides the client id of the application for OAuth2 authentication
2254 on Alfresco Cloud. If either this or --with-alfresco-cloud-client-secret is
2255 empty, the feature will be disabled]),
2258 AC_ARG_WITH(alfresco-cloud-client-secret,
2259 AS_HELP_STRING([--with-alfresco-cloud-client-secret],
2260 [Provides the client secret of the application for OAuth2
2261 authentication on Alfresco Cloud. If either this or
2262 --with-alfresco-cloud-client-id is empty, the feature will be disabled]),
2265 AC_ARG_WITH(onedrive-client-id,
2266 AS_HELP_STRING([--with-onedrive-client-id],
2267 [Provides the client id of the application for OAuth2 authentication
2268 on OneDrive. If either this or --with-onedrive-client-secret is
2269 empty, the feature will be disabled]),
2272 AC_ARG_WITH(onedrive-client-secret,
2273 AS_HELP_STRING([--with-onedrive-client-secret],
2274 [Provides the client secret of the application for OAuth2
2275 authentication on OneDrive. If either this or
2276 --with-onedrive-client-id is empty, the feature will be disabled]),
2278 dnl ===================================================================
2279 dnl Do we want to use pre-build binary tarball for recompile
2280 dnl ===================================================================
2282 if test "$enable_library_bin_tar" = "yes" ; then
2283 USE_LIBRARY_BIN_TAR=TRUE
2285 USE_LIBRARY_BIN_TAR=
2287 AC_SUBST(USE_LIBRARY_BIN_TAR)
2289 dnl ===================================================================
2290 dnl Test whether build target is Release Build
2291 dnl ===================================================================
2292 AC_MSG_CHECKING([whether build target is Release Build])
2293 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
2295 ENABLE_RELEASE_BUILD=
2297 AC_MSG_RESULT([yes])
2298 ENABLE_RELEASE_BUILD=TRUE
2300 AC_SUBST(ENABLE_RELEASE_BUILD)
2302 dnl ===================================================================
2303 dnl Test whether to sign Windows Build
2304 dnl ===================================================================
2305 AC_MSG_CHECKING([whether to sign windows build])
2306 if test "$enable_windows_build_signing" = "yes" -a "$_os" = "WINNT"; then
2307 AC_MSG_RESULT([yes])
2308 WINDOWS_BUILD_SIGNING="TRUE"
2311 WINDOWS_BUILD_SIGNING="FALSE"
2313 AC_SUBST(WINDOWS_BUILD_SIGNING)
2315 dnl ===================================================================
2316 dnl MacOSX build and runtime environment options
2317 dnl ===================================================================
2319 AC_ARG_WITH(macosx-sdk,
2320 AS_HELP_STRING([--with-macosx-sdk=<version>],
2321 [Prefer a specific SDK for building.])
2323 If the requested SDK is not available, a search for the oldest one will be done.
2324 With current Xcode versions, only the latest SDK is included, so this option is
2325 not terribly useful. It works fine to build with a new SDK and run the result
2328 e. g.: --with-macosx-sdk=10.10
2330 there are 3 options to control the MacOSX build:
2331 --with-macosx-sdk (referred as 'sdk' below)
2332 --with-macosx-version-min-required (referred as 'min' below)
2333 --with-macosx-version-max-allowed (referred as 'max' below)
2335 the connection between these value and the default they take is as follow:
2336 ( ? means not specified on the command line, s means the SDK version found,
2337 constraint: 8 <= x <= y <= z)
2339 ==========================================
2340 command line || config result
2341 ==========================================
2342 min | max | sdk || min | max | sdk |
2343 ? | ? | ? || 10.10 | 10.s | 10.s |
2344 ? | ? | 10.x || 10.10 | 10.x | 10.x |
2345 ? | 10.x | ? || 10.10 | 10.s | 10.s |
2346 ? | 10.x | 10.y || 10.10 | 10.x | 10.y |
2347 10.x | ? | ? || 10.x | 10.s | 10.s |
2348 10.x | ? | 10.y || 10.x | 10.y | 10.y |
2349 10.x | 10.y | ? || 10.x | 10.y | 10.y |
2350 10.x | 10.y | 10.z || 10.x | 10.y | 10.z |
2353 see: http://developer.apple.com/library/mac/#technotes/tn2064/_index.html
2354 for a detailed technical explanation of these variables
2356 Note: MACOSX_DEPLOYMENT_TARGET will be set to the value of 'min'.
2360 AC_ARG_WITH(macosx-version-min-required,
2361 AS_HELP_STRING([--with-macosx-version-min-required=<version>],
2362 [set the minimum OS version needed to run the built LibreOffice])
2364 e. g.: --with-macos-version-min-required=10.10
2365 see --with-macosx-sdk for more info
2369 AC_ARG_WITH(macosx-version-max-allowed,
2370 AS_HELP_STRING([--with-macosx-version-max-allowed=<version>],
2371 [set the maximum allowed OS version the LibreOffice compilation can use APIs from])
2373 e. g.: --with-macos-version-max-allowed=10.10
2374 see --with-macosx-sdk for more info
2379 dnl ===================================================================
2380 dnl options for stuff used during cross-compilation build
2381 dnl Not quite superseded by --with-build-platform-configure-options.
2382 dnl TODO: check, if the "force" option is still needed anywhere.
2383 dnl ===================================================================
2385 AC_ARG_WITH(system-icu-for-build,
2386 AS_HELP_STRING([--with-system-icu-for-build=yes/no/force],
2387 [Use icu already on system for build tools (cross-compilation only).]))
2390 dnl ===================================================================
2391 dnl Check for incompatible options set by fuzzing, and reset those
2392 dnl automatically to working combinations
2393 dnl ===================================================================
2395 if test "$libo_fuzzed_enable_dbus" = yes -a "$libo_fuzzed_enable_avahi" -a \
2396 "$enable_dbus" != "$enable_avahi"; then
2397 AC_MSG_NOTICE([Resetting --enable-avahi=$enable_dbus])
2398 enable_avahi=$enable_dbus
2403 if ! echo "$LO_PATH" | $EGREP -q "(^|${P_SEP})$1($|${P_SEP})"; then
2404 LO_PATH="${LO_PATH:+$LO_PATH$P_SEP}$1"
2408 add_lopath_before ()
2413 for dir in $LO_PATH ; do
2414 if test "$dir" != "$1" ; then
2415 path_cleanup=${path_cleanup:+$path_cleanup$P_SEP}$dir
2418 LO_PATH="$1${path_cleanup:+$P_SEP$path_cleanup}"
2421 dnl ===================================================================
2422 dnl check for required programs (grep, awk, sed, bash)
2423 dnl ===================================================================
2427 if test -n "$1"; then
2428 if test "$build_os" = "cygwin"; then
2429 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
2431 new_path=`cygpath -sm "$formatted_path"`
2434 new_path=`cygpath -u "$formatted_path"`
2439 if test "$2" = "after"; then
2440 add_lopath_after "$new_path"
2442 add_lopath_before "$new_path"
2449 AC_PATH_PROG( AWK, $AWK)
2450 if test -z "$AWK"; then
2451 AC_MSG_ERROR([install awk to run this script])
2454 AC_PATH_PROG(BASH, bash)
2455 if test -z "$BASH"; then
2456 AC_MSG_ERROR([bash not found in \$PATH])
2460 AC_MSG_CHECKING([for GNU or BSD tar])
2461 for a in $GNUTAR gtar gnutar bsdtar tar /usr/sfw/bin/gtar; do
2462 $a --version 2> /dev/null | egrep "GNU|bsdtar" 2>&1 > /dev/null
2463 if test $? -eq 0; then
2468 AC_MSG_RESULT($GNUTAR)
2469 if test -z "$GNUTAR"; then
2470 AC_MSG_ERROR([not found. install GNU or BSD tar.])
2474 AC_MSG_CHECKING([for tar's option to strip components])
2475 $GNUTAR --help 2> /dev/null | egrep "bsdtar|strip-components" 2>&1 >/dev/null
2476 if test $? -eq 0; then
2477 STRIP_COMPONENTS="--strip-components"
2479 $GNUTAR --help 2> /dev/null | egrep "strip-path" 2>&1 >/dev/null
2480 if test $? -eq 0; then
2481 STRIP_COMPONENTS="--strip-path"
2483 STRIP_COMPONENTS="unsupported"
2486 AC_MSG_RESULT($STRIP_COMPONENTS)
2487 if test x$STRIP_COMPONENTS = xunsupported; then
2488 AC_MSG_ERROR([you need a tar that is able to strip components.])
2490 AC_SUBST(STRIP_COMPONENTS)
2492 dnl It is useful to have a BUILD_TYPE keyword to distinguish "normal"
2493 dnl desktop OSes from "mobile" ones.
2495 dnl We assume that a non-DESKTOP build type is also a non-NATIVE one.
2496 dnl In other words, that when building for an OS that is not a
2497 dnl "desktop" one but a "mobile" one, we are always cross-compiling.
2499 dnl Note the direction of the implication; there is no assumption that
2500 dnl cross-compiling would imply a non-desktop OS.
2502 if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
2503 BUILD_TYPE="$BUILD_TYPE DESKTOP"
2504 AC_DEFINE(HAVE_FEATURE_DESKTOP)
2505 AC_DEFINE(HAVE_FEATURE_MULTIUSER_ENVIRONMENT)
2508 # Whether to build "avmedia" functionality or not.
2510 if test -z "$enable_avmedia"; then
2514 BUILD_TYPE="$BUILD_TYPE AVMEDIA"
2515 if test "$enable_avmedia" = yes; then
2516 AC_DEFINE(HAVE_FEATURE_AVMEDIA)
2518 USE_AVMEDIA_DUMMY='TRUE'
2520 AC_SUBST(USE_AVMEDIA_DUMMY)
2522 # Decide whether to build database connectivity stuff (including
2523 # Base) or not. We probably don't want to on non-desktop OSes.
2524 if test -z "$enable_database_connectivity"; then
2525 # --disable-database-connectivity is unfinished work in progress
2526 # and the iOS test app doesn't link if we actually try to use it.
2527 # if test $_os != iOS -a $_os != Android; then
2528 if test $_os != iOS; then
2529 enable_database_connectivity=yes
2533 if test "$enable_database_connectivity" = yes; then
2534 BUILD_TYPE="$BUILD_TYPE DBCONNECTIVITY"
2535 AC_DEFINE(HAVE_FEATURE_DBCONNECTIVITY)
2538 if test -z "$enable_extensions"; then
2539 # For iOS and Android disable extensions unless specifically overridden with --enable-extensions.
2540 if test $_os != iOS -a $_os != Android; then
2541 enable_extensions=yes
2545 if test "$enable_extensions" = yes; then
2546 BUILD_TYPE="$BUILD_TYPE EXTENSIONS"
2547 AC_DEFINE(HAVE_FEATURE_EXTENSIONS)
2550 if test -z "$enable_scripting"; then
2551 # Disable scripting for iOS unless specifically overridden
2552 # with --enable-scripting.
2553 if test $_os != iOS; then
2554 enable_scripting=yes
2558 DISABLE_SCRIPTING=''
2559 if test "$enable_scripting" = yes; then
2560 BUILD_TYPE="$BUILD_TYPE SCRIPTING"
2561 AC_DEFINE(HAVE_FEATURE_SCRIPTING)
2563 DISABLE_SCRIPTING='TRUE'
2564 SCPDEFS="$SCPDEFS -DDISABLE_SCRIPTING"
2567 if test $_os = iOS -o $_os = Android; then
2568 # Disable dynamic_loading always for iOS and Android
2569 enable_dynamic_loading=no
2570 elif test -z "$enable_dynamic_loading"; then
2571 # Otherwise enable it unless specifically disabled
2572 enable_dynamic_loading=yes
2575 DISABLE_DYNLOADING=''
2576 if test "$enable_dynamic_loading" = yes; then
2577 BUILD_TYPE="$BUILD_TYPE DYNLOADING"
2579 DISABLE_DYNLOADING='TRUE'
2581 AC_SUBST(DISABLE_DYNLOADING)
2583 # remember SYSBASE value
2586 dnl ===================================================================
2587 dnl Sort out various gallery compilation options
2588 dnl ===================================================================
2589 AC_MSG_CHECKING([how to build and package galleries])
2590 if test -n "${with_galleries}"; then
2591 if test "$with_galleries" = "build"; then
2592 WITH_GALLERY_BUILD=TRUE
2593 AC_MSG_RESULT([build from source images internally])
2594 elif test "$with_galleries" = "no"; then
2596 AC_MSG_RESULT([disable non-internal gallery build])
2598 AC_MSG_ERROR([unknown value --with-galleries=$with_galleries])
2601 if test $_os != iOS -a $_os != Android; then
2602 WITH_GALLERY_BUILD=TRUE
2603 AC_MSG_RESULT([internal src images for desktop])
2606 AC_MSG_RESULT([disable src image build])
2609 AC_SUBST(WITH_GALLERY_BUILD)
2611 dnl ===================================================================
2612 dnl Checks if ccache is available
2613 dnl ===================================================================
2615 if test "$_os" = "WINNT"; then
2616 # on windows/VC build do not use ccache
2618 elif test "$enable_ccache" = "no"; then
2620 elif test -n "$enable_ccache" -o \( "$enable_ccache" = "" -a "$enable_icecream" != "yes" \); then
2621 case "%$CC%$CXX%" in
2622 # If $CC and/or $CXX already contain "ccache" (possibly suffixed with some version number etc),
2623 # assume that's good then
2624 *%ccache[[-_' ']]*|*/ccache[[-_' ']]*)
2625 AC_MSG_NOTICE([ccache seems to be included in a pre-defined CC and/or CXX])
2626 CCACHE_DEPEND_MODE=1
2629 AC_PATH_PROG([CCACHE],[ccache],[not found])
2630 if test "$CCACHE" = "not found"; then
2633 CCACHE_DEPEND_MODE=1
2634 # Need to check for ccache version: otherwise prevents
2635 # caching of the results (like "-x objective-c++" for Mac)
2636 if test $_os = Darwin -o $_os = iOS; then
2637 # Check ccache version
2638 AC_MSG_CHECKING([whether version of ccache is suitable])
2639 CCACHE_VERSION=`"$CCACHE" -V | "$AWK" '/^ccache version/{print $3}'`
2640 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
2641 if test "$CCACHE_VERSION" = "2.4_OOo" -o "$CCACHE_NUMVER" -ge "030100"; then
2642 AC_MSG_RESULT([yes, $CCACHE_VERSION])
2644 AC_MSG_RESULT([no, $CCACHE_VERSION])
2655 if test "$enable_ccache" = "nodepend"; then
2656 CCACHE_DEPEND_MODE=""
2658 AC_SUBST(CCACHE_DEPEND_MODE)
2660 if test "$CCACHE" != ""; then
2661 ccache_size_msg=$([ccache -s | tail -n 1 | sed 's/^[^0-9]*//' | sed -e 's/\.[0-9]*//'])
2662 ccache_size=$(echo "$ccache_size_msg" | grep "G" | sed -e 's/G.*$//')
2663 if test "$ccache_size" = ""; then
2664 ccache_size=$(echo "$ccache_size_msg" | grep "M" | sed -e 's/\ M.*$//')
2665 if test "$ccache_size" = ""; then
2668 # we could not determine the size or it was less than 1GB -> disable auto-ccache
2669 if test $ccache_size -lt 1024; then
2671 AC_MSG_WARN([ccache's cache size is less than 1GB using it is counter-productive: Disabling auto-ccache detection])
2672 add_warning "ccache's cache size is less than 1GB using it is counter-productive: auto-ccache detection disabled"
2674 # warn that ccache may be too small for debug build
2675 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
2676 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
2679 if test $ccache_size -lt 5; then
2680 #warn that ccache may be too small for debug build
2681 AC_MSG_WARN([ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build])
2682 add_warning "ccache's cache size is less than 5GB using it may be counter-productive for debug or symbol-enabled build"
2687 dnl ===================================================================
2688 dnl Checks for C compiler,
2689 dnl The check for the C++ compiler is later on.
2690 dnl ===================================================================
2691 if test "$_os" != "WINNT"; then
2693 AC_MSG_CHECKING([gcc home])
2694 if test -z "$with_gcc_home"; then
2695 if test "$enable_icecream" = "yes"; then
2696 if test -d "/usr/lib/icecc/bin"; then
2697 GCC_HOME="/usr/lib/icecc/"
2698 elif test -d "/usr/libexec/icecc/bin"; then
2699 GCC_HOME="/usr/libexec/icecc/"
2700 elif test -d "/opt/icecream/bin"; then
2701 GCC_HOME="/opt/icecream/"
2703 AC_MSG_ERROR([Could not figure out the location of icecream GCC wrappers, manually use --with-gcc-home])
2707 GCC_HOME=`which gcc | $SED -e s,/bin/gcc,,`
2708 GCC_HOME_SET="false"
2711 GCC_HOME="$with_gcc_home"
2713 AC_MSG_RESULT($GCC_HOME)
2716 if test "$GCC_HOME_SET" = "true"; then
2717 if test -z "$CC"; then
2718 CC="$GCC_HOME/bin/gcc"
2721 if test -z "$CXX"; then
2722 CXX="$GCC_HOME/bin/g++"
2728 COMPATH=`dirname "$CC"`
2729 if test "$COMPATH" = "."; then
2730 AC_PATH_PROGS(COMPATH, $CC)
2731 dnl double square bracket to get single because of M4 quote...
2732 COMPATH=`echo $COMPATH | $SED "s@/[[^/:]]*\\\$@@"`
2734 COMPATH=`echo $COMPATH | $SED "s@/[[Bb]][[Ii]][[Nn]]\\\$@@"`
2736 dnl ===================================================================
2738 dnl ===================================================================
2739 AC_MSG_CHECKING([whether to build with Java support])
2740 if test "$with_java" != "no"; then
2741 if test "$DISABLE_SCRIPTING" = TRUE; then
2742 AC_MSG_RESULT([no, overridden by --disable-scripting])
2746 AC_MSG_RESULT([yes])
2748 AC_DEFINE(HAVE_FEATURE_JAVA)
2755 AC_SUBST(ENABLE_JAVA)
2757 dnl ENABLE_JAVA="TRUE" if we want there to be *run-time* (and build-time) support for Java
2759 dnl ENABLE_JAVA="" indicate no Java support at all
2761 dnl ===================================================================
2762 dnl Check macOS SDK and compiler
2763 dnl ===================================================================
2765 if test $_os = Darwin; then
2767 # If no --with-macosx-sdk option is given, look for one
2769 # The intent is that for "most" Mac-based developers, a suitable
2770 # SDK will be found automatically without any configure options.
2772 # For developers with a current Xcode, the lowest-numbered SDK
2773 # higher than or equal to the minimum required should be found.
2775 AC_MSG_CHECKING([what macOS SDK to use])
2776 for _macosx_sdk in ${with_macosx_sdk-10.15 10.14 10.13 10.12}; do
2777 MACOSX_SDK_PATH=`xcrun --sdk macosx${_macosx_sdk} --show-sdk-path 2> /dev/null`
2778 if test -d "$MACOSX_SDK_PATH"; then
2779 with_macosx_sdk="${_macosx_sdk}"
2782 MACOSX_SDK_PATH="`xcode-select -print-path`/Platforms/MacOSX.platform/Developer/SDKs/MacOSX${_macosx_sdk}.sdk"
2783 if test -d "$MACOSX_SDK_PATH"; then
2784 with_macosx_sdk="${_macosx_sdk}"
2789 if test ! -d "$MACOSX_SDK_PATH"; then
2790 AC_MSG_ERROR([Could not find an appropriate macOS SDK])
2793 AC_MSG_RESULT([SDK $with_macosx_sdk at $MACOSX_SDK_PATH])
2795 case $with_macosx_sdk in
2797 MACOSX_SDK_VERSION=101200
2800 MACOSX_SDK_VERSION=101300
2803 MACOSX_SDK_VERSION=101400
2806 MACOSX_SDK_VERSION=101500
2809 AC_MSG_ERROR([with-macosx-sdk $with_macosx_sdk is not a supported value, supported values are 10.12--15])
2813 if test "$with_macosx_version_min_required" = "" ; then
2814 with_macosx_version_min_required="10.10";
2817 if test "$with_macosx_version_max_allowed" = "" ; then
2818 with_macosx_version_max_allowed="$with_macosx_sdk"
2821 # export this so that "xcrun" invocations later return matching values
2822 DEVELOPER_DIR="${MACOSX_SDK_PATH%/SDKs*}"
2823 DEVELOPER_DIR="${DEVELOPER_DIR%/Platforms*}"
2824 export DEVELOPER_DIR
2825 FRAMEWORKSHOME="$MACOSX_SDK_PATH/System/Library/Frameworks"
2826 MACOSX_DEPLOYMENT_TARGET="$with_macosx_version_min_required"
2828 AC_MSG_CHECKING([whether Xcode is new enough])
2829 my_xcode_ver1=$(xcrun xcodebuild -version | head -n 1)
2830 my_xcode_ver2=${my_xcode_ver1#Xcode }
2831 my_xcode_ver3=$(printf %s "$my_xcode_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
2832 if test "$my_xcode_ver3" -ge 903; then
2833 AC_MSG_RESULT([yes ($my_xcode_ver2)])
2835 AC_MSG_ERROR(["$my_xcode_ver1" is too old or unrecognized, must be at least Xcode 9.3])
2838 case "$with_macosx_version_min_required" in
2840 MAC_OS_X_VERSION_MIN_REQUIRED="101000"
2843 MAC_OS_X_VERSION_MIN_REQUIRED="101100"
2846 MAC_OS_X_VERSION_MIN_REQUIRED="101200"
2849 MAC_OS_X_VERSION_MIN_REQUIRED="101300"
2852 MAC_OS_X_VERSION_MIN_REQUIRED="101400"
2855 MAC_OS_X_VERSION_MIN_REQUIRED="101500"
2858 AC_MSG_ERROR([with-macosx-version-min-required $with_macosx_version_min_required is not a supported value, supported values are 10.10--15])
2861 MAC_OS_X_VERSION_MIN_REQUIRED_DOTS=$with_macosx_version_min_required
2863 LIBTOOL=/usr/bin/libtool
2864 INSTALL_NAME_TOOL=install_name_tool
2865 if test -z "$save_CC"; then
2866 stdlib=-stdlib=libc++
2867 if test "$ENABLE_LTO" = TRUE; then
2871 AC_MSG_CHECKING([what C compiler to use])
2872 CC="`xcrun -find clang`"
2873 CC_BASE=`first_arg_basename "$CC"`
2874 CC+=" -m64 $lto -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
2875 AC_MSG_RESULT([$CC])
2877 AC_MSG_CHECKING([what C++ compiler to use])
2878 CXX="`xcrun -find clang++`"
2879 CXX_BASE=`first_arg_basename "$CXX"`
2880 CXX+=" -m64 $lto $stdlib -mmacosx-version-min=$with_macosx_version_min_required -isysroot $MACOSX_SDK_PATH"
2881 AC_MSG_RESULT([$CXX])
2883 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
2886 STRIP=`xcrun -find strip`
2887 LIBTOOL=`xcrun -find libtool`
2888 RANLIB=`xcrun -find ranlib`
2891 case "$with_macosx_version_max_allowed" in
2893 MAC_OS_X_VERSION_MAX_ALLOWED="101000"
2896 MAC_OS_X_VERSION_MAX_ALLOWED="101100"
2899 MAC_OS_X_VERSION_MAX_ALLOWED="101200"
2902 MAC_OS_X_VERSION_MAX_ALLOWED="101300"
2905 MAC_OS_X_VERSION_MAX_ALLOWED="101400"
2908 MAC_OS_X_VERSION_MAX_ALLOWED="101500"
2911 AC_MSG_ERROR([with-macosx-version-max-allowed $with_macosx_version_max_allowed is not a supported value, supported values are 10.10--15])
2915 AC_MSG_CHECKING([that macosx-version-min-required is coherent with macosx-version-max-allowed])
2916 if test $MAC_OS_X_VERSION_MIN_REQUIRED -gt $MAC_OS_X_VERSION_MAX_ALLOWED; then
2917 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])
2922 AC_MSG_CHECKING([that macosx-version-max-allowed is coherent with macos-with-sdk])
2923 if test $MAC_OS_X_VERSION_MAX_ALLOWED -gt $MACOSX_SDK_VERSION; then
2924 AC_MSG_ERROR([the version maximum allowed cannot be greater than the sdk level])
2928 AC_MSG_NOTICE([MAC_OS_X_VERSION_MIN_REQUIRED=$MAC_OS_X_VERSION_MIN_REQUIRED])
2929 AC_MSG_NOTICE([MAC_OS_X_VERSION_MAX_ALLOWED=$MAC_OS_X_VERSION_MAX_ALLOWED])
2931 AC_MSG_CHECKING([whether to do code signing])
2933 if test "$enable_macosx_code_signing" = yes; then
2934 # By default use the first suitable certificate (?).
2936 # http://stackoverflow.com/questions/13196291/difference-between-mac-developer-and-3rd-party-mac-developer-application
2937 # says that the "Mac Developer" certificate is useful just for self-testing. For distribution
2938 # outside the Mac App Store, use the "Developer ID Application" one, and for distribution in
2939 # the App Store, the "3rd Party Mac Developer" one. I think it works best to the
2940 # "Developer ID Application" one.
2942 identity=`security find-identity -p codesigning -v 2>/dev/null | grep 'Developer ID Application:' | $AWK '{print $2}' |head -1`
2943 if test -n "$identity"; then
2944 MACOSX_CODESIGNING_IDENTITY=$identity
2945 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
2946 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
2948 AC_MSG_ERROR([cannot determine identity to use])
2950 elif test -n "$enable_macosx_code_signing" -a "$enable_macosx_code_signing" != no ; then
2951 MACOSX_CODESIGNING_IDENTITY=$enable_macosx_code_signing
2952 pretty_name=`security find-identity -p codesigning -v | grep "$MACOSX_CODESIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
2953 AC_MSG_RESULT([yes, using the identity $MACOSX_CODESIGNING_IDENTITY for $pretty_name])
2958 AC_MSG_CHECKING([whether to create a Mac App Store package])
2960 if test -n "$enable_macosx_package_signing" -a -z "$MACOSX_CODESIGNING_IDENTITY"; then
2961 AC_MSG_ERROR([You forgot --enable-macosx-code-signing])
2962 elif test "$enable_macosx_package_signing" = yes; then
2963 # By default use the first suitable certificate.
2964 # It should be a "3rd Party Mac Developer Installer" one
2966 identity=`security find-identity -v 2>/dev/null | grep '3rd Party Mac Developer Installer:' | awk '{print $2}' |head -1`
2967 if test -n "$identity"; then
2968 MACOSX_PACKAGE_SIGNING_IDENTITY=$identity
2969 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
2970 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
2972 AC_MSG_ERROR([Could not find any suitable '3rd Party Mac Developer Installer' certificate])
2974 elif test -n "$enable_macosx_package_signing"; then
2975 MACOSX_PACKAGE_SIGNING_IDENTITY=$enable_macosx_package_signing
2976 pretty_name=`security find-identity -v | grep "$MACOSX_PACKAGE_SIGNING_IDENTITY" | sed -e 's/^[[^"]]*"//' -e 's/"//'`
2977 AC_MSG_RESULT([yes, using the identity $MACOSX_PACKAGE_SIGNING_IDENTITY for $pretty_name])
2982 if test -n "$MACOSX_CODESIGNING_IDENTITY" -a -n "$MACOSX_PACKAGE_SIGNING_IDENTITY" -a "$MACOSX_CODESIGNING_IDENTITY" = "$MACOSX_PACKAGE_SIGNING_IDENTITY"; then
2983 AC_MSG_ERROR([You should not use the same identity for code and package signing])
2986 AC_MSG_CHECKING([whether to sandbox the application])
2988 if test -z "$MACOSX_CODESIGNING_IDENTITY" -a "$enable_macosx_sandbox" = yes; then
2989 AC_MSG_ERROR([macOS sandboxing requires code signing])
2990 elif test -n "$ENABLE_JAVA" -a "$enable_macosx_sandbox" = yes; then
2991 AC_MSG_ERROR([macOS sandboxing (actually App Store rules) disallows use of Java])
2992 elif test -n "$MACOSX_CODESIGNING_IDENTITY" -a "$enable_macosx_sandbox" = yes; then
2993 ENABLE_MACOSX_SANDBOX=TRUE
2994 AC_DEFINE(HAVE_FEATURE_MACOSX_SANDBOX)
2995 AC_MSG_RESULT([yes])
3000 AC_MSG_CHECKING([what macOS app bundle identifier to use])
3001 MACOSX_BUNDLE_IDENTIFIER=$with_macosx_bundle_identifier
3002 AC_MSG_RESULT([$MACOSX_BUNDLE_IDENTIFIER])
3004 AC_SUBST(MACOSX_SDK_PATH)
3005 AC_SUBST(MACOSX_DEPLOYMENT_TARGET)
3006 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED)
3007 AC_SUBST(MAC_OS_X_VERSION_MIN_REQUIRED_DOTS)
3008 AC_SUBST(MAC_OS_X_VERSION_MAX_ALLOWED)
3009 AC_SUBST(INSTALL_NAME_TOOL)
3010 AC_SUBST(LIBTOOL) # Note that the macOS libtool command is unrelated to GNU libtool
3011 AC_SUBST(MACOSX_CODESIGNING_IDENTITY)
3012 AC_SUBST(MACOSX_PACKAGE_SIGNING_IDENTITY)
3013 AC_SUBST(ENABLE_MACOSX_SANDBOX)
3014 AC_SUBST(MACOSX_BUNDLE_IDENTIFIER)
3016 dnl ===================================================================
3017 dnl Check iOS SDK and compiler
3018 dnl ===================================================================
3020 if test $_os = iOS; then
3021 AC_MSG_CHECKING([what iOS SDK to use])
3022 current_sdk_ver=13.2
3023 older_sdk_vers="13.1 13.0 12.4 12.2"
3024 if test "$enable_ios_simulator" = "yes"; then
3025 platform=iPhoneSimulator
3026 versionmin=-mios-simulator-version-min=12.2
3029 versionmin=-miphoneos-version-min=12.2
3031 xcode_developer=`xcode-select -print-path`
3033 for sdkver in $current_sdk_ver $older_sdk_vers; do
3034 t=$xcode_developer/Platforms/$platform.platform/Developer/SDKs/$platform$sdkver.sdk
3041 if test -z "$sysroot"; then
3042 AC_MSG_ERROR([Could not find iOS SDK, expected something like $xcode_developer/Platforms/$platform.platform/Developer/SDKs/${platform}${current_sdk_ver}.sdk])
3045 AC_MSG_RESULT($sysroot)
3047 # LTO is not really recommended for iOS builds,
3048 # the link time will be astronomical
3049 if test "$ENABLE_LTO" = TRUE; then
3053 stdlib="-stdlib=libc++"
3055 AC_MSG_CHECKING([what C compiler to use])
3056 CC="`xcrun -find clang`"
3057 CC_BASE=`first_arg_basename "$CC"`
3058 CC+=" -arch $host_cpu -isysroot $sysroot $lto $versionmin"
3059 AC_MSG_RESULT([$CC])
3061 AC_MSG_CHECKING([what C++ compiler to use])
3062 CXX="`xcrun -find clang++`"
3063 CXX_BASE=`first_arg_basename "$CXX"`
3064 CXX+=" -arch $host_cpu $stdlib -isysroot $sysroot $lto $versionmin"
3065 AC_MSG_RESULT([$CXX])
3067 INSTALL_NAME_TOOL=`xcrun -find install_name_tool`
3070 STRIP=`xcrun -find strip`
3071 LIBTOOL=`xcrun -find libtool`
3072 RANLIB=`xcrun -find ranlib`
3075 AC_MSG_CHECKING([whether to treat the installation as read-only])
3077 if test \( -z "$enable_readonly_installset" -a "$ENABLE_MACOSX_SANDBOX" = TRUE \) -o \
3078 "$enable_extensions" != yes; then
3079 enable_readonly_installset=yes
3081 if test "$enable_readonly_installset" = yes; then
3082 AC_MSG_RESULT([yes])
3083 AC_DEFINE(HAVE_FEATURE_READONLY_INSTALLSET)
3088 dnl ===================================================================
3089 dnl Structure of install set
3090 dnl ===================================================================
3092 if test $_os = Darwin; then
3093 LIBO_BIN_FOLDER=MacOS
3094 LIBO_ETC_FOLDER=Resources
3095 LIBO_LIBEXEC_FOLDER=MacOS
3096 LIBO_LIB_FOLDER=Frameworks
3097 LIBO_LIB_PYUNO_FOLDER=Resources
3098 LIBO_SHARE_FOLDER=Resources
3099 LIBO_SHARE_HELP_FOLDER=Resources/help
3100 LIBO_SHARE_JAVA_FOLDER=Resources/java
3101 LIBO_SHARE_PRESETS_FOLDER=Resources/presets
3102 LIBO_SHARE_READMES_FOLDER=Resources/readmes
3103 LIBO_SHARE_RESOURCE_FOLDER=Resources/resource
3104 LIBO_SHARE_SHELL_FOLDER=Resources/shell
3105 LIBO_URE_BIN_FOLDER=MacOS
3106 LIBO_URE_ETC_FOLDER=Resources/ure/etc
3107 LIBO_URE_LIB_FOLDER=Frameworks
3108 LIBO_URE_MISC_FOLDER=Resources/ure/share/misc
3109 LIBO_URE_SHARE_JAVA_FOLDER=Resources/java
3110 elif test $_os = WINNT; then
3111 LIBO_BIN_FOLDER=program
3112 LIBO_ETC_FOLDER=program
3113 LIBO_LIBEXEC_FOLDER=program
3114 LIBO_LIB_FOLDER=program
3115 LIBO_LIB_PYUNO_FOLDER=program
3116 LIBO_SHARE_FOLDER=share
3117 LIBO_SHARE_HELP_FOLDER=help
3118 LIBO_SHARE_JAVA_FOLDER=program/classes
3119 LIBO_SHARE_PRESETS_FOLDER=presets
3120 LIBO_SHARE_READMES_FOLDER=readmes
3121 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3122 LIBO_SHARE_SHELL_FOLDER=program/shell
3123 LIBO_URE_BIN_FOLDER=program
3124 LIBO_URE_ETC_FOLDER=program
3125 LIBO_URE_LIB_FOLDER=program
3126 LIBO_URE_MISC_FOLDER=program
3127 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3129 LIBO_BIN_FOLDER=program
3130 LIBO_ETC_FOLDER=program
3131 LIBO_LIBEXEC_FOLDER=program
3132 LIBO_LIB_FOLDER=program
3133 LIBO_LIB_PYUNO_FOLDER=program
3134 LIBO_SHARE_FOLDER=share
3135 LIBO_SHARE_HELP_FOLDER=help
3136 LIBO_SHARE_JAVA_FOLDER=program/classes
3137 LIBO_SHARE_PRESETS_FOLDER=presets
3138 LIBO_SHARE_READMES_FOLDER=readmes
3139 if test "$enable_fuzzers" != yes; then
3140 LIBO_SHARE_RESOURCE_FOLDER=program/resource
3142 LIBO_SHARE_RESOURCE_FOLDER=resource
3144 LIBO_SHARE_SHELL_FOLDER=program/shell
3145 LIBO_URE_BIN_FOLDER=program
3146 LIBO_URE_ETC_FOLDER=program
3147 LIBO_URE_LIB_FOLDER=program
3148 LIBO_URE_MISC_FOLDER=program
3149 LIBO_URE_SHARE_JAVA_FOLDER=program/classes
3151 AC_DEFINE_UNQUOTED(LIBO_BIN_FOLDER,"$LIBO_BIN_FOLDER")
3152 AC_DEFINE_UNQUOTED(LIBO_ETC_FOLDER,"$LIBO_ETC_FOLDER")
3153 AC_DEFINE_UNQUOTED(LIBO_LIBEXEC_FOLDER,"$LIBO_LIBEXEC_FOLDER")
3154 AC_DEFINE_UNQUOTED(LIBO_LIB_FOLDER,"$LIBO_LIB_FOLDER")
3155 AC_DEFINE_UNQUOTED(LIBO_LIB_PYUNO_FOLDER,"$LIBO_LIB_PYUNO_FOLDER")
3156 AC_DEFINE_UNQUOTED(LIBO_SHARE_FOLDER,"$LIBO_SHARE_FOLDER")
3157 AC_DEFINE_UNQUOTED(LIBO_SHARE_HELP_FOLDER,"$LIBO_SHARE_HELP_FOLDER")
3158 AC_DEFINE_UNQUOTED(LIBO_SHARE_JAVA_FOLDER,"$LIBO_SHARE_JAVA_FOLDER")
3159 AC_DEFINE_UNQUOTED(LIBO_SHARE_PRESETS_FOLDER,"$LIBO_SHARE_PRESETS_FOLDER")
3160 AC_DEFINE_UNQUOTED(LIBO_SHARE_RESOURCE_FOLDER,"$LIBO_SHARE_RESOURCE_FOLDER")
3161 AC_DEFINE_UNQUOTED(LIBO_SHARE_SHELL_FOLDER,"$LIBO_SHARE_SHELL_FOLDER")
3162 AC_DEFINE_UNQUOTED(LIBO_URE_BIN_FOLDER,"$LIBO_URE_BIN_FOLDER")
3163 AC_DEFINE_UNQUOTED(LIBO_URE_ETC_FOLDER,"$LIBO_URE_ETC_FOLDER")
3164 AC_DEFINE_UNQUOTED(LIBO_URE_LIB_FOLDER,"$LIBO_URE_LIB_FOLDER")
3165 AC_DEFINE_UNQUOTED(LIBO_URE_MISC_FOLDER,"$LIBO_URE_MISC_FOLDER")
3166 AC_DEFINE_UNQUOTED(LIBO_URE_SHARE_JAVA_FOLDER,"$LIBO_URE_SHARE_JAVA_FOLDER")
3168 # Not all of them needed in config_host.mk, add more if need arises
3169 AC_SUBST(LIBO_BIN_FOLDER)
3170 AC_SUBST(LIBO_ETC_FOLDER)
3171 AC_SUBST(LIBO_LIB_FOLDER)
3172 AC_SUBST(LIBO_LIB_PYUNO_FOLDER)
3173 AC_SUBST(LIBO_SHARE_FOLDER)
3174 AC_SUBST(LIBO_SHARE_HELP_FOLDER)
3175 AC_SUBST(LIBO_SHARE_JAVA_FOLDER)
3176 AC_SUBST(LIBO_SHARE_PRESETS_FOLDER)
3177 AC_SUBST(LIBO_SHARE_READMES_FOLDER)
3178 AC_SUBST(LIBO_SHARE_RESOURCE_FOLDER)
3179 AC_SUBST(LIBO_URE_BIN_FOLDER)
3180 AC_SUBST(LIBO_URE_ETC_FOLDER)
3181 AC_SUBST(LIBO_URE_LIB_FOLDER)
3182 AC_SUBST(LIBO_URE_MISC_FOLDER)
3183 AC_SUBST(LIBO_URE_SHARE_JAVA_FOLDER)
3185 dnl ===================================================================
3186 dnl Windows specific tests and stuff
3187 dnl ===================================================================
3191 # Return value: $regvalue
3194 local _regentry="/proc/registry${1}/${2}"
3195 if test -f "$_regentry"; then
3196 # Stop bash complaining about \0 bytes in input, as it can't handle them.
3197 # Registry keys read via /proc/registry* are always \0 terminated!
3198 local _regvalue=$(tr -d '\0' < "$_regentry")
3199 if test $? -eq 0; then
3205 # Get a value from the 32-bit side of the Registry
3208 reg_get_value "32" "$1"
3211 # Get a value from the 64-bit side of the Registry
3214 reg_get_value "64" "$1"
3217 if test "$_os" = "WINNT"; then
3218 AC_MSG_CHECKING([whether to build a 64-bit LibreOffice])
3219 if test "$enable_64_bit" = "" -o "$enable_64_bit" = "no"; then
3221 WINDOWS_SDK_ARCH="x86"
3223 AC_MSG_RESULT([yes])
3224 WINDOWS_SDK_ARCH="x64"
3228 if test "$_os" = "iOS"; then
3229 cross_compiling="yes"
3232 if test "$cross_compiling" = "yes"; then
3233 export CROSS_COMPILING=TRUE
3236 BUILD_TYPE="$BUILD_TYPE NATIVE"
3238 AC_SUBST(CROSS_COMPILING)
3240 # Use -isystem (gcc) if possible, to avoid warnings in 3rd party headers.
3241 # NOTE: must _not_ be used for bundled external libraries!
3243 if test "$GCC" = "yes"; then
3244 AC_MSG_CHECKING( for -isystem )
3246 CFLAGS="$CFLAGS -Werror"
3247 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ ISYSTEM="-isystem " ],[])
3249 if test -n "$ISYSTEM"; then
3255 if test -z "$ISYSTEM"; then
3256 # fall back to using -I
3261 dnl ===================================================================
3262 dnl Check which Visual Studio compiler is used
3263 dnl ===================================================================
3265 map_vs_year_to_version()
3267 # Return value: $vsversion
3277 AC_MSG_ERROR([Assertion failure - invalid argument "$1" to map_vs_year_to_version()]);;
3281 vs_versions_to_check()
3283 # Args: $1 (optional) : versions to check, in the order of preference
3284 # Return value: $vsversions
3288 if test -n "$1"; then
3289 map_vs_year_to_version "$1"
3290 vsversions=$vsversion
3292 # We accept only 2017
3297 win_get_env_from_vsvars32bat()
3299 WRAPPERBATCHFILEPATH="`mktemp -t wrpXXXXXX.bat`"
3300 # Also seems to be located in another directory under the same name: vsvars32.bat
3301 # https://github.com/bazelbuild/bazel/blob/master/src/main/native/build_windows_jni.sh#L56-L57
3302 printf '@call "%s/../Common7/Tools/VsDevCmd.bat" /no_logo\r\n' "$(cygpath -w $VC_PRODUCT_DIR)" > $WRAPPERBATCHFILEPATH
3303 printf '@setlocal\r\n@echo %%%s%%\r\n@endlocal\r\n' "$1" >> $WRAPPERBATCHFILEPATH
3304 chmod +x $WRAPPERBATCHFILEPATH
3305 _win_get_env_from_vsvars32bat=$("$WRAPPERBATCHFILEPATH" | tr -d '\r')
3306 rm -f $WRAPPERBATCHFILEPATH
3307 printf '%s' "$_win_get_env_from_vsvars32bat"
3312 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/InstallationFolder"
3313 if test -n "$regvalue"; then
3314 PathFormat "$regvalue"
3315 UCRTSDKDIR=$formatted_path
3316 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v10.0/ProductVersion"
3317 UCRTVERSION=$regvalue
3319 if ! test -d "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"; then
3323 if test -z "$UCRTSDKDIR"; then
3324 ide_env_dir="$VC_PRODUCT_DIR/../Common7/Tools/"
3325 ide_env_file="${ide_env_dir}VsDevCmd.bat"
3326 if test -f "$ide_env_file"; then
3327 PathFormat "$(win_get_env_from_vsvars32bat UniversalCRTSdkDir)"
3328 UCRTSDKDIR=$formatted_path
3329 UCRTVERSION=$(win_get_env_from_vsvars32bat UCRTVersion)
3330 dnl Hack needed at least by tml:
3331 if test "$UCRTVERSION" = 10.0.15063.0 \
3332 -a ! -f "${UCRTSDKDIR}Include/10.0.15063.0/um/sqlext.h" \
3333 -a -f "${UCRTSDKDIR}Include/10.0.14393.0/um/sqlext.h"
3335 UCRTVERSION=10.0.14393.0
3338 AC_MSG_ERROR([No UCRT found])
3345 # Find Visual C++ 2017/2019
3346 # Args: $1 (optional) : The VS version year
3347 # Return values: $vctest, $vcyear, $vcnum, $vcnumwithdot, $vcbuildnumber
3349 unset vctest vcnum vcnumwithdot vcbuildnumber
3351 vs_versions_to_check "$1"
3352 vswhere="$(perl -e 'print $ENV{"ProgramFiles(x86)"}')"
3353 vswhere+="\\Microsoft Visual Studio\\Installer\\vswhere.exe"
3354 PathFormat "$vswhere"
3355 vswhere=$formatted_path
3356 for ver in $vsversions; do
3357 vswhereoutput=`$vswhere -version "@<:@ $ver , $(expr $ver + 1) @:}@" -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath | head -1`
3358 if test -n "$vswhereoutput"; then
3359 PathFormat "$vswhereoutput"
3360 vctest=$formatted_path
3365 # This fallback is needed on *some* (but not all) VS 2017 installations, where vswhere turns up
3366 # with the empty list for unclear reason. The below hack does not work for VS 2019 anyway, so
3367 # should be removed when upgrading baseline.
3368 if ! test -n "$vctest"; then
3369 for ver in $vsversions; do
3370 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver.0/Setup/VC/ProductDir
3371 if test -n "$regvalue"; then
3375 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/SxS/VS7/$ver.0
3376 if test -n "$regvalue"; then
3377 AC_MSG_RESULT([found: $regvalue])
3378 PathFormat "$regvalue"
3379 vctest=$formatted_path
3385 if test -n "$vctest"; then
3386 vcnumwithdot="$ver.0"
3387 case "$vcnumwithdot" in
3397 vcbuildnumber=`ls $vctest/VC/Tools/MSVC -A1r | head -1`
3405 if test "$_os" = "WINNT"; then
3406 AC_MSG_CHECKING([Visual C++])
3407 find_msvc "$with_visual_studio"
3408 if test -z "$vctest"; then
3409 if test -n "$with_visual_studio"; then
3410 AC_MSG_ERROR([no Visual Studio $with_visual_studio installation found])
3412 AC_MSG_ERROR([no Visual Studio 2017 installation found])
3416 if test "$BITNESS_OVERRIDE" = ""; then
3417 if test -f "$vctest/VC/Tools/MSVC/$vcbuildnumber/bin/HostX86/x86/cl.exe"; then
3418 VC_PRODUCT_DIR=$vctest/VC
3420 AC_MSG_ERROR([no compiler (cl.exe) in $vctest/VC/Tools/MSVC/$vcbuildnumber/bin/HostX86/x86])
3423 if test -f "$vctest/VC/Tools/MSVC/$vcbuildnumber/bin/HostX64/x64/cl.exe"; then
3424 VC_PRODUCT_DIR=$vctest/VC
3426 AC_MSG_ERROR([no compiler (cl.exe) in $vctest/VC/Tools/MSVC/$vcbuildnumber/bin/HostX64/x64])
3429 AC_MSG_RESULT([$VC_PRODUCT_DIR])
3431 AC_MSG_CHECKING([for short pathname of VC product directory])
3432 VC_PRODUCT_DIR=`win_short_path_for_make "$VC_PRODUCT_DIR"`
3433 AC_MSG_RESULT([$VC_PRODUCT_DIR])
3438 AC_MSG_CHECKING([for UCRT location])
3440 # find_ucrt errors out if it doesn't find it
3441 AC_MSG_RESULT([found])
3442 PathFormat "${UCRTSDKDIR}Include/$UCRTVERSION/ucrt"
3443 ucrtincpath_formatted=$formatted_path
3444 # SOLARINC is used for external modules and must be set too.
3445 # And no, it's not sufficient to set SOLARINC only, as configure
3446 # itself doesn't honour it.
3447 SOLARINC="$SOLARINC -I$ucrtincpath_formatted"
3448 CFLAGS="$CFLAGS -I$ucrtincpath_formatted"
3449 CXXFLAGS="$CXXFLAGS -I$ucrtincpath_formatted"
3450 CPPFLAGS="$CPPFLAGS -I$ucrtincpath_formatted"
3452 AC_SUBST(UCRTSDKDIR)
3453 AC_SUBST(UCRTVERSION)
3455 AC_MSG_CHECKING([for MSBuild.exe location for: $vcnumwithdot])
3456 # Find the proper version of MSBuild.exe to use based on the VS version
3457 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSBuild/$vcnumwithdot/MSBuildOverrideTasksPath
3458 if test -n "$regvalue" ; then
3459 AC_MSG_RESULT([found: $regvalue])
3460 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3462 if test "$vcnumwithdot" = "16.0"; then
3463 if test "$BITNESS_OVERRIDE" = ""; then
3464 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin"
3466 regvalue="$VC_PRODUCT_DIR/../MSBuild/Current/Bin/amd64"
3469 if test "$BITNESS_OVERRIDE" = ""; then
3470 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin"
3472 regvalue="$VC_PRODUCT_DIR/../MSBuild/$vcnumwithdot/Bin/amd64"
3475 MSBUILD_PATH=`win_short_path_for_make "$regvalue"`
3476 AC_MSG_RESULT([$regvalue])
3479 # Find the version of devenv.exe
3480 # MSVC 2017 devenv does not start properly from a DOS 8.3 path
3481 DEVENV=$(cygpath -lm "$VC_PRODUCT_DIR/../Common7/IDE/devenv.exe")
3482 if test ! -e "$DEVENV"; then
3483 AC_MSG_ERROR([No devenv.exe found, Visual Studio installation broken?])
3486 dnl ===========================================================
3487 dnl Check for the corresponding mspdb*.dll
3488 dnl ===========================================================
3494 if "$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/HostX64/x64/cl.exe" -? </dev/null >/dev/null 2>&1; then
3495 VC_HOST_DIR="HostX64"
3496 MSPDB_PATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/$VC_HOST_DIR/x64"
3498 VC_HOST_DIR="HostX86"
3499 MSPDB_PATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/$VC_HOST_DIR/x86"
3502 if test "$BITNESS_OVERRIDE" = ""; then
3503 CL_PATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/$VC_HOST_DIR/x86"
3505 CL_PATH="$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/$VC_HOST_DIR/x64"
3508 # MSVC 15.0 has libraries from 14.0?
3511 if test ! -e "$MSPDB_PATH/mspdb${mspdbnum}.dll"; then
3512 AC_MSG_ERROR([No mspdb${mspdbnum}.dll in $MSPDB_PATH, Visual Studio installation broken?])
3515 dnl The path needs to be added before cl is called
3516 TEMP_PATH=`cygpath -d "$MSPDB_PATH"`
3517 PATH="`cygpath -u "$TEMP_PATH"`:$PATH"
3519 AC_MSG_CHECKING([cl.exe])
3521 # Is there really ever a need to pass CC explicitly? Surely we can hope to get all the
3522 # automagical niceness to work OK? If somebody has some unsupported compiler in some weird
3523 # location, isn't it likely that lots of other things needs changes, too, and just setting CC
3526 dnl Save the true MSVC cl.exe for use when CC/CXX is actually clang-cl,
3527 dnl needed when building CLR code:
3528 if test -z "$MSVC_CXX"; then
3529 if test -f "$CL_PATH/cl.exe"; then
3530 MSVC_CXX="$CL_PATH/cl.exe"
3533 # This gives us a posix path with 8.3 filename restrictions
3534 MSVC_CXX=`win_short_path_for_make "$MSVC_CXX"`
3537 if test -z "$CC"; then
3539 CC_BASE=`first_arg_basename "$CC"`
3541 if test "$BITNESS_OVERRIDE" = ""; then
3542 dnl since MSVC 2012, default for x86 is -arch:SSE2:
3543 MSVC_CXX="$MSVC_CXX -arch:SSE"
3545 if test -z "$CXX"; then
3547 CXX_BASE=`first_arg_basename "$CXX"`
3550 if test -n "$CC"; then
3551 # Remove /cl.exe from CC case insensitive
3552 AC_MSG_RESULT([found Visual C++ $vcyear ($CC)])
3553 if test "$BITNESS_OVERRIDE" = ""; then
3554 COMPATH="$VC_PRODUCT_DIR"
3556 if test -n "$VC_PRODUCT_DIR"; then
3557 COMPATH=$VC_PRODUCT_DIR
3560 if test "$BITNESS_OVERRIDE" = ""; then
3561 dnl since MSVC 2012, default for x86 is -arch:SSE2:
3565 COMPATH="$COMPATH/Tools/MSVC/$vcbuildnumber"
3567 export INCLUDE=`cygpath -d "$COMPATH\Include"`
3569 PathFormat "$COMPATH"
3570 COMPATH=`win_short_path_for_make "$formatted_path"`
3575 # The WINDOWS_SDK_ACCEPTABLE_VERSIONS is mostly an educated guess... Assuming newer ones
3576 # are always "better", we list them in reverse chronological order.
3580 WINDOWS_SDK_ACCEPTABLE_VERSIONS="10.0 8.1A 8.1 8.0"
3584 # The expectation is that --with-windows-sdk should not need to be used
3585 if test -n "$with_windows_sdk"; then
3586 case " $WINDOWS_SDK_ACCEPTABLE_VERSIONS " in
3587 *" "$with_windows_sdk" "*)
3588 WINDOWS_SDK_ACCEPTABLE_VERSIONS=$with_windows_sdk
3591 AC_MSG_ERROR([Windows SDK $with_windows_sdk is not known to work with VS $MSVSVER])
3596 # Make AC_COMPILE_IFELSE etc. work (set by AC_PROG_C, which we don't use for MSVC)
3601 AC_MSG_ERROR([Visual C++ not found after all, huh])
3604 AC_MSG_CHECKING([$CC_BASE is at least Visual Studio 2017 version 15.7])
3605 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
3606 // See <https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros> for mapping
3607 // between Visual Studio versions and _MSC_VER:
3611 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no])])
3613 # Check for 64-bit (cross-)compiler to use to build the 64-bit
3614 # version of the Explorer extension (and maybe other small
3615 # bits, too) needed when installing a 32-bit LibreOffice on a
3616 # 64-bit OS. The 64-bit Explorer extension is a feature that
3617 # has been present since long in OOo. Don't confuse it with
3618 # building LibreOffice itself as 64-bit code.
3623 if test "$BITNESS_OVERRIDE" = ""; then
3624 AC_MSG_CHECKING([for a x64 compiler and libraries for 64-bit Explorer extensions])
3625 if test -f "$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/atlmfc/lib/x64/atls.lib" || \
3626 test -f "$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/atlmfc/lib/spectre/x64/atls.lib"; then
3627 if "$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/$VC_HOST_DIR/x64/cl.exe" -? </dev/null >/dev/null 2>&1; then
3629 CXX_X64_BINARY=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/$VC_HOST_DIR/x64/cl.exe"`
3632 if test "$BUILD_X64" = TRUE; then
3633 AC_MSG_RESULT([found])
3635 AC_MSG_RESULT([not found])
3636 AC_MSG_WARN([Installation set will not contain 64-bit Explorer extensions])
3643 # These are passed to the environment and then used in gbuild/platform/com_MSC_class.mk
3644 AC_SUBST(CXX_X64_BINARY)
3646 # Check for 32-bit compiler to use to build the 32-bit TWAIN shim
3647 # needed to support TWAIN scan on both 32- and 64-bit systems
3651 if test "$BITNESS_OVERRIDE" = "64"; then
3652 AC_MSG_CHECKING([for a x86 compiler and libraries for 32-bit binaries required for TWAIN support])
3653 if test -n "$CXX_X86_BINARY"; then
3655 AC_MSG_RESULT([preset])
3656 elif "$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/$VC_HOST_DIR/x86/cl.exe" -? </dev/null >/dev/null 2>&1; then
3658 CXX_X86_BINARY=`win_short_path_for_make "$VC_PRODUCT_DIR/Tools/MSVC/$vcbuildnumber/bin/$VC_HOST_DIR/x86/cl.exe"`
3659 CXX_X86_BINARY+=" /arch:SSE"
3660 AC_MSG_RESULT([found])
3663 AC_MSG_RESULT([not found])
3664 AC_MSG_WARN([Installation set will not contain 32-bit binaries required for TWAIN support])
3668 CXX_X86_BINARY=$MSVC_CXX
3671 AC_SUBST(CXX_X86_BINARY)
3680 UNOWINREG_DLL="185d60944ea767075d27247c3162b3bc-unowinreg.dll"
3681 AC_SUBST(UNOWINREG_DLL)
3684 AC_MSG_CHECKING([whether the compiler is actually Clang])
3685 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
3691 [AC_MSG_RESULT([yes])
3693 [AC_MSG_RESULT([no])])
3694 AC_SUBST(COM_IS_CLANG)
3698 if test "$COM_IS_CLANG" = TRUE; then
3699 AC_MSG_CHECKING([whether Clang is new enough])
3700 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
3701 #if !defined __apple_build_version__
3705 [my_apple_clang=yes],[my_apple_clang=])
3706 if test "$my_apple_clang" = yes; then
3707 AC_MSG_RESULT([assumed yes (Apple Clang)])
3709 if test "$_os" = WINNT; then
3710 dnl In which case, assume clang-cl:
3712 dnl Filter out -FIIntrin.h, which needs to be explicitly stated for
3720 CC_PLAIN="$CC_PLAIN $i"
3727 clang_version=`echo __clang_major__.__clang_minor__.__clang_patchlevel__ | $CC_PLAIN $my_args - | sed 's/ //g'`
3728 CLANG_FULL_VERSION=`echo __clang_version__ | $CC_PLAIN $my_args -`
3729 CLANGVER=`echo $clang_version \
3730 | $AWK -F. '{ print \$1*10000+(\$2<100?\$2:99)*100+(\$3<100?\$3:99) }'`
3731 if test "$CLANGVER" -ge 50002; then
3732 AC_MSG_RESULT([yes ($clang_version)])
3734 AC_MSG_ERROR(["$CLANG_FULL_VERSION" is too old or unrecognized, must be at least Clang 5.0.2])
3736 AC_DEFINE_UNQUOTED(CLANG_VERSION,$CLANGVER)
3737 AC_DEFINE_UNQUOTED(CLANG_FULL_VERSION,$CLANG_FULL_VERSION)
3741 SHOWINCLUDES_PREFIX=
3742 if test "$_os" = WINNT; then
3743 dnl We need to guess the prefix of the -showIncludes output, it can be
3745 AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)])
3746 echo "#include <stdlib.h>" > conftest.c
3747 SHOWINCLUDES_PREFIX=`$CC_PLAIN $CFLAGS -c -showIncludes conftest.c 2>/dev/null | \
3748 grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'`
3749 rm -f conftest.c conftest.obj
3750 if test -z "$SHOWINCLUDES_PREFIX"; then
3751 AC_MSG_ERROR([cannot determine the -showIncludes prefix])
3753 AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"])
3756 AC_SUBST(SHOWINCLUDES_PREFIX)
3759 # prefix C with ccache if needed
3761 if test "$CCACHE" != ""; then
3762 AC_MSG_CHECKING([whether $CC_BASE is already ccached])
3766 CFLAGS="$CFLAGS --ccache-skip -O2"
3767 dnl an empty program will do, we're checking the compiler flags
3768 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
3769 [use_ccache=yes], [use_ccache=no])
3770 if test $use_ccache = yes; then
3771 AC_MSG_RESULT([yes])
3774 CC_BASE="ccache $CC_BASE"
3781 # ===================================================================
3782 # check various GCC options that Clang does not support now but maybe
3783 # will somewhen in the future, check them even for GCC, so that the
3785 # ===================================================================
3788 if test "$GCC" = "yes"; then
3789 AC_MSG_CHECKING([whether $CC_BASE supports -ggdb2])
3791 CFLAGS="$CFLAGS -Werror -ggdb2"
3792 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_GGDB2=TRUE ],[])
3794 if test "$HAVE_GCC_GGDB2" = "TRUE"; then
3795 AC_MSG_RESULT([yes])
3800 if test "$host_cpu" = "m68k"; then
3801 AC_MSG_CHECKING([whether $CC_BASE supports -mlong-jump-table-offsets])
3803 CFLAGS="$CFLAGS -Werror -mlong-jump-table-offsets"
3804 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_LONG_JUMP_TABLE_OFFSETS=TRUE ],[])
3806 if test "$HAVE_GCC_LONG_JUMP_TABLE_OFFSETS" = "TRUE"; then
3807 AC_MSG_RESULT([yes])
3813 AC_SUBST(HAVE_GCC_GGDB2)
3815 dnl ===================================================================
3816 dnl Test the gcc version
3817 dnl ===================================================================
3818 if test "$GCC" = "yes" -a -z "$COM_IS_CLANG"; then
3819 AC_MSG_CHECKING([the GCC version])
3820 _gcc_version=`$CC -dumpversion`
3821 gcc_full_version=$(printf '%s' "$_gcc_version" | \
3822 $AWK -F. '{ print $1*10000+$2*100+(NF<3?1:$3) }')
3823 GCC_VERSION=`echo $_gcc_version | $AWK -F. '{ print \$1*100+\$2 }'`
3825 AC_MSG_RESULT([gcc $_gcc_version ($gcc_full_version)])
3827 if test "$gcc_full_version" -lt 70000; then
3828 AC_MSG_ERROR([GCC $_gcc_version is too old, must be at least GCC 7.0.0])
3831 # Explicitly force GCC_VERSION to be empty, even for Clang, to check incorrect uses.
3832 # GCC version should generally be checked only when handling GCC-specific bugs, for testing
3833 # things like features configure checks should be used, otherwise they may e.g. fail with Clang
3834 # (which reports itself as GCC 4.2.1).
3837 AC_SUBST(GCC_VERSION)
3839 dnl Set the ENABLE_DBGUTIL variable
3840 dnl ===================================================================
3841 AC_MSG_CHECKING([whether to build with additional debug utilities])
3842 if test -n "$enable_dbgutil" -a "$enable_dbgutil" != "no"; then
3843 ENABLE_DBGUTIL="TRUE"
3844 # this is an extra var so it can have different default on different MSVC
3845 # versions (in case there are version specific problems with it)
3846 MSVC_USE_DEBUG_RUNTIME="TRUE"
3848 AC_MSG_RESULT([yes])
3849 # cppunit and graphite expose STL in public headers
3850 if test "$with_system_cppunit" = "yes"; then
3851 AC_MSG_ERROR([--with-system-cppunit conflicts with --enable-dbgutil])
3853 with_system_cppunit=no
3855 if test "$with_system_graphite" = "yes"; then
3856 AC_MSG_ERROR([--with-system-graphite conflicts with --enable-dbgutil])
3858 with_system_graphite=no
3860 if test "$with_system_orcus" = "yes"; then
3861 AC_MSG_ERROR([--with-system-orcus conflicts with --enable-dbgutil])
3863 with_system_orcus=no
3865 if test "$with_system_libcmis" = "yes"; then
3866 AC_MSG_ERROR([--with-system-libcmis conflicts with --enable-dbgutil])
3868 with_system_libcmis=no
3870 if test "$with_system_hunspell" = "yes"; then
3871 AC_MSG_ERROR([--with-system-hunspell conflicts with --enable-dbgutil])
3873 with_system_hunspell=no
3875 if test "$with_system_gpgmepp" = "yes"; then
3876 AC_MSG_ERROR([--with-system-gpgmepp conflicts with --enable-dbgutil])
3878 with_system_gpgmepp=no
3880 # As mixing system libwps and non-system libnumbertext or vice versa likely causes trouble (see
3881 # 603074c5f2b84de8a24593faf807da784b040625 "Pass _GLIBCXX_DEBUG into external/libwps" and the
3882 # mail thread starting at <https://gcc.gnu.org/ml/gcc/2018-05/msg00057.html> "libstdc++: ODR
3883 # violation when using std::regex with and without -D_GLIBCXX_DEBUG"), simply make sure neither
3884 # of those two is using the system variant:
3885 if test "$with_system_libnumbertext" = "yes"; then
3886 AC_MSG_ERROR([--with-system-libnumbertext conflicts with --enable-dbgutil])
3888 with_system_libnumbertext=no
3890 if test "$with_system_libwps" = "yes"; then
3891 AC_MSG_ERROR([--with-system-libwps conflicts with --enable-dbgutil])
3893 with_system_libwps=no
3897 MSVC_USE_DEBUG_RUNTIME=""
3900 AC_SUBST(ENABLE_DBGUTIL)
3901 AC_SUBST(MSVC_USE_DEBUG_RUNTIME)
3903 dnl Set the ENABLE_DEBUG variable.
3904 dnl ===================================================================
3905 if test -n "$enable_debug" && test "$enable_debug" != "yes" && test "$enable_debug" != "no"; then
3906 AC_MSG_ERROR([--enable-debug now accepts only yes or no, use --enable-symbols])
3908 if test -n "$ENABLE_DBGUTIL" -a "$enable_debug" = "no"; then
3909 if test -z "$libo_fuzzed_enable_debug"; then
3910 AC_MSG_ERROR([--disable-debug cannot be used with --enable-dbgutil])
3912 AC_MSG_NOTICE([Resetting --enable-debug=yes])
3917 AC_MSG_CHECKING([whether to do a debug build])
3918 if test -n "$ENABLE_DBGUTIL" -o \( -n "$enable_debug" -a "$enable_debug" != "no" \) ; then
3920 if test -n "$ENABLE_DBGUTIL" ; then
3921 AC_MSG_RESULT([yes (dbgutil)])
3923 AC_MSG_RESULT([yes])
3929 AC_SUBST(ENABLE_DEBUG)
3931 dnl ===================================================================
3932 dnl Select the linker to use (gold/lld/ld.bfd).
3933 dnl This is done only after compiler checks (need to know if Clang is
3934 dnl used, for different defaults) and after checking if a debug build
3935 dnl is wanted (non-debug builds get the default linker if not explicitly
3936 dnl specified otherwise).
3937 dnl All checks for linker features/options should come after this.
3938 dnl ===================================================================
3942 use_ld_fail_if_error=$2
3944 AC_MSG_CHECKING([for -fuse-ld=$use_ld linker support])
3945 use_ld_ldflags_save="$LDFLAGS"
3946 LDFLAGS="$LDFLAGS -fuse-ld=$use_ld"
3947 AC_LINK_IFELSE([AC_LANG_PROGRAM([
3950 printf ("hello world\n");
3951 ])], USE_LD=$use_ld, [])
3952 if test -n "$USE_LD"; then
3953 AC_MSG_RESULT( yes )
3956 if test -n "$use_ld_fail_if_error"; then
3962 if test -n "$use_ld_ok"; then
3963 dnl keep the value of LDFLAGS
3966 LDFLAGS="$use_ld_ldflags_save"
3970 if test "$enable_ld" != "no"; then
3971 if test "$GCC" = "yes"; then
3972 if test -n "$enable_ld"; then
3973 check_use_ld "$enable_ld" fail_if_error
3974 elif test -z "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
3975 dnl non-debug builds default to the default linker
3977 elif test -n "$COM_IS_CLANG"; then
3979 if test $? -ne 0; then
3983 # For gcc first try gold, new versions also support lld.
3985 if test $? -ne 0; then
3989 ld_output=$(echo 'int main() { return 0; }' | $CC -Wl,-v -x c -o conftest.out - $CFLAGS $LDFLAGS 2>/dev/null)
3991 ld_used=$(echo "$ld_output" | grep -E '(^GNU gold|^GNU ld|^LLD)')
3992 if test -z "$ld_used"; then
3995 AC_MSG_CHECKING([for linker that is used])
3996 AC_MSG_RESULT([$ld_used])
3997 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
3998 if echo "$ld_used" | grep -q "^GNU ld"; then
3999 AC_MSG_WARN([The default GNU linker is slow, consider using the LLD or the GNU gold linker.])
4000 add_warning "The default GNU linker is slow, consider using the LLD or the GNU gold linker."
4004 if test "$enable_ld" = "yes"; then
4005 AC_MSG_ERROR([--enable-ld not supported])
4011 HAVE_LD_BSYMBOLIC_FUNCTIONS=
4012 if test "$GCC" = "yes"; then
4013 AC_MSG_CHECKING([for -Bsymbolic-functions linker support])
4014 bsymbolic_functions_ldflags_save=$LDFLAGS
4015 LDFLAGS="$LDFLAGS -Wl,-Bsymbolic-functions"
4016 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4019 printf ("hello world\n");
4020 ])], HAVE_LD_BSYMBOLIC_FUNCTIONS=TRUE, [])
4021 if test "$HAVE_LD_BSYMBOLIC_FUNCTIONS" = "TRUE"; then
4022 AC_MSG_RESULT( found )
4024 AC_MSG_RESULT( not found )
4026 LDFLAGS=$bsymbolic_functions_ldflags_save
4028 AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
4032 if test "$enable_split_debug" != no; then
4033 dnl Currently by default enabled only on Linux, feel free to set test_split_debug above also for other platforms.
4034 if test "$enable_split_debug" = yes -o \( "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4035 AC_MSG_CHECKING([whether $CC_BASE supports -gsplit-dwarf])
4037 CFLAGS="$CFLAGS -Werror -gsplit-dwarf"
4038 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_SPLIT_DWARF=TRUE ],[])
4040 if test "$HAVE_GCC_SPLIT_DWARF" = "TRUE"; then
4041 AC_MSG_RESULT([yes])
4043 if test "$enable_split_debug" = yes; then
4050 if test -z "$HAVE_GCC_SPLIT_DWARF" -a "$test_split_debug" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4051 AC_MSG_WARN([Compiler is not capable of creating split debug info, linking will require more time and disk space.])
4052 add_warning "Compiler is not capable of creating split debug info, linking will require more time and disk space."
4055 AC_SUBST(HAVE_GCC_SPLIT_DWARF)
4058 if test "$enable_gdb_index" != "no"; then
4059 dnl Currently by default enabled only on Linux, feel free to set test_gdb_index above also for other platforms.
4060 if test "$enable_gdb_index" = yes -o \( "$test_gdb_index" = "yes" -o -n "$ENABLE_DEBUG$ENABLE_DBGUTIL" \); then
4061 AC_MSG_CHECKING([whether $CC_BASE supports -ggnu-pubnames])
4063 CFLAGS="$CFLAGS -Werror -ggnu-pubnames"
4065 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[have_ggnu_pubnames=TRUE],[have_ggnu_pubnames=])
4066 if test "$have_ggnu_pubnames" != "TRUE"; then
4067 if test "$enable_gdb_index" = "yes"; then
4068 AC_MSG_ERROR( no, --enable-gdb-index not supported )
4073 AC_MSG_RESULT( yes )
4074 AC_MSG_CHECKING([whether $CC_BASE supports -Wl,--gdb-index])
4075 ldflags_save=$LDFLAGS
4076 LDFLAGS="$LDFLAGS -Wl,--gdb-index"
4077 AC_LINK_IFELSE([AC_LANG_PROGRAM([
4080 printf ("hello world\n");
4081 ])], ENABLE_GDB_INDEX=TRUE, [])
4082 if test "$ENABLE_GDB_INDEX" = "TRUE"; then
4083 AC_MSG_RESULT( yes )
4085 if test "$enable_gdb_index" = "yes"; then
4091 LDFLAGS=$ldflags_save
4095 if test -z "$ENABLE_GDB_INDEX" -a "$test_gdb_index" = "yes" -a -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4096 AC_MSG_WARN([Linker is not capable of creating gdb index, debugger startup will be slow.])
4097 add_warning "Linker is not capable of creating gdb index, debugger startup will be slow."
4100 AC_SUBST(ENABLE_GDB_INDEX)
4102 if test "$enable_sal_log" = yes; then
4105 AC_SUBST(ENABLE_SAL_LOG)
4107 dnl Check for enable symbols option
4108 dnl ===================================================================
4109 AC_MSG_CHECKING([whether to generate debug information])
4110 if test -z "$enable_symbols"; then
4111 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4117 if test "$enable_symbols" = yes; then
4118 ENABLE_SYMBOLS_FOR=all
4119 AC_MSG_RESULT([yes])
4120 elif test "$enable_symbols" = no; then
4124 # Selective debuginfo.
4125 ENABLE_SYMBOLS_FOR="$enable_symbols"
4126 AC_MSG_RESULT([for "$enable_symbols"])
4128 AC_SUBST(ENABLE_SYMBOLS_FOR)
4130 if test -n "$with_android_ndk" -a \( -n "$ENABLE_SYMBOLS" -o -n "$ENABLE_DEBUG" -o -n "$ENABLE_DBGUTIL" \) -a "$ENABLE_DEBUGINFO_FOR" = "all"; then
4131 # Building on Android with full symbols: without enough memory the linker never finishes currently.
4132 AC_MSG_CHECKING([whether enough memory is available for linking])
4133 mem_size=$(grep -o 'MemTotal: *.\+ kB' /proc/meminfo | sed 's/MemTotal: *\(.\+\) kB/\1/')
4134 # Check for 15GB, as Linux reports a bit less than the physical memory size.
4135 if test -n "$mem_size" -a $mem_size -lt 15728640; then
4136 AC_MSG_ERROR([building with full symbols and less than 16GB of memory is not supported])
4138 AC_MSG_RESULT([yes])
4142 AC_MSG_CHECKING([whether to compile with optimization flags])
4143 if test -z "$enable_optimized"; then
4144 if test -n "$ENABLE_DEBUG$ENABLE_DBGUTIL"; then
4147 enable_optimized=yes
4150 if test "$enable_optimized" != no; then
4151 ENABLE_OPTIMIZED=TRUE
4152 AC_MSG_RESULT([yes])
4157 AC_SUBST(ENABLE_OPTIMIZED)
4160 # determine CPUNAME, OS, ...
4161 # The USING_X11 flag tells whether the host os uses X by default. Can be overridden with the --without-x option.
4172 PLATFORMID=aix_powerpc
4181 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
4188 if test "$BITNESS_OVERRIDE" = 64; then
4191 PLATFORMID=windows_x86_64
4193 SCPDEFS="$SCPDEFS -DWINDOWS_X64"
4197 PLATFORMID=windows_x86
4201 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4204 SCPDEFS="$SCPDEFS -D_MSC_VER"
4216 AC_MSG_ERROR([Can't build 32-bit code for iOS])
4221 if test "$enable_ios_simulator" = "yes"; then
4222 AC_MSG_ERROR([iOS simulator is only available in OSX not iOS])
4226 PLATFORMID=ios_arm64
4230 AC_MSG_ERROR([Can't build 64-bit code in 32-bit OS])
4233 if test "$enable_ios_simulator" = "yes"; then
4238 PLATFORMID=macosx_x86_64
4241 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4257 PLATFORMID=dragonfly_x86
4262 PLATFORMID=dragonfly_x86_64
4265 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4281 PLATFORMID=freebsd_x86
4286 PLATFORMID=freebsd_x86_64
4289 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4306 PLATFORMID=haiku_x86
4311 PLATFORMID=haiku_x86_64
4314 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4331 PLATFORMID=kfreebsd_x86
4336 PLATFORMID=kfreebsd_x86_64
4339 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4355 PLATFORMID=linux_aarch64
4361 PLATFORMID=linux_alpha
4367 PLATFORMID=linux_arm_eabi
4371 PLATFORMID=linux_arm_oabi
4379 PLATFORMID=linux_hppa
4384 PLATFORMID=linux_x86
4389 PLATFORMID=linux_ia64
4395 PLATFORMID=linux_mips_eb
4400 EPM_FLAGS="-a mips64"
4401 PLATFORMID=linux_mips64_eb
4406 EPM_FLAGS="-a mips64el"
4407 PLATFORMID=linux_mips64_el
4412 EPM_FLAGS="-a mipsel"
4413 PLATFORMID=linux_mips_el
4418 PLATFORMID=linux_m68k
4423 PLATFORMID=linux_powerpc
4428 PLATFORMID=linux_powerpc64
4432 RTL_ARCH=PowerPC_64_LE
4433 PLATFORMID=linux_powerpc64_le
4438 PLATFORMID=linux_sparc
4443 PLATFORMID=linux_sparc64
4448 PLATFORMID=linux_s390
4453 PLATFORMID=linux_s390x
4458 PLATFORMID=linux_x86_64
4461 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4478 PLATFORMID=android_arm_eabi
4483 PLATFORMID=android_aarch64
4488 PLATFORMID=android_x86
4493 PLATFORMID=android_x86_64
4496 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4512 PLATFORMID=netbsd_x86
4517 PLATFORMID=netbsd_powerpc
4522 PLATFORMID=netbsd_sparc
4527 PLATFORMID=netbsd_x86_64
4530 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4546 PLATFORMID=openbsd_x86
4551 PLATFORMID=openbsd_x86_64
4554 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4557 SOLARINC="$SOLARINC -I/usr/local/include"
4571 PLATFORMID=solaris_x86
4576 PLATFORMID=solaris_sparc
4581 PLATFORMID=solaris_sparc64
4584 AC_MSG_ERROR([Unsupported host_cpu $host_cpu for host_os $host_os])
4587 SOLARINC="$SOLARINC -I/usr/local/include"
4591 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice for!])
4595 if test "$with_x" = "no"; then
4596 AC_MSG_ERROR([Use --disable-gui instead. How can we get rid of this option? No idea where it comes from.])
4600 if test "$enable_gui" = "no"; then
4601 if test "$USING_X11" != TRUE; then
4602 AC_MSG_ERROR([$host_os operating system is not suitable to build LibreOffice with --disable-gui.])
4606 AC_DEFINE(HAVE_FEATURE_UI,0)
4609 AC_SUBST(DISABLE_GUI)
4611 WORKDIR="${BUILDDIR}/workdir"
4612 INSTDIR="${BUILDDIR}/instdir"
4613 INSTROOTBASE=${INSTDIR}${INSTROOTBASESUFFIX}
4614 INSTROOT=${INSTROOTBASE}${INSTROOTCONTENTSUFFIX}
4615 SOLARINC="-I$SRC_ROOT/include $SOLARINC"
4623 AC_SUBST([INSTROOT])
4624 AC_SUBST([INSTROOTBASE])
4628 AC_SUBST(PLATFORMID)
4629 AC_SUBST(WINDOWS_X64)
4630 AC_DEFINE_UNQUOTED(WORKDIR,"$WORKDIR")
4632 dnl ===================================================================
4633 dnl Test which package format to use
4634 dnl ===================================================================
4635 AC_MSG_CHECKING([which package format to use])
4636 if test -n "$with_package_format" -a "$with_package_format" != no; then
4637 for i in $with_package_format; do
4639 aix | bsd | deb | pkg | rpm | archive | dmg | installed | msi)
4642 AC_MSG_ERROR([unsupported format $i. Supported by EPM are:
4643 aix - AIX software distribution
4644 bsd - FreeBSD, NetBSD, or OpenBSD software distribution
4645 deb - Debian software distribution
4646 pkg - Solaris software distribution
4647 rpm - RedHat software distribution
4649 LibreOffice additionally supports:
4650 archive - .tar.gz or .zip
4652 installed - installation tree
4658 # fakeroot is needed to ensure correct file ownerships/permissions
4659 # inside deb packages and tar archives created on Linux and Solaris.
4660 if test "$OS" = "LINUX" || test "$OS" = "SOLARIS"; then
4661 AC_PATH_PROG(FAKEROOT, fakeroot, no)
4662 if test "$FAKEROOT" = "no"; then
4664 [--with-package-format='$with_package_format' requires fakeroot. Install fakeroot.])
4667 PKGFORMAT="$with_package_format"
4668 AC_MSG_RESULT([$PKGFORMAT])
4671 AC_MSG_RESULT([none])
4675 dnl ===================================================================
4676 dnl Set up a different compiler to produce tools to run on the build
4677 dnl machine when doing cross-compilation
4678 dnl ===================================================================
4680 m4_pattern_allow([PKG_CONFIG_FOR_BUILD])
4681 m4_pattern_allow([PKG_CONFIG_LIBDIR])
4682 if test "$cross_compiling" = "yes"; then
4683 AC_MSG_CHECKING([for BUILD platform configuration])
4685 rm -rf CONF-FOR-BUILD config_build.mk
4686 mkdir CONF-FOR-BUILD
4687 # Here must be listed all files needed when running the configure script. In particular, also
4688 # those expanded by the AC_CONFIG_FILES() call near the end of this configure.ac. For clarity,
4689 # keep them in the same order as there.
4690 (cd $SRC_ROOT && tar cf - \
4692 bin/get_config_variables \
4693 solenv/bin/getcompver.awk \
4694 solenv/inc/langlist.mk \
4697 config_host_lang.mk.in \
4699 bin/bffvalidator.sh.in \
4700 bin/odfvalidator.sh.in \
4701 bin/officeotron.sh.in \
4702 instsetoo_native/util/openoffice.lst.in \
4704 sysui/desktop/macosx/Info.plist.in) \
4705 | (cd CONF-FOR-BUILD && tar xf -)
4706 cp configure CONF-FOR-BUILD
4707 test -d config_build && cp -p config_build/*.h CONF-FOR-BUILD/config_host 2>/dev/null
4709 unset COM USING_X11 OS CPUNAME
4710 unset CC CXX SYSBASE CFLAGS
4711 unset AR NM OBJDUMP PKG_CONFIG RANLIB READELF STRIP
4712 unset CPPUNIT_CFLAGS CPPUNIT_LIBS
4713 unset LIBXML_CFLAGS LIBXML_LIBS LIBXSLT_CFLAGS LIBXSLT_LIBS XSLTPROC PKG_CONFIG_LIBDIR
4714 if test -n "$CC_FOR_BUILD"; then
4715 export CC="$CC_FOR_BUILD"
4716 CC_BASE=`first_arg_basename "$CC"`
4718 if test -n "$CXX_FOR_BUILD"; then
4719 export CXX="$CXX_FOR_BUILD"
4720 CXX_BASE=`first_arg_basename "$CXX"`
4722 test -n "$PKG_CONFIG_FOR_BUILD" && export PKG_CONFIG="$PKG_CONFIG_FOR_BUILD"
4725 test -n "$enable_ccache" && sub_conf_opts="$sub_conf_opts --enable-ccache=$enable_ccache"
4726 test -n "$with_ant_home" && sub_conf_opts="$sub_conf_opts --with-ant-home=$with_ant_home"
4727 test $with_junit = no && sub_conf_opts="$sub_conf_opts --without-junit"
4728 test -n "$TARFILE_LOCATION" && sub_conf_opts="$sub_conf_opts --with-external-tar=$TARFILE_LOCATION"
4729 test "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" && sub_conf_opts="$sub_conf_opts --with-system-icu"
4730 test "$build_for_ios" = "YES" && sub_conf_opts="$sub_conf_opts build_for_ios=YES"
4731 sub_conf_opts="$sub_conf_opts $with_build_platform_configure_options"
4732 # Don't bother having configure look for stuff not needed for the build platform anyway
4735 --disable-gstreamer-1-0 \
4737 --disable-pdfimport \
4738 --disable-postgresql-sdbc \
4739 --with-parallelism="$with_parallelism" \
4744 2>&1 | sed -e 's/^/ /'
4745 test -f ./config_host.mk 2>/dev/null || exit
4746 cp config_host.mk ../config_build.mk
4747 cp config_host_lang.mk ../config_build_lang.mk
4748 mv config.log ../config.Build.log
4749 mkdir -p ../config_build
4750 mv config_host/*.h ../config_build
4751 . ./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
4753 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
4755 VV=`eval "echo $VV"`
4756 if test -n "$VV"; then
4757 line=${V}_FOR_BUILD='${'${V}_FOR_BUILD:-$VV'}'
4758 echo "$line" >>build-config
4762 for V in INSTDIR INSTROOT WORKDIR; do
4764 VV=`eval "echo $VV"`
4765 VV=`echo $VV | sed -e "s,/CONF-FOR-BUILD/\([[a-z]]*\),/\1_for_build,g"`
4766 if test -n "$VV"; then
4767 line="${V}_FOR_BUILD='$VV'"
4768 echo "$line" >>build-config
4772 line=`echo "LO_PATH_FOR_BUILD=$PATH" | sed -e 's,/CONF-FOR-BUILD,,g'`
4773 echo "$line" >>build-config
4776 test -f CONF-FOR-BUILD/build-config || AC_MSG_ERROR([Running configure script for BUILD system failed, see CONF-FOR-BUILD/config.log])
4777 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])
4778 perl -pi -e 's,/(workdir|instdir)(/|$),/\1_for_build\2,g;' \
4779 -e 's,/CONF-FOR-BUILD,,g;' config_build.mk
4781 eval `cat CONF-FOR-BUILD/build-config`
4783 AC_MSG_RESULT([checking for BUILD platform configuration... done])
4785 rm -rf CONF-FOR-BUILD
4789 CXX_FOR_BUILD="$CXX"
4790 INSTDIR_FOR_BUILD="$INSTDIR"
4791 INSTROOT_FOR_BUILD="$INSTROOT"
4792 LIBO_BIN_FOLDER_FOR_BUILD="$LIBO_BIN_FOLDER"
4793 LIBO_LIB_FOLDER_FOR_BUILD="$LIBO_LIB_FOLDER"
4794 LIBO_URE_LIB_FOLDER_FOR_BUILD="$LIBO_URE_LIB_FOLDER"
4795 LIBO_URE_MISC_FOLDER_FOR_BUILD="$LIBO_URE_MISC_FOLDER"
4796 SDKDIRNAME_FOR_BUILD="$SDKDIRNAME"
4797 WORKDIR_FOR_BUILD="$WORKDIR"
4799 AC_SUBST(OS_FOR_BUILD)
4800 AC_SUBST(INSTDIR_FOR_BUILD)
4801 AC_SUBST(INSTROOT_FOR_BUILD)
4802 AC_SUBST(LIBO_BIN_FOLDER_FOR_BUILD)
4803 AC_SUBST(LIBO_LIB_FOLDER_FOR_BUILD)
4804 AC_SUBST(LIBO_URE_LIB_FOLDER_FOR_BUILD)
4805 AC_SUBST(LIBO_URE_MISC_FOLDER_FOR_BUILD)
4806 AC_SUBST(SDKDIRNAME_FOR_BUILD)
4807 AC_SUBST(WORKDIR_FOR_BUILD)
4809 dnl ===================================================================
4810 dnl Check for syslog header
4811 dnl ===================================================================
4812 AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H))
4814 dnl Set the ENABLE_WERROR variable. (Activate --enable-werror)
4815 dnl ===================================================================
4816 AC_MSG_CHECKING([whether to turn warnings to errors])
4817 if test -n "$enable_werror" -a "$enable_werror" != "no"; then
4818 ENABLE_WERROR="TRUE"
4819 AC_MSG_RESULT([yes])
4821 if test -n "$LODE_HOME" -a -z "$enable_werror"; then
4822 ENABLE_WERROR="TRUE"
4823 AC_MSG_RESULT([yes])
4828 AC_SUBST(ENABLE_WERROR)
4830 dnl Check for --enable-assert-always-abort, set ASSERT_ALWAYS_ABORT
4831 dnl ===================================================================
4832 AC_MSG_CHECKING([whether to have assert() failures abort even without --enable-debug])
4833 if test -z "$enable_assert_always_abort"; then
4834 if test "$ENABLE_DEBUG" = TRUE; then
4835 enable_assert_always_abort=yes
4837 enable_assert_always_abort=no
4840 if test "$enable_assert_always_abort" = "yes"; then
4841 ASSERT_ALWAYS_ABORT="TRUE"
4842 AC_MSG_RESULT([yes])
4844 ASSERT_ALWAYS_ABORT="FALSE"
4847 AC_SUBST(ASSERT_ALWAYS_ABORT)
4849 # Determine whether to use ooenv for the instdir installation
4850 # ===================================================================
4851 if test $_os != "WINNT" -a $_os != "Darwin"; then
4852 AC_MSG_CHECKING([whether to use ooenv for the instdir installation])
4853 if test "$enable_ooenv" = "no"; then
4857 AC_MSG_RESULT([yes])
4860 AC_SUBST(ENABLE_OOENV)
4862 if test "$USING_X11" != TRUE; then
4863 # be sure to do not mess with unneeded stuff
4868 build_gstreamer_1_0=no
4872 enable_cairo_canvas=no
4875 if test "$OS" = "HAIKU"; then
4876 enable_cairo_canvas=yes
4880 if test "$test_kf5" = "yes" -a "$enable_kde5" = "yes"; then
4881 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!])
4882 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!"
4886 if test "$test_kf5" = "yes"; then
4890 if test "$test_kf5" = "yes" -a "$enable_kf5" = "yes"; then
4891 if test "$enable_qt5" = "no"; then
4892 AC_MSG_ERROR([KF5 support depends on QT5, so it conflicts with --disable-qt5])
4898 dnl ===================================================================
4899 dnl check for cups support
4900 dnl ===================================================================
4903 if test "$enable_cups" = "no"; then
4907 AC_MSG_CHECKING([whether to enable CUPS support])
4908 if test "$test_cups" = "yes"; then
4910 AC_MSG_RESULT([yes])
4912 AC_MSG_CHECKING([whether cups support is present])
4913 AC_CHECK_LIB([cups], [cupsPrintFiles], [:])
4914 AC_CHECK_HEADER(cups/cups.h, AC_DEFINE(HAVE_CUPS_H))
4915 if test "$ac_cv_lib_cups_cupsPrintFiles" != "yes" -o "$ac_cv_header_cups_cups_h" != "yes"; then
4916 AC_MSG_ERROR([Could not find CUPS. Install libcups2-dev or cups-devel.])
4923 AC_SUBST(ENABLE_CUPS)
4926 if test "$test_fontconfig" = "yes"; then
4927 PKG_CHECK_MODULES([FONTCONFIG], [fontconfig >= 2.4.1])
4928 SYSTEM_FONTCONFIG=TRUE
4929 FilterLibs "${FONTCONFIG_LIBS}"
4930 FONTCONFIG_LIBS="${filteredlibs}"
4932 AC_SUBST(FONTCONFIG_CFLAGS)
4933 AC_SUBST(FONTCONFIG_LIBS)
4934 AC_SUBST([SYSTEM_FONTCONFIG])
4936 dnl whether to find & fetch external tarballs?
4937 dnl ===================================================================
4938 if test -z "$TARFILE_LOCATION" -a -n "$LODE_HOME" ; then
4939 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
4940 TARFILE_LOCATION="`cygpath -m $LODE_HOME/ext_tar`"
4942 TARFILE_LOCATION="$LODE_HOME/ext_tar"
4945 if test -z "$TARFILE_LOCATION"; then
4946 if test -d "$SRC_ROOT/src" ; then
4947 mv "$SRC_ROOT/src" "$SRC_ROOT/external/tarballs"
4948 ln -s "$SRC_ROOT/external/tarballs" "$SRC_ROOT/src"
4950 TARFILE_LOCATION="$SRC_ROOT/external/tarballs"
4952 AbsolutePath "$TARFILE_LOCATION"
4953 PathFormat "${absolute_path}"
4954 TARFILE_LOCATION="${formatted_path}"
4956 AC_SUBST(TARFILE_LOCATION)
4958 AC_MSG_CHECKING([whether we want to fetch tarballs])
4959 if test "$enable_fetch_external" != "no"; then
4960 if test "$with_all_tarballs" = "yes"; then
4961 AC_MSG_RESULT([yes, all of them])
4962 DO_FETCH_TARBALLS="ALL"
4964 AC_MSG_RESULT([yes, if we use them])
4965 DO_FETCH_TARBALLS="TRUE"
4971 AC_SUBST(DO_FETCH_TARBALLS)
4973 AC_MSG_CHECKING([whether to build help])
4974 if test -n "$with_help" -a "$with_help" != "no" -a $_os != iOS -a $_os != Android; then
4975 BUILD_TYPE="$BUILD_TYPE HELP"
4976 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
4977 case "$with_help" in
4979 ENABLE_HTMLHELP=TRUE
4980 SCPDEFS="$SCPDEFS -DWITH_HELP"
4981 AC_MSG_RESULT([HTML])
4984 ENABLE_HTMLHELP=TRUE
4986 AC_MSG_RESULT([HTML])
4989 SCPDEFS="$SCPDEFS -DWITH_HELP"
4990 AC_MSG_RESULT([yes])
4993 AC_MSG_ERROR([Unknown --with-help=$with_help])
4999 AC_SUBST([ENABLE_HTMLHELP])
5000 AC_SUBST([HELP_ONLINE])
5002 AC_MSG_CHECKING([whether to enable xapian-omega support for help])
5003 if test -n "$with_omindex" -a "$with_omindex" != "no" -a $_os != iOS -a $_os != Android; then
5004 BUILD_TYPE="$BUILD_TYPE HELP"
5005 GIT_NEEDED_SUBMODULES="helpcontent2 $GIT_NEEDED_SUBMODULES"
5006 case "$with_omindex" in
5008 ENABLE_HTMLHELP=TRUE
5010 HELP_OMINDEX_PAGE=TRUE
5011 AC_MSG_RESULT([SERVER])
5014 ENABLE_HTMLHELP=TRUE
5016 HELP_OMINDEX_PAGE=FALSE
5017 AC_MSG_RESULT([NOXAP])
5020 AC_MSG_ERROR([Unknown --with-omindex=$with_omindex])
5024 HELP_OMINDEX_PAGE=FALSE
5027 AC_SUBST([ENABLE_HTMLHELP])
5028 AC_SUBST([HELP_OMINDEX_PAGE])
5029 AC_SUBST([HELP_ONLINE])
5032 dnl Test whether to include MySpell dictionaries
5033 dnl ===================================================================
5034 AC_MSG_CHECKING([whether to include MySpell dictionaries])
5035 if test "$with_myspell_dicts" = "yes"; then
5036 AC_MSG_RESULT([yes])
5037 WITH_MYSPELL_DICTS=TRUE
5038 BUILD_TYPE="$BUILD_TYPE DICTIONARIES"
5039 GIT_NEEDED_SUBMODULES="dictionaries $GIT_NEEDED_SUBMODULES"
5044 AC_SUBST(WITH_MYSPELL_DICTS)
5046 # There are no "system" myspell, hyphen or mythes dictionaries on macOS, Windows, Android or iOS.
5047 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS -o $_os = Android; then
5048 if test "$with_system_dicts" = yes; then
5049 AC_MSG_ERROR([There are no system dicts on this OS in the formats the 3rd-party libs we use expect]);
5051 with_system_dicts=no
5054 AC_MSG_CHECKING([whether to use dicts from external paths])
5055 if test -z "$with_system_dicts" -o "$with_system_dicts" != "no"; then
5056 AC_MSG_RESULT([yes])
5058 AC_MSG_CHECKING([for spelling dictionary directory])
5059 if test -n "$with_external_dict_dir"; then
5060 DICT_SYSTEM_DIR=file://$with_external_dict_dir
5062 DICT_SYSTEM_DIR=file:///usr/share/hunspell
5063 if test ! -d /usr/share/hunspell -a -d /usr/share/myspell; then
5064 DICT_SYSTEM_DIR=file:///usr/share/myspell
5067 AC_MSG_RESULT([$DICT_SYSTEM_DIR])
5068 AC_MSG_CHECKING([for hyphenation patterns directory])
5069 if test -n "$with_external_hyph_dir"; then
5070 HYPH_SYSTEM_DIR=file://$with_external_hyph_dir
5072 HYPH_SYSTEM_DIR=file:///usr/share/hyphen
5074 AC_MSG_RESULT([$HYPH_SYSTEM_DIR])
5075 AC_MSG_CHECKING([for thesaurus directory])
5076 if test -n "$with_external_thes_dir"; then
5077 THES_SYSTEM_DIR=file://$with_external_thes_dir
5079 THES_SYSTEM_DIR=file:///usr/share/mythes
5081 AC_MSG_RESULT([$THES_SYSTEM_DIR])
5086 AC_SUBST(SYSTEM_DICTS)
5087 AC_SUBST(DICT_SYSTEM_DIR)
5088 AC_SUBST(HYPH_SYSTEM_DIR)
5089 AC_SUBST(THES_SYSTEM_DIR)
5091 dnl ===================================================================
5092 dnl Precompiled headers.
5094 AC_MSG_CHECKING([whether to enable pch feature])
5095 if test -z "$enable_pch"; then
5096 if test "$_os" = "WINNT"; then
5097 # Enabled by default on Windows.
5103 if test "$enable_pch" != "no" -a "$_os" != "WINNT" -a "$GCC" != "yes" ; then
5104 AC_MSG_ERROR([Precompiled header not yet supported for your platform/compiler])
5106 if test "$enable_pch" = "system"; then
5108 AC_MSG_RESULT([yes (system headers)])
5109 elif test "$enable_pch" = "base"; then
5111 AC_MSG_RESULT([yes (system and base headers)])
5112 elif test "$enable_pch" = "normal"; then
5114 AC_MSG_RESULT([yes (normal)])
5115 elif test "$enable_pch" = "full"; then
5117 AC_MSG_RESULT([yes (full)])
5118 elif test "$enable_pch" = "yes"; then
5119 # Pick a suitable default.
5120 if test "$GCC" = "yes"; then
5121 # With Clang and GCC higher levels do not seem to make a noticeable improvement,
5122 # while making the PCHs larger and rebuilds more likely.
5124 AC_MSG_RESULT([yes (system and base headers)])
5126 # With MSVC the highest level makes a significant difference,
5127 # and it was the default when there used to be no PCH levels.
5129 AC_MSG_RESULT([yes (full)])
5131 elif test "$enable_pch" = "no"; then
5134 AC_MSG_ERROR([Unknown value for --enable-pch])
5136 AC_SUBST(ENABLE_PCH)
5137 # ccache 3.7.1 and older do not properly detect/handle -include .gch in CCACHE_DEPEND mode
5138 if test -n "$ENABLE_PCH" -a -n "$CCACHE_DEPEND_MODE" -a "$GCC" = "yes" -a "$COM_IS_CLANG" != "TRUE"; then
5139 AC_PATH_PROG([CCACHE_BIN],[ccache],[not found])
5140 if test "$CCACHE_BIN" != "not found"; then
5141 AC_MSG_CHECKING([ccache version])
5142 CCACHE_VERSION=`"$CCACHE_BIN" -V | "$AWK" '/^ccache version/{print $3}'`
5143 CCACHE_NUMVER=`echo $CCACHE_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5144 AC_MSG_RESULT([$CCACHE_VERSION])
5145 AC_MSG_CHECKING([whether ccache depend mode works properly with GCC PCH])
5146 if test "$CCACHE_NUMVER" -gt "030701"; then
5147 AC_MSG_RESULT([yes])
5149 AC_MSG_RESULT([no (not newer than 3.7.1)])
5157 AC_MSG_CHECKING([the GNU Make version])
5158 _make_version=`$GNUMAKE --version | grep GNU | $GREP -v GPL | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
5159 _make_longver=`echo $_make_version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
5160 if test "$_make_longver" -ge "038200"; then
5161 AC_MSG_RESULT([$GNUMAKE $_make_version])
5163 elif test "$_make_longver" -ge "038100"; then
5164 if test "$build_os" = "cygwin"; then
5165 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.82 needed])
5167 AC_MSG_RESULT([$GNUMAKE $_make_version])
5169 dnl ===================================================================
5170 dnl Search all the common names for sha1sum
5171 dnl ===================================================================
5172 AC_CHECK_PROGS(SHA1SUM, sha1sum sha1 shasum openssl)
5173 if test -z "$SHA1SUM"; then
5174 AC_MSG_ERROR([install the appropriate SHA-1 checksumming program for this OS])
5175 elif test "$SHA1SUM" = "openssl"; then
5176 SHA1SUM="openssl sha1"
5178 AC_MSG_CHECKING([for GNU Make bug 20033])
5179 TESTGMAKEBUG20033=`mktemp -d tmp.XXXXXX`
5180 $SED -e "s/<TAB>/$TAB/g" > $TESTGMAKEBUG20033/Makefile << EOF
5181 A := \$(wildcard *.a)
5185 <TAB>@echo survived bug20033.
5189 <TAB>@touch 1.a 2.a 3.a 4.a 5.a 6.a
5202 <TAB>\$(eval CHECKSUM := \$(word 1,\$(shell cat \$^ | $SHA1SUM))) \$(if \$(wildcard \$(CACHEDIR)/\$(CHECKSUM)),\
5203 <TAB>\$(call d1,\$(CHECKSUM)),\
5204 <TAB>\$(call d2,\$(CHECKSUM)))
5206 if test -z "`(cd $TESTGMAKEBUG20033 && $GNUMAKE setup && $GNUMAKE -j)|grep survived`"; then
5207 no_parallelism_make="YES"
5208 AC_MSG_RESULT([yes, disable parallelism])
5210 AC_MSG_RESULT([no, keep parallelism enabled])
5212 rm -rf $TESTGMAKEBUG20033
5214 AC_MSG_ERROR([failed ($GNUMAKE version >= 3.81 needed])
5217 # find if gnumake support file function
5218 AC_MSG_CHECKING([whether GNU Make supports the 'file' function])
5219 TESTGMAKEFILEFUNC="`mktemp -d -t tst.XXXXXX`"
5220 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
5221 TESTGMAKEFILEFUNC=`cygpath -m $TESTGMAKEFILEFUNC`
5223 $SED -e "s/<TAB>/$TAB/" > $TESTGMAKEFILEFUNC/Makefile << EOF
5224 \$(file >test.txt,Success )
5231 $GNUMAKE -C $TESTGMAKEFILEFUNC 2>/dev/null 1>&2
5232 if test -f $TESTGMAKEFILEFUNC/test.txt; then
5233 HAVE_GNUMAKE_FILE_FUNC=TRUE
5234 AC_MSG_RESULT([yes])
5238 rm -rf $TESTGMAKEFILEFUNC
5239 AC_SUBST(HAVE_GNUMAKE_FILE_FUNC)
5240 AC_SUBST(GNUMAKE_WIN_NATIVE)
5242 _make_ver_check=`$GNUMAKE --version | grep "Built for Windows"`
5244 if test "$_make_ver_check" = ""; then
5248 HAVE_LD_HASH_STYLE=FALSE
5249 WITH_LINKER_HASH_STYLE=
5250 AC_MSG_CHECKING([for --hash-style gcc linker support])
5251 if test "$GCC" = "yes"; then
5252 if test -z "$with_linker_hash_style" -o "$with_linker_hash_style" = "yes"; then
5253 hash_styles="gnu sysv"
5254 elif test "$with_linker_hash_style" = "no"; then
5257 hash_styles="$with_linker_hash_style"
5260 for hash_style in $hash_styles; do
5261 test "$HAVE_LD_HASH_STYLE" = "TRUE" && continue
5262 hash_style_ldflags_save=$LDFLAGS
5263 LDFLAGS="$LDFLAGS -Wl,--hash-style=$hash_style"
5265 AC_RUN_IFELSE([AC_LANG_PROGRAM(
5272 HAVE_LD_HASH_STYLE=TRUE
5273 WITH_LINKER_HASH_STYLE=$hash_style
5275 [HAVE_LD_HASH_STYLE=FALSE],
5276 [HAVE_LD_HASH_STYLE=FALSE])
5277 LDFLAGS=$hash_style_ldflags_save
5280 if test "$HAVE_LD_HASH_STYLE" = "TRUE"; then
5281 AC_MSG_RESULT( $WITH_LINKER_HASH_STYLE )
5285 LDFLAGS=$hash_style_ldflags_save
5289 AC_SUBST(HAVE_LD_HASH_STYLE)
5290 AC_SUBST(WITH_LINKER_HASH_STYLE)
5292 dnl ===================================================================
5293 dnl Check whether there's a Perl version available.
5294 dnl ===================================================================
5295 if test -z "$with_perl_home"; then
5296 AC_PATH_PROG(PERL, perl)
5298 test "$build_os" = "cygwin" && with_perl_home=`cygpath -u "$with_perl_home"`
5299 _perl_path="$with_perl_home/bin/perl"
5300 if test -x "$_perl_path"; then
5303 AC_MSG_ERROR([$_perl_path not found])
5307 dnl ===================================================================
5308 dnl Testing for Perl version 5 or greater.
5309 dnl $] is the Perl version variable, it is returned as an integer
5310 dnl ===================================================================
5311 if test "$PERL"; then
5312 AC_MSG_CHECKING([the Perl version])
5313 ${PERL} -e "exit($]);"
5315 if test "$_perl_version" -lt 5; then
5316 AC_MSG_ERROR([found Perl $_perl_version, use Perl 5])
5318 AC_MSG_RESULT([Perl $_perl_version])
5320 AC_MSG_ERROR([Perl not found, install Perl 5])
5323 dnl ===================================================================
5324 dnl Testing for required Perl modules
5325 dnl ===================================================================
5327 AC_MSG_CHECKING([for required Perl modules])
5328 perl_use_string="use Cwd ; use Digest::MD5"
5329 if test "$_os" = "WINNT"; then
5330 if test -n "$PKGFORMAT"; then
5331 for i in $PKGFORMAT; do
5334 # for getting fonts versions to use in MSI
5335 perl_use_string="$perl_use_string ; use Font::TTF::Font"
5341 if test "$with_system_hsqldb" = "yes"; then
5342 perl_use_string="$perl_use_string ; use Archive::Zip"
5344 if $PERL -e "$perl_use_string">/dev/null 2>&1; then
5345 AC_MSG_RESULT([all modules found])
5347 AC_MSG_RESULT([failed to find some modules])
5348 # Find out which modules are missing.
5349 for i in $perl_use_string; do
5350 if test "$i" != "use" -a "$i" != ";"; then
5351 if ! $PERL -e "use $i;">/dev/null 2>&1; then
5352 missing_perl_modules="$missing_perl_modules $i"
5357 The missing Perl modules are: $missing_perl_modules
5358 Install them as superuser/administrator with "cpan -i $missing_perl_modules"])
5361 dnl ===================================================================
5362 dnl Check for pkg-config
5363 dnl ===================================================================
5364 if test "$_os" != "WINNT"; then
5368 if test "$_os" != "WINNT"; then
5370 # If you use CC=/path/to/compiler/foo-gcc or even CC="ccache
5371 # /path/to/compiler/foo-gcc" you need to set the AR etc env vars
5372 # explicitly. Or put /path/to/compiler in PATH yourself.
5374 # Use wrappers for LTO
5375 if test "$ENABLE_LTO" = "TRUE" -a "$COM_IS_CLANG" != "TRUE"; then
5376 AC_CHECK_TOOL(AR,gcc-ar)
5377 AC_CHECK_TOOL(NM,gcc-nm)
5378 AC_CHECK_TOOL(RANLIB,gcc-ranlib)
5380 AC_CHECK_TOOL(AR,ar)
5381 AC_CHECK_TOOL(NM,nm)
5382 AC_CHECK_TOOL(RANLIB,ranlib)
5384 AC_CHECK_TOOL(OBJDUMP,objdump)
5385 AC_CHECK_TOOL(READELF,readelf)
5386 AC_CHECK_TOOL(STRIP,strip)
5387 if test "$_os" = "WINNT"; then
5388 AC_CHECK_TOOL(DLLTOOL,dlltool)
5389 AC_CHECK_TOOL(WINDRES,windres)
5396 AC_SUBST(PKG_CONFIG)
5402 dnl ===================================================================
5403 dnl pkg-config checks on macOS
5404 dnl ===================================================================
5406 if test $_os = Darwin; then
5407 AC_MSG_CHECKING([for bogus pkg-config])
5408 if test -n "$PKG_CONFIG"; then
5409 if test "$PKG_CONFIG" = /usr/bin/pkg-config && ls -l /usr/bin/pkg-config | $GREP -q Mono.framework; then
5410 AC_MSG_ERROR([yes, from Mono. This *will* break the build. Please remove or hide $PKG_CONFIG])
5412 if test "$enable_bogus_pkg_config" = "yes"; then
5413 AC_MSG_RESULT([yes, user-approved from unknown origin.])
5415 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.])
5419 AC_MSG_RESULT([no, good])
5425 # Return value: $csctest
5429 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/NET Framework Setup/NDP/v4/Client/InstallPath"
5430 if test -n "$regvalue"; then
5438 # Return value: $altest
5442 # We need this check to detect 4.6.1 or above.
5443 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1; do
5444 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/WinSDK-NetFx40Tools/InstallationFolder"
5445 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
5451 for x in `ls /proc/registry32/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft\ SDKs/Windows`; do
5452 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/$x/WinSDK-NetFx40Tools/InstallationFolder"
5453 if test -n "$regvalue" -a \( -f "$regvalue/al.exe" -o -f "$regvalue/bin/al.exe" \); then
5466 for ver in 4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6; do
5467 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/NETFXSDK/$ver/KitsInstallationFolder"
5468 if test -n "$regvalue"; then
5475 find_winsdk_version()
5477 # Args: $1 : SDK version as in "8.0", "8.1A" etc
5478 # Return values: $winsdktest, $winsdkbinsubdir, $winsdklibsubdir
5480 unset winsdktest winsdkbinsubdir winsdklibsubdir
5484 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot"
5485 if test -n "$regvalue"; then
5486 winsdktest=$regvalue
5487 winsdklibsubdir=win8
5492 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows Kits/Installed Roots/KitsRoot81"
5493 if test -n "$regvalue"; then
5494 winsdktest=$regvalue
5495 winsdklibsubdir=winv6.3
5500 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/InstallationFolder"
5501 if test -n "$regvalue"; then
5502 winsdktest=$regvalue
5503 reg_get_value_32 "HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v${1}/ProductVersion"
5504 if test -n "$regvalue"; then
5505 winsdkbinsubdir="$regvalue".0
5506 winsdklibsubdir=$winsdkbinsubdir
5507 tmppath="$winsdktest\\Include\\$winsdklibsubdir"
5508 # test exist the SDK path
5509 if test -d "$tmppath"; then
5510 # when path is convertible to a short path then path is okay
5511 cygpath -d "$tmppath" >/dev/null 2>&1
5512 if test $? -ne 0; then
5513 AC_MSG_ERROR([Windows SDK doesn't have a 8.3 name, see NtfsDisable8dot3NameCreation])
5516 AC_MSG_ERROR([The Windows SDK not found, check the installation])
5527 # Return value: From find_winsdk_version
5531 for ver in $WINDOWS_SDK_ACCEPTABLE_VERSIONS; do
5532 find_winsdk_version $ver
5533 if test -n "$winsdktest"; then
5541 AC_MSG_CHECKING([for MSVC merge modules directory])
5542 my_msm_files=Microsoft_VC${VCVER}_CRT_x86.msm
5545 my_msm_files="Microsoft_VC141_CRT_x86.msm Microsoft_VC142_CRT_x86.msm ${my_msm_files}"
5548 for f in $my_msm_files; do
5549 echo "$as_me:$LINENO: searching for $f" >&5
5553 for ver in 14.0 15.0; do
5554 reg_get_value_32 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/$ver/Setup/VS/MSMDir
5555 if test -n "$regvalue"; then
5556 for f in ${my_msm_files}; do
5557 if test -e "$regvalue/${f}"; then
5564 dnl Is the following fallback really necessary, or was it added in response
5565 dnl to never having started Visual Studio on a given machine, so the
5566 dnl registry keys checked above had presumably not yet been created?
5567 dnl Anyway, if it really is necessary, it might be worthwhile to extend it
5568 dnl to also check %CommonProgramFiles(X86)% (typically expanding to
5569 dnl "C:\Program Files (X86)\Common Files" compared to %CommonProgramFiles%
5570 dnl expanding to "C:\Program Files\Common Files"), which would need
5571 dnl something like $(perl -e 'print $ENV{"CommonProgramFiles(x86)"}') to
5572 dnl obtain its value from cygwin:
5573 if test -z "$msmdir"; then
5574 my_msm_dir="${COMMONPROGRAMFILES}/Merge Modules/"
5575 for f in ${my_msm_files}; do
5576 if test -e "$my_msm_dir/${f}"; then
5582 dnl Starting from MSVC 15.0, merge modules are located in different directory
5585 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
5586 echo "$as_me:$LINENO: looking in $VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules])" >&5
5587 my_msm_dir="$VC_PRODUCT_DIR/redist/MSVC/$l/MergeModules/"
5588 for f in ${my_msm_files}; do
5589 if test -e "$my_msm_dir/${f}"; then
5598 if test -n "$msmdir"; then
5599 msmdir=`cygpath -m "$msmdir"`
5600 AC_MSG_RESULT([$msmdir])
5602 if test "$ENABLE_RELEASE_BUILD" = "TRUE" ; then
5603 AC_MSG_FAILURE([not found])
5605 AC_MSG_WARN([not found (check config.log)])
5606 add_warning "MSM none of ${my_msm_files} found"
5611 find_msvc_x64_dlls()
5613 AC_MSG_CHECKING([for MSVC x64 DLL path])
5614 msvcdllpath="$VC_PRODUCT_DIR/redist/x64/Microsoft.VC${VCVER}.CRT"
5617 for l in `ls -1 $VC_PRODUCT_DIR/redist/MSVC/`; do
5618 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT" >&5
5619 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"; then
5620 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC141.CRT"
5623 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT" >&5
5624 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"; then
5625 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC142.CRT"
5628 echo "$as_me:$LINENO: testing $VC_PRODUCT_DIR/redist/MSVC/$l/x64/Microsoft.VC150.CRT" >&5
5629 if test -d "$VC_PRODUCT_DIR/redist/MSVC/$l/onecore/x64/Microsoft.VC150.CRT"; then
5630 msvcdllpath="$VC_PRODUCT_DIR/redist/MSVC/$l/onecore/x64/Microsoft.VC150.CRT"
5636 AC_MSG_RESULT([$msvcdllpath])
5637 AC_MSG_CHECKING([for MSVC x64 DLLs])
5638 msvcdlls="msvcp140.dll vcruntime140.dll"
5639 for dll in $msvcdlls; do
5640 if ! test -f "$msvcdllpath/$dll"; then
5641 AC_MSG_FAILURE([missing $dll])
5644 AC_MSG_RESULT([found all ($msvcdlls)])
5647 dnl =========================================
5648 dnl Check for the Windows SDK.
5649 dnl =========================================
5650 if test "$_os" = "WINNT"; then
5651 AC_MSG_CHECKING([for Windows SDK])
5652 if test "$build_os" = "cygwin"; then
5654 WINDOWS_SDK_HOME=$winsdktest
5656 # normalize if found
5657 if test -n "$WINDOWS_SDK_HOME"; then
5658 WINDOWS_SDK_HOME=`cygpath -d "$WINDOWS_SDK_HOME"`
5659 WINDOWS_SDK_HOME=`cygpath -u "$WINDOWS_SDK_HOME"`
5662 WINDOWS_SDK_LIB_SUBDIR=$winsdklibsubdir
5665 if test -n "$WINDOWS_SDK_HOME"; then
5666 # Remove a possible trailing backslash
5667 WINDOWS_SDK_HOME=`echo $WINDOWS_SDK_HOME | $SED 's/\/$//'`
5669 if test -f "$WINDOWS_SDK_HOME/Include/adoint.h" \
5670 -a -f "$WINDOWS_SDK_HOME/Include/SqlUcode.h" \
5671 -a -f "$WINDOWS_SDK_HOME/Include/usp10.h"; then
5672 have_windows_sdk_headers=yes
5673 elif test -f "$WINDOWS_SDK_HOME/Include/um/adoint.h" \
5674 -a -f "$WINDOWS_SDK_HOME/Include/um/SqlUcode.h" \
5675 -a -f "$WINDOWS_SDK_HOME/Include/um/usp10.h"; then
5676 have_windows_sdk_headers=yes
5677 elif test -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/adoint.h" \
5678 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/SqlUcode.h" \
5679 -a -f "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um/usp10.h"; then
5680 have_windows_sdk_headers=yes
5682 have_windows_sdk_headers=no
5685 if test -f "$WINDOWS_SDK_HOME/lib/user32.lib"; then
5686 have_windows_sdk_libs=yes
5687 elif test -f "$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/$WINDOWS_SDK_ARCH/user32.lib"; then
5688 have_windows_sdk_libs=yes
5690 have_windows_sdk_libs=no
5693 if test $have_windows_sdk_headers = no -o $have_windows_sdk_libs = no; then
5694 AC_MSG_ERROR([Some (all?) Windows SDK files not found, please check if all needed parts of
5695 the Windows SDK are installed.])
5699 if test -z "$WINDOWS_SDK_HOME"; then
5700 AC_MSG_RESULT([no, hoping the necessary headers and libraries will be found anyway!?])
5701 elif echo $WINDOWS_SDK_HOME | grep "8.0" >/dev/null 2>/dev/null; then
5702 WINDOWS_SDK_VERSION=80
5703 AC_MSG_RESULT([found Windows SDK 8.0 ($WINDOWS_SDK_HOME)])
5704 elif echo $WINDOWS_SDK_HOME | grep "8.1" >/dev/null 2>/dev/null; then
5705 WINDOWS_SDK_VERSION=81
5706 AC_MSG_RESULT([found Windows SDK 8.1 ($WINDOWS_SDK_HOME)])
5707 elif echo $WINDOWS_SDK_HOME | grep "/10" >/dev/null 2>/dev/null; then
5708 WINDOWS_SDK_VERSION=10
5709 AC_MSG_RESULT([found Windows SDK 10.0 ($WINDOWS_SDK_HOME)])
5711 AC_MSG_ERROR([Found legacy Windows Platform SDK ($WINDOWS_SDK_HOME)])
5713 PathFormat "$WINDOWS_SDK_HOME"
5714 WINDOWS_SDK_HOME="$formatted_path"
5715 if test "$build_os" = "cygwin"; then
5716 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include -I$COMPATH/Include"
5717 if test -d "$WINDOWS_SDK_HOME/include/um"; then
5718 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/include/um -I$WINDOWS_SDK_HOME/include/shared"
5719 elif test -d "$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um"; then
5720 SOLARINC="$SOLARINC -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/um -I$WINDOWS_SDK_HOME/Include/$winsdklibsubdir/shared"
5724 dnl TODO: solenv/bin/modules/installer/windows/msiglobal.pm wants to use a
5725 dnl WiLangId.vbs that is included only in some SDKs (e.g., included in v7.1
5726 dnl but not in v8.0), so allow this to be overridden with a
5727 dnl WINDOWS_SDK_WILANGID for now; a full-blown --with-windows-sdk-wilangid
5728 dnl and configuration error if no WiLangId.vbs is found would arguably be
5729 dnl better, but I do not know under which conditions exactly it is needed by
5731 if test -z "$WINDOWS_SDK_WILANGID" -a -n "$WINDOWS_SDK_HOME"; then
5732 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/Samples/sysmgmt/msi/scripts/WiLangId.vbs
5733 if ! test -e "$WINDOWS_SDK_WILANGID" ; then
5734 WINDOWS_SDK_WILANGID="${WINDOWS_SDK_HOME}/bin/${WINDOWS_SDK_LIB_SUBDIR}/${WINDOWS_SDK_ARCH}/WiLangId.vbs"
5736 if ! test -e "$WINDOWS_SDK_WILANGID" ; then
5737 WINDOWS_SDK_WILANGID=$WINDOWS_SDK_HOME/bin/$WINDOWS_SDK_ARCH/WiLangId.vbs
5739 if ! test -e "$WINDOWS_SDK_WILANGID" ; then
5740 WINDOWS_SDK_WILANGID=$(cygpath -sm "C:/Program Files (x86)/Windows Kits/8.1/bin/$WINDOWS_SDK_ARCH/WiLangId.vbs")
5743 if test -n "$with_lang" -a "$with_lang" != "en-US"; then
5744 if test -n "$with_package_format" -a "$with_package_format" != no; then
5745 for i in "$with_package_format"; do
5746 if test "$i" = "msi"; then
5747 if ! test -e "$WINDOWS_SDK_WILANGID" ; then
5748 AC_MSG_ERROR([WiLangId.vbs not found - building translated packages will fail])
5755 AC_SUBST(WINDOWS_SDK_HOME)
5756 AC_SUBST(WINDOWS_SDK_LIB_SUBDIR)
5757 AC_SUBST(WINDOWS_SDK_VERSION)
5758 AC_SUBST(WINDOWS_SDK_WILANGID)
5760 if test "$build_os" = "cygwin"; then
5761 dnl Check midl.exe; this being the first check for a tool in the SDK bin
5762 dnl dir, it also determines that dir's path w/o an arch segment if any,
5763 dnl WINDOWS_SDK_BINDIR_NO_ARCH:
5764 AC_MSG_CHECKING([for midl.exe])
5767 if test -n "$winsdkbinsubdir" \
5768 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WINDOWS_SDK_ARCH/midl.exe"
5770 MIDL_PATH=$winsdktest/Bin/$winsdkbinsubdir/$WINDOWS_SDK_ARCH
5771 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin/$winsdkbinsubdir
5772 elif test -f "$winsdktest/Bin/$WINDOWS_SDK_ARCH/midl.exe"; then
5773 MIDL_PATH=$winsdktest/Bin/$WINDOWS_SDK_ARCH
5774 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
5775 elif test -f "$winsdktest/Bin/midl.exe"; then
5776 MIDL_PATH=$winsdktest/Bin
5777 WINDOWS_SDK_BINDIR_NO_ARCH=$WINDOWS_SDK_HOME/Bin
5779 if test ! -f "$MIDL_PATH/midl.exe"; then
5780 AC_MSG_ERROR([midl.exe not found in $winsdktest/Bin/$WINDOWS_SDK_ARCH, Windows SDK installation broken?])
5782 AC_MSG_RESULT([$MIDL_PATH/midl.exe])
5785 # Convert to posix path with 8.3 filename restrictions ( No spaces )
5786 MIDL_PATH=`win_short_path_for_make "$MIDL_PATH"`
5788 if test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msiinfo.exe" \
5789 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msidb.exe" \
5790 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/uuidgen.exe" \
5791 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/msitran.exe"; then :
5792 elif test -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msiinfo.exe" \
5793 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msidb.exe" \
5794 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
5795 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/msitran.exe"; then :
5796 elif test -f "$WINDOWS_SDK_HOME/bin/x86/msiinfo.exe" \
5797 -a -f "$WINDOWS_SDK_HOME/bin/x86/msidb.exe" \
5798 -a -f "$WINDOWS_SDK_BINDIR_NO_ARCH/x86/uuidgen.exe" \
5799 -a -f "$WINDOWS_SDK_HOME/bin/x86/msitran.exe"; then :
5801 AC_MSG_ERROR([Some (all?) Windows Installer tools in the Windows SDK are missing, please install.])
5805 AC_MSG_CHECKING([for csc.exe])
5807 if test -f "$csctest/csc.exe"; then
5810 if test ! -f "$CSC_PATH/csc.exe"; then
5811 AC_MSG_ERROR([csc.exe not found as $CSC_PATH/csc.exe])
5813 AC_MSG_RESULT([$CSC_PATH/csc.exe])
5816 CSC_PATH=`win_short_path_for_make "$CSC_PATH"`
5819 AC_MSG_CHECKING([for al.exe])
5821 if test -n "$winsdkbinsubdir" \
5822 -a -f "$winsdktest/Bin/$winsdkbinsubdir/$WINDOWS_SDK_ARCH/al.exe"
5824 AL_PATH="$winsdktest/Bin/$winsdkbinsubdir/$WINDOWS_SDK_ARCH"
5825 elif test -f "$winsdktest/Bin/$WINDOWS_SDK_ARCH/al.exe"; then
5826 AL_PATH="$winsdktest/Bin/$WINDOWS_SDK_ARCH"
5827 elif test -f "$winsdktest/Bin/al.exe"; then
5828 AL_PATH="$winsdktest/Bin"
5831 if test -z "$AL_PATH"; then
5833 if test -f "$altest/bin/al.exe"; then
5834 AL_PATH="$altest/bin"
5835 elif test -f "$altest/al.exe"; then
5839 if test ! -f "$AL_PATH/al.exe"; then
5840 AC_MSG_ERROR([al.exe not found as $AL_PATH/al.exe])
5842 AC_MSG_RESULT([$AL_PATH/al.exe])
5845 AL_PATH=`win_short_path_for_make "$AL_PATH"`
5847 dnl Check mscoree.lib / .NET Framework dir
5848 AC_MSG_CHECKING(.NET Framework)
5850 PathFormat "$frametest"
5851 frametest="$formatted_path"
5852 if test -f "$frametest/Lib/um/$WINDOWS_SDK_ARCH/mscoree.lib"; then
5853 DOTNET_FRAMEWORK_HOME="$frametest"
5856 if test -f "$winsdktest/lib/mscoree.lib" -o -f "$winsdktest/lib/$winsdklibsubdir/um/$WINDOWS_SDK_ARCH/mscoree.lib"; then
5857 DOTNET_FRAMEWORK_HOME="$winsdktest"
5860 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
5861 AC_MSG_ERROR([mscoree.lib not found])
5863 AC_MSG_RESULT([found: $DOTNET_FRAMEWORK_HOME])
5865 PathFormat "$MIDL_PATH"
5866 MIDL_PATH="$formatted_path"
5868 PathFormat "$AL_PATH"
5869 AL_PATH="$formatted_path"
5871 PathFormat "$DOTNET_FRAMEWORK_HOME"
5872 DOTNET_FRAMEWORK_HOME="$formatted_path"
5874 PathFormat "$CSC_PATH"
5875 CSC_PATH="$formatted_path"
5878 dnl ===================================================================
5879 dnl Check if stdc headers are available excluding MSVC.
5880 dnl ===================================================================
5881 if test "$_os" != "WINNT"; then
5885 dnl ===================================================================
5886 dnl Testing for C++ compiler and version...
5887 dnl ===================================================================
5889 if test "$_os" != "WINNT"; then
5890 # AC_PROG_CXX sets CXXFLAGS to -g -O2 if not set, avoid that
5891 save_CXXFLAGS=$CXXFLAGS
5893 CXXFLAGS=$save_CXXFLAGS
5894 if test -z "$CXX_BASE"; then
5895 CXX_BASE=`first_arg_basename "$CXX"`
5899 dnl check for GNU C++ compiler version
5900 if test "$GXX" = "yes" -a -z "$COM_IS_CLANG"; then
5901 AC_MSG_CHECKING([the GNU C++ compiler version])
5903 _gpp_version=`$CXX -dumpversion`
5904 _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
5906 if test "$_gpp_majmin" -lt "700"; then
5907 AC_MSG_ERROR([You need to use GNU C++ compiler version >= 7.0 to build LibreOffice, you have $_gpp_version.])
5909 AC_MSG_RESULT([ok (g++ $_gpp_version)])
5912 dnl see https://code.google.com/p/android/issues/detail?id=41770
5916 AC_MSG_CHECKING([whether $CXX_BASE is broken with boost.thread])
5917 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
5918 #include <bits/c++config.h>]],[[
5919 #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
5920 && !defined(_GLIBCXX__PTHREADS) \
5921 && !defined(_GLIBCXX_HAS_GTHREADS)
5924 ]])],[AC_MSG_RESULT([yes])
5925 glibcxx_threads=yes],[AC_MSG_RESULT([no])])
5927 if test $glibcxx_threads = yes; then
5928 BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
5931 AC_SUBST(BOOST_CXXFLAGS)
5934 # prefx CXX with ccache if needed
5936 if test "$CCACHE" != ""; then
5937 AC_MSG_CHECKING([whether $CXX_BASE is already ccached])
5939 save_CXXFLAGS=$CXXFLAGS
5940 CXXFLAGS="$CXXFLAGS --ccache-skip -O2"
5941 dnl an empty program will do, we're checking the compiler flags
5942 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[])],
5943 [use_ccache=yes], [use_ccache=no])
5944 if test $use_ccache = yes; then
5945 AC_MSG_RESULT([yes])
5948 CXX_BASE="ccache $CXX_BASE"
5951 CXXFLAGS=$save_CXXFLAGS
5955 dnl ===================================================================
5956 dnl Find pre-processors.(should do that _after_ messing with CC/CXX)
5957 dnl ===================================================================
5959 if test "$_os" != "WINNT"; then
5962 dnl Check whether there's a C pre-processor.
5967 dnl ===================================================================
5968 dnl Find integral type sizes and alignments
5969 dnl ===================================================================
5971 if test "$_os" != "WINNT"; then
5973 if test "$_os" = "iOS"; then
5974 AC_MSG_CHECKING([iOS setting sizes long, short, int, long long, double, voidp])
5976 ac_cv_sizeof_short=2
5978 ac_cv_sizeof_long_long=8
5979 ac_cv_sizeof_double=8
5980 ac_cv_sizeof_voidp=8
5982 AC_CHECK_SIZEOF(long)
5983 AC_CHECK_SIZEOF(short)
5984 AC_CHECK_SIZEOF(int)
5985 AC_CHECK_SIZEOF(long long)
5986 AC_CHECK_SIZEOF(double)
5987 AC_CHECK_SIZEOF(void*)
5990 SAL_TYPES_SIZEOFSHORT=$ac_cv_sizeof_short
5991 SAL_TYPES_SIZEOFINT=$ac_cv_sizeof_int
5992 SAL_TYPES_SIZEOFLONG=$ac_cv_sizeof_long
5993 SAL_TYPES_SIZEOFLONGLONG=$ac_cv_sizeof_long_long
5994 SAL_TYPES_SIZEOFPOINTER=$ac_cv_sizeof_voidp
5996 dnl Allow build without AC_CHECK_ALIGNOF, grrr
5997 m4_pattern_allow([AC_CHECK_ALIGNOF])
5998 m4_ifdef([AC_CHECK_ALIGNOF],
6000 AC_CHECK_ALIGNOF(short,[#include <stddef.h>])
6001 AC_CHECK_ALIGNOF(int,[#include <stddef.h>])
6002 AC_CHECK_ALIGNOF(long,[#include <stddef.h>])
6003 AC_CHECK_ALIGNOF(double,[#include <stddef.h>])
6006 case "$_os-$host_cpu" in
6008 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6009 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6010 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=4
6011 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=4
6014 test -z "$ac_cv_alignof_short" && ac_cv_alignof_short=2
6015 test -z "$ac_cv_alignof_int" && ac_cv_alignof_int=4
6016 test -z "$ac_cv_alignof_long" && ac_cv_alignof_long=8
6017 test -z "$ac_cv_alignof_double" && ac_cv_alignof_double=8
6020 if test -z "$ac_cv_alignof_short" -o \
6021 -z "$ac_cv_alignof_int" -o \
6022 -z "$ac_cv_alignof_long" -o \
6023 -z "$ac_cv_alignof_double"; then
6024 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.])
6030 SAL_TYPES_ALIGNMENT2=$ac_cv_alignof_short
6031 SAL_TYPES_ALIGNMENT4=$ac_cv_alignof_int
6032 if test $ac_cv_sizeof_long -eq 8; then
6033 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_long
6034 elif test $ac_cv_sizeof_double -eq 8; then
6035 SAL_TYPES_ALIGNMENT8=$ac_cv_alignof_double
6037 AC_MSG_ERROR([Cannot find alignment of 8 byte types.])
6040 dnl Check for large file support
6042 if test -n "$ac_cv_sys_file_offset_bits" -a "$ac_cv_sys_file_offset_bits" != "no"; then
6043 LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
6045 if test -n "$ac_cv_sys_large_files" -a "$ac_cv_sys_large_files" != "no"; then
6046 LFS_CFLAGS="$LFS_CFLAGS -D_LARGE_FILES"
6050 SAL_TYPES_SIZEOFSHORT=2
6051 SAL_TYPES_SIZEOFINT=4
6052 SAL_TYPES_SIZEOFLONG=4
6053 SAL_TYPES_SIZEOFLONGLONG=8
6054 if test "$BITNESS_OVERRIDE" = ""; then
6055 SAL_TYPES_SIZEOFPOINTER=4
6057 SAL_TYPES_SIZEOFPOINTER=8
6059 SAL_TYPES_ALIGNMENT2=2
6060 SAL_TYPES_ALIGNMENT4=4
6061 SAL_TYPES_ALIGNMENT8=8
6064 AC_SUBST(LFS_CFLAGS)
6066 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFSHORT,$SAL_TYPES_SIZEOFSHORT)
6067 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFINT,$SAL_TYPES_SIZEOFINT)
6068 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONG,$SAL_TYPES_SIZEOFLONG)
6069 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFLONGLONG,$SAL_TYPES_SIZEOFLONGLONG)
6070 AC_DEFINE_UNQUOTED(SAL_TYPES_SIZEOFPOINTER,$SAL_TYPES_SIZEOFPOINTER)
6071 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT2,$SAL_TYPES_ALIGNMENT2)
6072 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT4,$SAL_TYPES_ALIGNMENT4)
6073 AC_DEFINE_UNQUOTED(SAL_TYPES_ALIGNMENT8,$SAL_TYPES_ALIGNMENT8)
6075 dnl ===================================================================
6076 dnl Check whether to enable runtime optimizations
6077 dnl ===================================================================
6078 ENABLE_RUNTIME_OPTIMIZATIONS=
6079 AC_MSG_CHECKING([whether to enable runtime optimizations])
6080 if test -z "$enable_runtime_optimizations"; then
6084 enable_runtime_optimizations=no
6090 if test "$enable_runtime_optimizations" != no; then
6091 ENABLE_RUNTIME_OPTIMIZATIONS=TRUE
6092 AC_DEFINE(ENABLE_RUNTIME_OPTIMIZATIONS)
6093 AC_MSG_RESULT([yes])
6097 AC_SUBST([ENABLE_RUNTIME_OPTIMIZATIONS])
6099 dnl ===================================================================
6100 dnl Check if valgrind headers are available
6101 dnl ===================================================================
6103 if test "$cross_compiling" != yes -a "$with_valgrind" != no; then
6104 prev_cppflags=$CPPFLAGS
6105 # Is VALGRIND_CFLAGS something one is supposed to have in the environment,
6106 # or where does it come from?
6107 CPPFLAGS="$CPPFLAGS $VALGRIND_CFLAGS"
6108 AC_CHECK_HEADER([valgrind/valgrind.h],
6109 [ENABLE_VALGRIND=TRUE])
6110 CPPFLAGS=$prev_cppflags
6112 AC_SUBST([ENABLE_VALGRIND])
6113 if test -z "$ENABLE_VALGRIND"; then
6114 if test "$with_valgrind" = yes; then
6115 AC_MSG_ERROR([--with-valgrind specified but no Valgrind headers found])
6119 AC_SUBST([VALGRIND_CFLAGS])
6122 dnl ===================================================================
6123 dnl Check if SDT probes (for systemtap, gdb, dtrace) are available
6124 dnl ===================================================================
6126 # We need at least the sys/sdt.h include header.
6127 AC_CHECK_HEADER([sys/sdt.h], [SDT_H_FOUND='TRUE'], [SDT_H_FOUND='FALSE'])
6128 if test "$SDT_H_FOUND" = "TRUE"; then
6129 # Found sys/sdt.h header, now make sure the c++ compiler works.
6130 # Old g++ versions had problems with probes in constructors/destructors.
6131 AC_MSG_CHECKING([working sys/sdt.h and c++ support])
6133 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
6134 #include <sys/sdt.h>
6142 ProbeClass(int& v, const char *n) : ref(v), name(n)
6144 DTRACE_PROBE2(_test_, cons, name, ref);
6147 void method(int min)
6149 DTRACE_PROBE3(_test_, meth, name, ref, min);
6155 DTRACE_PROBE2(_test_, dest, name, ref);
6160 DTRACE_PROBE1(_test_, call, i);
6161 ProbeClass inst = ProbeClass(i, "call");
6163 ]])], [AC_MSG_RESULT([yes]); AC_DEFINE([USE_SDT_PROBES])],
6164 [AC_MSG_RESULT([no, sdt.h or c++ compiler too old])])
6167 AC_CONFIG_HEADERS([config_host/config_probes.h])
6169 dnl ===================================================================
6171 dnl ===================================================================
6172 HAVE_GCC_STACK_CLASH_PROTECTION=
6173 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6174 AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection])
6176 CFLAGS="$CFLAGS -fstack-clash-protection"
6178 [AC_LANG_PROGRAM(, [[return 0;]])],
6179 [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE],
6180 [AC_MSG_RESULT([no])])
6183 AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx])
6185 CFLAGS="$CFLAGS -Werror -mno-avx"
6186 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_AVX=TRUE ],[])
6188 if test "$HAVE_GCC_AVX" = "TRUE"; then
6189 AC_MSG_RESULT([yes])
6194 AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
6195 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
6197 if (__sync_add_and_fetch(&v, 1) != 1 ||
6198 __sync_sub_and_fetch(&v, 1) != 0)
6200 __sync_synchronize();
6201 if (__sync_val_compare_and_swap(&v, 0, 1) != 0 ||
6205 ]])],[HAVE_GCC_BUILTIN_ATOMIC=TRUE],[])
6206 if test "$HAVE_GCC_BUILTIN_ATOMIC" = "TRUE"; then
6207 AC_MSG_RESULT([yes])
6208 AC_DEFINE(HAVE_GCC_BUILTIN_ATOMIC)
6213 AC_MSG_CHECKING([whether $CC_BASE supports __builtin_ffs])
6214 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return __builtin_ffs(1); ]])],[HAVE_GCC_BUILTIN_FFS=TRUE],[])
6215 if test "$HAVE_GCC_BUILTIN_FFS" = "TRUE"; then
6216 AC_MSG_RESULT([yes])
6217 AC_DEFINE(HAVE_GCC_BUILTIN_FFS)
6222 AC_MSG_CHECKING([whether $CC_BASE supports __attribute__((deprecated(message)))])
6224 CFLAGS="$CFLAGS -Werror"
6225 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6226 __attribute__((deprecated("test"))) void f();
6228 AC_DEFINE([HAVE_GCC_DEPRECATED_MESSAGE],[1])
6229 AC_MSG_RESULT([yes])
6230 ], [AC_MSG_RESULT([no])])
6233 AC_MSG_CHECKING([whether $CXX_BASE defines __base_class_type_info in cxxabi.h])
6235 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6238 std::size_t f() { return sizeof(__cxxabiv1::__base_class_type_info); }
6240 AC_DEFINE([HAVE_CXXABI_H_BASE_CLASS_TYPE_INFO],[1])
6241 AC_MSG_RESULT([yes])
6242 ], [AC_MSG_RESULT([no])])
6245 AC_MSG_CHECKING([whether $CXX_BASE defines __class_type_info in cxxabi.h])
6247 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6250 std::size_t f() { return sizeof(__cxxabiv1::__class_type_info); }
6252 AC_DEFINE([HAVE_CXXABI_H_CLASS_TYPE_INFO],[1])
6253 AC_MSG_RESULT([yes])
6254 ], [AC_MSG_RESULT([no])])
6257 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_allocate_exception in cxxabi.h])
6259 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6261 void * f() { return __cxxabiv1::__cxa_allocate_exception(0); }
6263 AC_DEFINE([HAVE_CXXABI_H_CXA_ALLOCATE_EXCEPTION],[1])
6264 AC_MSG_RESULT([yes])
6265 ], [AC_MSG_RESULT([no])])
6268 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_eh_globals in cxxabi.h])
6270 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6273 std::size_t f() { return sizeof(__cxxabiv1::__cxa_eh_globals); }
6275 AC_DEFINE([HAVE_CXXABI_H_CXA_EH_GLOBALS],[1])
6276 AC_MSG_RESULT([yes])
6277 ], [AC_MSG_RESULT([no])])
6280 AC_MSG_CHECKING([whether $CXX_BASE defines __cxa_exceptions in cxxabi.h])
6282 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6285 std::size_t f() { return sizeof(__cxxabiv1::__cxa_exceptions); }
6287 AC_DEFINE([HAVE_CXXABI_H_CXA_EXCEPTIONS],[1])
6288 AC_MSG_RESULT([yes])
6289 ], [AC_MSG_RESULT([no])])
6292 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_get_globals in cxxabi.h])
6294 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6296 void * f() { return __cxxabiv1::__cxa_get_globals(); }
6298 AC_DEFINE([HAVE_CXXABI_H_CXA_GET_GLOBALS],[1])
6299 AC_MSG_RESULT([yes])
6300 ], [AC_MSG_RESULT([no])])
6303 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_current_exception_type in cxxabi.h])
6305 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6307 void * f() { return __cxxabiv1::__cxa_current_exception_type(); }
6309 AC_DEFINE([HAVE_CXXABI_H_CXA_CURRENT_EXCEPTION_TYPE],[1])
6310 AC_MSG_RESULT([yes])
6311 ], [AC_MSG_RESULT([no])])
6314 AC_MSG_CHECKING([whether $CXX_BASE declares __cxa_throw in cxxabi.h])
6316 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6318 void f() { __cxxabiv1::__cxa_throw(0, 0, 0); }
6320 AC_DEFINE([HAVE_CXXABI_H_CXA_THROW],[1])
6321 AC_MSG_RESULT([yes])
6322 ], [AC_MSG_RESULT([no])])
6325 AC_MSG_CHECKING([whether $CXX_BASE defines __si_class_type_info in cxxabi.h])
6327 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6330 std::size_t f() { return sizeof(__cxxabiv1::__si_class_type_info); }
6332 AC_DEFINE([HAVE_CXXABI_H_SI_CLASS_TYPE_INFO],[1])
6333 AC_MSG_RESULT([yes])
6334 ], [AC_MSG_RESULT([no])])
6337 AC_MSG_CHECKING([whether $CXX_BASE defines __vmi_class_type_info in cxxabi.h])
6339 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6342 std::size_t f() { return sizeof(__cxxabiv1::__vmi_class_type_info); }
6344 AC_DEFINE([HAVE_CXXABI_H_VMI_CLASS_TYPE_INFO],[1])
6345 AC_MSG_RESULT([yes])
6346 ], [AC_MSG_RESULT([no])])
6349 dnl Available in GCC 4.9 and at least since Clang 3.4:
6350 AC_MSG_CHECKING([whether $CXX_BASE supports __attribute__((warn_unused))])
6352 save_CXXFLAGS=$CXXFLAGS
6353 CXXFLAGS="$CXXFLAGS -Werror"
6354 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6355 struct __attribute__((warn_unused)) dummy {};
6357 AC_DEFINE([HAVE_GCC_ATTRIBUTE_WARN_UNUSED],[1])
6358 AC_MSG_RESULT([yes])
6359 ], [AC_MSG_RESULT([no])])
6360 CXXFLAGS=$save_CXXFLAGS
6364 AC_SUBST(HAVE_GCC_AVX)
6365 AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
6366 AC_SUBST(HAVE_GCC_BUILTIN_FFS)
6367 AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
6369 dnl ===================================================================
6370 dnl Identify the C++ library
6371 dnl ===================================================================
6373 AC_MSG_CHECKING([what the C++ library is])
6375 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6381 [CPP_LIBRARY=GLIBCXX
6382 cpp_library_name="GNU libstdc++"
6384 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6386 #ifndef _LIBCPP_VERSION
6391 cpp_library_name="LLVM libc++"
6392 AC_DEFINE([HAVE_LIBCXX])
6394 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6401 cpp_library_name="Microsoft"
6403 AC_MSG_ERROR([Could not figure out what C++ library this is]))))
6404 AC_MSG_RESULT([$cpp_library_name])
6407 dnl ===================================================================
6409 dnl ===================================================================
6410 AC_PATH_PROG(GPERF, gperf)
6411 if test -z "$GPERF"; then
6412 AC_MSG_ERROR([gperf not found but needed. Install it.])
6414 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
6415 GPERF=`cygpath -m $GPERF`
6417 AC_MSG_CHECKING([whether gperf is new enough])
6418 my_gperf_ver1=$($GPERF --version | head -n 1)
6419 my_gperf_ver2=${my_gperf_ver1#GNU gperf }
6420 my_gperf_ver3=$(printf %s "$my_gperf_ver2" | $AWK -F. '{ print $1*100+($2<100?$2:99) }')
6421 if test "$my_gperf_ver3" -ge 301; then
6422 AC_MSG_RESULT([yes ($my_gperf_ver2)])
6424 AC_MSG_ERROR(["$my_gperf_ver1" is too old or unrecognized, must be at least gperf 3.1])
6428 dnl ===================================================================
6429 dnl Check for system libcmis
6430 dnl ===================================================================
6431 # libcmis requires curl and we can't build curl for iOS
6432 if test $_os != iOS; then
6433 libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
6438 AC_SUBST(ENABLE_LIBCMIS)
6440 dnl ===================================================================
6442 dnl ===================================================================
6444 AC_MSG_CHECKING([whether $CXX_BASE supports C++17])
6446 if test "$COM" = MSC -a "$COM_IS_CLANG" != TRUE; then
6447 CXXFLAGS_CXX11='-std:c++17 -Zc:__cplusplus'
6448 elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6449 my_flags='-std=c++2a -std=c++17 -std=c++1z'
6450 for flag in $my_flags; do
6451 if test "$COM" = MSC; then
6452 flag="-Xclang $flag"
6454 save_CXXFLAGS=$CXXFLAGS
6455 CXXFLAGS="$CXXFLAGS $flag -Werror"
6456 if test "$SYSTEM_LIBCMIS" = TRUE; then
6457 CXXFLAGS="$CXXFLAGS -DSYSTEM_LIBCMIS $LIBCMIS_CFLAGS"
6460 dnl Clang 3.9 supports __float128 since
6461 dnl <http://llvm.org/viewvc/llvm-project?view=revision&revision=268898> "Enable support for
6462 dnl __float128 in Clang and enable it on pertinent platforms", but Clang 3.8 may need a
6463 dnl hacky workaround to be able to include <vector> (as is done in the main check whether
6464 dnl $flag is supported below, so check this first):
6466 my_float128hack_impl=-D__float128=void
6467 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6469 // some Clang fail when compiling against libstdc++ headers with -std=gnu++0x
6473 dnl The only reason why libstdc++ headers fail with Clang in C++11 mode is because they
6474 dnl use the __float128 type that Clang doesn't know (libstdc++ checks whether __float128
6475 dnl is available during its build, but it's usually built using GCC, and so c++config.h
6476 dnl hardcodes __float128 being supported). At least for some older libstdc++, the only
6477 dnl place where __float128 is used is in a template specialization, -D__float128=void
6478 dnl will avoid the problem there while still causing a problem if somebody actually uses
6479 dnl the type. (But some later libstdc++ are known to use __float128 also in algorithm ->
6480 dnl bits/stl_alog.h -> cstdlib -> bits/std_abs.h, in a way that unfortunately cannot be
6481 dnl "fixed" with this hack):
6482 CXXFLAGS="$CXXFLAGS $my_float128hack_impl"
6483 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6485 // some Clang fail when compiling against libstdc++ headers with -std=gnu++0x
6488 ],[my_float128hack=$my_float128hack_impl])
6490 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6491 #include <algorithm>
6492 #include <functional>
6495 #if defined SYSTEM_LIBCMIS
6496 // See ucb/source/ucp/cmis/auth_provider.hxx:
6497 #if !defined __clang__
6498 #pragma GCC diagnostic push
6499 #pragma GCC diagnostic ignored "-Wdeprecated"
6500 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
6502 #include <libcmis/libcmis.hxx>
6503 #if !defined __clang__
6504 #pragma GCC diagnostic pop
6508 void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
6509 std::sort(v.begin(), v.end(), fn);
6511 ]])],[CXXFLAGS_CXX11=$flag $my_float128hack])
6513 CXXFLAGS=$save_CXXFLAGS
6514 if test -n "$CXXFLAGS_CXX11"; then
6519 if test -n "$CXXFLAGS_CXX11"; then
6520 AC_MSG_RESULT([yes ($CXXFLAGS_CXX11)])
6524 AC_SUBST(CXXFLAGS_CXX11)
6526 if test "$GCC" = "yes"; then
6527 save_CXXFLAGS=$CXXFLAGS
6528 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
6530 CXXFLAGS=$save_CXXFLAGS
6531 AC_SUBST(ATOMIC_LIB)
6534 dnl Test for temporarily incompatible libstdc++ 4.7.{0,1}, where
6535 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=179528> introduced
6536 dnl an additional member _M_size into C++11 std::list towards 4.7.0 and
6537 dnl <https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=189186> removed it
6538 dnl again towards 4.7.2:
6539 if test $CPP_LIBRARY = GLIBCXX; then
6540 AC_MSG_CHECKING([whether using C++11 causes libstdc++ 4.7.0/4.7.1 ABI breakage])
6542 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6544 #if !defined __GLIBCXX__ || (__GLIBCXX__ != 20120322 && __GLIBCXX__ != 20120614)
6545 // according to <https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html>:
6546 // GCC 4.7.0: 20120322
6547 // GCC 4.7.1: 20120614
6548 // and using a range check is not possible as the mapping between
6549 // __GLIBCXX__ values and GCC versions is not monotonic
6554 ]])], [AC_MSG_RESULT(no, ok)],
6555 [AC_MSG_ERROR(yes)])
6559 AC_MSG_CHECKING([whether $CXX_BASE supports C++11 without Language Defect 757])
6560 save_CXXFLAGS=$CXXFLAGS
6561 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
6564 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
6567 template <typename T, size_t S> char (&sal_n_array_size( T(&)[S] ))[S];
6583 a thinga[]={{0,0}, {1,1}};
6584 b thingb[]={{0,0}, {1,1}};
6585 size_t i = sizeof(sal_n_array_size(thinga));
6586 size_t j = sizeof(sal_n_array_size(thingb));
6587 return !(i != 0 && j != 0);
6589 ], [ AC_MSG_RESULT(yes) ],
6590 [ AC_MSG_ERROR(no)])
6592 CXXFLAGS=$save_CXXFLAGS
6594 dnl _Pragma support (may require C++11)
6595 if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
6596 AC_MSG_CHECKING([whether $CXX_BASE supports _Pragma operator])
6598 save_CXXFLAGS=$CXXFLAGS
6599 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror"
6600 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6601 _Pragma("GCC diagnostic ignored \"-Wformat\"")
6603 AC_DEFINE([HAVE_GCC_PRAGMA_OPERATOR],[1])
6604 AC_MSG_RESULT([yes])
6605 ], [AC_MSG_RESULT([no])])
6607 CXXFLAGS=$save_CXXFLAGS
6610 HAVE_GCC_FNO_SIZED_DEALLOCATION=
6611 if test "$GCC" = yes; then
6612 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-sized-deallocation])
6614 save_CXXFLAGS=$CXXFLAGS
6615 CXXFLAGS="$CXXFLAGS -fno-sized-deallocation"
6616 AC_LINK_IFELSE([AC_LANG_PROGRAM()],[HAVE_GCC_FNO_SIZED_DEALLOCATION=TRUE])
6617 CXXFLAGS=$save_CXXFLAGS
6619 if test "$HAVE_GCC_FNO_SIZED_DEALLOCATION" = TRUE; then
6620 AC_MSG_RESULT([yes])
6625 AC_SUBST([HAVE_GCC_FNO_SIZED_DEALLOCATION])
6627 AC_MSG_CHECKING([whether $CXX_BASE supports guaranteed copy elision])
6629 save_CXXFLAGS=$CXXFLAGS
6630 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
6631 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6632 // At least VS 2017 15.8.1 defines __cpp_guaranteed_copy_elision as 201606L without actually
6634 #if !defined __cpp_guaranteed_copy_elision || (defined _MSC_VER && !defined __clang__)
6643 void f() { S c(copy()); }
6646 AC_DEFINE([HAVE_CPP_GUARANTEED_COPY_ELISION],[1])
6647 AC_MSG_RESULT([yes])
6648 ], [AC_MSG_RESULT([no])])
6649 CXXFLAGS=$save_CXXFLAGS
6652 AC_MSG_CHECKING([whether $CXX_BASE supports C++2a constinit sorted vectors])
6654 save_CXXFLAGS=$CXXFLAGS
6655 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
6656 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6657 #include <algorithm>
6658 #include <initializer_list>
6660 template<typename T> class S {
6664 constexpr S(std::initializer_list<T> i): v_(i) { std::sort(v_.begin(), v_.end()); }
6666 constinit S<int> s{3, 2, 1};
6668 AC_DEFINE([HAVE_CPP_CONSTINIT_SORTED_VECTOR],[1])
6669 AC_MSG_RESULT([yes])
6670 ], [AC_MSG_RESULT([no])])
6671 CXXFLAGS=$save_CXXFLAGS
6674 AC_MSG_CHECKING([whether $CXX_BASE has GCC bug 87150])
6676 save_CXXFLAGS=$CXXFLAGS
6677 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11"
6678 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6679 struct S1 { S1(S1 &&); };
6681 S1 f(S2 s) { return s; }
6683 AC_DEFINE([HAVE_GCC_BUG_87150],[1])
6684 AC_MSG_RESULT([yes])
6685 ], [AC_MSG_RESULT([no])])
6686 CXXFLAGS=$save_CXXFLAGS
6689 dnl At least GCC 8.2 with -O2 (i.e., --enable-optimized) causes a false-positive -Wmaybe-
6690 dnl uninitialized warning for code like
6693 dnl boost::optional<OString> * g(bool b) {
6694 dnl boost::optional<OString> o;
6696 dnl return new boost::optional<OString>(o);
6699 dnl (as is e.g. present, in a slightly more elaborate form, in
6700 dnl librdf_TypeConverter::extractNode_NoLock in unoxml/source/rdf/librdf_repository.cxx); the below
6701 dnl code is meant to be a faithfully stripped-down and self-contained version of the above code:
6702 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=
6703 if test "$GCC" = yes && test "$COM_IS_CLANG" != TRUE; then
6704 AC_MSG_CHECKING([whether $CXX_BASE might report false -Werror=maybe-uninitialized])
6706 save_CXXFLAGS=$CXXFLAGS
6707 CXXFLAGS="$CXXFLAGS $CXXFLAGS_CXX11 -Werror -Wmaybe-uninitialized"
6708 if test "$ENABLE_OPTIMIZED" = TRUE; then
6709 CXXFLAGS="$CXXFLAGS -O2"
6711 CXXFLAGS="$CXXFLAGS -O0"
6713 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
6722 S2(S2 const & s) { if (s.init) set(*reinterpret_cast<S1 const *>(s.stg)); }
6723 ~S2() { if (init) reinterpret_cast<S1 *>(stg)->S1::~S1(); }
6729 char stg[sizeof (S1)];
6737 ]])], [AC_MSG_RESULT([no])], [
6738 HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=TRUE
6739 AC_MSG_RESULT([yes])
6741 CXXFLAGS=$save_CXXFLAGS
6744 AC_SUBST([HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED])
6746 dnl ===================================================================
6747 dnl CPU Intrinsics support - SSE, AVX
6748 dnl ===================================================================
6750 INTRINSICS_CXXFLAGS=""
6752 if test "$GCC" = "yes"; then
6753 AC_MSG_CHECKING([whether $CXX can compile SSE2 intrinsics])
6755 save_CXXFLAGS=$CXXFLAGS
6756 CXXFLAGS="$CXXFLAGS -msse2"
6757 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6758 #include <emmintrin.h>
6760 volatile __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
6761 c = _mm_xor_si128 (a, b);
6765 [can_compile_sse2=yes],
6766 [can_compile_sse2=no])
6768 CXXFLAGS=$save_CXXFLAGS
6769 AC_MSG_RESULT([${can_compile_sse2}])
6770 if test "${can_compile_sse2}" = "yes" ; then
6771 INTRINSICS_CXXFLAGS="-msse2"
6773 AC_MSG_WARN([cannot compile SSE2 intrinsics])
6776 AC_MSG_CHECKING([whether $CXX can compile SSSE3 intrinsics])
6778 save_CXXFLAGS=$CXXFLAGS
6779 CXXFLAGS="$CXXFLAGS -mssse3"
6780 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6781 #include <tmmintrin.h>
6783 volatile __m128i a = _mm_set1_epi32 (0), b = _mm_set1_epi32 (0), c;
6784 c = _mm_maddubs_epi16 (a, b);
6788 [can_compile_ssse3=yes],
6789 [can_compile_ssse3=no])
6791 CXXFLAGS=$save_CXXFLAGS
6792 AC_MSG_RESULT([${can_compile_ssse3}])
6793 if test "${can_compile_ssse3}" = "yes" ; then
6794 INTRINSICS_CXXFLAGS="-mssse3"
6796 AC_MSG_WARN([cannot compile SSSE3 intrinsics])
6799 AC_MSG_CHECKING([whether $CXX can compile AVX intrinsics])
6801 save_CXXFLAGS=$CXXFLAGS
6802 CXXFLAGS="$CXXFLAGS -mavx"
6803 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6804 #include <immintrin.h>
6806 volatile __m256 a = _mm256_set1_ps (0.0f), b = _mm256_set1_ps (0.0f), c;
6807 c = _mm256_xor_ps(a, b);
6811 [can_compile_avx=yes],
6812 [can_compile_avx=no])
6814 CXXFLAGS=$save_CXXFLAGS
6815 AC_MSG_RESULT([${can_compile_avx}])
6816 if test "${can_compile_avx}" = "yes" ; then
6817 INTRINSICS_CXXFLAGS="-mavx"
6819 AC_MSG_WARN([cannot compile AVX intrinsics])
6822 AC_MSG_CHECKING([whether $CXX can compile AVX2 intrinsics])
6824 save_CXXFLAGS=$CXXFLAGS
6825 CXXFLAGS="$CXXFLAGS -mavx2"
6826 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
6827 #include <immintrin.h>
6829 volatile __m256i a = _mm256_set1_epi32 (0), b = _mm256_set1_epi32 (0), c;
6830 c = _mm256_maddubs_epi16(a, b);
6834 [can_compile_avx2=yes],
6835 [can_compile_avx2=no])
6837 CXXFLAGS=$save_CXXFLAGS
6838 AC_MSG_RESULT([${can_compile_avx2}])
6839 if test "${can_compile_avx2}" = "yes" ; then
6840 INTRINSICS_CXXFLAGS="-mavx2"
6842 AC_MSG_WARN([cannot compile AVX2 intrinsics])
6846 AC_SUBST([INTRINSICS_CXXFLAGS])
6848 dnl ===================================================================
6849 dnl system stl sanity tests
6850 dnl ===================================================================
6851 if test "$_os" != "WINNT"; then
6855 save_CPPFLAGS="$CPPFLAGS"
6856 if test -n "$MACOSX_SDK_PATH"; then
6857 CPPFLAGS="-isysroot $MACOSX_SDK_PATH $CPPFLAGS"
6860 # Assume visibility is not broken with libc++. The below test is very much designed for libstdc++
6862 if test "$CPP_LIBRARY" = GLIBCXX; then
6863 dnl gcc#19664, gcc#22482, rhbz#162935
6864 AC_MSG_CHECKING([if STL headers are visibility safe (GCC bug 22482)])
6865 AC_EGREP_HEADER(visibility push, string, stlvisok=yes, stlvisok=no)
6866 AC_MSG_RESULT([$stlvisok])
6867 if test "$stlvisok" = "no"; then
6868 AC_MSG_ERROR([Your libstdc++ headers are not visibility safe. This is no longer supported.])
6872 # As the below test checks things when linking self-compiled dynamic libraries, it presumably is irrelevant
6873 # when we don't make any dynamic libraries?
6874 if test "$DISABLE_DYNLOADING" = ""; then
6875 AC_MSG_CHECKING([if $CXX_BASE is -fvisibility-inlines-hidden safe (Clang bug 11250)])
6876 cat > conftestlib1.cc <<_ACEOF
6877 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
6878 struct S2: S1<int> { virtual ~S2(); };
6881 cat > conftestlib2.cc <<_ACEOF
6882 template<typename T> struct S1 { virtual ~S1() {} virtual void f() {} };
6883 struct S2: S1<int> { virtual ~S2(); };
6884 struct S3: S2 { virtual ~S3(); }; S3::~S3() {}
6886 gccvisinlineshiddenok=yes
6887 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib1.cc -o libconftest1$DLLPOST >/dev/null 2>&5; then
6888 gccvisinlineshiddenok=no
6890 dnl At least Clang -fsanitize=address and -fsanitize=undefined are
6891 dnl known to not work with -z defs (unsetting which makes the test
6893 my_linkflagsnoundefs=$LINKFLAGSNOUNDEFS
6894 if test "$COM_IS_CLANG" = TRUE; then
6895 for i in $CXX $CXXFLAGS; do
6898 my_linkflagsnoundefs=
6904 if ! $CXX $CXXFLAGS $CPPFLAGS $LINKFLAGSSHL -fPIC -fvisibility-inlines-hidden conftestlib2.cc -L. -lconftest1 $my_linkflagsnoundefs -o libconftest2$DLLPOST >/dev/null 2>&5; then
6905 gccvisinlineshiddenok=no
6910 AC_MSG_RESULT([$gccvisinlineshiddenok])
6911 if test "$gccvisinlineshiddenok" = "no"; then
6912 AC_MSG_ERROR([Your gcc/clang is not -fvisibility-inlines-hidden safe. This is no longer supported.])
6916 AC_MSG_CHECKING([if $CXX_BASE has a visibility bug with class-level attributes (GCC bug 26905)])
6917 cat >visibility.cxx <<_ACEOF
6918 #pragma GCC visibility push(hidden)
6919 struct __attribute__ ((visibility ("default"))) TestStruct {
6922 __attribute__ ((visibility ("default"))) void TestFunc() {
6926 if ! $CXX $CXXFLAGS $CPPFLAGS -fpic -S visibility.cxx; then
6931 if test "$_os" = "Darwin" -o "$_os" = "iOS"; then
6934 if $EGREP -q '@PLT|@GOT' visibility.s || test "$ENABLE_LTO" = "TRUE"; then
6946 rm -f visibility.s visibility.cxx
6948 AC_MSG_RESULT([$gccvisbroken])
6949 if test "$gccvisbroken" = "yes"; then
6950 AC_MSG_ERROR([Your gcc is not -fvisibility=hidden safe. This is no longer supported.])
6953 CPPFLAGS="$save_CPPFLAGS"
6958 dnl ===================================================================
6960 dnl ===================================================================
6962 HAVE_GCC_FNO_ENFORCE_EH_SPECS=
6963 if test "$GCC" = "yes"; then
6964 AC_MSG_CHECKING([whether $CXX_BASE supports -fno-enforce-eh-specs])
6966 save_CXXFLAGS=$CXXFLAGS
6967 CXXFLAGS="$CFLAGS -Werror -fno-enforce-eh-specs"
6968 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ return 0; ]])],[ HAVE_GCC_FNO_ENFORCE_EH_SPECS=TRUE ],[])
6969 CXXFLAGS=$save_CXXFLAGS
6971 if test "$HAVE_GCC_FNO_ENFORCE_EH_SPECS" = "TRUE"; then
6972 AC_MSG_RESULT([yes])
6977 AC_SUBST(HAVE_GCC_FNO_ENFORCE_EH_SPECS)
6979 dnl ===================================================================
6980 dnl Compiler plugins
6981 dnl ===================================================================
6984 # currently only Clang
6986 if test "$COM_IS_CLANG" != "TRUE"; then
6987 if test "$libo_fuzzed_enable_compiler_plugins" = yes -a "$enable_compiler_plugins" = yes; then
6988 AC_MSG_NOTICE([Resetting --enable-compiler-plugins=no])
6989 enable_compiler_plugins=no
6993 if test "$COM_IS_CLANG" = "TRUE"; then
6994 if test -n "$enable_compiler_plugins"; then
6995 compiler_plugins="$enable_compiler_plugins"
6996 elif test -n "$ENABLE_DBGUTIL"; then
6997 compiler_plugins=test
7001 if test "$compiler_plugins" != no -a "$my_apple_clang" != yes; then
7002 if test "$CLANGVER" -lt 50002; then
7003 if test "$compiler_plugins" = yes; then
7004 AC_MSG_ERROR([Clang $CLANGVER is too old to build compiler plugins; need >= 5.0.2.])
7010 if test "$compiler_plugins" != "no"; then
7011 dnl The prefix where Clang resides, override to where Clang resides if
7012 dnl using a source build:
7013 if test -z "$CLANGDIR"; then
7014 CLANGDIR=$(dirname $(dirname $($CXX -print-prog-name=$(basename $CXX))))
7016 # Assume Clang is self-built, but allow overriding COMPILER_PLUGINS_CXX to the compiler Clang was built with.
7017 if test -z "$COMPILER_PLUGINS_CXX"; then
7018 COMPILER_PLUGINS_CXX=[$(echo $CXX | sed -e 's/-fsanitize=[^ ]*//g')]
7020 clangbindir=$CLANGDIR/bin
7021 if test "$build_os" = "cygwin"; then
7022 clangbindir=$(cygpath -u "$clangbindir")
7024 AC_PATH_PROG(LLVM_CONFIG, llvm-config,[],"$clangbindir" $PATH)
7025 if test -n "$LLVM_CONFIG"; then
7026 COMPILER_PLUGINS_CXXFLAGS=$($LLVM_CONFIG --cxxflags)
7027 COMPILER_PLUGINS_LINKFLAGS=$($LLVM_CONFIG --ldflags --libs --system-libs | tr '\n' ' ')
7028 if test -z "$CLANGLIBDIR"; then
7029 CLANGLIBDIR=$($LLVM_CONFIG --libdir)
7031 # Try if clang is built from source (in which case its includes are not together with llvm includes).
7032 # src-root is [llvm-toplevel-src-dir]/llvm, clang is [llvm-toplevel-src-dir]/clang
7033 clangsrcdir=$(dirname $($LLVM_CONFIG --src-root))
7034 if test -n "$clangsrcdir" -a -d "$clangsrcdir" -a -d "$clangsrcdir/clang/include"; then
7035 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangsrcdir/clang/include"
7037 # obj-root is [llvm-toplevel-obj-dir]/, clang is [llvm-toplevel-obj-dir]/tools/clang
7038 clangobjdir=$($LLVM_CONFIG --obj-root)
7039 if test -n "$clangobjdir" -a -d "$clangobjdir" -a -d "$clangobjdir/tools/clang/include"; then
7040 COMPILER_PLUGINS_CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS -I$clangobjdir/tools/clang/include"
7043 AC_MSG_NOTICE([compiler plugins compile flags: $COMPILER_PLUGINS_CXXFLAGS])
7047 save_CPPFLAGS=$CPPFLAGS
7048 save_CXXFLAGS=$CXXFLAGS
7049 save_LDFLAGS=$LDFLAGS
7051 CXX=$COMPILER_PLUGINS_CXX
7052 CXXCPP="$COMPILER_PLUGINS_CXX -E"
7053 CPPFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7054 CXXFLAGS="$COMPILER_PLUGINS_CXXFLAGS"
7055 AC_CHECK_HEADER(clang/Basic/SourceLocation.h,
7056 [COMPILER_PLUGINS=TRUE],
7058 if test "$compiler_plugins" = "yes"; then
7059 AC_MSG_ERROR([Cannot find Clang headers to build compiler plugins.])
7061 AC_MSG_WARN([Cannot find Clang headers to build compiler plugins, plugins disabled])
7062 add_warning "Cannot find Clang headers to build compiler plugins, plugins disabled."
7065 dnl TODO: Windows doesn't use LO_CLANG_SHARED_PLUGINS for now, see corresponding TODO
7066 dnl comment in compilerplugins/Makefile-clang.mk:
7067 if test -n "$COMPILER_PLUGINS" && test "$_os" != "WINNT"; then
7069 AC_MSG_CHECKING([for clang libraries to use])
7070 if test -z "$CLANGTOOLLIBS"; then
7071 LIBS="-lclangTooling -lclangDriver -lclangFrontend -lclangParse -lclangSema -lclangEdit \
7072 -lclangAnalysis -lclangAST -lclangLex -lclangSerialization -lclangBasic $COMPILER_PLUGINS_LINKFLAGS"
7074 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7075 [[ clang::FullSourceLoc().dump(); ]])
7076 ],[CLANGTOOLLIBS="$LIBS"],[])
7078 if test -z "$CLANGTOOLLIBS"; then
7079 LIBS="-lclang-cpp $COMPILER_PLUGINS_LINKFLAGS"
7081 AC_LANG_PROGRAM([[#include "clang/Basic/SourceLocation.h"]],
7082 [[ clang::FullSourceLoc().dump(); ]])
7083 ],[CLANGTOOLLIBS="$LIBS"],[])
7085 AC_MSG_RESULT([$CLANGTOOLLIBS])
7086 if test -z "$CLANGTOOLLIBS"; then
7087 if test "$compiler_plugins" = "yes"; then
7088 AC_MSG_ERROR([Cannot find Clang libraries to build compiler plugins.])
7090 AC_MSG_WARN([Cannot find Clang libraries to build compiler plugins, plugins disabled])
7091 add_warning "Cannot find Clang libraries to build compiler plugins, plugins disabled."
7095 if test -n "$COMPILER_PLUGINS"; then
7096 if test -z "$CLANGSYSINCLUDE"; then
7097 if test -n "$LLVM_CONFIG"; then
7098 # Path to the clang system headers (no idea if there's a better way to get it).
7099 CLANGSYSINCLUDE=$($LLVM_CONFIG --libdir)/clang/$($LLVM_CONFIG --version | sed 's/svn//')/include
7106 CPPFLAGS=$save_CPPFLAGS
7107 CXXFLAGS=$save_CXXFLAGS
7108 LDFLAGS=$save_LDFLAGS
7113 if test "$enable_compiler_plugins" = "yes"; then
7114 AC_MSG_ERROR([Compiler plugins are currently supported only with the Clang compiler.])
7117 AC_SUBST(COMPILER_PLUGINS)
7118 AC_SUBST(COMPILER_PLUGINS_CXX)
7119 AC_SUBST(COMPILER_PLUGINS_CXXFLAGS)
7120 AC_SUBST(COMPILER_PLUGINS_CXX_LINKFLAGS)
7121 AC_SUBST(COMPILER_PLUGINS_DEBUG)
7122 AC_SUBST(COMPILER_PLUGINS_TOOLING_ARGS)
7124 AC_SUBST(CLANGLIBDIR)
7125 AC_SUBST(CLANGTOOLLIBS)
7126 AC_SUBST(CLANGSYSINCLUDE)
7128 # Plugin to help linker.
7129 # Add something like LD_PLUGIN=/usr/lib64/LLVMgold.so to your autogen.input.
7130 # This makes --enable-lto build with clang work.
7133 AC_CHECK_FUNCS(posix_fallocate, HAVE_POSIX_FALLOCATE=YES, [HAVE_POSIX_FALLOCATE=NO])
7134 AC_SUBST(HAVE_POSIX_FALLOCATE)
7136 dnl ===================================================================
7137 dnl Custom build version
7138 dnl ===================================================================
7140 AC_MSG_CHECKING([whether to add custom build version])
7141 if test "$with_build_version" != ""; then
7142 BUILD_VER_STRING=$with_build_version
7143 AC_MSG_RESULT([yes, $BUILD_VER_STRING])
7148 AC_SUBST(BUILD_VER_STRING)
7150 JITC_PROCESSOR_TYPE=""
7151 if test "$_os" = "Linux" -a "$host_cpu" = "powerpc"; then
7152 # IBMs JDK needs this...
7153 JITC_PROCESSOR_TYPE=6
7154 export JITC_PROCESSOR_TYPE
7156 AC_SUBST([JITC_PROCESSOR_TYPE])
7158 # Misc Windows Stuff
7159 AC_ARG_WITH(ucrt-dir,
7160 AS_HELP_STRING([--with-ucrt-dir],
7161 [path to the directory with the arch-specific MSU packages of the Windows Universal CRT redistributables
7162 (MS KB 2999226) for packaging into the installsets (without those the target system needs to install
7163 the UCRT or Visual C++ Runtimes manually). The directory must contain the following 6 files:
7164 Windows6.1-KB2999226-x64.msu
7165 Windows6.1-KB2999226-x86.msu
7166 Windows8.1-KB2999226-x64.msu
7167 Windows8.1-KB2999226-x86.msu
7168 Windows8-RT-KB2999226-x64.msu
7169 Windows8-RT-KB2999226-x86.msu
7170 A zip archive including those files is available from Microsoft site:
7171 https://www.microsoft.com/en-us/download/details.aspx?id=48234]),
7173 UCRT_REDISTDIR="$with_ucrt_dir"
7174 if test $_os = "WINNT"; then
7177 MSVC_DLL_PATH=`win_short_path_for_make "$msvcdllpath"`
7178 MSVC_DLLS="$msvcdlls"
7179 MSM_PATH=`win_short_path_for_make "$msmdir"`
7180 # MSVC 15.3 changed it to VC141
7181 if echo "$msvcdllpath" | grep -q "VC141.CRT$"; then
7182 SCPDEFS="$SCPDEFS -DWITH_VC141_REDIST"
7184 SCPDEFS="$SCPDEFS -DWITH_VC${VCVER}_REDIST"
7187 if test "$UCRT_REDISTDIR" = "no"; then
7188 dnl explicitly disabled
7191 if ! test -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x64.msu" -a \
7192 -f "$UCRT_REDISTDIR/Windows6.1-KB2999226-x86.msu" -a \
7193 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x64.msu" -a \
7194 -f "$UCRT_REDISTDIR/Windows8.1-KB2999226-x86.msu" -a \
7195 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x64.msu" -a \
7196 -f "$UCRT_REDISTDIR/Windows8-RT-KB2999226-x86.msu"; then
7198 if test -n "$PKGFORMAT"; then
7199 for i in $PKGFORMAT; do
7202 AC_MSG_WARN([--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency])
7203 add_warning "--without-ucrt-dir not specified or MSUs not found - installer will have runtime dependency"
7212 AC_SUBST(UCRT_REDISTDIR)
7213 AC_SUBST(MSVC_DLL_PATH)
7217 dnl ===================================================================
7219 dnl ===================================================================
7220 if test "$ENABLE_JAVA" != ""; then
7222 # Windows-specific tests
7223 if test "$build_os" = "cygwin"; then
7224 if test "$BITNESS_OVERRIDE" = 64; then
7230 if test -z "$with_jdk_home"; then
7231 dnl See <https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-EEED398E-AE37-4D12-
7232 dnl AB10-49F82F720027> section "Windows Registry Key Changes":
7233 reg_get_value "$bitness" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/CurrentVersion"
7234 if test -n "$regvalue"; then
7236 reg_get_value "$bitness" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/JDK/$ver/JavaHome"
7239 if test -z "$with_jdk_home"; then
7241 reg_get_value "$bitness" "HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Development Kit/$ver/JavaHome"
7242 if test -n "$regvalue"; then
7248 if test -f "$_jdk_home/lib/jvm.lib" -a -f "$_jdk_home/bin/java.exe"; then
7249 with_jdk_home="$_jdk_home"
7250 howfound="found automatically"
7252 AC_MSG_ERROR([No JDK found, pass the --with-jdk-home option pointing to a $bitness-bit JDK])
7255 test "$build_os" = "cygwin" && with_jdk_home=`win_short_path_for_make "$with_jdk_home"`
7256 howfound="you passed"
7260 # 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.
7261 # /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java, but /usr does not contain the JDK libraries
7262 if test -z "$with_jdk_home" -a "$_os" = "Darwin" -a -x /usr/libexec/java_home; then
7263 with_jdk_home=`/usr/libexec/java_home`
7266 JAVA_HOME=; export JAVA_HOME
7267 if test -z "$with_jdk_home"; then
7268 AC_PATH_PROG(JAVAINTERPRETER, $with_java)
7270 _java_path="$with_jdk_home/bin/$with_java"
7271 dnl Check if there is a Java interpreter at all.
7272 if test -x "$_java_path"; then
7273 JAVAINTERPRETER=$_java_path
7275 AC_MSG_ERROR([$_java_path not found, pass --with-jdk-home])
7279 dnl Check that the JDK found is correct architecture (at least 2 reasons to
7280 dnl check: officebean needs to link -ljawt, and libjpipe.so needs to be
7281 dnl loaded by java to run JunitTests:
7282 if test "$build_os" = "cygwin"; then
7283 shortjdkhome=`cygpath -d "$with_jdk_home"`
7284 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
7285 AC_MSG_WARN([You are building 64-bit binaries but the JDK $howfound is 32-bit])
7286 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
7287 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
7288 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
7289 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
7292 if test x`echo "$JAVAINTERPRETER" | $GREP -i '\.exe$'` = x; then
7293 JAVAINTERPRETER="${JAVAINTERPRETER}.exe"
7295 JAVAINTERPRETER=`win_short_path_for_make "$JAVAINTERPRETER"`
7296 elif test "$cross_compiling" != "yes"; then
7298 AARCH64|AXP|X86_64|HPPA|IA64|POWERPC64|S390X|SPARC64|GODSON64)
7299 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" = "" >/dev/null; then
7300 AC_MSG_WARN([You are building 64-bit binaries but the JDK $JAVAINTERPRETER is 32-bit])
7301 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a 64-bit JDK])
7304 *) # assumption: everything else 32-bit
7305 if test -f "$JAVAINTERPRETER" -a "`$JAVAINTERPRETER -version 2>&1 | $GREP -i 64-bit`" != "" >/dev/null; then
7306 AC_MSG_WARN([You are building 32-bit binaries but the JDK $howfound is 64-bit])
7307 AC_MSG_ERROR([You should pass the --with-jdk-home option pointing to a (32-bit) JDK])
7314 dnl ===================================================================
7316 dnl ===================================================================
7318 # Note that JAVA_HOME as for now always means the *build* platform's
7319 # JAVA_HOME. Whether all the complexity here actually is needed any
7320 # more or not, no idea.
7322 if test "$ENABLE_JAVA" != ""; then
7324 AC_MSG_CHECKING([the installed JDK])
7325 if test -n "$JAVAINTERPRETER"; then
7326 dnl java -version sends output to stderr!
7327 if test `$JAVAINTERPRETER -version 2>&1 | $GREP -c "Kaffe"` -gt 0; then
7328 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
7329 elif test `$JAVAINTERPRETER --version 2>&1 | $GREP -c "GNU libgcj"` -gt 0; then
7330 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
7331 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "BEA"` -gt 0; then
7332 AC_MSG_ERROR([No valid check available. Please check the block for your desired java in configure.ac])
7333 elif test `$JAVAINTERPRETER -version 2>&1 | $AWK '{ print }' | $GREP -c "IBM"` -gt 0; then
7336 dnl IBM JDK specific tests
7337 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED s/[[-A-Za-z]]*//`
7338 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
7340 if test "$_jdk_ver" -lt 10800; then
7341 AC_MSG_ERROR([IBM JDK is too old, you need at least 8])
7344 AC_MSG_RESULT([found (IBM JDK $_jdk)])
7346 if test "$with_jdk_home" = ""; then
7347 AC_MSG_ERROR([In order to successfully build LibreOffice using the IBM JDK,
7348 you must use the "--with-jdk-home" configure option explicitly])
7351 JAVA_HOME=$with_jdk_home
7355 dnl Sun JDK specific tests
7356 _jdk=`$JAVAINTERPRETER -version 2>&1 | $AWK -F'"' '{ print \$2 }' | $SED '/^$/d' | $SED s/[[-A-Za-z]]*//`
7357 _jdk_ver=`echo "$_jdk" | $AWK -F. '{ print (($1 * 100) + $2) * 100 + $3;}'`
7359 if test "$_jdk_ver" -lt 10800; then
7360 AC_MSG_ERROR([JDK is too old, you need at least 8])
7362 if test "$_jdk_ver" -gt 10800; then
7363 JAVA_CLASSPATH_NOT_SET=TRUE
7366 AC_MSG_RESULT([found (JDK $_jdk)])
7367 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*java,,p"`
7368 if test "$_os" = "WINNT"; then
7369 JAVA_HOME=`echo $JAVA_HOME | $SED "s,\.[[eE]][[xX]][[eE]]$,,"`
7372 # set to limit VM usage for JunitTests
7374 # set to limit VM usage for javac
7375 JAVAFLAGS=-J-Xmx128M
7378 AC_MSG_ERROR([Java not found. You need at least JDK 8])
7386 dnl ===================================================================
7387 dnl Checks for javac
7388 dnl ===================================================================
7389 if test "$ENABLE_JAVA" != ""; then
7390 javacompiler="javac"
7391 : ${JAVA_SOURCE_VER=8}
7392 : ${JAVA_TARGET_VER=8}
7393 if test -z "$with_jdk_home"; then
7394 AC_PATH_PROG(JAVACOMPILER, $javacompiler)
7396 _javac_path="$with_jdk_home/bin/$javacompiler"
7397 dnl Check if there is a Java compiler at all.
7398 if test -x "$_javac_path"; then
7399 JAVACOMPILER=$_javac_path
7402 if test -z "$JAVACOMPILER"; then
7403 AC_MSG_ERROR([$javacompiler not found set with_jdk_home])
7405 if test "$build_os" = "cygwin"; then
7406 if test x`echo "$JAVACOMPILER" | $GREP -i '\.exe$'` = x; then
7407 JAVACOMPILER="${JAVACOMPILER}.exe"
7409 JAVACOMPILER=`win_short_path_for_make "$JAVACOMPILER"`
7413 dnl ===================================================================
7414 dnl Checks for javadoc
7415 dnl ===================================================================
7416 if test "$ENABLE_JAVA" != ""; then
7417 if test -z "$with_jdk_home"; then
7418 AC_PATH_PROG(JAVADOC, javadoc)
7420 _javadoc_path="$with_jdk_home/bin/javadoc"
7421 dnl Check if there is a javadoc at all.
7422 if test -x "$_javadoc_path"; then
7423 JAVADOC=$_javadoc_path
7425 AC_PATH_PROG(JAVADOC, javadoc)
7428 if test -z "$JAVADOC"; then
7429 AC_MSG_ERROR([$_javadoc_path not found set with_jdk_home])
7431 if test "$build_os" = "cygwin"; then
7432 if test x`echo "$JAVADOC" | $GREP -i '\.exe$'` = x; then
7433 JAVADOC="${JAVADOC}.exe"
7435 JAVADOC=`win_short_path_for_make "$JAVADOC"`
7438 if test `$JAVADOC --version 2>&1 | $GREP -c "gjdoc"` -gt 0; then
7439 JAVADOCISGJDOC="yes"
7442 AC_SUBST(JAVADOCISGJDOC)
7444 if test "$ENABLE_JAVA" != ""; then
7445 # check if JAVA_HOME was (maybe incorrectly?) set automatically to /usr
7446 if test "$JAVA_HOME" = "/usr" -a "x$with_jdk_home" = "x"; then
7447 if basename $(readlink $(readlink $JAVACOMPILER)) >/dev/null 2>/dev/null; then
7448 # try to recover first by looking whether we have an alternative
7449 # system as in Debian or newer SuSEs where following /usr/bin/javac
7450 # over /etc/alternatives/javac leads to the right bindir where we
7451 # just need to strip a bit away to get a valid JAVA_HOME
7452 JAVA_HOME=$(readlink $(readlink $JAVACOMPILER))
7453 elif readlink $JAVACOMPILER >/dev/null 2>/dev/null; then
7454 # maybe only one level of symlink (e.g. on Mac)
7455 JAVA_HOME=$(readlink $JAVACOMPILER)
7456 if test "$(dirname $JAVA_HOME)" = "."; then
7457 # we've got no path to trim back
7462 AC_MSG_WARN([JAVA_HOME is set to /usr - this is very likely to be incorrect])
7463 AC_MSG_WARN([if this is the case, please inform the correct JAVA_HOME with --with-jdk-home])
7464 add_warning "JAVA_HOME is set to /usr - this is very likely to be incorrect"
7465 add_warning "if this is the case, please inform the correct JAVA_HOME with --with-jdk-home"
7467 dnl now that we probably have the path to the real javac, make a JAVA_HOME out of it...
7468 if test "$JAVA_HOME" != "/usr"; then
7469 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
7470 dnl Leopard returns a non-suitable path with readlink - points to "Current" only
7471 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/Current/Commands/javac$,/CurrentJDK/Home,)
7472 dnl Tiger already returns a JDK path...
7473 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/CurrentJDK/Commands/javac$,/CurrentJDK/Home,)
7475 JAVA_HOME=$(echo $JAVA_HOME | $SED -e s,/bin/javac$,,)
7476 dnl check that we have a directory as certain distros eg gentoo substitute javac for a script
7477 dnl that checks which version to run
7478 if test -f "$JAVA_HOME"; then
7479 JAVA_HOME=""; # set JAVA_HOME to null if it's a file
7484 # as we drop out of this, JAVA_HOME may have been set to the empty string by readlink
7486 dnl now if JAVA_HOME has been set to empty, then call findhome to find it
7487 if test -z "$JAVA_HOME"; then
7488 if test "x$with_jdk_home" = "x"; then
7489 cat > findhome.java <<_ACEOF
7490 [import java.io.File;
7494 public static void main(String args[])
7496 String jrelocation = System.getProperty("java.home");
7497 File jre = new File(jrelocation);
7498 System.out.println(jre.getParent());
7502 AC_MSG_CHECKING([if javac works])
7503 javac_cmd="$JAVACOMPILER findhome.java 1>&2"
7504 AC_TRY_EVAL(javac_cmd)
7505 if test $? = 0 -a -f ./findhome.class; then
7506 AC_MSG_RESULT([javac works])
7508 echo "configure: javac test failed" >&5
7509 cat findhome.java >&5
7510 AC_MSG_ERROR([javac does not work - java projects will not build!])
7512 AC_MSG_CHECKING([if gij knows its java.home])
7513 JAVA_HOME=`$JAVAINTERPRETER findhome`
7514 if test $? = 0 -a "$JAVA_HOME" != ""; then
7515 AC_MSG_RESULT([$JAVA_HOME])
7517 echo "configure: java test failed" >&5
7518 cat findhome.java >&5
7519 AC_MSG_ERROR([gij does not know its java.home - use --with-jdk-home])
7521 # clean-up after ourselves
7522 rm -f ./findhome.java ./findhome.class
7524 JAVA_HOME=`echo $JAVAINTERPRETER | $SED -n "s,//*bin//*$with_java,,p"`
7528 # now check if $JAVA_HOME is really valid
7529 if test "$_os" = "Darwin" -o "$OS_FOR_BUILD" = MACOSX; then
7530 case "${JAVA_HOME}" in
7531 /Library/Java/JavaVirtualMachines/*)
7534 AC_MSG_ERROR([JDK in $JAVA_HOME cannot be used in CppUnit tests - install Oracle JDK])
7537 if test ! -f "$JAVA_HOME/lib/jvm.cfg" -a "x$with_jdk_home" = "x"; then
7540 elif test ! -d "$JAVA_HOME/jre" -a "x$with_jdk_home" = "x"; then
7543 if test "$JAVA_HOME_OK" = "NO"; then
7544 AC_MSG_WARN([JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script])
7545 AC_MSG_WARN([attempted to find JAVA_HOME automatically, but apparently it failed])
7546 AC_MSG_WARN([in case JAVA_HOME is incorrectly set, some projects will not be built correctly])
7547 add_warning "JAVA_HOME was not explicitly informed with --with-jdk-home. the configure script"
7548 add_warning "attempted to find JAVA_HOME automatically, but apparently it failed"
7549 add_warning "in case JAVA_HOME is incorrectly set, some projects will not be built correctly"
7551 PathFormat "$JAVA_HOME"
7552 JAVA_HOME="$formatted_path"
7555 if test -z "$JAWTLIB" -a -n "$ENABLE_JAVA" -a "$_os" != Android -a \
7558 AC_MSG_CHECKING([for JAWT lib])
7559 if test "$_os" = WINNT; then
7560 # The path to $JAVA_HOME/lib/$JAWTLIB is part of $ILIB:
7565 AS_IF([test -e "$JAVA_HOME/jre/lib/aarch32/libjawt.so"], [my_java_arch=aarch32], [my_java_arch=arm])
7566 JAVA_ARCH=$my_java_arch
7581 AS_IF([test -e "$JAVA_HOME/jre/lib/ppc64le/libjawt.so"], [my_java_arch=ppc64le], [my_java_arch=ppc64])
7582 JAVA_ARCH=$my_java_arch
7585 my_java_arch=sparcv9
7591 my_java_arch=$host_cpu
7594 # This is where JDK9 puts the library
7595 if test -e "$JAVA_HOME/lib/libjawt.so"; then
7596 JAWTLIB="-L$JAVA_HOME/lib/ -ljawt"
7598 JAWTLIB="-L$JAVA_HOME/jre/lib/$my_java_arch -ljawt"
7600 AS_IF([test "$JAVA_ARCH" != ""], [AC_DEFINE_UNQUOTED([JAVA_ARCH], ["$JAVA_ARCH"])])
7602 AC_MSG_RESULT([$JAWTLIB])
7606 if test -n "$ENABLE_JAVA" -a -z "$JAVAINC"; then
7610 JAVAINC="-I$JAVA_HOME/include"
7611 JAVAINC="$JAVAINC -I$JAVA_HOME/include/aix"
7612 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
7616 JAVAINC="-I$JAVA_HOME/include/win32"
7617 JAVAINC="$JAVAINC -I$JAVA_HOME/include"
7621 if test -d "$JAVA_HOME/include/darwin"; then
7622 JAVAINC="-I$JAVA_HOME/include -I$JAVA_HOME/include/darwin"
7624 JAVAINC=${ISYSTEM}$FRAMEWORKSHOME/JavaVM.framework/Versions/Current/Headers
7629 JAVAINC="-I$JAVA_HOME/include"
7630 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
7634 JAVAINC="-I$JAVA_HOME/include"
7635 JAVAINC="$JAVAINC -I$JAVA_HOME/include/freebsd"
7636 JAVAINC="$JAVAINC -I$JAVA_HOME/include/bsd"
7637 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
7638 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
7642 JAVAINC="-I$JAVA_HOME/include"
7643 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
7644 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
7648 JAVAINC="-I$JAVA_HOME/include"
7649 JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
7650 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
7654 JAVAINC="-I$JAVA_HOME/include"
7655 JAVAINC="$JAVAINC -I$JAVA_HOME/include/netbsd"
7656 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
7660 JAVAINC="-I$JAVA_HOME/include"
7661 JAVAINC="$JAVAINC -I$JAVA_HOME/include/openbsd"
7662 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
7666 JAVAINC="-I$JAVA_HOME/include"
7667 JAVAINC="$JAVAINC -I$JAVA_HOME/include/solaris"
7668 test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
7672 SOLARINC="$SOLARINC $JAVAINC"
7674 AC_SUBST(JAVACOMPILER)
7676 AC_SUBST(JAVAINTERPRETER)
7677 AC_SUBST(JAVAIFLAGS)
7679 AC_SUBST(JAVA_CLASSPATH_NOT_SET)
7681 AC_SUBST(JAVA_SOURCE_VER)
7682 AC_SUBST(JAVA_TARGET_VER)
7686 dnl ===================================================================
7687 dnl Export file validation
7688 dnl ===================================================================
7689 AC_MSG_CHECKING([whether to enable export file validation])
7690 if test "$with_export_validation" != "no"; then
7691 if test -z "$ENABLE_JAVA"; then
7692 if test "$with_export_validation" = "yes"; then
7693 AC_MSG_ERROR([requested, but Java is disabled])
7695 AC_MSG_RESULT([no, as Java is disabled])
7697 elif ! test -d "${SRC_ROOT}/schema"; then
7698 if test "$with_export_validation" = "yes"; then
7699 AC_MSG_ERROR([requested, but schema directory is missing (it is excluded from tarballs)])
7701 AC_MSG_RESULT([no, schema directory is missing (it is excluded from tarballs)])
7704 AC_MSG_RESULT([yes])
7705 AC_DEFINE(HAVE_EXPORT_VALIDATION)
7707 AC_PATH_PROGS(ODFVALIDATOR, odfvalidator)
7708 if test -z "$ODFVALIDATOR"; then
7709 # remember to download the ODF toolkit with validator later
7710 AC_MSG_NOTICE([no odfvalidator found, will download it])
7711 BUILD_TYPE="$BUILD_TYPE ODFVALIDATOR"
7712 ODFVALIDATOR="$BUILDDIR/bin/odfvalidator.sh"
7714 # and fetch name of odfvalidator jar name from download.lst
7715 ODFVALIDATOR_JAR=`$SED -n -e "s/export *ODFVALIDATOR_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
7716 AC_SUBST(ODFVALIDATOR_JAR)
7718 if test -z "$ODFVALIDATOR_JAR"; then
7719 AC_MSG_ERROR([cannot determine odfvalidator jar location (--with-export-validation)])
7722 if test "$build_os" = "cygwin"; then
7723 # In case of Cygwin it will be executed from Windows,
7724 # so we need to run bash and absolute path to validator
7725 # so instead of "odfvalidator" it will be
7726 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
7727 ODFVALIDATOR="bash.exe `cygpath -m "$ODFVALIDATOR"`"
7729 ODFVALIDATOR="sh $ODFVALIDATOR"
7731 AC_SUBST(ODFVALIDATOR)
7734 AC_PATH_PROGS(OFFICEOTRON, officeotron)
7735 if test -z "$OFFICEOTRON"; then
7736 # remember to download the officeotron with validator later
7737 AC_MSG_NOTICE([no officeotron found, will download it])
7738 BUILD_TYPE="$BUILD_TYPE OFFICEOTRON"
7739 OFFICEOTRON="$BUILDDIR/bin/officeotron.sh"
7741 # and fetch name of officeotron jar name from download.lst
7742 OFFICEOTRON_JAR=`$SED -n -e "s/export *OFFICEOTRON_JAR *:= *\(.*\) */\1/p" $SRC_ROOT/download.lst`
7743 AC_SUBST(OFFICEOTRON_JAR)
7745 if test -z "$OFFICEOTRON_JAR"; then
7746 AC_MSG_ERROR([cannot determine officeotron jar location (--with-export-validation)])
7749 # check version of existing officeotron
7750 OFFICEOTRON_VER=`$OFFICEOTRON --version | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
7751 if test 0"$OFFICEOTRON_VER" -lt 704; then
7752 AC_MSG_ERROR([officeotron too old])
7755 if test "$build_os" = "cygwin"; then
7756 # In case of Cygwin it will be executed from Windows,
7757 # so we need to run bash and absolute path to validator
7758 # so instead of "odfvalidator" it will be
7759 # something like "bash.exe C:\cygwin\opt\lo\bin\odfvalidator"
7760 OFFICEOTRON="bash.exe `cygpath -m "$OFFICEOTRON"`"
7762 OFFICEOTRON="sh $OFFICEOTRON"
7765 AC_SUBST(OFFICEOTRON)
7770 AC_MSG_CHECKING([for Microsoft Binary File Format Validator])
7771 if test "$with_bffvalidator" != "no"; then
7772 AC_DEFINE(HAVE_BFFVALIDATOR)
7774 if test "$with_export_validation" = "no"; then
7775 AC_MSG_ERROR([Please enable export validation (-with-export-validation)!])
7778 if test "$with_bffvalidator" = "yes"; then
7779 BFFVALIDATOR=`win_short_path_for_make "$PROGRAMFILES/Microsoft Office/BFFValidator/BFFValidator.exe"`
7781 BFFVALIDATOR="$with_bffvalidator"
7784 if test "$build_os" = "cygwin"; then
7785 if test -n "$BFFVALIDATOR" -a -e "`cygpath $BFFVALIDATOR`"; then
7786 AC_MSG_RESULT($BFFVALIDATOR)
7788 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
7790 elif test -n "$BFFVALIDATOR"; then
7791 # We are not in Cygwin but need to run Windows binary with wine
7792 AC_PATH_PROGS(WINE, wine)
7794 # so swap in a shell wrapper that converts paths transparently
7795 BFFVALIDATOR_EXE="$BFFVALIDATOR"
7796 BFFVALIDATOR="sh $BUILDDIR/bin/bffvalidator.sh"
7797 AC_SUBST(BFFVALIDATOR_EXE)
7798 AC_MSG_RESULT($BFFVALIDATOR)
7800 AC_MSG_ERROR([bffvalidator not found, but required by --with-bffvalidator])
7802 AC_SUBST(BFFVALIDATOR)
7807 dnl ===================================================================
7808 dnl Check for C preprocessor to use
7809 dnl ===================================================================
7810 AC_MSG_CHECKING([which C preprocessor to use in idlc])
7811 if test -n "$with_idlc_cpp"; then
7812 AC_MSG_RESULT([$with_idlc_cpp])
7813 AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
7815 AC_MSG_RESULT([ucpp])
7816 AC_MSG_CHECKING([which ucpp tp use])
7817 if test -n "$with_system_ucpp" -a "$with_system_ucpp" != "no"; then
7818 AC_MSG_RESULT([external])
7819 AC_PATH_PROG(SYSTEM_UCPP, ucpp)
7821 AC_MSG_RESULT([internal])
7822 BUILD_TYPE="$BUILD_TYPE UCPP"
7825 AC_SUBST(SYSTEM_UCPP)
7827 dnl ===================================================================
7828 dnl Check for epm (not needed for Windows)
7829 dnl ===================================================================
7830 AC_MSG_CHECKING([whether to enable EPM for packing])
7831 if test "$enable_epm" = "yes"; then
7832 AC_MSG_RESULT([yes])
7833 if test "$_os" != "WINNT"; then
7834 if test $_os = Darwin; then
7836 elif test -n "$with_epm"; then
7839 AC_PATH_PROG(EPM, epm, no)
7841 if test "$EPM" = "no" -o "$EPM" = "internal"; then
7842 AC_MSG_NOTICE([EPM will be built.])
7843 BUILD_TYPE="$BUILD_TYPE EPM"
7844 EPM=${WORKDIR}/UnpackedTarball/epm/epm
7846 # Gentoo has some epm which is something different...
7847 AC_MSG_CHECKING([whether the found epm is the right epm])
7848 if $EPM | grep "ESP Package Manager" >/dev/null 2>/dev/null; then
7849 AC_MSG_RESULT([yes])
7851 AC_MSG_ERROR([no. Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
7853 AC_MSG_CHECKING([epm version])
7854 EPM_VERSION=`$EPM | grep 'ESP Package Manager' | cut -d' ' -f4 | $SED -e s/v//`
7855 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -gt "3" || \
7856 test "`echo $EPM_VERSION | cut -d'.' -f1`" -eq "3" -a "`echo $EPM_VERSION | cut -d'.' -f2`" -ge "7"; then
7857 AC_MSG_RESULT([OK, >= 3.7])
7859 AC_MSG_RESULT([too old. epm >= 3.7 is required.])
7860 AC_MSG_ERROR([Install ESP Package Manager (http://www.msweet.org/projects.php?Z2) and/or specify the path to the right epm])
7865 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null; then
7866 AC_MSG_CHECKING([for rpm])
7867 for a in "$RPM" rpmbuild rpm; do
7868 $a --usage >/dev/null 2> /dev/null
7869 if test $? -eq 0; then
7873 $a --version >/dev/null 2> /dev/null
7874 if test $? -eq 0; then
7880 if test -z "$RPM"; then
7881 AC_MSG_ERROR([not found])
7882 elif "$RPM" --help 2>&1 | $EGREP buildroot >/dev/null; then
7883 RPM_PATH=`which $RPM`
7884 AC_MSG_RESULT([$RPM_PATH])
7885 SCPDEFS="$SCPDEFS -DWITH_RPM"
7887 AC_MSG_ERROR([cannot build packages. Try installing rpmbuild.])
7890 if echo "$PKGFORMAT" | $EGREP deb 2>&1 >/dev/null; then
7891 AC_PATH_PROG(DPKG, dpkg, no)
7892 if test "$DPKG" = "no"; then
7893 AC_MSG_ERROR([dpkg needed for deb creation. Install dpkg.])
7896 if echo "$PKGFORMAT" | $EGREP rpm 2>&1 >/dev/null || \
7897 echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
7898 if test "$with_epm" = "no" -a "$_os" != "Darwin"; then
7899 if test "`echo $EPM_VERSION | cut -d'.' -f1`" -lt "4"; then
7900 AC_MSG_CHECKING([whether epm is patched for LibreOffice's needs])
7901 if grep "Patched for .*Office" $EPM >/dev/null 2>/dev/null; then
7902 AC_MSG_RESULT([yes])
7905 if echo "$PKGFORMAT" | $GREP -q rpm; then
7907 AC_MSG_WARN([the rpms will need to be installed with --nodeps])
7908 add_warning "the rpms will need to be installed with --nodeps"
7912 AC_MSG_WARN([the ${_pt}s will not be relocatable])
7913 add_warning "the ${_pt}s will not be relocatable"
7914 AC_MSG_WARN([if you want to make sure installation without --nodeps and
7915 relocation will work, you need to patch your epm with the
7916 patch in epm/epm-3.7.patch or build with
7917 --with-epm=internal which will build a suitable epm])
7922 if echo "$PKGFORMAT" | $EGREP pkg 2>&1 >/dev/null; then
7923 AC_PATH_PROG(PKGMK, pkgmk, no)
7924 if test "$PKGMK" = "no"; then
7925 AC_MSG_ERROR([pkgmk needed for Solaris pkg creation. Install it.])
7932 for i in $PKGFORMAT; do
7934 aix | bsd | deb | pkg | rpm | native | portable)
7936 [--with-package-format='$PKGFORMAT' requires --enable-epm])
7946 if test "$enable_lotuswordpro" = "yes"; then
7949 AC_SUBST(ENABLE_LWP)
7951 dnl ===================================================================
7952 dnl Check for building ODK
7953 dnl ===================================================================
7954 if test "$enable_odk" = no; then
7957 if test "$with_doxygen" = no; then
7958 AC_MSG_CHECKING([for doxygen])
7962 if test "$with_doxygen" = yes; then
7963 AC_PATH_PROG([DOXYGEN], [doxygen])
7964 if test -z "$DOXYGEN"; then
7965 AC_MSG_ERROR([doxygen not found in \$PATH; specify its pathname via --with-doxygen=..., or disable its use via --without-doxygen])
7967 if $DOXYGEN -g - | grep -q "HAVE_DOT *= *YES"; then
7968 if ! dot -V 2>/dev/null; then
7969 AC_MSG_ERROR([dot not found in \$PATH but doxygen defaults to HAVE_DOT=YES; install graphviz or disable its use via --without-doxygen])
7973 AC_MSG_CHECKING([for doxygen])
7974 DOXYGEN=$with_doxygen
7975 AC_MSG_RESULT([$DOXYGEN])
7977 if test -n "$DOXYGEN"; then
7978 DOXYGEN_VERSION=`$DOXYGEN --version 2>/dev/null`
7979 DOXYGEN_NUMVERSION=`echo $DOXYGEN_VERSION | $AWK -F. '{ print \$1*10000 + \$2*100 + \$3 }'`
7980 if ! test "$DOXYGEN_NUMVERSION" -ge "10804" ; then
7981 AC_MSG_ERROR([found doxygen is too old; need at least version 1.8.4 or specify --without-doxygen])
7988 AC_MSG_CHECKING([whether to build the ODK])
7989 if test "$enable_odk" = "" -o "$enable_odk" != "no"; then
7990 AC_MSG_RESULT([yes])
7992 if test "$with_java" != "no"; then
7993 AC_MSG_CHECKING([whether to build unowinreg.dll])
7994 if test "$_os" = "WINNT" -a "$enable_build_unowinreg" = ""; then
7995 # build on Win by default
7996 enable_build_unowinreg=yes
7998 if test "$enable_build_unowinreg" = "" -o "$enable_build_unowinreg" = "no"; then
8002 AC_MSG_RESULT([yes])
8003 BUILD_UNOWINREG=TRUE
8005 if test "$_os" != "WINNT" -a "$BUILD_UNOWINREG" = "TRUE"; then
8006 if test -z "$with_mingw_cross_compiler"; then
8008 AC_CHECK_PROGS(MINGWCXX,i386-mingw32msvc-g++ i586-pc-mingw32-g++ i686-pc-mingw32-g++ i686-w64-mingw32-g++,false)
8009 elif test -x "$with_mingw_cross_compiler"; then
8010 MINGWCXX="$with_mingw_cross_compiler"
8012 AC_CHECK_TOOL(MINGWCXX, "$with_mingw_cross_compiler", false)
8015 if test "$MINGWCXX" = "false"; then
8016 AC_MSG_ERROR([MinGW32 C++ cross-compiler not found.])
8019 mingwstrip_test="`echo $MINGWCXX | $SED -e s/g++/strip/`"
8020 if test -x "$mingwstrip_test"; then
8021 MINGWSTRIP="$mingwstrip_test"
8023 AC_CHECK_TOOL(MINGWSTRIP, "$mingwstrip_test", false)
8026 if test "$MINGWSTRIP" = "false"; then
8027 AC_MSG_ERROR(MinGW32 binutils not found.)
8031 BUILD_TYPE="$BUILD_TYPE ODK"
8036 AC_SUBST(BUILD_UNOWINREG)
8038 AC_SUBST(MINGWSTRIP)
8040 dnl ===================================================================
8041 dnl Check for system zlib
8042 dnl ===================================================================
8043 if test "$with_system_zlib" = "auto"; then
8046 with_system_zlib="$with_system_libs"
8049 if test "$enable_fuzzers" != "yes"; then
8050 with_system_zlib=yes
8058 dnl we want to use libo_CHECK_SYSTEM_MODULE here too, but macOS is too stupid
8059 dnl and has no pkg-config for it at least on some tinderboxes,
8060 dnl so leaving that out for now
8061 dnl libo_CHECK_SYSTEM_MODULE([zlib],[ZLIB],[zlib])
8062 AC_MSG_CHECKING([which zlib to use])
8063 if test "$with_system_zlib" = "yes"; then
8064 AC_MSG_RESULT([external])
8066 AC_CHECK_HEADER(zlib.h, [],
8067 [AC_MSG_ERROR(zlib.h not found. install zlib)], [])
8068 AC_CHECK_LIB(z, deflate, [ ZLIB_LIBS=-lz ],
8069 [AC_MSG_ERROR(zlib not found or functional)], [])
8071 AC_MSG_RESULT([internal])
8073 BUILD_TYPE="$BUILD_TYPE ZLIB"
8074 ZLIB_CFLAGS="-I${WORKDIR}/UnpackedTarball/zlib"
8075 ZLIB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lzlib"
8077 AC_SUBST(ZLIB_CFLAGS)
8079 AC_SUBST(SYSTEM_ZLIB)
8081 dnl ===================================================================
8082 dnl Check for system jpeg
8083 dnl ===================================================================
8084 AC_MSG_CHECKING([which libjpeg to use])
8085 if test "$with_system_jpeg" = "yes"; then
8086 AC_MSG_RESULT([external])
8088 AC_CHECK_HEADER(jpeglib.h, [ LIBJPEG_CFLAGS= ],
8089 [AC_MSG_ERROR(jpeg.h not found. install libjpeg)], [])
8090 AC_CHECK_LIB(jpeg, jpeg_resync_to_restart, [ LIBJPEG_LIBS="-ljpeg" ],
8091 [AC_MSG_ERROR(jpeg library not found or functional)], [])
8094 AC_MSG_RESULT([internal, libjpeg-turbo])
8095 BUILD_TYPE="$BUILD_TYPE LIBJPEG_TURBO"
8096 LIBJPEG_CFLAGS="-I${WORKDIR}/UnpackedTarball/libjpeg-turbo"
8097 if test "$COM" = "MSC"; then
8098 LIBJPEG_LIBS="${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs/libjpeg.lib"
8100 LIBJPEG_LIBS="-L${WORKDIR}/UnpackedTarball/libjpeg-turbo/.libs -ljpeg"
8104 x86_64 | amd64 | i*86 | x86 | ia32)
8105 AC_CHECK_PROGS(NASM, [nasm nasmw yasm])
8106 if test -z "$NASM" -a "$build_os" = "cygwin"; then
8107 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/nasm"; then
8108 NASM="$LODE_HOME/opt/bin/nasm"
8109 elif test -x "/opt/lo/bin/nasm"; then
8110 NASM="/opt/lo/bin/nasm"
8114 if test -n "$NASM"; then
8115 AC_MSG_CHECKING([for object file format of host system])
8117 cygwin* | mingw* | pw32* | interix*)
8127 msdosdjgpp* | go32*)
8130 os2-emx*) # not tested
8131 objfmt='MSOMF' # obj
8133 linux*coff* | linux*oldld*)
8149 kfreebsd* | freebsd* | netbsd* | openbsd*)
8150 if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
8163 solaris* | sunos* | sysv* | sco*)
8173 darwin* | rhapsody* | nextstep* | openstep* | macos*)
8188 AC_MSG_RESULT([$objfmt])
8189 if test "$objfmt" = 'ELF ?'; then
8191 AC_MSG_WARN([unexpected host system. assumed that the format is $objfmt.])
8194 AC_MSG_CHECKING([for object file format specifier (NAFLAGS) ])
8196 MSOMF) NAFLAGS='-fobj -DOBJ32';;
8197 Win32-COFF) NAFLAGS='-fwin32 -DWIN32';;
8198 Win64-COFF) NAFLAGS='-fwin64 -DWIN64 -D__x86_64__';;
8199 COFF) NAFLAGS='-fcoff -DCOFF';;
8200 a.out) NAFLAGS='-faout -DAOUT';;
8201 BSD-a.out) NAFLAGS='-faoutb -DAOUT';;
8202 ELF) NAFLAGS='-felf -DELF';;
8203 ELF64) NAFLAGS='-felf64 -DELF -D__x86_64__';;
8204 RDF) NAFLAGS='-frdf -DRDF';;
8205 Mach-O) NAFLAGS='-fmacho -DMACHO';;
8206 Mach-O64) NAFLAGS='-fmacho64 -DMACHO -D__x86_64__';;
8208 AC_MSG_RESULT([$NAFLAGS])
8210 AC_MSG_CHECKING([whether the assembler ($NASM $NAFLAGS) works])
8211 cat > conftest.asm << EOF
8212 [%line __oline__ "configure"
8220 try_nasm='$NASM $NAFLAGS -o conftest.o conftest.asm'
8221 if AC_TRY_EVAL(try_nasm) && test -s conftest.o; then
8224 echo "configure: failed program was:" >&AC_FD_CC
8225 cat conftest.asm >&AC_FD_CC
8228 AC_MSG_WARN([installation or configuration problem: assembler cannot create object files.])
8234 if test -z "$NASM"; then
8236 ****************************************************************************
8237 You need yasm or nasm (Netwide Assembler) to build the internal jpeg library optimally.
8241 if test "$build_os" = "cygwin"; then
8243 install a pre-compiled binary for Win32
8245 mkdir -p /opt/lo/bin
8247 wget https://dev-www.libreoffice.org/bin/cygwin/nasm.exe
8250 or get and install one from http://www.nasm.us/
8252 Then re-run autogen.sh
8254 Note: autogen.sh will try to use /opt/lo/bin/nasm if the environment variable NASM is not already defined.
8255 Alternatively, you can install the 'new' nasm where ever you want and make sure that \`which nasm\` finds it.
8260 consult https://github.com/libjpeg-turbo/libjpeg-turbo/blob/master/BUILDING.md
8264 AC_MSG_WARN([no suitable nasm (Netwide Assembler) found])
8265 add_warning "no suitable nasm (Netwide Assembler) found for internal libjpeg-turbo"
8272 AC_SUBST(LIBJPEG_CFLAGS)
8273 AC_SUBST(LIBJPEG_LIBS)
8274 AC_SUBST(SYSTEM_LIBJPEG)
8276 dnl ===================================================================
8277 dnl Check for system clucene
8278 dnl ===================================================================
8279 dnl we should rather be using
8280 dnl libo_CHECK_SYSTEM_MODULE([clucence],[CLUCENE],[liblucence-core]) here
8281 dnl but the contribs-lib check seems tricky
8282 AC_MSG_CHECKING([which clucene to use])
8283 if test "$with_system_clucene" = "yes"; then
8284 AC_MSG_RESULT([external])
8286 PKG_CHECK_MODULES(CLUCENE, libclucene-core)
8287 CLUCENE_CFLAGS=[$(printf '%s' "$CLUCENE_CFLAGS" | sed -e 's@-I[^ ]*/CLucene/ext@@' -e "s/-I/${ISYSTEM?}/g")]
8288 FilterLibs "${CLUCENE_LIBS}"
8289 CLUCENE_LIBS="${filteredlibs}"
8291 save_CXXFLAGS=$CXXFLAGS
8292 save_CPPFLAGS=$CPPFLAGS
8293 CXXFLAGS="$CXXFLAGS $CLUCENE_CFLAGS"
8294 CPPFLAGS="$CPPFLAGS $CLUCENE_CFLAGS"
8295 dnl http://sourceforge.net/tracker/index.php?func=detail&aid=3392466&group_id=80013&atid=558446
8296 dnl https://bugzilla.redhat.com/show_bug.cgi?id=794795
8297 AC_CHECK_HEADER([CLucene/analysis/cjk/CJKAnalyzer.h], [],
8298 [AC_MSG_ERROR([Your version of libclucene has contribs-lib missing.])], [#include <CLucene.h>])
8299 CXXFLAGS=$save_CXXFLAGS
8300 CPPFLAGS=$save_CPPFLAGS
8303 CLUCENE_LIBS="$CLUCENE_LIBS -lclucene-contribs-lib"
8305 AC_MSG_RESULT([internal])
8307 BUILD_TYPE="$BUILD_TYPE CLUCENE"
8309 AC_SUBST(SYSTEM_CLUCENE)
8310 AC_SUBST(CLUCENE_CFLAGS)
8311 AC_SUBST(CLUCENE_LIBS)
8313 dnl ===================================================================
8314 dnl Check for system expat
8315 dnl ===================================================================
8316 libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
8318 dnl ===================================================================
8319 dnl Check for system xmlsec
8320 dnl ===================================================================
8321 libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
8323 AC_MSG_CHECKING([whether to enable Embedded OpenType support])
8324 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
8326 AC_DEFINE([ENABLE_EOT])
8327 AC_MSG_RESULT([yes])
8329 libo_CHECK_SYSTEM_MODULE([libeot],[LIBEOT],[libeot >= 0.01])
8334 AC_SUBST([ENABLE_EOT])
8336 dnl ===================================================================
8337 dnl Check for DLP libs
8338 dnl ===================================================================
8339 AS_IF([test "$COM" = "MSC"],
8340 [librevenge_libdir="${WORKDIR}/LinkTarget/Library"],
8341 [librevenge_libdir="${WORKDIR}/UnpackedTarball/librevenge/src/lib/.libs"]
8343 libo_CHECK_SYSTEM_MODULE([librevenge],[REVENGE],[librevenge-0.0 >= 0.0.1],["-I${WORKDIR}/UnpackedTarball/librevenge/inc"],["-L${librevenge_libdir} -lrevenge-0.0"])
8345 libo_CHECK_SYSTEM_MODULE([libodfgen],[ODFGEN],[libodfgen-0.1])
8347 libo_CHECK_SYSTEM_MODULE([libepubgen],[EPUBGEN],[libepubgen-0.1])
8349 AS_IF([test "$COM" = "MSC"],
8350 [libwpd_libdir="${WORKDIR}/LinkTarget/Library"],
8351 [libwpd_libdir="${WORKDIR}/UnpackedTarball/libwpd/src/lib/.libs"]
8353 libo_CHECK_SYSTEM_MODULE([libwpd],[WPD],[libwpd-0.10],["-I${WORKDIR}/UnpackedTarball/libwpd/inc"],["-L${libwpd_libdir} -lwpd-0.10"])
8355 libo_CHECK_SYSTEM_MODULE([libwpg],[WPG],[libwpg-0.3])
8357 libo_CHECK_SYSTEM_MODULE([libwps],[WPS],[libwps-0.4])
8358 libo_PKG_VERSION([WPS], [libwps-0.4], [0.4.10])
8360 libo_CHECK_SYSTEM_MODULE([libvisio],[VISIO],[libvisio-0.1])
8362 libo_CHECK_SYSTEM_MODULE([libcdr],[CDR],[libcdr-0.1])
8364 libo_CHECK_SYSTEM_MODULE([libmspub],[MSPUB],[libmspub-0.1])
8366 libo_CHECK_SYSTEM_MODULE([libmwaw],[MWAW],[libmwaw-0.3 >= 0.3.1])
8367 libo_PKG_VERSION([MWAW], [libmwaw-0.3], [0.3.15])
8369 libo_CHECK_SYSTEM_MODULE([libetonyek],[ETONYEK],[libetonyek-0.1])
8370 libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
8372 libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
8374 libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
8375 libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
8377 libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
8379 libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
8381 libo_CHECK_SYSTEM_MODULE([libqxp],[QXP],[libqxp-0.0])
8383 libo_CHECK_SYSTEM_MODULE([libzmf],[ZMF],[libzmf-0.0])
8385 libo_CHECK_SYSTEM_MODULE([libstaroffice],[STAROFFICE],[libstaroffice-0.0])
8386 libo_PKG_VERSION([STAROFFICE], [libstaroffice-0.0], [0.0.6])
8388 dnl ===================================================================
8389 dnl Check for system lcms2
8390 dnl ===================================================================
8391 if test "$with_system_lcms2" != "yes"; then
8394 libo_CHECK_SYSTEM_MODULE([lcms2],[LCMS2],[lcms2],["-I${WORKDIR}/UnpackedTarball/lcms2/include"],["-L${WORKDIR}/UnpackedTarball/lcms2/src/.libs -llcms2"])
8395 if test "$GCC" = "yes"; then
8396 LCMS2_CFLAGS="${LCMS2_CFLAGS} -Wno-long-long"
8398 if test "$COM" = "MSC"; then # override the above
8399 LCMS2_LIBS=${WORKDIR}/UnpackedTarball/lcms2/bin/lcms2.lib
8402 dnl ===================================================================
8403 dnl Check for system cppunit
8404 dnl ===================================================================
8405 if test "$_os" != "Android" ; then
8406 libo_CHECK_SYSTEM_MODULE([cppunit],[CPPUNIT],[cppunit >= 1.14.0])
8409 dnl ===================================================================
8410 dnl Check whether freetype is available
8411 dnl ===================================================================
8412 if test "$test_freetype" = "yes"; then
8413 AC_MSG_CHECKING([whether freetype is available])
8414 # FreeType has 3 different kinds of versions
8415 # * release, like 2.4.10
8416 # * libtool, like 13.0.7 (this what pkg-config returns)
8418 # FreeType's docs/VERSION.DLL provides a table mapping between the three
8421 PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.9.3)
8422 FREETYPE_CFLAGS=$(printf '%s' "$FREETYPE_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
8423 FilterLibs "${FREETYPE_LIBS}"
8424 FREETYPE_LIBS="${filteredlibs}"
8425 SYSTEM_FREETYPE=TRUE
8427 FREETYPE_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/freetype/include"
8428 FREETYPE_LIBS="-L${WORKDIR}/UnpackedTarball/freetype/instdir/lib -lfreetype"
8430 AC_SUBST(FREETYPE_CFLAGS)
8431 AC_SUBST(FREETYPE_LIBS)
8432 AC_SUBST([SYSTEM_FREETYPE])
8434 # ===================================================================
8435 # Check for system libxslt
8436 # to prevent incompatibilities between internal libxml2 and external libxslt,
8437 # or vice versa, use with_system_libxml here
8438 # ===================================================================
8439 if test "$with_system_libxml" = "auto"; then
8442 with_system_libxml="$with_system_libs"
8445 if test "$enable_fuzzers" != "yes"; then
8446 with_system_libxml=yes
8448 with_system_libxml=no
8454 AC_MSG_CHECKING([which libxslt to use])
8455 if test "$with_system_libxml" = "yes"; then
8456 AC_MSG_RESULT([external])
8458 if test "$_os" = "Darwin"; then
8459 dnl make sure to use SDK path
8460 LIBXSLT_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
8461 LIBEXSLT_CFLAGS="$LIBXSLT_CFLAGS"
8463 LIBXSLT_LIBS="-lxslt -lxml2 -lz -lpthread -liconv -lm"
8464 LIBEXSLT_LIBS="-lexslt $LIBXSLT_LIBS"
8466 PKG_CHECK_MODULES(LIBXSLT, libxslt)
8467 LIBXSLT_CFLAGS=$(printf '%s' "$LIBXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
8468 FilterLibs "${LIBXSLT_LIBS}"
8469 LIBXSLT_LIBS="${filteredlibs}"
8470 PKG_CHECK_MODULES(LIBEXSLT, libexslt)
8471 LIBEXSLT_CFLAGS=$(printf '%s' "$LIBEXSLT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
8472 FilterLibs "${LIBEXSLT_LIBS}"
8473 LIBEXSLT_LIBS=$(printf '%s' "${filteredlibs}" | sed -e "s/-lgpg-error//" -e "s/-lgcrypt//")
8476 dnl Check for xsltproc
8477 AC_PATH_PROG(XSLTPROC, xsltproc, no)
8478 if test "$XSLTPROC" = "no"; then
8479 AC_MSG_ERROR([xsltproc is required])
8482 AC_MSG_RESULT([internal])
8484 BUILD_TYPE="$BUILD_TYPE LIBXSLT"
8486 if test "$cross_compiling" = "yes"; then
8487 AC_PATH_PROG(XSLTPROC, xsltproc, no)
8488 if test "$XSLTPROC" = "no"; then
8489 AC_MSG_ERROR([xsltproc is required])
8493 AC_SUBST(SYSTEM_LIBXSLT)
8494 if test -z "$SYSTEM_LIBXSLT_FOR_BUILD"; then
8495 SYSTEM_LIBXSLT_FOR_BUILD="$SYSTEM_LIBXSLT"
8497 AC_SUBST(SYSTEM_LIBXSLT_FOR_BUILD)
8499 AC_SUBST(LIBEXSLT_CFLAGS)
8500 AC_SUBST(LIBEXSLT_LIBS)
8501 AC_SUBST(LIBXSLT_CFLAGS)
8502 AC_SUBST(LIBXSLT_LIBS)
8505 # ===================================================================
8506 # Check for system libxml
8507 # ===================================================================
8508 AC_MSG_CHECKING([which libxml to use])
8509 if test "$with_system_libxml" = "yes"; then
8510 AC_MSG_RESULT([external])
8512 if test "$_os" = "Darwin"; then
8513 dnl make sure to use SDK path
8514 LIBXML_CFLAGS="-I$MACOSX_SDK_PATH/usr/include/libxml2"
8516 LIBXML_LIBS="-lxml2 -lz -lpthread -liconv -lm"
8517 elif test $_os = iOS; then
8518 dnl make sure to use SDK path
8519 usr=`echo '#include <stdlib.h>' | $CC -E -MD - | grep usr/include/stdlib.h | head -1 | sed -e 's,# 1 ",,' -e 's,/usr/include/.*,/usr,'`
8520 LIBXML_CFLAGS="-I$usr/include/libxml2"
8521 LIBXML_LIBS="-L$usr/lib -lxml2 -liconv"
8523 PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= 2.0)
8524 LIBXML_CFLAGS=$(printf '%s' "$LIBXML_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
8525 FilterLibs "${LIBXML_LIBS}"
8526 LIBXML_LIBS="${filteredlibs}"
8529 dnl Check for xmllint
8530 AC_PATH_PROG(XMLLINT, xmllint, no)
8531 if test "$XMLLINT" = "no"; then
8532 AC_MSG_ERROR([xmllint is required])
8535 AC_MSG_RESULT([internal])
8537 LIBXML_CFLAGS="-I${WORKDIR}/UnpackedTarball/libxml2/include"
8538 if test "$COM" = "MSC"; then
8539 LIBXML_CFLAGS="${LIBXML_CFLAGS} -I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
8541 if test "$COM" = "MSC"; then
8542 LIBXML_LIBS="${WORKDIR}/UnpackedTarball/libxml2/win32/bin.msvc/libxml2.lib"
8544 LIBXML_LIBS="-L${WORKDIR}/UnpackedTarball/libxml2/.libs -lxml2"
8546 BUILD_TYPE="$BUILD_TYPE LIBXML2"
8548 AC_SUBST(SYSTEM_LIBXML)
8549 if test -z "$SYSTEM_LIBXML_FOR_BUILD"; then
8550 SYSTEM_LIBXML_FOR_BUILD="$SYSTEM_LIBXML"
8552 AC_SUBST(SYSTEM_LIBXML_FOR_BUILD)
8553 AC_SUBST(LIBXML_CFLAGS)
8554 AC_SUBST(LIBXML_LIBS)
8557 # =====================================================================
8558 # Checking for a Python interpreter with version >= 2.7.
8559 # Build and runtime requires Python 3 compatible version (>= 2.7).
8560 # Optionally user can pass an option to configure, i. e.
8561 # ./configure PYTHON=/usr/bin/python
8562 # =====================================================================
8563 if test "$build_os" != "cygwin" -a "$enable_python" != fully-internal; then
8564 if test -n "$PYTHON"; then
8565 PYTHON_FOR_BUILD=$PYTHON
8567 # This allows a lack of system python with no error, we use internal one in that case.
8568 AM_PATH_PYTHON([2.7],, [:])
8569 # Clean PYTHON_VERSION checked below if cross-compiling
8571 if test "$PYTHON" != ":"; then
8572 PYTHON_FOR_BUILD=$PYTHON
8576 AC_SUBST(PYTHON_FOR_BUILD)
8578 # Checks for Python to use for Pyuno
8579 AC_MSG_CHECKING([which Python to use for Pyuno])
8580 case "$enable_python" in
8582 if test -z $PYTHON_FOR_BUILD; then
8583 # Python is required to build LibreOffice. In theory we could separate the build-time Python
8584 # requirement from the choice whether to include Python stuff in the installer, but why
8586 AC_MSG_ERROR([Python is required at build time.])
8589 AC_MSG_RESULT([none])
8592 if test "$DISABLE_SCRIPTING" = TRUE -a -n "$PYTHON_FOR_BUILD"; then
8593 AC_MSG_RESULT([no, overridden by --disable-scripting])
8595 elif test $build_os = cygwin; then
8596 dnl When building on Windows we don't attempt to use any installed
8597 dnl "system" Python.
8598 AC_MSG_RESULT([fully internal])
8599 enable_python=internal
8600 elif test "$cross_compiling" = yes; then
8601 AC_MSG_RESULT([system])
8602 enable_python=system
8604 # Unset variables set by the above AM_PATH_PYTHON so that
8605 # we actually do check anew.
8607 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
8608 AM_PATH_PYTHON([3.3],, [:])
8609 AC_MSG_CHECKING([which Python to use for Pyuno])
8610 if test "$PYTHON" = ":"; then
8611 if test -z "$PYTHON_FOR_BUILD"; then
8612 AC_MSG_RESULT([fully internal])
8614 AC_MSG_RESULT([internal])
8616 enable_python=internal
8618 AC_MSG_RESULT([system])
8619 enable_python=system
8624 AC_MSG_RESULT([internal])
8627 AC_MSG_RESULT([fully internal])
8628 enable_python=internal
8631 AC_MSG_RESULT([system])
8632 if test "$_os" = Darwin; then
8633 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])
8637 AC_MSG_ERROR([Incorrect --enable-python option])
8641 if test $enable_python != no; then
8642 BUILD_TYPE="$BUILD_TYPE PYUNO"
8645 if test $enable_python = system; then
8646 if test -n "$PYTHON_CFLAGS" -a -n "$PYTHON_LIBS"; then
8647 # Fallback: Accept these in the environment, or as set above
8650 elif test "$cross_compiling" != yes; then
8651 # Unset variables set by the above AM_PATH_PYTHON so that
8652 # we actually do check anew.
8653 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
8654 # This causes an error if no python command is found
8655 AM_PATH_PYTHON([3.3])
8656 python_include=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('INCLUDEPY'));"`
8657 python_version=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('VERSION'));"`
8658 python_libs=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBS'));"`
8659 python_libdir=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBDIR'));"`
8660 if test -z "$PKG_CONFIG"; then
8661 PYTHON_CFLAGS="-I$python_include"
8662 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
8663 elif $PKG_CONFIG --exists python-$python_version-embed; then
8664 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version-embed`"
8665 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version-embed` $python_libs"
8666 elif $PKG_CONFIG --exists python-$python_version; then
8667 PYTHON_CFLAGS="`$PKG_CONFIG --cflags python-$python_version`"
8668 PYTHON_LIBS="`$PKG_CONFIG --libs python-$python_version` $python_libs"
8670 PYTHON_CFLAGS="-I$python_include"
8671 PYTHON_LIBS="-L$python_libdir -lpython$python_version $python_libs"
8673 FilterLibs "${PYTHON_LIBS}"
8674 PYTHON_LIBS="${filteredlibs}"
8676 dnl How to find out the cross-compilation Python installation path?
8677 AC_MSG_CHECKING([for python version])
8678 AS_IF([test -n "$PYTHON_VERSION"],
8679 [AC_MSG_RESULT([$PYTHON_VERSION])],
8680 [AC_MSG_RESULT([not found])
8681 AC_MSG_ERROR([no usable python found])])
8682 test -n "$PYTHON_CFLAGS" && break
8685 dnl Check if the headers really work
8686 save_CPPFLAGS="$CPPFLAGS"
8687 CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS"
8688 AC_CHECK_HEADER(Python.h)
8689 CPPFLAGS="$save_CPPFLAGS"
8691 # let the PYTHON_FOR_BUILD match the same python installation that
8692 # provides PYTHON_CFLAGS/PYTHON_LDFLAGS for pyuno, which should be
8693 # better for PythonTests.
8694 PYTHON_FOR_BUILD=$PYTHON
8697 if test "$with_lxml" != no; then
8698 if test -z "$PYTHON_FOR_BUILD"; then
8701 AC_MSG_WARN([No system-provided python lxml, gla11y will only report widget classes and ids])
8704 if test "$cross_compiling" != yes ; then
8705 BUILD_TYPE="$BUILD_TYPE LXML"
8710 AC_MSG_CHECKING([for python lxml])
8711 if $PYTHON_FOR_BUILD -c "import lxml.etree as ET" 2> /dev/null ; then
8712 AC_MSG_RESULT([yes])
8716 AC_MSG_RESULT([no, gla11y will only report widget classes and ids])
8719 if test "$cross_compiling" != yes -a "x$ac_cv_header_Python_h" = "xyes"; then
8720 BUILD_TYPE="$BUILD_TYPE LXML"
8721 AC_MSG_RESULT([no, using internal lxml])
8723 AC_MSG_RESULT([no, and system does not provide python development headers, gla11y will only report widget classes and ids])
8731 dnl By now enable_python should be "system", "internal" or "no"
8732 case $enable_python in
8736 if test "x$ac_cv_header_Python_h" != "xyes"; then
8737 AC_MSG_ERROR([Python headers not found. You probably want to set both the PYTHON_CFLAGS and PYTHON_LIBS environment variables.])
8741 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
8742 AC_MSG_CHECKING([for correct python library version])
8743 AC_RUN_IFELSE([AC_LANG_SOURCE([[
8746 int main(int argc, char **argv) {
8747 if ((PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION >= 7) ||
8748 (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 3)) return 0;
8751 ]])],[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])])
8755 dnl FIXME Check if the Python library can be linked with, too?
8760 PYTHON_VERSION_MAJOR=3
8761 PYTHON_VERSION_MINOR=7
8762 PYTHON_VERSION=${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.6
8763 if ! grep -q -i python.*${PYTHON_VERSION} ${SRC_ROOT}/download.lst; then
8764 AC_MSG_ERROR([PYTHON_VERSION ${PYTHON_VERSION} but no matching file in download.lst])
8766 AC_DEFINE_UNQUOTED([PYTHON_VERSION_STRING], [L"${PYTHON_VERSION}"])
8767 BUILD_TYPE="$BUILD_TYPE PYTHON"
8768 if test "$OS" = LINUX; then
8769 BUILD_TYPE="$BUILD_TYPE LIBFFI"
8771 # Embedded Python dies without Home set
8772 if test "$HOME" = ""; then
8781 AC_MSG_ERROR([Internal configure script error, invalid enable_python value "$enable_python"])
8785 AC_SUBST(DISABLE_PYTHON)
8786 AC_SUBST(SYSTEM_PYTHON)
8787 AC_SUBST(PYTHON_CFLAGS)
8788 AC_SUBST(PYTHON_LIBS)
8789 AC_SUBST(PYTHON_VERSION)
8790 AC_SUBST(PYTHON_VERSION_MAJOR)
8791 AC_SUBST(PYTHON_VERSION_MINOR)
8793 ENABLE_MARIADBC=TRUE
8794 if test "$_os" = "Android" -o "$_os" = "iOS" -o "$enable_mpl_subset" = "yes"; then
8800 if test "$ENABLE_MARIADBC" = "TRUE"; then
8801 BUILD_TYPE="$BUILD_TYPE MARIADBC"
8804 AC_SUBST(ENABLE_MARIADBC)
8805 AC_SUBST(MARIADBC_MAJOR)
8806 AC_SUBST(MARIADBC_MINOR)
8807 AC_SUBST(MARIADBC_MICRO)
8809 if test "$ENABLE_MARIADBC" = "TRUE"; then
8810 dnl ===================================================================
8811 dnl Check for system MariaDB
8812 dnl ===================================================================
8813 AC_MSG_CHECKING([which MariaDB to use])
8814 if test "$with_system_mariadb" = "yes"; then
8815 AC_MSG_RESULT([external])
8816 SYSTEM_MARIADB_CONNECTOR_C=TRUE
8817 #AC_PATH_PROG(MARIADBCONFIG, [mariadb_config])
8818 if test -z "$MARIADBCONFIG"; then
8819 AC_PATH_PROG(MARIADBCONFIG, [mysql_config])
8820 if test -z "$MARIADBCONFIG"; then
8821 AC_MSG_ERROR([mysql_config is missing. Install MySQL client library development package.])
8822 #AC_MSG_ERROR([mariadb_config and mysql_config are missing. Install MariaDB or MySQL client library development package.])
8825 AC_MSG_CHECKING([MariaDB version])
8826 MARIADB_VERSION=`$MARIADBCONFIG --version`
8827 MARIADB_MAJOR=`$MARIADBCONFIG --version | cut -d"." -f1`
8828 if test "$MARIADB_MAJOR" -ge "5"; then
8831 AC_MSG_ERROR([too old, use 5.0.x or later])
8833 AC_MSG_CHECKING([for MariaDB Client library])
8834 MARIADB_CFLAGS=`$MARIADBCONFIG --cflags`
8835 if test "$COM_IS_CLANG" = TRUE; then
8836 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-fstack-protector-strong//)
8838 MARIADB_LIBS=`$MARIADBCONFIG --libs_r`
8839 dnl At least mariadb-5.5.34-3.fc20.x86_64 plus
8840 dnl mariadb-5.5.34-3.fc20.i686 reports 64-bit specific output even under
8842 if test "$OS" = LINUX -a "$CPUNAME" = INTEL; then
8843 MARIADB_CFLAGS=$(printf '%s' "$MARIADB_CFLAGS" | sed -e s/-m64//)
8844 MARIADB_LIBS=$(printf '%s' "$MARIADB_LIBS" \
8845 | sed -e 's|/lib64/|/lib/|')
8847 FilterLibs "${MARIADB_LIBS}"
8848 MARIADB_LIBS="${filteredlibs}"
8849 AC_MSG_RESULT([includes '$MARIADB_CFLAGS', libraries '$MARIADB_LIBS'])
8850 AC_MSG_CHECKING([whether to bundle the MySQL/MariaDB client library])
8851 if test "$enable_bundle_mariadb" = "yes"; then
8852 AC_MSG_RESULT([yes])
8853 BUNDLE_MARIADB_CONNECTOR_C=TRUE
8854 LIBMARIADB=lib$(echo "${MARIADB_LIBS}" | sed -e 's/[[[:space:]]]\{1,\}-l\([[^[:space:]]]\{1,\}\)/\
8856 /g' -e 's/^-l\([[^[:space:]]]\{1,\}\)[[[:space:]]]*/\
8858 /g' | grep -E '(mysqlclient|mariadb)')
8859 if test "$_os" = "Darwin"; then
8860 LIBMARIADB=${LIBMARIADB}.dylib
8861 elif test "$_os" = "WINNT"; then
8862 LIBMARIADB=${LIBMARIADB}.dll
8864 LIBMARIADB=${LIBMARIADB}.so
8866 LIBMARIADB_PATH=$($MARIADBCONFIG --variable=pkglibdir)
8867 AC_MSG_CHECKING([for $LIBMARIADB in $LIBMARIADB_PATH])
8868 if test -e "$LIBMARIADB_PATH/$LIBMARIADB"; then
8869 AC_MSG_RESULT([found.])
8870 PathFormat "$LIBMARIADB_PATH"
8871 LIBMARIADB_PATH="$formatted_path"
8873 AC_MSG_ERROR([not found.])
8877 BUNDLE_MARIADB_CONNECTOR_C=
8880 AC_MSG_RESULT([internal])
8881 SYSTEM_MARIADB_CONNECTOR_C=
8882 MARIADB_CFLAGS="-I${WORKDIR}/UnpackedTarball/mariadb-connector-c/include"
8883 MARIADB_LIBS="-L${WORKDIR}/LinkTarget/StaticLibrary -lmariadb-connector-c"
8884 BUILD_TYPE="$BUILD_TYPE MARIADB_CONNECTOR_C"
8887 AC_SUBST(SYSTEM_MARIADB_CONNECTOR_C)
8888 AC_SUBST(MARIADB_CFLAGS)
8889 AC_SUBST(MARIADB_LIBS)
8890 AC_SUBST(LIBMARIADB)
8891 AC_SUBST(LIBMARIADB_PATH)
8892 AC_SUBST(BUNDLE_MARIADB_CONNECTOR_C)
8895 dnl ===================================================================
8896 dnl Check for system hsqldb
8897 dnl ===================================================================
8898 if test "$with_java" != "no"; then
8899 HSQLDB_USE_JDBC_4_1=
8900 AC_MSG_CHECKING([which hsqldb to use])
8901 if test "$with_system_hsqldb" = "yes"; then
8902 AC_MSG_RESULT([external])
8904 if test -z $HSQLDB_JAR; then
8905 HSQLDB_JAR=/usr/share/java/hsqldb.jar
8907 if ! test -f $HSQLDB_JAR; then
8908 AC_MSG_ERROR(hsqldb.jar not found.)
8910 AC_MSG_CHECKING([whether hsqldb is 1.8.0.x])
8914 my $file = "$ENV{'HSQLDB_JAR'}";
8915 my $zip = Archive::Zip->new( $file );
8916 my $mf = $zip->contents ( "META-INF/MANIFEST.MF" );
8917 if ( $mf =~ m/Specification-Version: 1.8.*/ )
8919 push @l, split(/\n/, $mf);
8920 foreach my $line (@l)
8922 if ($line =~ m/Specification-Version:/)
8924 ($t, $version) = split (/:/,$line);
8925 $version =~ s/^\s//;
8926 ($a, $b, $c, $d) = split (/\./,$version);
8927 if ($c == "0" && $d > "8")
8942 AC_MSG_RESULT([yes])
8944 AC_MSG_ERROR([no, you need hsqldb >= 1.8.0.9 but < 1.8.1])
8947 AC_MSG_RESULT([internal])
8949 BUILD_TYPE="$BUILD_TYPE HSQLDB"
8951 AC_MSG_CHECKING([whether hsqldb should be built with JDBC 4.1])
8952 javanumver=`$JAVAINTERPRETER -version 2>&1 | $AWK -v num=true -f $SRC_ROOT/solenv/bin/getcompver.awk`
8953 if expr "$javanumver" '>=' 000100060000 > /dev/null; then
8954 AC_MSG_RESULT([yes])
8955 HSQLDB_USE_JDBC_4_1=TRUE
8960 AC_SUBST(SYSTEM_HSQLDB)
8961 AC_SUBST(HSQLDB_JAR)
8962 AC_SUBST([HSQLDB_USE_JDBC_4_1])
8965 dnl ===================================================================
8966 dnl Check for PostgreSQL stuff
8967 dnl ===================================================================
8968 AC_MSG_CHECKING([whether to build the PostgreSQL SDBC driver])
8969 if test "x$enable_postgresql_sdbc" != "xno"; then
8970 AC_MSG_RESULT([yes])
8971 SCPDEFS="$SCPDEFS -DWITH_POSTGRESQL_SDBC"
8973 if test "$with_krb5" = "yes" -a "$enable_openssl" = "no"; then
8974 AC_MSG_ERROR([krb5 needs OpenSSL, but --disable-openssl was given.])
8976 if test "$with_gssapi" = "yes" -a "$enable_openssl" = "no"; then
8977 AC_MSG_ERROR([GSSAPI needs OpenSSL, but --disable-openssl was given.])
8980 postgres_interface=""
8981 if test "$with_system_postgresql" = "yes"; then
8982 postgres_interface="external PostgreSQL"
8983 SYSTEM_POSTGRESQL=TRUE
8984 if test "$_os" = Darwin; then
8986 for d in /Library/PostgreSQL/9.*/bin /sw/opt/postgresql/9.*/bin /opt/local/lib/postgresql9*/bin; do
8987 pg_supp_path="$P_SEP$d$pg_supp_path"
8990 AC_PATH_PROG(PGCONFIG, pg_config, ,$PATH$pg_supp_path)
8991 if test -n "$PGCONFIG"; then
8992 POSTGRESQL_INC=-I$(${PGCONFIG} --includedir)
8993 POSTGRESQL_LIB="-L$(${PGCONFIG} --libdir)"
8995 PKG_CHECK_MODULES(POSTGRESQL, libpq, [
8996 POSTGRESQL_INC=$POSTGRESQL_CFLAGS
8997 POSTGRESQL_LIB=$POSTGRESQL_LIBS
8999 AC_MSG_ERROR([pg_config or 'pkg-config libpq' needed; set PGCONFIG if not in PATH])
9002 FilterLibs "${POSTGRESQL_LIB}"
9003 POSTGRESQL_LIB="${filteredlibs}"
9005 # if/when anything else than PostgreSQL uses Kerberos,
9006 # move this out of `test "x$enable_postgresql_sdbc" != "xno"'
9011 # macOS has system MIT Kerberos 5 since 10.4
9012 if test "$with_krb5" != "no"; then
9015 # Not sure whether it makes any sense here to search multiple potential libraries; it is not likely
9016 # that the libraries where these functions are located on macOS will change, is it?
9017 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9018 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9021 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9022 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9023 KRB5_LIBS="$KRB5_LIBS $LIBS"
9026 if test "$with_gssapi" != "no"; then
9029 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9030 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9036 if test "$with_krb5" = "yes" -o "$with_gssapi" = "yes"; then
9037 AC_MSG_ERROR([Refusing to enable MIT Kerberos 5 or GSSAPI on Windows.])
9040 Linux|GNU|*BSD|DragonFly)
9041 if test "$with_krb5" != "no"; then
9044 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9045 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9048 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9049 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9050 KRB5_LIBS="$KRB5_LIBS $LIBS"
9053 if test "$with_gssapi" != "no"; then
9056 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9057 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9063 if test "$with_krb5" = "yes"; then
9066 AC_SEARCH_LIBS(com_err, [com_err 'com_err -lssl -lcrypto' krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9067 [AC_MSG_ERROR([could not find function 'com_err' required for Kerberos 5])])
9070 AC_SEARCH_LIBS(krb5_sendauth, [krb5 'krb5 -lcrypto -ldes -lasn1 -lroken'], [],
9071 [AC_MSG_ERROR([could not find function 'krb5_sendauth' required for Kerberos 5])])
9072 KRB5_LIBS="$KRB5_LIBS $LIBS"
9075 if test "$with_gssapi" = "yes"; then
9078 AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
9079 [AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
9085 if test -n "$with_libpq_path"; then
9086 SYSTEM_POSTGRESQL=TRUE
9087 postgres_interface="external libpq"
9088 POSTGRESQL_LIB="-L${with_libpq_path}/lib/"
9089 POSTGRESQL_INC=-I"${with_libpq_path}/include/"
9092 postgres_interface="internal"
9094 POSTGRESQL_INC="%OVERRIDE_ME%"
9095 BUILD_TYPE="$BUILD_TYPE POSTGRESQL"
9099 AC_MSG_CHECKING([PostgreSQL C interface])
9100 AC_MSG_RESULT([$postgres_interface])
9102 if test "${SYSTEM_POSTGRESQL}" = "TRUE"; then
9103 AC_MSG_NOTICE([checking system PostgreSQL prerequisites])
9105 save_CPPFLAGS=$CPPFLAGS
9107 CPPFLAGS="${CPPFLAGS} ${POSTGRESQL_INC}"
9108 LIBS="${LIBS} ${POSTGRESQL_LIB}"
9109 AC_CHECK_HEADER([libpq-fe.h], [], [AC_MSG_ERROR([libpq-fe.h is needed])], [])
9110 AC_CHECK_LIB([pq], [PQconnectdbParams], [:],
9111 [AC_MSG_ERROR(libpq not found or too old. Need >= 9.0)], [])
9113 CPPFLAGS=$save_CPPFLAGS
9116 BUILD_POSTGRESQL_SDBC=TRUE
9121 AC_SUBST(WITH_GSSAPI)
9122 AC_SUBST(GSSAPI_LIBS)
9124 AC_SUBST(BUILD_POSTGRESQL_SDBC)
9125 AC_SUBST(SYSTEM_POSTGRESQL)
9126 AC_SUBST(POSTGRESQL_INC)
9127 AC_SUBST(POSTGRESQL_LIB)
9129 dnl ===================================================================
9130 dnl Check for Firebird stuff
9131 dnl ===================================================================
9132 ENABLE_FIREBIRD_SDBC=
9133 if test "$enable_firebird_sdbc" = "yes" ; then
9134 SCPDEFS="$SCPDEFS -DWITH_FIREBIRD_SDBC"
9136 dnl ===================================================================
9137 dnl Check for system Firebird
9138 dnl ===================================================================
9139 AC_MSG_CHECKING([which Firebird to use])
9140 if test "$with_system_firebird" = "yes"; then
9141 AC_MSG_RESULT([external])
9142 SYSTEM_FIREBIRD=TRUE
9143 AC_PATH_PROG(FIREBIRDCONFIG, [fb_config])
9144 if test -z "$FIREBIRDCONFIG"; then
9145 AC_MSG_NOTICE([No fb_config -- using pkg-config])
9146 PKG_CHECK_MODULES([FIREBIRD], [fbclient >= 3], [FIREBIRD_PKGNAME=fbclient], [
9147 PKG_CHECK_MODULES([FIREBIRD], [fbembed], [FIREBIRD_PKGNAME=fbembed])
9149 FIREBIRD_VERSION=`pkg-config --modversion "$FIREBIRD_PKGNAME"`
9151 AC_MSG_NOTICE([fb_config found])
9152 FIREBIRD_VERSION=`$FIREBIRDCONFIG --version`
9153 AC_MSG_CHECKING([for Firebird Client library])
9154 FIREBIRD_CFLAGS=`$FIREBIRDCONFIG --cflags`
9155 FIREBIRD_LIBS=`$FIREBIRDCONFIG --embedlibs`
9156 FilterLibs "${FIREBIRD_LIBS}"
9157 FIREBIRD_LIBS="${filteredlibs}"
9159 AC_MSG_RESULT([includes `$FIREBIRD_CFLAGS', libraries `$FIREBIRD_LIBS'])
9160 AC_MSG_CHECKING([Firebird version])
9161 if test -n "${FIREBIRD_VERSION}"; then
9162 FIREBIRD_MAJOR=`echo $FIREBIRD_VERSION | cut -d"." -f1`
9163 FIREBIRD_MINOR=`echo $FIREBIRD_VERSION | cut -d"." -f2`
9164 if test "$FIREBIRD_MAJOR" -eq "3" -a "$FIREBIRD_MINOR" -eq "0"; then
9167 AC_MSG_ERROR([Ensure firebird 3.0.x is installed])
9170 __save_CFLAGS="${CFLAGS}"
9171 CFLAGS="${CFLAGS} ${FIREBIRD_CFLAGS}"
9172 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <ibase.h>
9173 #if defined(FB_API_VER) && FB_API_VER == 30
9174 int fb_api_is_30(void) { return 0; }
9176 #error "Wrong Firebird API version"
9177 #endif]])],AC_MSG_RESULT([OK]),AC_MSG_ERROR([Ensure firebird 3.0.x is installed]))
9178 CFLAGS="${__save_CFLAGS}"
9180 ENABLE_FIREBIRD_SDBC=TRUE
9181 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9182 elif test "$enable_database_connectivity" != yes; then
9183 AC_MSG_RESULT([none])
9184 elif test "$cross_compiling" = "yes"; then
9185 AC_MSG_RESULT([none])
9187 dnl Embedded Firebird has version 3.0
9188 AC_DEFINE(HAVE_FIREBIRD_30, 1)
9189 dnl We need libatomic_ops for any non X86/X64 system
9190 if test "${CPUNAME}" != INTEL -a "${CPUNAME}" != X86_64; then
9191 dnl ===================================================================
9192 dnl Check for system libatomic_ops
9193 dnl ===================================================================
9194 libo_CHECK_SYSTEM_MODULE([libatomic_ops],[ATOMIC_OPS],[atomic_ops >= 0.7.2])
9195 if test "$with_system_libatomic_ops" = "yes"; then
9196 SYSTEM_LIBATOMIC_OPS=TRUE
9197 AC_CHECK_HEADERS(atomic_ops.h, [],
9198 [AC_MSG_ERROR(atomic_ops.h not found. install libatomic_ops)], [])
9200 SYSTEM_LIBATOMIC_OPS=
9201 LIBATOMIC_OPS_CFLAGS="-I${WORKDIR}/UnpackedTarball/libatomic_ops/include"
9202 LIBATOMIC_OPS_LIBS="-latomic_ops"
9203 BUILD_TYPE="$BUILD_TYPE LIBATOMIC_OPS"
9207 AC_MSG_RESULT([internal])
9209 FIREBIRD_CFLAGS="-I${WORKDIR}/UnpackedTarball/firebird/gen/Release/firebird/include"
9210 FIREBIRD_LIBS="-lfbclient"
9212 if test "$with_system_libtommath" = "yes"; then
9213 SYSTEM_LIBTOMMATH=TRUE
9214 dnl check for tommath presence
9216 AC_CHECK_HEADER(tommath.h,,AC_MSG_ERROR(Include file for tommath not found - please install development tommath package))
9217 AC_CHECK_LIB(tommath, mp_init, TOMMATH_LIBS=-ltommath, AC_MSG_ERROR(Library tommath not found - please install development tommath package))
9221 LIBTOMMATH_CFLAGS="-I${WORKDIR}/UnpackedTarball/libtommath"
9222 LIBTOMMATH_LIBS="-ltommath"
9223 BUILD_TYPE="$BUILD_TYPE LIBTOMMATH"
9226 BUILD_TYPE="$BUILD_TYPE FIREBIRD"
9227 ENABLE_FIREBIRD_SDBC=TRUE
9228 AC_DEFINE([ENABLE_FIREBIRD_SDBC],1)
9231 AC_SUBST(ENABLE_FIREBIRD_SDBC)
9232 AC_SUBST(SYSTEM_LIBATOMIC_OPS)
9233 AC_SUBST(LIBATOMIC_OPS_CFLAGS)
9234 AC_SUBST(LIBATOMIC_OPS_LIBS)
9235 AC_SUBST(SYSTEM_FIREBIRD)
9236 AC_SUBST(FIREBIRD_CFLAGS)
9237 AC_SUBST(FIREBIRD_LIBS)
9238 AC_SUBST([TOMMATH_CFLAGS])
9239 AC_SUBST([TOMMATH_LIBS])
9241 dnl ===================================================================
9242 dnl Check for system curl
9243 dnl ===================================================================
9244 AC_MSG_CHECKING([which libcurl to use])
9245 if test "$with_system_curl" = "auto"; then
9246 with_system_curl="$with_system_libs"
9249 if test "$with_system_curl" = "yes"; then
9250 AC_MSG_RESULT([external])
9253 # First try PKGCONFIG and then fall back
9254 PKG_CHECK_MODULES(CURL, libcurl >= 7.19.4,, [:])
9256 if test -n "$CURL_PKG_ERRORS"; then
9257 AC_PATH_PROG(CURLCONFIG, curl-config)
9258 if test -z "$CURLCONFIG"; then
9259 AC_MSG_ERROR([curl development files not found])
9261 CURL_LIBS=`$CURLCONFIG --libs`
9262 FilterLibs "${CURL_LIBS}"
9263 CURL_LIBS="${filteredlibs}"
9264 CURL_CFLAGS=$("$CURLCONFIG" --cflags | sed -e "s/-I/${ISYSTEM?}/g")
9265 curl_version=`$CURLCONFIG --version | $SED -e 's/^libcurl //'`
9267 AC_MSG_CHECKING([whether libcurl is >= 7.19.4])
9268 case $curl_version in
9269 dnl brackets doubled below because Autoconf uses them as m4 quote characters,
9270 dnl so they need to be doubled to end up in the configure script
9271 7.19.4|7.19.[[5-9]]|7.[[2-9]]?.*|7.???.*|[[8-9]].*|[[1-9]][[0-9]].*)
9272 AC_MSG_RESULT([yes])
9275 AC_MSG_ERROR([no, you have $curl_version])
9281 elif test $_os = iOS; then
9282 # Let's see if we need curl, I think not?
9283 AC_MSG_RESULT([none])
9286 AC_MSG_RESULT([internal])
9288 BUILD_TYPE="$BUILD_TYPE CURL"
9291 AC_SUBST(SYSTEM_CURL)
9292 AC_SUBST(CURL_CFLAGS)
9294 AC_SUBST(ENABLE_CURL)
9296 dnl ===================================================================
9297 dnl Check for system boost
9298 dnl ===================================================================
9299 AC_MSG_CHECKING([which boost to use])
9300 if test "$with_system_boost" = "yes"; then
9301 AC_MSG_RESULT([external])
9309 save_CXXFLAGS=$CXXFLAGS
9310 CXXFLAGS="$CXXFLAGS $BOOST_CPPFLAGS $CXXFLAGS_CXX11"
9311 AC_CHECK_HEADER(boost/shared_ptr.hpp, [],
9312 [AC_MSG_ERROR(boost/shared_ptr.hpp not found. install boost)], [])
9313 AC_CHECK_HEADER(boost/spirit/include/classic_core.hpp, [],
9314 [AC_MSG_ERROR(boost/spirit/include/classic_core.hpp not found. install boost >= 1.36)], [])
9315 CXXFLAGS=$save_CXXFLAGS
9317 # this is in m4/ax_boost_base.m4
9318 FilterLibs "${BOOST_LDFLAGS}"
9319 BOOST_LDFLAGS="${filteredlibs}"
9321 AC_MSG_RESULT([internal])
9322 BUILD_TYPE="$BUILD_TYPE BOOST"
9324 if test "${COM}" = "GCC" -o "${COM_IS_CLANG}" = "TRUE"; then
9325 # use warning-suppressing wrapper headers
9326 BOOST_CPPFLAGS="-I${SRC_ROOT}/external/boost/include -I${WORKDIR}/UnpackedTarball/boost"
9328 BOOST_CPPFLAGS="-I${WORKDIR}/UnpackedTarball/boost"
9331 AC_SUBST(SYSTEM_BOOST)
9333 dnl ===================================================================
9334 dnl Check for system mdds
9335 dnl ===================================================================
9336 libo_CHECK_SYSTEM_MODULE([mdds], [MDDS], [mdds-1.5 >= 1.5.0], ["-I${WORKDIR}/UnpackedTarball/mdds/include"])
9338 dnl ===================================================================
9339 dnl Check for system glm
9340 dnl ===================================================================
9341 AC_MSG_CHECKING([which glm to use])
9342 if test "$with_system_glm" = "yes"; then
9343 AC_MSG_RESULT([external])
9346 AC_CHECK_HEADER([glm/glm.hpp], [],
9347 [AC_MSG_ERROR([glm/glm.hpp not found. install glm])], [])
9350 AC_MSG_RESULT([internal])
9351 BUILD_TYPE="$BUILD_TYPE GLM"
9353 GLM_CFLAGS="${ISYSTEM}${WORKDIR}/UnpackedTarball/glm"
9355 AC_SUBST([GLM_CFLAGS])
9356 AC_SUBST([SYSTEM_GLM])
9358 dnl ===================================================================
9359 dnl Check for system odbc
9360 dnl ===================================================================
9361 AC_MSG_CHECKING([which odbc headers to use])
9362 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
9363 AC_MSG_RESULT([external])
9364 SYSTEM_ODBC_HEADERS=TRUE
9366 if test "$build_os" = "cygwin"; then
9367 save_CPPFLAGS=$CPPFLAGS
9369 PathFormat "$winsdktest"
9370 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"
9371 AC_CHECK_HEADER(sqlext.h, [],
9372 [AC_MSG_ERROR(odbc not found. install odbc)],
9373 [#include <windows.h>])
9374 CPPFLAGS=$save_CPPFLAGS
9376 AC_CHECK_HEADER(sqlext.h, [],
9377 [AC_MSG_ERROR(odbc not found. install odbc)],[])
9379 elif test "$enable_database_connectivity" != yes; then
9380 AC_MSG_RESULT([none])
9382 AC_MSG_RESULT([internal])
9383 SYSTEM_ODBC_HEADERS=
9385 AC_SUBST(SYSTEM_ODBC_HEADERS)
9387 dnl ===================================================================
9388 dnl Enable LDAP support
9389 dnl ===================================================================
9391 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android"; then
9392 AC_MSG_CHECKING([whether to enable LDAP support])
9393 if test "$enable_ldap" != "yes"; then
9398 AC_MSG_RESULT([yes])
9400 AC_DEFINE(HAVE_FEATURE_LDAP)
9403 AC_SUBST(ENABLE_LDAP)
9405 dnl ===================================================================
9406 dnl Check for system openldap
9407 dnl ===================================================================
9409 if test "$_os" != "WINNT" -a "$_os" != "iOS" -a "$_os" != "Android" -a "$ENABLE_LDAP" != ""; then
9410 AC_MSG_CHECKING([which openldap library to use])
9411 if test "$with_system_openldap" = "yes"; then
9412 AC_MSG_RESULT([external])
9413 SYSTEM_OPENLDAP=TRUE
9414 AC_CHECK_HEADERS(ldap.h, [], [AC_MSG_ERROR(ldap.h not found. install openldap libs)], [])
9415 AC_CHECK_LIB([ldap], [ldap_simple_bind_s], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
9416 AC_CHECK_LIB([ldap], [ldap_set_option], [:], [AC_MSG_ERROR(openldap lib not found or functional)], [])
9418 AC_MSG_RESULT([internal])
9420 BUILD_TYPE="$BUILD_TYPE OPENLDAP"
9423 AC_SUBST(SYSTEM_OPENLDAP)
9425 dnl ===================================================================
9426 dnl Check for system NSS
9427 dnl ===================================================================
9428 if test $_os != iOS -a "$enable_fuzzers" != "yes"; then
9429 libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
9430 AC_DEFINE(HAVE_FEATURE_NSS)
9432 AC_DEFINE(ENABLE_NSS)
9433 elif test $_os != iOS ; then
9436 AC_SUBST(ENABLE_NSS)
9438 dnl ===================================================================
9439 dnl Check for TLS/SSL and cryptographic implementation to use
9440 dnl ===================================================================
9441 AC_MSG_CHECKING([which TLS/SSL and cryptographic implementation to use])
9442 if test -n "$with_tls"; then
9445 AC_DEFINE(USE_TLS_OPENSSL)
9448 if test "$enable_openssl" != "yes"; then
9449 AC_MSG_ERROR(["Disabling OpenSSL was requested, but the requested TLS to use is actually OpenSSL."])
9452 # warn that OpenSSL has been selected but not all TLS code has this option
9453 AC_MSG_WARN([TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS])
9454 add_warning "TLS/SSL implementation to use is OpenSSL but some code may still depend on NSS or GNUTLS"
9457 AC_DEFINE(USE_TLS_NSS)
9461 AC_MSG_WARN([Skipping TLS/SSL])
9464 AC_MSG_ERROR([unsupported implementation $with_tls. Supported are:
9466 nss - Mozilla's Network Security Services (NSS)
9471 # default to using NSS, it results in smaller oox lib
9472 AC_DEFINE(USE_TLS_NSS)
9475 AC_MSG_RESULT([$TLS])
9478 dnl ===================================================================
9479 dnl Check for system sane
9480 dnl ===================================================================
9481 AC_MSG_CHECKING([which sane header to use])
9482 if test "$with_system_sane" = "yes"; then
9483 AC_MSG_RESULT([external])
9484 AC_CHECK_HEADER(sane/sane.h, [],
9485 [AC_MSG_ERROR(sane not found. install sane)], [])
9487 AC_MSG_RESULT([internal])
9488 BUILD_TYPE="$BUILD_TYPE SANE"
9491 dnl ===================================================================
9492 dnl Check for system icu
9493 dnl ===================================================================
9500 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
9501 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
9502 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
9503 AC_MSG_CHECKING([which icu to use])
9504 if test "$with_system_icu" = "yes"; then
9505 AC_MSG_RESULT([external])
9508 AC_MSG_CHECKING([for unicode/rbbi.h])
9509 AC_PREPROC_IFELSE([AC_LANG_SOURCE([[unicode/rbbi.h]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([icu headers not found])])
9512 if test "$cross_compiling" != "yes"; then
9513 PKG_CHECK_MODULES(ICU, icu-i18n >= 4.6)
9514 ICU_VERSION=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
9515 ICU_MAJOR=`echo $ICU_VERSION | cut -d"." -f1`
9516 ICU_MINOR=`echo $ICU_VERSION | cut -d"." -f2`
9519 if test "$cross_compiling" = "yes" -a \( "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force" \); then
9520 ICU_VERSION_FOR_BUILD=`$PKG_CONFIG --modversion icu-i18n 2>/dev/null`
9521 ICU_MAJOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f1`
9522 ICU_MINOR_FOR_BUILD=`echo $ICU_VERSION_FOR_BUILD | cut -d"." -f2`
9523 AC_MSG_CHECKING([if MinGW and system versions of ICU are compatible])
9524 if test "$ICU_MAJOR" -eq "$ICU_MAJOR_FOR_BUILD" -a "$ICU_MINOR" -eq "$ICU_MINOR_FOR_BUILD"; then
9525 AC_MSG_RESULT([yes])
9528 if test "$with_system_icu_for_build" != "force"; then
9529 AC_MSG_ERROR([System ICU is not version-compatible with MinGW ICU.
9530 You can use --with-system-icu-for-build=force to use it anyway.])
9535 if test "$cross_compiling" != "yes" -o "$with_system_icu_for_build" = "yes" -o "$with_system_icu_for_build" = "force"; then
9536 # using the system icu tools can lead to version confusion, use the
9537 # ones from the build environment when cross-compiling
9538 AC_PATH_PROG(SYSTEM_GENBRK, genbrk, [], [$PATH:/usr/sbin:/sbin])
9539 if test -z "$SYSTEM_GENBRK"; then
9540 AC_MSG_ERROR([\'genbrk\' not found in \$PATH, install the icu development tool \'genbrk\'])
9542 AC_PATH_PROG(SYSTEM_GENCCODE, genccode, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
9543 if test -z "$SYSTEM_GENCCODE"; then
9544 AC_MSG_ERROR([\'genccode\' not found in \$PATH, install the icu development tool \'genccode\'])
9546 AC_PATH_PROG(SYSTEM_GENCMN, gencmn, [], [$PATH:/usr/sbin:/sbin:/usr/local/sbin])
9547 if test -z "$SYSTEM_GENCMN"; then
9548 AC_MSG_ERROR([\'gencmn\' not found in \$PATH, install the icu development tool \'gencmn\'])
9550 if test "$ICU_MAJOR" -ge "49"; then
9551 ICU_RECLASSIFIED_PREPEND_SET_EMPTY="TRUE"
9552 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER="TRUE"
9553 ICU_RECLASSIFIED_HEBREW_LETTER="TRUE"
9555 ICU_RECLASSIFIED_PREPEND_SET_EMPTY=
9556 ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER=
9557 ICU_RECLASSIFIED_HEBREW_LETTER=
9561 if test "$cross_compiling" = "yes"; then
9562 if test "$ICU_MAJOR" -ge "50"; then
9563 AC_MSG_RESULT([Ignore ICU_MINOR as obviously the libraries don't include the minor version in their names any more])
9568 AC_MSG_RESULT([internal])
9570 BUILD_TYPE="$BUILD_TYPE ICU"
9571 # surprisingly set these only for "internal" (to be used by various other
9572 # external libs): the system icu-config is quite unhelpful and spits out
9573 # dozens of weird flags and also default path -I/usr/include
9574 ICU_CFLAGS="-I${WORKDIR}/UnpackedTarball/icu/source/i18n -I${WORKDIR}/UnpackedTarball/icu/source/common"
9575 ICU_LIBS="-L${WORKDIR}/UnpackedTarball/icu/source/lib"
9577 if test "$ICU_MAJOR" -ge "59"; then
9578 # As of ICU 59 it defaults to typedef char16_t UChar; which is available
9579 # with -std=c++11 but not all external libraries can be built with that,
9580 # for those use a bit-compatible typedef uint16_t UChar; see
9581 # icu/source/common/unicode/umachine.h
9582 ICU_UCHAR_TYPE="-DUCHAR_TYPE=uint16_t"
9586 AC_SUBST(SYSTEM_ICU)
9587 AC_SUBST(SYSTEM_GENBRK)
9588 AC_SUBST(SYSTEM_GENCCODE)
9589 AC_SUBST(SYSTEM_GENCMN)
9592 AC_SUBST(ICU_RECLASSIFIED_PREPEND_SET_EMPTY)
9593 AC_SUBST(ICU_RECLASSIFIED_CONDITIONAL_JAPANESE_STARTER)
9594 AC_SUBST(ICU_RECLASSIFIED_HEBREW_LETTER)
9595 AC_SUBST(ICU_CFLAGS)
9597 AC_SUBST(ICU_UCHAR_TYPE)
9599 dnl ==================================================================
9601 dnl ==================================================================
9602 DEFAULT_CRASHDUMP_VALUE="true"
9603 AC_MSG_CHECKING([whether to enable breakpad])
9604 if test "$enable_breakpad" != yes; then
9607 AC_MSG_RESULT([yes])
9608 ENABLE_BREAKPAD="TRUE"
9609 AC_DEFINE(ENABLE_BREAKPAD)
9610 AC_DEFINE(HAVE_FEATURE_BREAKPAD, 1)
9611 BUILD_TYPE="$BUILD_TYPE BREAKPAD"
9613 AC_MSG_CHECKING([for disable crash dump])
9614 if test "$enable_crashdump" = no; then
9615 DEFAULT_CRASHDUMP_VALUE="false"
9616 AC_MSG_RESULT([yes])
9621 AC_MSG_CHECKING([for crashreport config])
9622 if test "$with_symbol_config" = "no"; then
9623 BREAKPAD_SYMBOL_CONFIG="invalid"
9626 BREAKPAD_SYMBOL_CONFIG="$with_symbol_config"
9627 AC_DEFINE(BREAKPAD_SYMBOL_CONFIG)
9628 AC_MSG_RESULT([yes])
9630 AC_SUBST(BREAKPAD_SYMBOL_CONFIG)
9632 AC_SUBST(ENABLE_BREAKPAD)
9633 AC_SUBST(DEFAULT_CRASHDUMP_VALUE)
9635 dnl ==================================================================
9637 dnl ==================================================================
9638 AC_MSG_CHECKING([whether to enable fuzzers])
9639 if test "$enable_fuzzers" != yes; then
9642 AC_MSG_RESULT([yes])
9643 ENABLE_FUZZERS="TRUE"
9644 AC_DEFINE([ENABLE_FUZZERS],1)
9645 BUILD_TYPE="$BUILD_TYPE FUZZERS"
9647 AC_SUBST(ENABLE_FUZZERS)
9649 dnl ===================================================================
9651 dnl ===================================================================
9652 libo_CHECK_SYSTEM_MODULE([orcus],[ORCUS],[liborcus-0.15 >= 0.15.0])
9653 if test "$with_system_orcus" != "yes"; then
9654 if test "$SYSTEM_BOOST" = "TRUE"; then
9655 # ===========================================================
9656 # Determine if we are going to need to link with Boost.System
9657 # ===========================================================
9658 dnl This seems to be necessary since boost 1.50 (1.48 does not need it,
9659 dnl 1.49 is untested). The macro BOOST_THREAD_DONT_USE_SYSTEM mentioned
9660 dnl in documentation has no effect.
9661 AC_MSG_CHECKING([if we need to link with Boost.System])
9663 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
9664 @%:@include <boost/version.hpp>
9666 #if BOOST_VERSION >= 105000
9667 # error yes, we need to link with Boost.System
9672 AC_MSG_RESULT([yes])
9678 dnl FIXME by renaming SYSTEM_LIBORCUS to SYSTEM_ORCUS in the build system world
9679 SYSTEM_LIBORCUS=$SYSTEM_ORCUS
9680 AC_SUBST([BOOST_SYSTEM_LIB])
9681 AC_SUBST(SYSTEM_LIBORCUS)
9683 dnl ===================================================================
9685 dnl ===================================================================
9686 libo_CHECK_SYSTEM_MODULE([graphite],[GRAPHITE],[graphite2 >= 0.9.3],
9687 ["-I${WORKDIR}/UnpackedTarball/graphite/include -DGRAPHITE2_STATIC"],
9688 ["-L${WORKDIR}/LinkTarget/StaticLibrary -lgraphite"])
9690 libo_CHECK_SYSTEM_MODULE([harfbuzz],[HARFBUZZ],[harfbuzz-icu >= 0.9.42],
9691 ["-I${WORKDIR}/UnpackedTarball/harfbuzz/src"],
9692 ["-L${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs -lharfbuzz"])
9694 if test "$COM" = "MSC"; then # override the above
9695 GRAPHITE_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/graphite.lib"
9696 HARFBUZZ_LIBS="${WORKDIR}/UnpackedTarball/harfbuzz/src/.libs/libharfbuzz.lib"
9699 if test "$with_system_harfbuzz" = "yes"; then
9700 if test "$with_system_graphite" = "no"; then
9701 AC_MSG_ERROR([--with-system-graphite must be used when --with-system-harfbuzz is used])
9703 AC_MSG_CHECKING([whether system Harfbuzz is built with Graphite support])
9705 _save_cflags="$CFLAGS"
9706 LIBS="$LIBS $HARFBUZZ_LIBS"
9707 CFLAGS="$CFLAGS $HARFBUZZ_CFLAGS"
9708 AC_CHECK_FUNC(hb_graphite2_face_get_gr_face,,[AC_MSG_ERROR([Harfbuzz needs to be built with Graphite support.])])
9710 CFLAGS="$_save_cflags"
9712 if test "$with_system_graphite" = "yes"; then
9713 AC_MSG_ERROR([--without-system-graphite must be used when --without-system-harfbuzz is used])
9717 AC_MSG_CHECKING([whether to use X11])
9718 dnl ***************************************
9719 dnl testing for X libraries and includes...
9720 dnl ***************************************
9721 if test "$USING_X11" = TRUE; then
9722 AC_DEFINE(HAVE_FEATURE_X11)
9724 AC_MSG_RESULT([$USING_X11])
9726 if test "$USING_X11" = TRUE; then
9729 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
9731 if test -z "$x_includes"; then
9732 x_includes="default_x_includes"
9734 if test -z "$x_libraries"; then
9735 x_libraries="default_x_libraries"
9737 CFLAGS="$CFLAGS $X_CFLAGS"
9738 LDFLAGS="$LDFLAGS $X_LDFLAGS $X_LIBS"
9739 AC_CHECK_LIB(X11, XOpenDisplay, x_libs="-lX11 $X_EXTRA_LIBS", [AC_MSG_ERROR([X Development libraries not found])])
9741 x_includes="no_x_includes"
9742 x_libraries="no_x_libraries"
9745 if test "$USING_X11" = TRUE; then
9746 dnl ===================================================================
9747 dnl Check for extension headers
9748 dnl ===================================================================
9749 AC_CHECK_HEADERS(X11/extensions/shape.h,[],[AC_MSG_ERROR([libXext headers not found])],
9750 [#include <X11/extensions/shape.h>])
9752 # vcl needs ICE and SM
9753 AC_CHECK_HEADERS(X11/ICE/ICElib.h,[],[AC_MSG_ERROR([libICE headers not found])])
9754 AC_CHECK_LIB([ICE], [IceConnectionNumber], [:],
9755 [AC_MSG_ERROR(ICE library not found)])
9756 AC_CHECK_HEADERS(X11/SM/SMlib.h,[],[AC_MSG_ERROR([libSM headers not found])])
9757 AC_CHECK_LIB([SM], [SmcOpenConnection], [:],
9758 [AC_MSG_ERROR(SM library not found)])
9761 dnl ===================================================================
9762 dnl Check for system Xrender
9763 dnl ===================================================================
9764 AC_MSG_CHECKING([whether to use Xrender])
9765 if test "$USING_X11" = TRUE -a "$test_xrender" = "yes"; then
9766 AC_MSG_RESULT([yes])
9767 PKG_CHECK_MODULES(XRENDER, xrender)
9768 XRENDER_CFLAGS=$(printf '%s' "$XRENDER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9769 FilterLibs "${XRENDER_LIBS}"
9770 XRENDER_LIBS="${filteredlibs}"
9771 AC_CHECK_LIB([Xrender], [XRenderQueryVersion], [:],
9772 [AC_MSG_ERROR(libXrender not found or functional)], [])
9773 AC_CHECK_HEADER(X11/extensions/Xrender.h, [],
9774 [AC_MSG_ERROR(Xrender not found. install X)], [])
9778 AC_SUBST(XRENDER_CFLAGS)
9779 AC_SUBST(XRENDER_LIBS)
9781 dnl ===================================================================
9782 dnl Check for XRandr
9783 dnl ===================================================================
9784 AC_MSG_CHECKING([whether to enable RandR support])
9785 if test "$USING_X11" = TRUE -a "$test_randr" = "yes" -a \( "$enable_randr" = "yes" -o "$enable_randr" = "TRUE" \); then
9786 AC_MSG_RESULT([yes])
9787 PKG_CHECK_MODULES(XRANDR, xrandr >= 1.2, ENABLE_RANDR="TRUE", ENABLE_RANDR="")
9788 if test "$ENABLE_RANDR" != "TRUE"; then
9789 AC_CHECK_HEADER(X11/extensions/Xrandr.h, [],
9790 [AC_MSG_ERROR([X11/extensions/Xrandr.h could not be found. X11 dev missing?])], [])
9792 AC_CHECK_LIB([Xrandr], [XRRQueryExtension], [:],
9793 [ AC_MSG_ERROR(libXrandr not found or functional) ], [])
9794 XRANDR_LIBS="-lXrandr "
9797 XRANDR_CFLAGS=$(printf '%s' "$XRANDR_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
9798 FilterLibs "${XRANDR_LIBS}"
9799 XRANDR_LIBS="${filteredlibs}"
9804 AC_SUBST(XRANDR_CFLAGS)
9805 AC_SUBST(XRANDR_LIBS)
9806 AC_SUBST(ENABLE_RANDR)
9808 if test "$enable_neon" = "no" -o "$enable_mpl_subset" = "yes"; then
9811 if test $_os = iOS -o $_os = Android; then
9814 AC_MSG_CHECKING([for webdav library])
9815 case "$WITH_WEBDAV" in
9817 AC_MSG_RESULT([serf])
9818 # Check for system apr-util
9819 libo_CHECK_SYSTEM_MODULE([apr],[APR],[apr-util-1],
9820 ["-I${WORKDIR}/UnpackedTarball/apr/include -I${WORKDIR}/UnpackedTarball/apr_util/include"],
9821 ["-L${WORKDIR}/UnpackedTarball/apr/.libs -lapr-1 -L${WORKDIR}/UnpackedTarball/apr_util/.libs -laprutil-1"])
9822 if test "$COM" = "MSC"; then
9824 test -n "${MSVC_USE_DEBUG_RUNTIME}" && APR_LIB_DIR="LibD"
9825 APR_LIBS="${WORKDIR}/UnpackedTarball/apr/${APR_LIB_DIR}/apr-1.lib ${WORKDIR}/UnpackedTarball/apr_util/${APR_LIB_DIR}/aprutil-1.lib"
9828 # Check for system serf
9829 libo_CHECK_SYSTEM_MODULE([serf],[SERF],[serf-1 >= 1.1.0],["-I${WORKDIR}/UnpackedTarball/serf"],
9830 ["-L${WORKDIR}/UnpackedTarball/serf/.libs -lserf-1"])
9831 if test "$COM" = "MSC"; then
9832 SERF_LIB_DIR="Release"
9833 test -n "${MSVC_USE_DEBUG_RUNTIME}" && SERF_LIB_DIR="Debug"
9834 SERF_LIBS="${WORKDIR}/UnpackedTarball/serf/${SERF_LIB_DIR}/serf-1.lib"
9838 AC_MSG_RESULT([neon])
9839 # Check for system neon
9840 libo_CHECK_SYSTEM_MODULE([neon],[NEON],[neon >= 0.26.0])
9841 if test "$with_system_neon" = "yes"; then
9842 NEON_VERSION="`$PKG_CONFIG --modversion neon | $SED 's/\.//g'`"
9846 AC_SUBST(NEON_VERSION)
9849 AC_MSG_RESULT([none, disabled])
9853 AC_SUBST(WITH_WEBDAV)
9855 dnl ===================================================================
9856 dnl Check for disabling cve_tests
9857 dnl ===================================================================
9858 AC_MSG_CHECKING([whether to execute CVE tests])
9859 # If not explicitly enabled or disabled, default
9860 if test -z "$enable_cve_tests"; then
9863 # Default cves off for Windows with its wild and wonderful
9864 # variety of AV software kicking in and panicking
9869 enable_cve_tests=yes
9873 if test "$enable_cve_tests" = "no"; then
9875 DISABLE_CVE_TESTS=TRUE
9876 AC_SUBST(DISABLE_CVE_TESTS)
9878 AC_MSG_RESULT([yes])
9881 dnl ===================================================================
9882 dnl Check for enabling chart XShape tests
9883 dnl ===================================================================
9884 AC_MSG_CHECKING([whether to execute chart XShape tests])
9885 if test "$enable_chart_tests" = "yes" -o '(' "$_os" = "WINNT" -a "$enable_chart_tests" != "no" ')'; then
9886 AC_MSG_RESULT([yes])
9887 ENABLE_CHART_TESTS=TRUE
9888 AC_SUBST(ENABLE_CHART_TESTS)
9893 dnl ===================================================================
9894 dnl Check for system openssl
9895 dnl ===================================================================
9897 AC_MSG_CHECKING([whether to disable OpenSSL usage])
9898 if test "$enable_openssl" = "yes"; then
9900 if test "$_os" = Darwin ; then
9901 # OpenSSL is deprecated when building for 10.7 or later.
9903 # http://stackoverflow.com/questions/7406946/why-is-apple-deprecating-openssl-in-macos-10-7-lion
9904 # http://stackoverflow.com/questions/7475914/libcrypto-deprecated-on-mac-os-x-10-7-lion
9906 with_system_openssl=no
9907 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
9908 elif test "$_os" = "NetBSD" -o "$_os" = "OpenBSD" -o "$_os" = "DragonFly" \
9909 && test "$with_system_openssl" != "no"; then
9910 with_system_openssl=yes
9913 OPENSSL_LIBS="-lssl -lcrypto"
9915 libo_CHECK_SYSTEM_MODULE([openssl],[OPENSSL],[openssl])
9917 if test "$with_system_openssl" = "yes"; then
9918 AC_MSG_CHECKING([whether openssl supports SHA512])
9920 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <openssl/sha.h>]],[[
9922 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, openssl too old. Need >= 0.9.8.])])
9926 AC_MSG_RESULT([yes])
9927 DISABLE_OPENSSL=TRUE
9929 # warn that although OpenSSL is disabled, system libraries may depend on it
9930 AC_MSG_WARN([OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies])
9931 add_warning "OpenSSL has been disabled. No code compiled here will make use of it but system libraries may create indirect dependencies"
9934 AC_SUBST([DISABLE_OPENSSL])
9936 if test "$enable_cipher_openssl_backend" = yes && test "$DISABLE_OPENSSL" = TRUE; then
9937 if test "$libo_fuzzed_enable_cipher_openssl_backend" = yes; then
9938 AC_MSG_NOTICE([Resetting --enable-cipher-openssl-backend=no])
9939 enable_cipher_openssl_backend=no
9941 AC_MSG_ERROR([--enable-cipher-openssl-backend needs OpenSSL, but --disable-openssl was given.])
9944 AC_MSG_CHECKING([whether to enable the OpenSSL backend for rtl/cipher.h])
9945 ENABLE_CIPHER_OPENSSL_BACKEND=
9946 if test "$enable_cipher_openssl_backend" = yes; then
9947 AC_MSG_RESULT([yes])
9948 ENABLE_CIPHER_OPENSSL_BACKEND=TRUE
9952 AC_SUBST([ENABLE_CIPHER_OPENSSL_BACKEND])
9954 dnl ===================================================================
9955 dnl Check for building gnutls
9956 dnl ===================================================================
9957 AC_MSG_CHECKING([whether to use gnutls])
9958 if test "$WITH_WEBDAV" = "neon" -a "$with_system_neon" = no -a "$enable_openssl" = "no"; then
9959 AC_MSG_RESULT([yes])
9961 PKG_CHECK_MODULES(GNUTLS, [gnutls],,
9962 AC_MSG_ERROR([[Disabling OpenSSL was requested, but GNUTLS is not
9963 available in the system to use as replacement.]]))
9964 FilterLibs "${LIBGCRYPT_LIBS}"
9965 LIBGCRYPT_LIBS="${filteredlibs}"
9970 AC_SUBST([LIBGCRYPT_CFLAGS])
9971 AC_SUBST([LIBGCRYPT_LIBS])
9973 dnl ===================================================================
9974 dnl Check for system redland
9975 dnl ===================================================================
9976 dnl redland: versions before 1.0.8 write RDF/XML that is useless for ODF (@xml:base)
9977 dnl raptor2: need at least 2.0.7 for CVE-2012-0037
9978 libo_CHECK_SYSTEM_MODULE([redland],[REDLAND],[redland >= 1.0.8 raptor2 >= 2.0.7])
9979 if test "$with_system_redland" = "yes"; then
9980 AC_CHECK_LIB([rdf], [librdf_world_set_raptor_init_handler], [:],
9981 [AC_MSG_ERROR(librdf too old. Need >= 1.0.16)], [])
9987 AC_SUBST(RAPTOR_MAJOR)
9988 AC_SUBST(RASQAL_MAJOR)
9989 AC_SUBST(REDLAND_MAJOR)
9991 dnl ===================================================================
9992 dnl Check for system hunspell
9993 dnl ===================================================================
9994 AC_MSG_CHECKING([which libhunspell to use])
9995 if test "$with_system_hunspell" = "yes"; then
9996 AC_MSG_RESULT([external])
9997 SYSTEM_HUNSPELL=TRUE
9999 PKG_CHECK_MODULES(HUNSPELL, hunspell, HUNSPELL_PC="TRUE", HUNSPELL_PC="" )
10000 if test "$HUNSPELL_PC" != "TRUE"; then
10001 AC_CHECK_HEADER(hunspell.hxx, [],
10003 AC_CHECK_HEADER(hunspell/hunspell.hxx, [ HUNSPELL_CFLAGS=-I/usr/include/hunspell ],
10004 [AC_MSG_ERROR(hunspell headers not found.)], [])
10006 AC_CHECK_LIB([hunspell], [main], [:],
10007 [ AC_MSG_ERROR(hunspell library not found.) ], [])
10008 HUNSPELL_LIBS=-lhunspell
10011 HUNSPELL_CFLAGS=$(printf '%s' "$HUNSPELL_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10012 FilterLibs "${HUNSPELL_LIBS}"
10013 HUNSPELL_LIBS="${filteredlibs}"
10015 AC_MSG_RESULT([internal])
10017 HUNSPELL_CFLAGS="-I${WORKDIR}/UnpackedTarball/hunspell/src/hunspell"
10018 if test "$COM" = "MSC"; then
10019 HUNSPELL_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/hunspell.lib"
10021 HUNSPELL_LIBS="-L${WORKDIR}/UnpackedTarball/hunspell/src/hunspell/.libs -lhunspell-1.7"
10023 BUILD_TYPE="$BUILD_TYPE HUNSPELL"
10025 AC_SUBST(SYSTEM_HUNSPELL)
10026 AC_SUBST(HUNSPELL_CFLAGS)
10027 AC_SUBST(HUNSPELL_LIBS)
10029 dnl ===================================================================
10030 dnl Check for system qrcodegen
10031 dnl ===================================================================
10032 AC_MSG_CHECKING([which libqrcodegen to use])
10033 if test "$with_system_qrcodegen" = "yes"; then
10034 AC_MSG_RESULT([external])
10035 SYSTEM_QRCODEGEN=TRUE
10036 AC_LANG_PUSH([C++])
10037 AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
10038 [AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
10039 AC_CHECK_LIB([qrcodegencpp], [main], [:],
10040 [ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
10041 QRCODEGEN_LIBS=-lqrcodegencpp
10043 QRCODEGEN_CFLAGS=$(printf '%s' "$QRCODEGEN_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10044 FilterLibs "${QRCODEGEN_LIBS}"
10045 QRCODEGEN_LIBS="${filteredlibs}"
10047 AC_MSG_RESULT([internal])
10049 BUILD_TYPE="$BUILD_TYPE QRCODEGEN"
10051 AC_SUBST(SYSTEM_QRCODEGEN)
10052 AC_SUBST(QRCODEGEN_CFLAGS)
10053 AC_SUBST(QRCODEGEN_LIBS)
10055 dnl ===================================================================
10056 dnl Checking for altlinuxhyph
10057 dnl ===================================================================
10058 AC_MSG_CHECKING([which altlinuxhyph to use])
10059 if test "$with_system_altlinuxhyph" = "yes"; then
10060 AC_MSG_RESULT([external])
10062 AC_CHECK_HEADER(hyphen.h, [],
10063 [ AC_MSG_ERROR(altlinuxhyph headers not found.)], [])
10064 AC_CHECK_MEMBER(struct _HyphenDict.cset, [],
10065 [ AC_MSG_ERROR(no. You are sure you have altlinuyhyph headers?)],
10066 [#include <hyphen.h>])
10067 AC_CHECK_LIB(hyphen, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyphen],
10068 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10069 if test -z "$HYPHEN_LIB"; then
10070 AC_CHECK_LIB(hyph, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhyph],
10071 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10073 if test -z "$HYPHEN_LIB"; then
10074 AC_CHECK_LIB(hnj, hnj_hyphen_hyphenate2, [HYPHEN_LIB=-lhnj],
10075 [ AC_MSG_ERROR(altlinuxhyph library not found or too old.)], [])
10078 AC_MSG_RESULT([internal])
10080 BUILD_TYPE="$BUILD_TYPE HYPHEN"
10081 if test "$COM" = "MSC"; then
10082 HYPHEN_LIB="${WORKDIR}/LinkTarget/StaticLibrary/hyphen.lib"
10084 HYPHEN_LIB="-L${WORKDIR}/UnpackedTarball/hyphen/.libs -lhyphen"
10087 AC_SUBST(SYSTEM_HYPH)
10088 AC_SUBST(HYPHEN_LIB)
10090 dnl ===================================================================
10091 dnl Checking for mythes
10092 dnl ===================================================================
10093 AC_MSG_CHECKING([which mythes to use])
10094 if test "$with_system_mythes" = "yes"; then
10095 AC_MSG_RESULT([external])
10097 AC_LANG_PUSH([C++])
10098 PKG_CHECK_MODULES(MYTHES, mythes, MYTHES_PKGCONFIG=yes, MYTHES_PKGCONFIG=no)
10099 if test "$MYTHES_PKGCONFIG" = "no"; then
10100 AC_CHECK_HEADER(mythes.hxx, [],
10101 [ AC_MSG_ERROR(mythes.hxx headers not found.)], [])
10102 AC_CHECK_LIB([mythes-1.2], [main], [:],
10103 [ MYTHES_FOUND=no], [])
10104 if test "$MYTHES_FOUND" = "no"; then
10105 AC_CHECK_LIB(mythes, main, [MYTHES_FOUND=yes],
10106 [ MYTHES_FOUND=no], [])
10108 if test "$MYTHES_FOUND" = "no"; then
10109 AC_MSG_ERROR([mythes library not found!.])
10113 MYTHES_CFLAGS=$(printf '%s' "$MYTHES_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10114 FilterLibs "${MYTHES_LIBS}"
10115 MYTHES_LIBS="${filteredlibs}"
10117 AC_MSG_RESULT([internal])
10119 BUILD_TYPE="$BUILD_TYPE MYTHES"
10120 if test "$COM" = "MSC"; then
10121 MYTHES_LIBS="${WORKDIR}/LinkTarget/StaticLibrary/mythes.lib"
10123 MYTHES_LIBS="-L${WORKDIR}/UnpackedTarball/mythes/.libs -lmythes-1.2"
10126 AC_SUBST(SYSTEM_MYTHES)
10127 AC_SUBST(MYTHES_CFLAGS)
10128 AC_SUBST(MYTHES_LIBS)
10130 dnl ===================================================================
10131 dnl How should we build the linear programming solver ?
10132 dnl ===================================================================
10135 AC_MSG_CHECKING([whether to build with CoinMP])
10136 if test "$enable_coinmp" != "no"; then
10138 AC_MSG_RESULT([yes])
10139 if test "$with_system_coinmp" = "yes"; then
10141 PKG_CHECK_MODULES(COINMP, coinmp coinutils)
10142 FilterLibs "${COINMP_LIBS}"
10143 COINMP_LIBS="${filteredlibs}"
10145 BUILD_TYPE="$BUILD_TYPE COINMP"
10148 AC_MSG_RESULT([no])
10150 AC_SUBST(ENABLE_COINMP)
10151 AC_SUBST(SYSTEM_COINMP)
10152 AC_SUBST(COINMP_CFLAGS)
10153 AC_SUBST(COINMP_LIBS)
10156 AC_MSG_CHECKING([whether to build with lpsolve])
10157 if test "$enable_lpsolve" != "no"; then
10158 ENABLE_LPSOLVE=TRUE
10159 AC_MSG_RESULT([yes])
10161 AC_MSG_RESULT([no])
10163 AC_SUBST(ENABLE_LPSOLVE)
10165 if test "$ENABLE_LPSOLVE" = TRUE; then
10166 AC_MSG_CHECKING([which lpsolve to use])
10167 if test "$with_system_lpsolve" = "yes"; then
10168 AC_MSG_RESULT([external])
10169 SYSTEM_LPSOLVE=TRUE
10170 AC_CHECK_HEADER(lpsolve/lp_lib.h, [],
10171 [ AC_MSG_ERROR(lpsolve headers not found.)], [])
10173 # some systems need this. Like Ubuntu...
10174 AC_CHECK_LIB(m, floor)
10175 AC_CHECK_LIB(dl, dlopen)
10176 AC_CHECK_LIB([lpsolve55], [make_lp], [:],
10177 [ AC_MSG_ERROR(lpsolve library not found or too old.)], [])
10180 AC_MSG_RESULT([internal])
10182 BUILD_TYPE="$BUILD_TYPE LPSOLVE"
10185 AC_SUBST(SYSTEM_LPSOLVE)
10187 dnl ===================================================================
10188 dnl Checking for libexttextcat
10189 dnl ===================================================================
10190 libo_CHECK_SYSTEM_MODULE([libexttextcat],[LIBEXTTEXTCAT],[libexttextcat >= 3.4.1])
10191 if test "$with_system_libexttextcat" = "yes"; then
10192 SYSTEM_LIBEXTTEXTCAT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libexttextcat`
10194 AC_SUBST(SYSTEM_LIBEXTTEXTCAT_DATA)
10196 dnl ===================================================================
10197 dnl Checking for libnumbertext
10198 dnl ===================================================================
10199 AC_MSG_CHECKING([whether to use libnumbertext])
10200 if test "$enable_libnumbertext" = "no"; then
10201 AC_MSG_RESULT([no])
10202 ENABLE_LIBNUMBERTEXT=
10203 SYSTEM_LIBNUMBERTEXT=
10205 AC_MSG_RESULT([yes])
10206 ENABLE_LIBNUMBERTEXT=TRUE
10207 libo_CHECK_SYSTEM_MODULE([libnumbertext],[LIBNUMBERTEXT],[libnumbertext >= 1.0.0])
10208 if test "$with_system_libnumbertext" = "yes"; then
10209 SYSTEM_LIBNUMBERTEXT_DATA=file://`$PKG_CONFIG --variable=pkgdatadir libnumbertext`
10210 SYSTEM_LIBNUMBERTEXT=YES
10212 SYSTEM_LIBNUMBERTEXT=
10213 AC_LANG_PUSH([C++])
10214 save_CPPFLAGS=$CPPFLAGS
10215 CPPFLAGS="$CPPFLAGS $CXXFLAGS_CXX11"
10216 AC_CHECK_HEADERS([codecvt regex])
10217 AS_IF([test "x$ac_cv_header_codecvt" != xyes -o "x$ac_cv_header_regex" != xyes],
10218 [ ENABLE_LIBNUMBERTEXT=''
10219 LIBNUMBERTEXT_CFLAGS=''
10220 AC_MSG_WARN([No system-provided libnumbertext or codecvt/regex C++11 headers (min. libstdc++ 4.9).
10221 Enable libnumbertext fallback (missing number to number name conversion).])
10223 CPPFLAGS=$save_CPPFLAGS
10226 if test "$ENABLE_LIBNUMBERTEXT" = TRUE; then
10227 AC_DEFINE(ENABLE_LIBNUMBERTEXT)
10230 AC_SUBST(SYSTEM_LIBNUMBERTEXT)
10231 AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
10232 AC_SUBST(ENABLE_LIBNUMBERTEXT)
10233 AC_SUBST(LIBNUMBERTEXT_CFLAGS)
10235 dnl ***************************************
10236 dnl testing libc version for Linux...
10237 dnl ***************************************
10238 if test "$_os" = "Linux"; then
10239 AC_MSG_CHECKING([whether libc is >= 2.1.1])
10240 exec 6>/dev/null # no output
10241 AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
10242 exec 6>&1 # output on again
10243 if test "$HAVE_LIBC"; then
10244 AC_MSG_RESULT([yes])
10246 AC_MSG_ERROR([no, upgrade libc])
10250 dnl =========================================
10251 dnl Check for uuidgen
10252 dnl =========================================
10253 if test "$_os" = "WINNT" -a "$cross_compiling" != "yes"; then
10254 # presence is already tested above in the WINDOWS_SDK_HOME check
10255 UUIDGEN=uuidgen.exe
10258 AC_PATH_PROG([UUIDGEN], [uuidgen])
10259 if test -z "$UUIDGEN"; then
10260 AC_MSG_WARN([uuid is needed for building installation sets])
10264 dnl ***************************************
10265 dnl Checking for bison and flex
10266 dnl ***************************************
10267 AC_PATH_PROG(BISON, bison)
10268 if test -z "$BISON"; then
10269 AC_MSG_ERROR([no bison found in \$PATH, install it])
10271 AC_MSG_CHECKING([the bison version])
10272 _bison_version=`$BISON --version | grep GNU | $SED -e 's@^[[^0-9]]*@@' -e 's@ .*@@' -e 's@,.*@@'`
10273 _bison_longver=`echo $_bison_version | $AWK -F. '{ print \$1*1000+\$2}'`
10274 # Accept newer than 2.0
10275 if test "$_bison_longver" -lt 2000; then
10276 AC_MSG_ERROR([failed ($BISON $_bison_version need 2.0+)])
10280 AC_PATH_PROG(FLEX, flex)
10281 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
10282 FLEX=`cygpath -m $FLEX`
10284 if test -z "$FLEX"; then
10285 AC_MSG_ERROR([no flex found in \$PATH, install it])
10287 AC_MSG_CHECKING([the flex version])
10288 _flex_version=$($FLEX --version | $SED -e 's/^.*\([[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\.[[[:digit:]]]\{1,\}\).*$/\1/')
10289 if test $(echo $_flex_version | $AWK -F. '{printf("%d%03d%03d", $1, $2, $3)}') -lt 2006000; then
10290 AC_MSG_ERROR([failed ($FLEX $_flex_version found, but need at least 2.6.0)])
10294 dnl ***************************************
10295 dnl Checking for patch
10296 dnl ***************************************
10297 AC_PATH_PROG(PATCH, patch)
10298 if test -z "$PATCH"; then
10299 AC_MSG_ERROR(["patch" not found in \$PATH, install it])
10302 dnl On Solaris, FreeBSD or macOS, check if --with-gnu-patch was used
10303 if test "$_os" = "SunOS" -o "$_os" = "FreeBSD" -o "$_os" = "Darwin"; then
10304 if test -z "$with_gnu_patch"; then
10307 if test -x "$with_gnu_patch"; then
10308 GNUPATCH=$with_gnu_patch
10310 AC_MSG_ERROR([--with-gnu-patch did not point to an executable])
10314 AC_MSG_CHECKING([whether $GNUPATCH is GNU patch])
10315 if $GNUPATCH --version | grep "Free Software Foundation" >/dev/null 2>/dev/null; then
10316 AC_MSG_RESULT([yes])
10318 AC_MSG_ERROR([no, GNU patch needed. install or specify with --with-gnu-patch=/path/to/it])
10324 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
10325 GNUPATCH=`cygpath -m $GNUPATCH`
10328 dnl We also need to check for --with-gnu-cp
10330 if test -z "$with_gnu_cp"; then
10331 # check the place where the good stuff is hidden on Solaris...
10332 if test -x /usr/gnu/bin/cp; then
10333 GNUCP=/usr/gnu/bin/cp
10335 AC_PATH_PROGS(GNUCP, gnucp cp)
10337 if test -z $GNUCP; then
10338 AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it])
10341 if test -x "$with_gnu_cp"; then
10344 AC_MSG_ERROR([--with-gnu-cp did not point to an executable])
10348 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
10349 GNUCP=`cygpath -m $GNUCP`
10352 AC_MSG_CHECKING([whether $GNUCP is GNU cp from coreutils with preserve= support])
10353 if $GNUCP --version 2>/dev/null | grep "coreutils" >/dev/null 2>/dev/null; then
10354 AC_MSG_RESULT([yes])
10355 elif $GNUCP --version 2>/dev/null | grep "GNU fileutils" >/dev/null 2>/dev/null; then
10356 AC_MSG_RESULT([yes])
10358 case "$build_os" in
10359 darwin*|netbsd*|openbsd*|freebsd*|dragonfly*|aix*)
10362 AC_MSG_RESULT([no gnucp found - using the system's cp command])
10365 AC_MSG_ERROR([no, GNU cp needed. install or specify with --with-gnu-cp=/path/to/it])
10374 dnl ***************************************
10375 dnl testing assembler path
10376 dnl ***************************************
10378 if test "$_os" = "WINNT"; then
10379 if test "$BITNESS_OVERRIDE" = ""; then
10385 AC_MSG_CHECKING([for the MSVC assembler ($assembler)])
10386 if test -f "$CL_PATH/$assembler"; then
10387 ML_EXE=`win_short_path_for_make "$CL_PATH/$assembler"`
10388 AC_MSG_RESULT([$ML_EXE])
10390 AC_MSG_ERROR([not found])
10396 dnl ===================================================================
10397 dnl We need zip and unzip
10398 dnl ===================================================================
10399 AC_PATH_PROG(ZIP, zip)
10400 test -z "$ZIP" && AC_MSG_ERROR([zip is required])
10401 if ! "$ZIP" --filesync < /dev/null 2>/dev/null > /dev/null; then
10402 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],,)
10405 AC_PATH_PROG(UNZIP, unzip)
10406 test -z "$UNZIP" && AC_MSG_ERROR([unzip is required])
10408 dnl ===================================================================
10409 dnl Zip must be a specific type for different build types.
10410 dnl ===================================================================
10411 if test $build_os = cygwin; then
10412 if test -n "`$ZIP -h | $GREP -i WinNT`"; then
10413 AC_MSG_ERROR([$ZIP is not the required Cygwin version of Info-ZIP's zip.exe.])
10417 dnl ===================================================================
10418 dnl We need touch with -h option support.
10419 dnl ===================================================================
10420 AC_PATH_PROG(TOUCH, touch)
10421 test -z "$TOUCH" && AC_MSG_ERROR([touch is required])
10423 if ! "$TOUCH" -h warn 2>/dev/null > /dev/null; then
10424 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],,)
10427 dnl ===================================================================
10428 dnl Check for system epoxy
10429 dnl ===================================================================
10430 libo_CHECK_SYSTEM_MODULE([epoxy], [EPOXY], [epoxy >= 1.2], ["-I${WORKDIR}/UnpackedTarball/epoxy/include"])
10432 dnl ===================================================================
10433 dnl Set vcl option: coordinate device in double or sal_Int32
10434 dnl ===================================================================
10436 dnl disabled for now, we don't want subtle differences between OSs
10437 dnl AC_MSG_CHECKING([Type to use for Device Pixel coordinates])
10438 dnl if test "$_os" = "Darwin" -o $_os = iOS ; then
10439 dnl AC_DEFINE(VCL_FLOAT_DEVICE_PIXEL)
10440 dnl AC_MSG_RESULT([double])
10442 dnl AC_MSG_RESULT([sal_Int32])
10445 dnl ===================================================================
10446 dnl Test which vclplugs have to be built.
10447 dnl ===================================================================
10449 if test "$USING_X11" != TRUE; then
10455 if test "x$enable_gtk3" = "xyes"; then
10456 if test "$with_system_cairo" = no; then
10457 AC_MSG_ERROR([System cairo required for gtk3 support, do not combine --enable-gtk3 with --without-system-cairo])
10459 : ${with_system_cairo:=yes}
10460 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="")
10461 if test "x$ENABLE_GTK3" = "xTRUE"; then
10462 AC_DEFINE(ENABLE_GTK3)
10465 AC_MSG_ERROR([gtk3 or dependent libraries of the correct versions, not found])
10467 GTK3_CFLAGS=$(printf '%s' "$GTK3_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10468 FilterLibs "${GTK3_LIBS}"
10469 GTK3_LIBS="${filteredlibs}"
10471 dnl We require egl only for the gtk3 plugin. Otherwise we use glx.
10472 if test "$with_system_epoxy" != "yes"; then
10473 AC_CHECK_LIB(EGL, eglMakeCurrent, [:], AC_MSG_ERROR([libEGL required.]))
10474 AC_CHECK_HEADER(EGL/eglplatform.h, [],
10475 [AC_MSG_ERROR(EGL headers not found. install mesa-libEGL-devel)], [])
10478 AC_SUBST(GTK3_LIBS)
10479 AC_SUBST(GTK3_CFLAGS)
10480 AC_SUBST(ENABLE_GTK3)
10482 if test "$enable_introspection" = yes; then
10483 if test "$ENABLE_GTK3" = TRUE; then
10484 GOBJECT_INTROSPECTION_REQUIRE(INTROSPECTION_REQUIRED_VERSION)
10486 AC_MSG_ERROR([--enable-introspection requires --enable-gtk3])
10491 if test "x$enable_qt5" = "xyes"; then
10493 AC_DEFINE(ENABLE_QT5)
10496 AC_SUBST(ENABLE_QT5)
10499 if test "x$enable_kf5" = "xyes"; then
10501 AC_DEFINE(ENABLE_KF5)
10504 AC_SUBST(ENABLE_KF5)
10506 ENABLE_GTK3_KDE5=""
10507 if test "x$enable_gtk3_kde5" = "xyes"; then
10508 ENABLE_GTK3_KDE5="TRUE"
10509 AC_DEFINE(ENABLE_GTK3_KDE5)
10512 AC_SUBST(ENABLE_GTK3_KDE5)
10514 if test "$_os" = "WINNT"; then
10516 elif test "$_os" = "Darwin"; then
10518 elif test "$_os" = "iOS"; then
10522 build_vcl_plugins="$R"
10523 if test -z "$build_vcl_plugins"; then
10524 build_vcl_plugins="none"
10526 AC_MSG_NOTICE([VCLplugs to be built: $build_vcl_plugins])
10528 dnl ===================================================================
10529 dnl check for dbus support
10530 dnl ===================================================================
10534 DBUS_GLIB_CFLAGS=""
10538 if test "$enable_dbus" = "no"; then
10542 AC_MSG_CHECKING([whether to enable DBUS support])
10543 if test "$test_dbus" = "yes"; then
10545 AC_MSG_RESULT([yes])
10546 PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.60)
10547 AC_DEFINE(ENABLE_DBUS)
10548 DBUS_CFLAGS=$(printf '%s' "$DBUS_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10549 FilterLibs "${DBUS_LIBS}"
10550 DBUS_LIBS="${filteredlibs}"
10552 # Glib is needed for BluetoothServer
10553 # Sets also DBUS_GLIB_CFLAGS/DBUS_GLIB_LIBS if successful.
10554 PKG_CHECK_MODULES(DBUS_GLIB,[glib-2.0 >= 2.4],
10556 DBUS_HAVE_GLIB="TRUE"
10557 AC_DEFINE(DBUS_HAVE_GLIB,1)
10559 AC_MSG_WARN([[No Glib found, Bluetooth support will be disabled]])
10562 AC_MSG_RESULT([no])
10565 AC_SUBST(ENABLE_DBUS)
10566 AC_SUBST(DBUS_CFLAGS)
10567 AC_SUBST(DBUS_LIBS)
10568 AC_SUBST(DBUS_GLIB_CFLAGS)
10569 AC_SUBST(DBUS_GLIB_LIBS)
10570 AC_SUBST(DBUS_HAVE_GLIB)
10572 AC_MSG_CHECKING([whether to enable Impress remote control])
10573 if test -n "$enable_sdremote" -a "$enable_sdremote" != "no"; then
10574 AC_MSG_RESULT([yes])
10575 ENABLE_SDREMOTE=TRUE
10576 AC_MSG_CHECKING([whether to enable Bluetooth support in Impress remote control])
10578 if test $OS = MACOSX && test "$MAC_OS_X_VERSION_MAX_ALLOWED" -ge 101500; then
10579 # The Bluetooth code doesn't compile with macOS SDK 10.15
10580 enable_sdremote_bluetooth=no
10582 # If not explicitly enabled or disabled, default
10583 if test -z "$enable_sdremote_bluetooth"; then
10586 # Default to yes for these
10587 enable_sdremote_bluetooth=yes
10591 enable_sdremote_bluetooth=no
10595 # $enable_sdremote_bluetooth is guaranteed non-empty now
10597 if test "$enable_sdremote_bluetooth" != "no"; then
10598 if test "$OS" = "LINUX"; then
10599 if test "$ENABLE_DBUS" = "TRUE" -a "$DBUS_HAVE_GLIB" = "TRUE"; then
10600 AC_MSG_RESULT([yes])
10601 ENABLE_SDREMOTE_BLUETOOTH=TRUE
10602 dnl ===================================================================
10603 dnl Check for system bluez
10604 dnl ===================================================================
10605 AC_MSG_CHECKING([which Bluetooth header to use])
10606 if test "$with_system_bluez" = "yes"; then
10607 AC_MSG_RESULT([external])
10608 AC_CHECK_HEADER(bluetooth/bluetooth.h, [],
10609 [AC_MSG_ERROR(bluetooth.h not found. install bluez)], [])
10612 AC_MSG_RESULT([internal])
10616 AC_MSG_RESULT([no, dbus disabled])
10617 ENABLE_SDREMOTE_BLUETOOTH=
10621 AC_MSG_RESULT([yes])
10622 ENABLE_SDREMOTE_BLUETOOTH=TRUE
10626 AC_MSG_RESULT([no])
10627 ENABLE_SDREMOTE_BLUETOOTH=
10633 AC_MSG_RESULT([no])
10635 AC_SUBST(ENABLE_SDREMOTE)
10636 AC_SUBST(ENABLE_SDREMOTE_BLUETOOTH)
10637 AC_SUBST(SYSTEM_BLUEZ)
10639 dnl ===================================================================
10640 dnl Check whether to enable GIO support
10641 dnl ===================================================================
10642 if test "$ENABLE_GTK3" = "TRUE"; then
10643 AC_MSG_CHECKING([whether to enable GIO support])
10644 if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_gio" = "yes"; then
10645 dnl Need at least 2.26 for the dbus support.
10646 PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26],
10647 [ENABLE_GIO="TRUE"], [ENABLE_GIO=""])
10648 if test "$ENABLE_GIO" = "TRUE"; then
10649 AC_DEFINE(ENABLE_GIO)
10650 GIO_CFLAGS=$(printf '%s' "$GIO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10651 FilterLibs "${GIO_LIBS}"
10652 GIO_LIBS="${filteredlibs}"
10655 AC_MSG_RESULT([no])
10658 AC_SUBST(ENABLE_GIO)
10659 AC_SUBST(GIO_CFLAGS)
10663 dnl ===================================================================
10665 SPLIT_APP_MODULES=""
10666 if test "$enable_split_app_modules" = "yes"; then
10667 SPLIT_APP_MODULES="TRUE"
10669 AC_SUBST(SPLIT_APP_MODULES)
10671 SPLIT_OPT_FEATURES=""
10672 if test "$enable_split_opt_features" = "yes"; then
10673 SPLIT_OPT_FEATURES="TRUE"
10675 AC_SUBST(SPLIT_OPT_FEATURES)
10677 if test $_os = Darwin -o $_os = WINNT -o $_os = iOS; then
10678 if test "$enable_cairo_canvas" = yes; then
10679 AC_MSG_ERROR([The cairo canvas should not be used for this platform])
10681 enable_cairo_canvas=no
10682 elif test -z "$enable_cairo_canvas"; then
10683 enable_cairo_canvas=yes
10686 ENABLE_CAIRO_CANVAS=""
10687 if test "$enable_cairo_canvas" = "yes"; then
10689 ENABLE_CAIRO_CANVAS="TRUE"
10690 AC_DEFINE(ENABLE_CAIRO_CANVAS)
10692 AC_SUBST(ENABLE_CAIRO_CANVAS)
10694 dnl ===================================================================
10695 dnl Check whether the GStreamer libraries are available.
10696 dnl ===================================================================
10698 ENABLE_GSTREAMER_1_0=""
10700 if test "$build_gstreamer_1_0" = "yes"; then
10702 AC_MSG_CHECKING([whether to enable the GStreamer 1.0 avmedia backend])
10703 if test "$enable_avmedia" = yes -a "$enable_gstreamer_1_0" != no; then
10704 ENABLE_GSTREAMER_1_0="TRUE"
10705 AC_MSG_RESULT([yes])
10706 PKG_CHECK_MODULES( [GSTREAMER_1_0], [gstreamer-1.0 gstreamer-plugins-base-1.0 gstreamer-pbutils-1.0 gstreamer-video-1.0] )
10707 GSTREAMER_1_0_CFLAGS=$(printf '%s' "$GSTREAMER_1_0_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10708 FilterLibs "${GSTREAMER_1_0_LIBS}"
10709 GSTREAMER_1_0_LIBS="${filteredlibs}"
10710 AC_DEFINE(ENABLE_GSTREAMER_1_0)
10712 AC_MSG_RESULT([no])
10715 AC_SUBST(GSTREAMER_1_0_CFLAGS)
10716 AC_SUBST(GSTREAMER_1_0_LIBS)
10717 AC_SUBST(ENABLE_GSTREAMER_1_0)
10719 dnl ===================================================================
10720 dnl Check whether to build the VLC avmedia backend
10721 dnl ===================================================================
10725 AC_MSG_CHECKING([whether to enable the VLC avmedia backend])
10726 if test "$enable_avmedia" = yes -a $_os != iOS -a $_os != Android -a "$enable_vlc" = yes; then
10728 AC_MSG_RESULT([yes])
10730 AC_MSG_RESULT([no])
10732 AC_SUBST(ENABLE_VLC)
10734 ENABLE_OPENGL_TRANSITIONS=
10735 ENABLE_OPENGL_CANVAS=
10736 if test $_os = iOS -o $_os = Android -o "$ENABLE_FUZZERS" = "TRUE"; then
10738 elif test "$_os" = "Darwin"; then
10739 # We use frameworks on macOS, no need for detail checks
10740 ENABLE_OPENGL_TRANSITIONS=TRUE
10741 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
10742 ENABLE_OPENGL_CANVAS=TRUE
10743 elif test $_os = WINNT; then
10744 ENABLE_OPENGL_TRANSITIONS=TRUE
10745 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
10746 ENABLE_OPENGL_CANVAS=TRUE
10748 if test "$USING_X11" = TRUE; then
10749 AC_CHECK_LIB(GL, glBegin, [:], AC_MSG_ERROR([libGL required.]))
10750 ENABLE_OPENGL_TRANSITIONS=TRUE
10751 AC_DEFINE(HAVE_FEATURE_OPENGL,1)
10752 ENABLE_OPENGL_CANVAS=TRUE
10756 AC_SUBST(ENABLE_OPENGL_TRANSITIONS)
10757 AC_SUBST(ENABLE_OPENGL_CANVAS)
10759 dnl =================================================
10760 dnl Check whether to build with OpenCL support.
10761 dnl =================================================
10763 if test $_os != iOS -a $_os != Android -a "$ENABLE_FUZZERS" != "TRUE"; then
10764 # OPENCL in BUILD_TYPE and HAVE_FEATURE_OPENCL tell that OpenCL is potentially available on the
10765 # platform (optional at run-time, used through clew).
10766 BUILD_TYPE="$BUILD_TYPE OPENCL"
10767 AC_DEFINE(HAVE_FEATURE_OPENCL)
10770 dnl =================================================
10771 dnl Check whether to build with dconf support.
10772 dnl =================================================
10774 if test $_os != Android -a $_os != iOS -a "$enable_dconf" != no; then
10775 PKG_CHECK_MODULES([DCONF], [dconf >= 0.15.2], [], [
10776 if test "$enable_dconf" = yes; then
10777 AC_MSG_ERROR([dconf not found])
10782 AC_MSG_CHECKING([whether to enable dconf])
10783 if test $_os = Android -o $_os = iOS -o "$enable_dconf" = no; then
10787 AC_MSG_RESULT([no])
10790 AC_DEFINE(ENABLE_DCONF)
10791 AC_MSG_RESULT([yes])
10793 AC_SUBST([DCONF_CFLAGS])
10794 AC_SUBST([DCONF_LIBS])
10795 AC_SUBST([ENABLE_DCONF])
10798 AC_MSG_CHECKING([whether to build the PDF import feature])
10800 if test $_os != Android -a $_os != iOS -a \( -z "$enable_pdfimport" -o "$enable_pdfimport" = yes \); then
10801 AC_MSG_RESULT([yes])
10802 ENABLE_PDFIMPORT=TRUE
10803 AC_DEFINE(HAVE_FEATURE_PDFIMPORT)
10805 AC_MSG_RESULT([no])
10809 AC_MSG_CHECKING([whether to build PDFium])
10811 if test \( -z "$enable_pdfium" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_pdfium" = yes; then
10812 AC_MSG_RESULT([yes])
10814 AC_DEFINE(HAVE_FEATURE_PDFIUM)
10815 BUILD_TYPE="$BUILD_TYPE PDFIUM"
10817 AC_MSG_RESULT([no])
10819 AC_SUBST(ENABLE_PDFIUM)
10821 dnl ===================================================================
10822 dnl Check for poppler
10823 dnl ===================================================================
10825 AC_MSG_CHECKING([whether to build Poppler])
10826 if test \( -z "$enable_poppler" -a "$ENABLE_PDFIMPORT" = "TRUE" \) -o "$enable_poppler" = yes; then
10827 AC_MSG_RESULT([yes])
10828 ENABLE_POPPLER=TRUE
10829 AC_DEFINE(HAVE_FEATURE_POPPLER)
10831 AC_MSG_RESULT([no])
10833 AC_SUBST(ENABLE_POPPLER)
10835 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" != "TRUE" -a "$ENABLE_PDFIUM" != "TRUE"; then
10836 AC_MSG_ERROR([Cannot import PDF without either Pdfium or Poppler; please enable either of them.])
10839 if test "$ENABLE_PDFIMPORT" != "TRUE" -a \( "$ENABLE_POPPLER" = "TRUE" -o "$ENABLE_PDFIUM" = "TRUE" \); then
10840 AC_MSG_ERROR([Cannot enable Pdfium or Poppler when PDF importing is disabled; please enable PDF import first.])
10843 if test "$ENABLE_PDFIMPORT" = "TRUE" -a "$ENABLE_POPPLER" = "TRUE"; then
10844 dnl ===================================================================
10845 dnl Check for system poppler
10846 dnl ===================================================================
10847 AC_MSG_CHECKING([which PDF import poppler to use])
10848 if test "$with_system_poppler" = "yes"; then
10849 AC_MSG_RESULT([external])
10850 SYSTEM_POPPLER=TRUE
10851 PKG_CHECK_MODULES( POPPLER, poppler >= 0.12.0 )
10852 AC_LANG_PUSH([C++])
10853 save_CXXFLAGS=$CXXFLAGS
10854 save_CPPFLAGS=$CPPFLAGS
10855 CXXFLAGS="$CXXFLAGS $POPPLER_CFLAGS"
10856 CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS"
10857 AC_CHECK_HEADER([cpp/poppler-version.h],
10858 [AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)],
10860 CXXFLAGS=$save_CXXFLAGS
10861 CPPFLAGS=$save_CPPFLAGS
10863 POPPLER_CFLAGS=$(printf '%s' "$POPPLER_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
10865 FilterLibs "${POPPLER_LIBS}"
10866 POPPLER_LIBS="${filteredlibs}"
10868 AC_MSG_RESULT([internal])
10870 BUILD_TYPE="$BUILD_TYPE POPPLER"
10871 AC_DEFINE([HAVE_POPPLER_VERSION_H], 1)
10873 AC_DEFINE([ENABLE_PDFIMPORT],1)
10875 AC_SUBST(ENABLE_PDFIMPORT)
10876 AC_SUBST(SYSTEM_POPPLER)
10877 AC_SUBST(POPPLER_CFLAGS)
10878 AC_SUBST(POPPLER_LIBS)
10882 if test "$build_for_ios" = "YES"; then
10883 AC_MSG_CHECKING([whether gpgmepp should be disabled due to iOS])
10884 AC_MSG_RESULT([yes])
10885 elif test "$enable_mpl_subset" = "yes"; then
10886 AC_MSG_CHECKING([whether gpgmepp should be disabled due to building just MPL])
10887 AC_MSG_RESULT([yes])
10888 elif test "$enable_fuzzers" = "yes"; then
10889 AC_MSG_CHECKING([whether gpgmepp should be disabled due to oss-fuzz])
10890 AC_MSG_RESULT([yes])
10891 elif test "$_os" = "Linux" -o "$_os" = "Darwin" -o "$_os" = "WINNT" ; then
10892 dnl ===================================================================
10893 dnl Check for system gpgme
10894 dnl ===================================================================
10895 AC_MSG_CHECKING([which gpgmepp to use])
10896 if test "$with_system_gpgmepp" = "yes"; then
10897 AC_MSG_RESULT([external])
10898 SYSTEM_GPGMEPP=TRUE
10900 # C++ library doesn't come with fancy gpgmepp-config, check for headers the old-fashioned way
10901 AC_CHECK_HEADER(gpgme++/gpgmepp_version.h, [ GPGMEPP_CFLAGS=-I/usr/include/gpgme++ ],
10902 [AC_MSG_ERROR([gpgmepp headers not found, install gpgmepp development package])], [])
10903 # progress_callback is the only func with plain C linkage
10904 # checking for it also filters out older, KDE-dependent libgpgmepp versions
10905 AC_CHECK_LIB(gpgmepp, progress_callback, [ GPGMEPP_LIBS=-lgpgmepp ],
10906 [AC_MSG_ERROR(gpgmepp not found or not functional)], [])
10907 AC_CHECK_HEADER(gpgme.h, [],
10908 [AC_MSG_ERROR([gpgme headers not found, install gpgme development package])], [])
10910 AC_MSG_RESULT([internal])
10911 BUILD_TYPE="$BUILD_TYPE LIBGPGERROR LIBASSUAN GPGMEPP"
10912 AC_DEFINE([GPGME_CAN_EXPORT_MINIMAL_KEY])
10914 GPG_ERROR_CFLAGS="-I${WORKDIR}/UnpackedTarball/libgpg-error/src"
10915 LIBASSUAN_CFLAGS="-I${WORKDIR}/UnpackedTarball/libassuan/src"
10916 if test "$_os" != "WINNT"; then
10917 GPG_ERROR_LIBS="-L${WORKDIR}/UnpackedTarball/libgpg-error/src/.libs -lgpg-error"
10918 LIBASSUAN_LIBS="-L${WORKDIR}/UnpackedTarball/libassuan/src/.libs -lassuan"
10919 elif test "$host_cpu" = "i686" -a "$WINDOWS_SDK_ARCH" = "x64"; then
10920 AC_MSG_ERROR(gpgme cannot be built on cygwin32 for Win64.)
10923 ENABLE_GPGMEPP=TRUE
10924 AC_DEFINE([HAVE_FEATURE_GPGME])
10925 AC_PATH_PROG(GPG, gpg)
10926 # TODO: Windows's cygwin gpg does not seem to work with our gpgme,
10927 # so let's exclude that manually for the moment
10928 if test -n "$GPG" -a "$_os" != "WINNT"; then
10929 # make sure we not only have a working gpgme, but a full working
10930 # gpg installation to run OpenPGP signature verification
10931 AC_DEFINE([HAVE_FEATURE_GPGVERIFY])
10933 if test "$_os" = "Linux"; then
10935 AC_MSG_CHECKING([for /run/user/$uid])
10936 if test -d /run/user/$uid; then
10937 AC_MSG_RESULT([yes])
10938 AC_PATH_PROG(GPGCONF, gpgconf)
10940 # Older versions of gpgconf are not working as expected, since
10941 # `gpgconf --remove-socketdir` fails to exit any gpg-agent daemon operating
10942 # on that socket dir that has (indirectly) been started by the tests in xmlsecurity/qa/unit/signing/signing.cxx
10943 # (see commit message of f0305ec0a7d199e605511844d9d6af98b66d4bfd%5E )
10944 AC_MSG_CHECKING([whether version of gpgconf is suitable ... ])
10945 GPGCONF_VERSION=`"$GPGCONF" --version | "$AWK" '/^gpgconf \(GnuPG\)/{print $3}'`
10946 GPGCONF_NUMVER=`echo $GPGCONF_VERSION | $AWK -F. '{ print \$1*10000+\$2*100+\$3 }'`
10947 if test "$GPGCONF_VERSION" = "2.2_OOo" -o "$GPGCONF_NUMVER" -ge "020200"; then
10948 AC_MSG_RESULT([yes, $GPGCONF_VERSION])
10949 AC_MSG_CHECKING([for gpgconf --create-socketdir... ])
10950 if $GPGCONF --dump-options > /dev/null ; then
10951 if $GPGCONF --dump-options | grep -q create-socketdir ; then
10952 AC_MSG_RESULT([yes])
10953 AC_DEFINE([HAVE_GPGCONF_SOCKETDIR])
10954 AC_DEFINE_UNQUOTED([GPGME_GPGCONF], ["$GPGCONF"])
10956 AC_MSG_RESULT([no])
10959 AC_MSG_RESULT([no. missing or broken gpgconf?])
10962 AC_MSG_RESULT([no, $GPGCONF_VERSION])
10965 AC_MSG_RESULT([no])
10969 AC_SUBST(ENABLE_GPGMEPP)
10970 AC_SUBST(SYSTEM_GPGMEPP)
10971 AC_SUBST(GPG_ERROR_CFLAGS)
10972 AC_SUBST(GPG_ERROR_LIBS)
10973 AC_SUBST(LIBASSUAN_CFLAGS)
10974 AC_SUBST(LIBASSUAN_LIBS)
10975 AC_SUBST(GPGMEPP_CFLAGS)
10976 AC_SUBST(GPGMEPP_LIBS)
10978 AC_MSG_CHECKING([whether to build the Wiki Publisher extension])
10979 if test "x$enable_ext_wiki_publisher" = "xyes" -a "x$enable_extension_integration" != "xno" -a "$with_java" != "no"; then
10980 AC_MSG_RESULT([yes])
10981 ENABLE_MEDIAWIKI=TRUE
10982 BUILD_TYPE="$BUILD_TYPE XSLTML"
10983 if test "x$with_java" = "xno"; then
10984 AC_MSG_ERROR([Wiki Publisher requires Java! Enable Java if you want to build it.])
10987 AC_MSG_RESULT([no])
10989 SCPDEFS="$SCPDEFS -DWITHOUT_EXTENSION_MEDIAWIKI"
10991 AC_SUBST(ENABLE_MEDIAWIKI)
10993 AC_MSG_CHECKING([whether to build the Report Builder])
10994 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
10995 AC_MSG_RESULT([yes])
10996 ENABLE_REPORTBUILDER=TRUE
10997 AC_MSG_CHECKING([which jfreereport libs to use])
10998 if test "$with_system_jfreereport" = "yes"; then
10999 SYSTEM_JFREEREPORT=TRUE
11000 AC_MSG_RESULT([external])
11001 if test -z $SAC_JAR; then
11002 SAC_JAR=/usr/share/java/sac.jar
11004 if ! test -f $SAC_JAR; then
11005 AC_MSG_ERROR(sac.jar not found.)
11008 if test -z $LIBXML_JAR; then
11009 if test -f /usr/share/java/libxml-1.0.0.jar; then
11010 LIBXML_JAR=/usr/share/java/libxml-1.0.0.jar
11011 elif test -f /usr/share/java/libxml.jar; then
11012 LIBXML_JAR=/usr/share/java/libxml.jar
11014 AC_MSG_ERROR(libxml.jar replacement not found.)
11016 elif ! test -f $LIBXML_JAR; then
11017 AC_MSG_ERROR(libxml.jar not found.)
11020 if test -z $FLUTE_JAR; then
11021 if test -f/usr/share/java/flute-1.3.0.jar; then
11022 FLUTE_JAR=/usr/share/java/flute-1.3.0.jar
11023 elif test -f /usr/share/java/flute.jar; then
11024 FLUTE_JAR=/usr/share/java/flute.jar
11026 AC_MSG_ERROR(flute-1.3.0.jar replacement not found.)
11028 elif ! test -f $FLUTE_JAR; then
11029 AC_MSG_ERROR(flute-1.3.0.jar not found.)
11032 if test -z $JFREEREPORT_JAR; then
11033 if test -f /usr/share/java/flow-engine-0.9.2.jar; then
11034 JFREEREPORT_JAR=/usr/share/java/flow-engine-0.9.2.jar
11035 elif test -f /usr/share/java/flow-engine.jar; then
11036 JFREEREPORT_JAR=/usr/share/java/flow-engine.jar
11038 AC_MSG_ERROR(jfreereport.jar replacement not found.)
11040 elif ! test -f $JFREEREPORT_JAR; then
11041 AC_MSG_ERROR(jfreereport.jar not found.)
11044 if test -z $LIBLAYOUT_JAR; then
11045 if test -f /usr/share/java/liblayout-0.2.9.jar; then
11046 LIBLAYOUT_JAR=/usr/share/java/liblayout-0.2.9.jar
11047 elif test -f /usr/share/java/liblayout.jar; then
11048 LIBLAYOUT_JAR=/usr/share/java/liblayout.jar
11050 AC_MSG_ERROR(liblayout.jar replacement not found.)
11052 elif ! test -f $LIBLAYOUT_JAR; then
11053 AC_MSG_ERROR(liblayout.jar not found.)
11056 if test -z $LIBLOADER_JAR; then
11057 if test -f /usr/share/java/libloader-1.0.0.jar; then
11058 LIBLOADER_JAR=/usr/share/java/libloader-1.0.0.jar
11059 elif test -f /usr/share/java/libloader.jar; then
11060 LIBLOADER_JAR=/usr/share/java/libloader.jar
11062 AC_MSG_ERROR(libloader.jar replacement not found.)
11064 elif ! test -f $LIBLOADER_JAR; then
11065 AC_MSG_ERROR(libloader.jar not found.)
11068 if test -z $LIBFORMULA_JAR; then
11069 if test -f /usr/share/java/libformula-0.2.0.jar; then
11070 LIBFORMULA_JAR=/usr/share/java/libformula-0.2.0.jar
11071 elif test -f /usr/share/java/libformula.jar; then
11072 LIBFORMULA_JAR=/usr/share/java/libformula.jar
11074 AC_MSG_ERROR(libformula.jar replacement not found.)
11076 elif ! test -f $LIBFORMULA_JAR; then
11077 AC_MSG_ERROR(libformula.jar not found.)
11080 if test -z $LIBREPOSITORY_JAR; then
11081 if test -f /usr/share/java/librepository-1.0.0.jar; then
11082 LIBREPOSITORY_JAR=/usr/share/java/librepository-1.0.0.jar
11083 elif test -f /usr/share/java/librepository.jar; then
11084 LIBREPOSITORY_JAR=/usr/share/java/librepository.jar
11086 AC_MSG_ERROR(librepository.jar replacement not found.)
11088 elif ! test -f $LIBREPOSITORY_JAR; then
11089 AC_MSG_ERROR(librepository.jar not found.)
11092 if test -z $LIBFONTS_JAR; then
11093 if test -f /usr/share/java/libfonts-1.0.0.jar; then
11094 LIBFONTS_JAR=/usr/share/java/libfonts-1.0.0.jar
11095 elif test -f /usr/share/java/libfonts.jar; then
11096 LIBFONTS_JAR=/usr/share/java/libfonts.jar
11098 AC_MSG_ERROR(libfonts.jar replacement not found.)
11100 elif ! test -f $LIBFONTS_JAR; then
11101 AC_MSG_ERROR(libfonts.jar not found.)
11104 if test -z $LIBSERIALIZER_JAR; then
11105 if test -f /usr/share/java/libserializer-1.0.0.jar; then
11106 LIBSERIALIZER_JAR=/usr/share/java/libserializer-1.0.0.jar
11107 elif test -f /usr/share/java/libserializer.jar; then
11108 LIBSERIALIZER_JAR=/usr/share/java/libserializer.jar
11110 AC_MSG_ERROR(libserializer.jar replacement not found.)
11112 elif ! test -f $LIBSERIALIZER_JAR; then
11113 AC_MSG_ERROR(libserializer.jar not found.)
11116 if test -z $LIBBASE_JAR; then
11117 if test -f /usr/share/java/libbase-1.0.0.jar; then
11118 LIBBASE_JAR=/usr/share/java/libbase-1.0.0.jar
11119 elif test -f /usr/share/java/libbase.jar; then
11120 LIBBASE_JAR=/usr/share/java/libbase.jar
11122 AC_MSG_ERROR(libbase.jar replacement not found.)
11124 elif ! test -f $LIBBASE_JAR; then
11125 AC_MSG_ERROR(libbase.jar not found.)
11129 AC_MSG_RESULT([internal])
11130 SYSTEM_JFREEREPORT=
11131 BUILD_TYPE="$BUILD_TYPE JFREEREPORT"
11135 AC_MSG_RESULT([no])
11136 ENABLE_REPORTBUILDER=
11137 SYSTEM_JFREEREPORT=
11139 AC_SUBST(ENABLE_REPORTBUILDER)
11140 AC_SUBST(SYSTEM_JFREEREPORT)
11142 AC_SUBST(LIBXML_JAR)
11143 AC_SUBST(FLUTE_JAR)
11144 AC_SUBST(JFREEREPORT_JAR)
11145 AC_SUBST(LIBBASE_JAR)
11146 AC_SUBST(LIBLAYOUT_JAR)
11147 AC_SUBST(LIBLOADER_JAR)
11148 AC_SUBST(LIBFORMULA_JAR)
11149 AC_SUBST(LIBREPOSITORY_JAR)
11150 AC_SUBST(LIBFONTS_JAR)
11151 AC_SUBST(LIBSERIALIZER_JAR)
11153 # this has to be here because both the Wiki Publisher and the SRB use
11155 COMMONS_LOGGING_VERSION=1.2
11156 if test "$ENABLE_REPORTBUILDER" = "TRUE"; then
11157 AC_MSG_CHECKING([which Apache commons-* libs to use])
11158 if test "$with_system_apache_commons" = "yes"; then
11159 SYSTEM_APACHE_COMMONS=TRUE
11160 AC_MSG_RESULT([external])
11161 if test -z $COMMONS_LOGGING_JAR; then
11162 if test -f /usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar; then
11163 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging-${COMMONS_LOGGING_VERSION}.jar
11164 elif test -f /usr/share/java/commons-logging.jar; then
11165 COMMONS_LOGGING_JAR=/usr/share/java/commons-logging.jar
11167 AC_MSG_ERROR(commons-logging.jar replacement not found.)
11169 elif ! test -f $COMMONS_LOGGING_JAR; then
11170 AC_MSG_ERROR(commons-logging.jar not found.)
11173 AC_MSG_RESULT([internal])
11174 SYSTEM_APACHE_COMMONS=
11175 BUILD_TYPE="$BUILD_TYPE APACHE_COMMONS"
11179 AC_SUBST(SYSTEM_APACHE_COMMONS)
11180 AC_SUBST(COMMONS_LOGGING_JAR)
11181 AC_SUBST(COMMONS_LOGGING_VERSION)
11183 # scripting provider for BeanShell?
11184 AC_MSG_CHECKING([whether to build support for scripts in BeanShell])
11185 if test "${enable_scripting_beanshell}" != "no" -a "x$with_java" != "xno"; then
11186 AC_MSG_RESULT([yes])
11187 ENABLE_SCRIPTING_BEANSHELL=TRUE
11189 dnl ===================================================================
11190 dnl Check for system beanshell
11191 dnl ===================================================================
11192 AC_MSG_CHECKING([which beanshell to use])
11193 if test "$with_system_beanshell" = "yes"; then
11194 AC_MSG_RESULT([external])
11196 if test -z $BSH_JAR; then
11197 BSH_JAR=/usr/share/java/bsh.jar
11199 if ! test -f $BSH_JAR; then
11200 AC_MSG_ERROR(bsh.jar not found.)
11203 AC_MSG_RESULT([internal])
11205 BUILD_TYPE="$BUILD_TYPE BSH"
11208 AC_MSG_RESULT([no])
11209 ENABLE_SCRIPTING_BEANSHELL=
11210 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_BEANSHELL"
11212 AC_SUBST(ENABLE_SCRIPTING_BEANSHELL)
11213 AC_SUBST(SYSTEM_BSH)
11216 # scripting provider for JavaScript?
11217 AC_MSG_CHECKING([whether to build support for scripts in JavaScript])
11218 if test "${enable_scripting_javascript}" != "no" -a "x$with_java" != "xno"; then
11219 AC_MSG_RESULT([yes])
11220 ENABLE_SCRIPTING_JAVASCRIPT=TRUE
11222 dnl ===================================================================
11223 dnl Check for system rhino
11224 dnl ===================================================================
11225 AC_MSG_CHECKING([which rhino to use])
11226 if test "$with_system_rhino" = "yes"; then
11227 AC_MSG_RESULT([external])
11229 if test -z $RHINO_JAR; then
11230 RHINO_JAR=/usr/share/java/js.jar
11232 if ! test -f $RHINO_JAR; then
11233 AC_MSG_ERROR(js.jar not found.)
11236 AC_MSG_RESULT([internal])
11238 BUILD_TYPE="$BUILD_TYPE RHINO"
11242 AC_MSG_RESULT([no])
11243 ENABLE_SCRIPTING_JAVASCRIPT=
11244 SCPDEFS="$SCPDEFS -DWITHOUT_SCRIPTING_JAVASCRIPT"
11246 AC_SUBST(ENABLE_SCRIPTING_JAVASCRIPT)
11247 AC_SUBST(SYSTEM_RHINO)
11248 AC_SUBST(RHINO_JAR)
11250 # This is only used in Qt5/KF5 checks to determine if /usr/lib64
11251 # paths should be added to library search path. So lets put all 64-bit
11254 case "$host_cpu" in
11255 x86_64 | powerpc64 | powerpc64le | s390x | aarch64 | mips64 | mips64el)
11256 if test "$SAL_TYPES_SIZEOFLONG" = "8"; then
11257 supports_multilib="yes"
11264 dnl ===================================================================
11265 dnl QT5 Integration
11266 dnl ===================================================================
11272 QT5_GOBJECT_CFLAGS=""
11273 QT5_GOBJECT_LIBS=""
11274 QT5_HAVE_GOBJECT=""
11275 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
11276 \( "$test_qt5" = "yes" -a "$ENABLE_QT5" = "TRUE" \) -o \
11277 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
11279 qt5_incdirs="$QT5INC /usr/include/qt5 /usr/include $x_includes"
11280 qt5_libdirs="$QT5LIB /usr/lib/qt5 /usr/lib $x_libraries"
11282 if test -n "$supports_multilib"; then
11283 qt5_libdirs="$qt5_libdirs /usr/lib64/qt5 /usr/lib64/qt /usr/lib64"
11286 qt5_test_include="QtWidgets/qapplication.h"
11287 qt5_test_library="libQt5Widgets.so"
11289 dnl Check for qmake5
11290 AC_PATH_PROGS( QMAKE5, [qmake-qt5 qmake], no, [$QT5DIR/bin:$PATH])
11291 if test "$QMAKE5" = "no"; then
11292 AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
11294 qmake5_test_ver="`$QMAKE5 -v 2>&1 | $SED -n -e 's/^Using Qt version \(5\.[[0-9.]]\+\).*$/\1/p'`"
11295 if test -z "$qmake5_test_ver"; then
11296 AC_MSG_ERROR([Wrong qmake for Qt5 found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
11298 qmake5_minor_version="`echo $qmake5_test_ver | cut -d. -f2`"
11299 qt5_minimal_minor="6"
11300 if test "$qmake5_minor_version" -lt "$qt5_minimal_minor"; then
11301 AC_MSG_ERROR([The minimal supported Qt5 version is 5.${qt5_minimal_minor}, but your 'qmake -v' reports Qt5 version $qmake5_test_ver.])
11303 AC_MSG_NOTICE([Detected Qt5 version: $qmake5_test_ver])
11307 qt5_incdirs="`$QMAKE5 -query QT_INSTALL_HEADERS` $qt5_incdirs"
11308 qt5_libdirs="`$QMAKE5 -query QT_INSTALL_LIBS` $qt5_libdirs"
11310 AC_MSG_CHECKING([for Qt5 headers])
11312 for inc_dir in $qt5_incdirs; do
11313 if test -r "$inc_dir/$qt5_test_include"; then
11314 qt5_incdir="$inc_dir"
11318 AC_MSG_RESULT([$qt5_incdir])
11319 if test "x$qt5_incdir" = "xno"; then
11320 AC_MSG_ERROR([Qt5 headers not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
11323 AC_MSG_CHECKING([for Qt5 libraries])
11325 for lib_dir in $qt5_libdirs; do
11326 if test -r "$lib_dir/$qt5_test_library"; then
11327 qt5_libdir="$lib_dir"
11331 AC_MSG_RESULT([$qt5_libdir])
11332 if test "x$qt5_libdir" = "xno"; then
11333 AC_MSG_ERROR([Qt5 libraries not found. Please specify the root of your Qt5 installation by exporting QT5DIR before running "configure".])
11336 QT5_CFLAGS="-I$qt5_incdir -DQT_CLEAN_NAMESPACE -DQT_THREAD_SUPPORT -DQT_NO_VERSION_TAGGING"
11337 QT5_CFLAGS=$(printf '%s' "$QT5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11338 QT5_LIBS="-L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
11340 if test "$USING_X11" = TRUE; then
11341 PKG_CHECK_MODULES(QT5_XCB,[xcb],,[AC_MSG_ERROR([XCB not found, which is needed for correct app grouping in X11.])])
11342 PKG_CHECK_MODULES(QT5_XCB_ICCCM,[xcb-icccm],[
11343 QT5_HAVE_XCB_ICCCM=1
11344 AC_DEFINE(QT5_HAVE_XCB_ICCCM)
11346 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)])
11347 add_warning "XCB ICCCM not found, which is needed for Qt versions (< 5.12) on some WMs to correctly group dialogs (like QTBUG-46626)"
11349 QT5_CFLAGS="$QT5_CFLAGS $QT5_XCB_CFLAGS $QT5_XCB_ICCCM_CFLAGS"
11350 QT5_LIBS="$QT5_LIBS $QT5_XCB_LIBS $QT5_XCB_ICCCM_LIBS -lQt5X11Extras"
11352 AC_DEFINE(QT5_USING_X11)
11355 dnl Check for Meta Object Compiler
11357 AC_PATH_PROGS( MOC5, [moc-qt5 moc], no, [`dirname $qt5_libdir`/bin:$QT5DIR/bin:$PATH])
11358 if test "$MOC5" = "no"; then
11359 AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
11360 the root of your Qt installation by exporting QT5DIR before running "configure".])
11363 if test "$build_gstreamer_1_0" = "yes"; then
11364 PKG_CHECK_MODULES(QT5_GOBJECT,[gobject-2.0], [
11366 AC_DEFINE(QT5_HAVE_GOBJECT)
11368 AC_MSG_WARN([[No GObject found, can't use QWidget GStreamer sink on wayland!]])
11372 AC_SUBST(QT5_CFLAGS)
11375 AC_SUBST(QT5_GOBJECT_CFLAGS)
11376 AC_SUBST(QT5_GOBJECT_LIBS)
11377 AC_SUBST(QT5_HAVE_GOBJECT)
11379 dnl ===================================================================
11380 dnl KF5 Integration
11381 dnl ===================================================================
11385 KF5_CONFIG="kf5-config"
11386 if test \( "$test_kf5" = "yes" -a "$ENABLE_KF5" = "TRUE" \) -o \
11387 \( "$test_gtk3_kde5" = "yes" -a "$ENABLE_GTK3_KDE5" = "TRUE" \)
11389 if test "$OS" = "HAIKU"; then
11390 haiku_arch="`echo $RTL_ARCH | tr X x`"
11391 kf5_haiku_incdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_HEADERS_DIRECTORY`"
11392 kf5_haiku_libdirs="`findpaths -c ' ' -a $haiku_arch B_FIND_PATH_DEVELOP_LIB_DIRECTORY`"
11395 kf5_incdirs="$KF5INC /usr/include $kf5_haiku_incdirs $x_includes"
11396 kf5_libdirs="$KF5LIB /usr/lib /usr/lib/kf5 /usr/lib/kf5/devel $kf5_haiku_libdirs $x_libraries"
11397 if test -n "$supports_multilib"; then
11398 kf5_libdirs="$kf5_libdirs /usr/lib64 /usr/lib64/kf5 /usr/lib64/kf5/devel"
11401 kf5_test_include="KF5/kcoreaddons_version.h"
11402 kf5_test_library="libKF5CoreAddons.so"
11403 kf5_libdirs="$qt5_libdir $kf5_libdirs"
11405 dnl kf5 KDE4 support compatibility installed
11406 AC_PATH_PROG( KF5_CONFIG, $KF5_CONFIG, no, )
11407 if test "$KF5_CONFIG" != "no"; then
11408 kf5_incdirs="`$KF5_CONFIG --path include` $kf5_incdirs"
11409 kf5_libdirs="`$KF5_CONFIG --path lib` $kf5_libdirs"
11412 dnl Check for KF5 headers
11413 AC_MSG_CHECKING([for KF5 headers])
11415 for kf5_check in $kf5_incdirs; do
11416 if test -r "$kf5_check/$kf5_test_include"; then
11417 kf5_incdir="$kf5_check/KF5"
11421 AC_MSG_RESULT([$kf5_incdir])
11422 if test "x$kf5_incdir" = "xno"; then
11423 AC_MSG_ERROR([KF5 headers not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
11426 dnl Check for KF5 libraries
11427 AC_MSG_CHECKING([for KF5 libraries])
11429 for kf5_check in $kf5_libdirs; do
11430 if test -r "$kf5_check/$kf5_test_library"; then
11431 kf5_libdir="$kf5_check"
11436 AC_MSG_RESULT([$kf5_libdir])
11437 if test "x$kf5_libdir" = "xno"; then
11438 AC_MSG_ERROR([KF5 libraries not found. Please specify the root of your KF5 installation by exporting KF5DIR before running "configure".])
11441 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"
11442 KF5_LIBS="-L$kf5_libdir -lKF5CoreAddons -lKF5I18n -lKF5ConfigCore -lKF5WindowSystem -lKF5KIOCore -lKF5KIOWidgets -lKF5KIOFileWidgets -L$qt5_libdir -lQt5Core -lQt5Gui -lQt5Widgets -lQt5Network"
11443 KF5_CFLAGS=$(printf '%s' "$KF5_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11445 if test "$USING_X11" = TRUE; then
11446 KF5_LIBS="$KF5_LIBS -lQt5X11Extras"
11449 AC_LANG_PUSH([C++])
11450 save_CXXFLAGS=$CXXFLAGS
11451 CXXFLAGS="$CXXFLAGS $KF5_CFLAGS"
11452 AC_MSG_CHECKING([whether KDE is >= 5.0])
11453 AC_RUN_IFELSE([AC_LANG_SOURCE([[
11454 #include <kcoreaddons_version.h>
11456 int main(int argc, char **argv) {
11457 if (KCOREADDONS_VERSION_MAJOR == 5 && KCOREADDONS_VERSION_MINOR >= 0) return 0;
11460 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([KDE version too old])],[])
11461 CXXFLAGS=$save_CXXFLAGS
11464 AC_SUBST(KF5_CFLAGS)
11467 dnl ===================================================================
11468 dnl Test whether to include Evolution 2 support
11469 dnl ===================================================================
11470 AC_MSG_CHECKING([whether to enable evolution 2 support])
11471 if test "$enable_evolution2" = "yes" -o "$enable_evolution2" = "TRUE"; then
11472 AC_MSG_RESULT([yes])
11473 PKG_CHECK_MODULES(GOBJECT, gobject-2.0)
11474 GOBJECT_CFLAGS=$(printf '%s' "$GOBJECT_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11475 FilterLibs "${GOBJECT_LIBS}"
11476 GOBJECT_LIBS="${filteredlibs}"
11477 ENABLE_EVOAB2="TRUE"
11480 AC_MSG_RESULT([no])
11482 AC_SUBST(ENABLE_EVOAB2)
11483 AC_SUBST(GOBJECT_CFLAGS)
11484 AC_SUBST(GOBJECT_LIBS)
11486 dnl ===================================================================
11487 dnl Test which themes to include
11488 dnl ===================================================================
11489 AC_MSG_CHECKING([which themes to include])
11490 # if none given use default subset of available themes
11491 if test "x$with_theme" = "x" -o "x$with_theme" = "xyes"; then
11492 with_theme="breeze breeze_dark breeze_svg colibre colibre_svg elementary elementary_svg karasa_jaga karasa_jaga_svg sifr sifr_svg sifr_dark tango"
11496 if test "x$with_theme" != "xno"; then
11497 for theme in $with_theme; do
11499 breeze|breeze_dark|breeze_svg|colibre|colibre_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg|sifr|sifr_svg|sifr_dark|tango) real_theme="$theme" ;;
11500 default) real_theme=colibre ;;
11501 *) AC_MSG_ERROR([Unknown value for --with-theme: $theme]) ;;
11503 WITH_THEMES=`echo "$WITH_THEMES $real_theme"|tr '\ ' '\n'|sort|uniq|tr '\n' '\ '`
11506 AC_MSG_RESULT([$WITH_THEMES])
11507 AC_SUBST([WITH_THEMES])
11508 # FIXME: remove this, and the convenience default->colibre remapping after a grace period
11509 for theme in $with_theme; do
11511 default) AC_MSG_WARN([--with-theme=default is deprecated and will be removed, use --with-theme=colibre]) ;;
11516 dnl ===================================================================
11517 dnl Test whether to integrate helppacks into the product's installer
11518 dnl ===================================================================
11519 AC_MSG_CHECKING([for helppack integration])
11520 if test "$with_helppack_integration" = "no"; then
11521 AC_MSG_RESULT([no integration])
11523 SCPDEFS="$SCPDEFS -DWITH_HELPPACK_INTEGRATION"
11524 AC_MSG_RESULT([integration])
11527 ###############################################################################
11528 # Extensions checking
11529 ###############################################################################
11530 AC_MSG_CHECKING([for extensions integration])
11531 if test "x$enable_extension_integration" != "xno"; then
11532 WITH_EXTENSION_INTEGRATION=TRUE
11533 SCPDEFS="$SCPDEFS -DWITH_EXTENSION_INTEGRATION"
11534 AC_MSG_RESULT([yes, use integration])
11536 WITH_EXTENSION_INTEGRATION=
11537 AC_MSG_RESULT([no, do not integrate])
11539 AC_SUBST(WITH_EXTENSION_INTEGRATION)
11541 dnl Should any extra extensions be included?
11542 dnl There are standalone tests for each of these below.
11543 WITH_EXTRA_EXTENSIONS=
11544 AC_SUBST([WITH_EXTRA_EXTENSIONS])
11546 libo_CHECK_EXTENSION([ConvertTextToNumber],[CT2N],[ct2n],[ct2n],[])
11547 libo_CHECK_EXTENSION([Numbertext],[NUMBERTEXT],[numbertext],[numbertext],[b7cae45ad2c23551fd6ccb8ae2c1f59e-numbertext_0.9.5.oxt])
11548 if test "x$with_java" != "xno"; then
11549 libo_CHECK_EXTENSION([NLPSolver],[NLPSOLVER],[nlpsolver],[nlpsolver],[])
11550 libo_CHECK_EXTENSION([LanguageTool],[LANGUAGETOOL],[languagetool],[languagetool],[])
11553 AC_MSG_CHECKING([whether to build opens___.ttf])
11554 if test "$enable_build_opensymbol" = "yes"; then
11555 AC_MSG_RESULT([yes])
11556 AC_PATH_PROG(FONTFORGE, fontforge)
11557 if test -z "$FONTFORGE"; then
11558 AC_MSG_ERROR([fontforge not installed])
11561 AC_MSG_RESULT([no])
11562 OPENSYMBOL_TTF=884ed41809687c3e168fc7c19b16585149ff058eca79acbf3ee784f6630704cc-opens___.ttf
11563 BUILD_TYPE="$BUILD_TYPE OPENSYMBOL"
11565 AC_SUBST(OPENSYMBOL_TTF)
11566 AC_SUBST(FONTFORGE)
11568 dnl ===================================================================
11569 dnl Test whether to include fonts
11570 dnl ===================================================================
11571 AC_MSG_CHECKING([whether to include third-party fonts])
11572 if test "$with_fonts" != "no"; then
11573 AC_MSG_RESULT([yes])
11575 BUILD_TYPE="$BUILD_TYPE MORE_FONTS"
11576 AC_DEFINE(HAVE_MORE_FONTS)
11578 AC_MSG_RESULT([no])
11580 SCPDEFS="$SCPDEFS -DWITHOUT_FONTS"
11582 AC_SUBST(WITH_FONTS)
11585 dnl ===================================================================
11586 dnl Test whether to enable online update service
11587 dnl ===================================================================
11588 AC_MSG_CHECKING([whether to enable online update])
11589 ENABLE_ONLINE_UPDATE=
11590 ENABLE_ONLINE_UPDATE_MAR=
11592 if test "$enable_online_update" = ""; then
11593 if test "$_os" = "WINNT" -o "$_os" = "Darwin"; then
11594 AC_MSG_RESULT([yes])
11595 ENABLE_ONLINE_UPDATE="TRUE"
11597 AC_MSG_RESULT([no])
11600 if test "$enable_online_update" = "mar"; then
11601 AC_MSG_RESULT([yes - MAR-based online update])
11602 ENABLE_ONLINE_UPDATE_MAR="TRUE"
11603 if test "$with_update_config" = ""; then
11604 AC_MSG_ERROR([mar based online updater needs an update config specified with "with-update-config])
11606 UPDATE_CONFIG="$with_update_config"
11607 AC_DEFINE(HAVE_FEATURE_UPDATE_MAR)
11608 elif test "$enable_online_update" = "yes"; then
11609 AC_MSG_RESULT([yes])
11610 ENABLE_ONLINE_UPDATE="TRUE"
11612 AC_MSG_RESULT([no])
11615 AC_SUBST(ENABLE_ONLINE_UPDATE)
11616 AC_SUBST(ENABLE_ONLINE_UPDATE_MAR)
11617 AC_SUBST(UPDATE_CONFIG)
11619 dnl ===================================================================
11620 dnl Test whether we need bzip2
11621 dnl ===================================================================
11623 if test "$ENABLE_ONLINE_UPDATE_MAR" = "TRUE"; then
11624 AC_MSG_CHECKING([whether to use system bzip2])
11625 if test "$with_system_bzip2" = yes; then
11627 AC_MSG_RESULT([yes])
11628 PKG_CHECK_MODULES(BZIP2, bzip2)
11629 FilterLibs "${BZIP2_LIBS}"
11630 BZIP2_LIBS="${filteredlibs}"
11632 AC_MSG_RESULT([no])
11633 BUILD_TYPE="$BUILD_TYPE BZIP2"
11636 AC_SUBST(SYSTEM_BZIP2)
11637 AC_SUBST(BZIP2_CFLAGS)
11638 AC_SUBST(BZIP2_LIBS)
11640 dnl ===================================================================
11641 dnl Test whether to enable extension update
11642 dnl ===================================================================
11643 AC_MSG_CHECKING([whether to enable extension update])
11644 ENABLE_EXTENSION_UPDATE=
11645 if test "x$enable_extension_update" = "xno"; then
11646 AC_MSG_RESULT([no])
11648 AC_MSG_RESULT([yes])
11649 ENABLE_EXTENSION_UPDATE="TRUE"
11650 AC_DEFINE(ENABLE_EXTENSION_UPDATE)
11651 SCPDEFS="$SCPDEFS -DENABLE_EXTENSION_UPDATE"
11653 AC_SUBST(ENABLE_EXTENSION_UPDATE)
11656 dnl ===================================================================
11657 dnl Test whether to create MSI with LIMITUI=1 (silent install)
11658 dnl ===================================================================
11659 AC_MSG_CHECKING([whether to create MSI with LIMITUI=1 (silent install)])
11660 if test "$enable_silent_msi" = "" -o "$enable_silent_msi" = "no"; then
11661 AC_MSG_RESULT([no])
11664 AC_MSG_RESULT([yes])
11665 ENABLE_SILENT_MSI=TRUE
11666 SCPDEFS="$SCPDEFS -DENABLE_SILENT_MSI"
11668 AC_SUBST(ENABLE_SILENT_MSI)
11670 AC_MSG_CHECKING([whether and how to use Xinerama])
11671 if test "$_os" = "Linux" -o "$_os" = "FreeBSD"; then
11672 if test "$x_libraries" = "default_x_libraries"; then
11673 XINERAMALIB=`$PKG_CONFIG --variable=libdir xinerama`
11674 if test "x$XINERAMALIB" = x; then
11675 XINERAMALIB="/usr/lib"
11678 XINERAMALIB="$x_libraries"
11680 if test -e "$XINERAMALIB/libXinerama.so" -a -e "$XINERAMALIB/libXinerama.a"; then
11681 # we have both versions, let the user decide but use the dynamic one
11684 if test -z "$with_static_xinerama" -o -n "$with_system_libs"; then
11685 XINERAMA_LINK=dynamic
11687 XINERAMA_LINK=static
11689 elif test -e "$XINERAMALIB/libXinerama.so" -a ! -e "$XINERAMALIB/libXinerama.a"; then
11690 # we have only the dynamic version
11692 XINERAMA_LINK=dynamic
11693 elif test -e "$XINERAMALIB/libXinerama.a"; then
11695 if echo $host_cpu | $GREP -E 'i[[3456]]86' 2>/dev/null >/dev/null; then
11697 XINERAMA_LINK=static
11707 if test "$USE_XINERAMA" = "TRUE"; then
11708 AC_MSG_RESULT([yes, with $XINERAMA_LINK linking])
11709 AC_CHECK_HEADER(X11/extensions/Xinerama.h, [],
11710 [AC_MSG_ERROR(Xinerama header not found.)], [])
11711 XEXTLIBS=`$PKG_CONFIG --variable=libs xext`
11712 if test "x$XEXTLIB" = x; then
11713 XEXTLIBS="-L$XLIB -L$XINERAMALIB -lXext"
11715 XINERAMA_EXTRA_LIBS="$XEXTLIBS"
11716 if test "$_os" = "FreeBSD"; then
11717 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -lXt"
11719 if test "$_os" = "Linux"; then
11720 XINERAMA_EXTRA_LIBS="$XINERAMA_EXTRA_LIBS -ldl"
11722 AC_CHECK_LIB([Xinerama], [XineramaIsActive], [:],
11723 [AC_MSG_ERROR(Xinerama not functional?)], [$XINERAMA_EXTRA_LIBS])
11725 AC_MSG_RESULT([no, libXinerama not found or wrong architecture.])
11730 AC_MSG_RESULT([no])
11732 AC_SUBST(USE_XINERAMA)
11733 AC_SUBST(XINERAMA_LINK)
11735 dnl ===================================================================
11736 dnl Test whether to build cairo or rely on the system version
11737 dnl ===================================================================
11739 if test "$USING_X11" = TRUE; then
11740 # Used in vcl/Library_vclplug_gen.mk
11744 if test "$test_cairo" = "yes"; then
11745 AC_MSG_CHECKING([whether to use the system cairo])
11747 : ${with_system_cairo:=$with_system_libs}
11748 if test "$with_system_cairo" = "yes"; then
11750 AC_MSG_RESULT([yes])
11752 PKG_CHECK_MODULES( CAIRO, cairo >= 1.8.0 )
11753 CAIRO_CFLAGS=$(printf '%s' "$CAIRO_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11754 FilterLibs "${CAIRO_LIBS}"
11755 CAIRO_LIBS="${filteredlibs}"
11757 if test "$test_xrender" = "yes"; then
11758 AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
11760 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/Xrender.h>]],[[
11761 #ifdef PictStandardA8
11765 ]])],[AC_MSG_RESULT([yes])],[AC_MSG_ERROR([no, X headers too old.])])
11771 AC_MSG_RESULT([no])
11773 BUILD_TYPE="$BUILD_TYPE CAIRO"
11777 AC_SUBST(SYSTEM_CAIRO)
11778 AC_SUBST(CAIRO_CFLAGS)
11779 AC_SUBST(CAIRO_LIBS)
11781 dnl ===================================================================
11782 dnl Test whether to use avahi
11783 dnl ===================================================================
11784 if test "$_os" = "WINNT"; then
11785 # Windows uses bundled mDNSResponder
11786 BUILD_TYPE="$BUILD_TYPE MDNSRESPONDER"
11787 elif test "$_os" != "Darwin" -a "$enable_avahi" = "yes"; then
11788 PKG_CHECK_MODULES([AVAHI], [avahi-client >= 0.6.10],
11789 [ENABLE_AVAHI="TRUE"])
11790 AC_DEFINE(HAVE_FEATURE_AVAHI)
11791 AVAHI_CFLAGS=$(printf '%s' "$AVAHI_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11792 FilterLibs "${AVAHI_LIBS}"
11793 AVAHI_LIBS="${filteredlibs}"
11796 AC_SUBST(ENABLE_AVAHI)
11797 AC_SUBST(AVAHI_CFLAGS)
11798 AC_SUBST(AVAHI_LIBS)
11800 dnl ===================================================================
11801 dnl Test whether to use liblangtag
11802 dnl ===================================================================
11804 AC_MSG_CHECKING([whether to use system liblangtag])
11805 if test "$with_system_liblangtag" = yes; then
11806 SYSTEM_LIBLANGTAG=TRUE
11807 AC_MSG_RESULT([yes])
11808 PKG_CHECK_MODULES( LIBLANGTAG, liblangtag >= 0.4.0)
11809 dnl cf. <https://bitbucket.org/tagoh/liblangtag/commits/9324836a0d1c> "Fix a build issue with inline keyword"
11810 PKG_CHECK_EXISTS([liblangtag >= 0.5.5], [], [AC_DEFINE([LIBLANGTAG_INLINE_FIX])])
11811 LIBLANGTAG_CFLAGS=$(printf '%s' "$LIBLANGTAG_CFLAGS" | sed -e "s/-I/${ISYSTEM?}/g")
11812 FilterLibs "${LIBLANGTAG_LIBS}"
11813 LIBLANGTAG_LIBS="${filteredlibs}"
11816 AC_MSG_RESULT([no])
11817 BUILD_TYPE="$BUILD_TYPE LIBLANGTAG"
11818 LIBLANGTAG_CFLAGS="-I${WORKDIR}/UnpackedTarball/liblangtag"
11819 if test "$COM" = "MSC"; then
11820 LIBLANGTAG_LIBS="${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs/liblangtag.lib"
11822 LIBLANGTAG_LIBS="-L${WORKDIR}/UnpackedTarball/liblangtag/liblangtag/.libs -llangtag"
11825 AC_SUBST(SYSTEM_LIBLANGTAG)
11826 AC_SUBST(LIBLANGTAG_CFLAGS)
11827 AC_SUBST(LIBLANGTAG_LIBS)
11829 dnl ===================================================================
11830 dnl Test whether to build libpng or rely on the system version
11831 dnl ===================================================================
11833 libo_CHECK_SYSTEM_MODULE([libpng],[LIBPNG],[libpng],["-I${WORKDIR}/UnpackedTarball/libpng"],["-L${WORKDIR}/LinkTarget/StaticLibrary -llibpng"])
11835 dnl ===================================================================
11836 dnl Check for runtime JVM search path
11837 dnl ===================================================================
11838 if test "$ENABLE_JAVA" != ""; then
11839 AC_MSG_CHECKING([whether to use specific JVM search path at runtime])
11840 if test -n "$with_jvm_path" -a "$with_jvm_path" != "no"; then
11841 AC_MSG_RESULT([yes])
11842 if ! test -d "$with_jvm_path"; then
11843 AC_MSG_ERROR(["$with_jvm_path" not a directory])
11845 if ! test -d "$with_jvm_path"jvm; then
11846 AC_MSG_ERROR(["$with_jvm_path"jvm not found, point with_jvm_path to \[/path/to/\]jvm])
11848 JVM_ONE_PATH_CHECK="$with_jvm_path"
11849 AC_SUBST(JVM_ONE_PATH_CHECK)
11851 AC_MSG_RESULT([no])
11855 dnl ===================================================================
11856 dnl Test for the presence of Ant and that it works
11857 dnl ===================================================================
11859 if test "$ENABLE_JAVA" != "" -a "$NEED_ANT" = "TRUE"; then
11860 ANT_HOME=; export ANT_HOME
11861 WITH_ANT_HOME=; export WITH_ANT_HOME
11862 if test -z "$with_ant_home" -a -n "$LODE_HOME" ; then
11863 if test -x "$LODE_HOME/opt/ant/bin/ant" ; then
11864 if test "$_os" = "WINNT"; then
11865 with_ant_home="`cygpath -m $LODE_HOME/opt/ant`"
11867 with_ant_home="$LODE_HOME/opt/ant"
11869 elif test -x "$LODE_HOME/opt/bin/ant" ; then
11870 with_ant_home="$LODE_HOME/opt/ant"
11873 if test -z "$with_ant_home"; then
11874 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd])
11876 if test "$_os" = "WINNT"; then
11877 # AC_PATH_PROGS needs unix path
11878 with_ant_home=`cygpath -u "$with_ant_home"`
11880 AbsolutePath "$with_ant_home"
11881 with_ant_home=$absolute_path
11882 AC_PATH_PROGS(ANT, [ant ant.sh ant.bat ant.cmd],,$with_ant_home/bin:$PATH)
11883 WITH_ANT_HOME=$with_ant_home
11884 ANT_HOME=$with_ant_home
11887 if test -z "$ANT"; then
11888 AC_MSG_ERROR([Ant not found - Make sure it's in the path or use --with-ant-home])
11890 # resolve relative or absolute symlink
11891 while test -h "$ANT"; do
11893 a_basename=`basename "$ANT"`
11894 a_script=`ls -l "$ANT" | $SED "s/.*${a_basename} -> //g"`
11895 cd "`dirname "$ANT"`"
11896 cd "`dirname "$a_script"`"
11897 ANT="`pwd`"/"`basename "$a_script"`"
11901 AC_MSG_CHECKING([if $ANT works])
11902 mkdir -p conftest.dir
11905 cat > conftest.java << EOF
11906 public class conftest {
11907 int testmethod(int a, int b) {
11913 cat > conftest.xml << EOF
11914 <project name="conftest" default="conftest">
11915 <target name="conftest">
11916 <javac srcdir="." includes="conftest.java">
11922 AC_TRY_COMMAND("$ANT" -buildfile conftest.xml 1>&2)
11923 if test $? = 0 -a -f ./conftest.class; then
11924 AC_MSG_RESULT([Ant works])
11925 if test -z "$WITH_ANT_HOME"; then
11926 ANT_HOME=`"$ANT" -diagnostics | $EGREP "ant.home :" | $SED -e "s#ant.home : ##g"`
11927 if test -z "$ANT_HOME"; then
11928 ANT_HOME=`echo "$ANT" | $SED -n "s/\/bin\/ant.*\$//p"`
11931 ANT_HOME="$WITH_ANT_HOME"
11934 echo "configure: Ant test failed" >&5
11935 cat conftest.java >&5
11936 cat conftest.xml >&5
11937 AC_MSG_ERROR([Ant does not work - Some Java projects will not build!])
11940 rm -fr conftest.dir
11942 if test -z "$ANT_HOME"; then
11943 ANT_HOME="NO_ANT_HOME"
11945 PathFormat "$ANT_HOME"
11946 ANT_HOME="$formatted_path"
11948 ANT="$formatted_path"
11953 dnl Checking for ant.jar
11954 if test "$ANT_HOME" != "NO_ANT_HOME"; then
11955 AC_MSG_CHECKING([Ant lib directory])
11956 if test -f $ANT_HOME/lib/ant.jar; then
11957 ANT_LIB="$ANT_HOME/lib"
11959 if test -f $ANT_HOME/ant.jar; then
11960 ANT_LIB="$ANT_HOME"
11962 if test -f /usr/share/java/ant.jar; then
11963 ANT_LIB=/usr/share/java
11965 if test -f /usr/share/ant-core/lib/ant.jar; then
11966 ANT_LIB=/usr/share/ant-core/lib
11968 if test -f $ANT_HOME/lib/ant/ant.jar; then
11969 ANT_LIB="$ANT_HOME/lib/ant"
11971 if test -f /usr/share/lib/ant/ant.jar; then
11972 ANT_LIB=/usr/share/lib/ant
11974 AC_MSG_ERROR([Ant libraries not found!])
11981 PathFormat "$ANT_LIB"
11982 ANT_LIB="$formatted_path"
11983 AC_MSG_RESULT([Ant lib directory found.])
11988 ant_minminor1=`echo $ant_minver | cut -d"." -f2`
11990 AC_MSG_CHECKING([whether Ant is >= $ant_minver])
11991 ant_version=`"$ANT" -version | $AWK '$3 == "version" { print $4; }'`
11992 ant_version_major=`echo $ant_version | cut -d. -f1`
11993 ant_version_minor=`echo $ant_version | cut -d. -f2`
11994 echo "configure: ant_version $ant_version " >&5
11995 echo "configure: ant_version_major $ant_version_major " >&5
11996 echo "configure: ant_version_minor $ant_version_minor " >&5
11997 if test "$ant_version_major" -ge "2"; then
11998 AC_MSG_RESULT([yes, $ant_version])
11999 elif test "$ant_version_major" = "1" -a "$ant_version_minor" -ge "$ant_minminor1"; then
12000 AC_MSG_RESULT([yes, $ant_version])
12002 AC_MSG_ERROR([no, you need at least Ant >= $ant_minver])
12005 rm -f conftest* core core.* *.core
12009 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no"; then
12010 AC_MSG_CHECKING([for JUnit 4])
12011 if test "$with_junit" = "yes"; then
12012 if test -n "$LODE_HOME" -a -e "$LODE_HOME/opt/share/java/junit.jar" ; then
12013 OOO_JUNIT_JAR="$LODE_HOME/opt/share/java/junit.jar"
12014 elif test -e /usr/share/java/junit4.jar; then
12015 OOO_JUNIT_JAR=/usr/share/java/junit4.jar
12017 if test -e /usr/share/lib/java/junit.jar; then
12018 OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar
12020 OOO_JUNIT_JAR=/usr/share/java/junit.jar
12024 OOO_JUNIT_JAR=$with_junit
12026 if test "$_os" = "WINNT"; then
12027 OOO_JUNIT_JAR=`cygpath -m "$OOO_JUNIT_JAR"`
12029 printf 'import org.junit.Before;' > conftest.java
12030 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
12031 AC_MSG_RESULT([$OOO_JUNIT_JAR])
12034 [cannot find JUnit 4 jar; please install one in the default location (/usr/share/java),
12035 specify its pathname via --with-junit=..., or disable it via --without-junit])
12037 rm -f conftest.class conftest.java
12038 if test $OOO_JUNIT_JAR != ""; then
12039 BUILD_TYPE="$BUILD_TYPE QADEVOOO"
12042 AC_SUBST(OOO_JUNIT_JAR)
12045 if test "$ENABLE_JAVA" != "" -a "$with_junit" != "no"; then
12046 AC_MSG_CHECKING([for included Hamcrest])
12047 printf 'import org.hamcrest.BaseDescription;' > conftest.java
12048 if "$JAVACOMPILER" -classpath "$OOO_JUNIT_JAR" conftest.java >&5 2>&5; then
12049 AC_MSG_RESULT([Included in $OOO_JUNIT_JAR])
12051 AC_MSG_RESULT([Not included])
12052 AC_MSG_CHECKING([for standalone hamcrest jar.])
12053 if test "$with_hamcrest" = "yes"; then
12054 if test -e /usr/share/lib/java/hamcrest.jar; then
12055 HAMCREST_JAR=/usr/share/lib/java/hamcrest.jar
12056 elif test -e /usr/share/java/hamcrest/core.jar; then
12057 HAMCREST_JAR=/usr/share/java/hamcrest/core.jar
12059 HAMCREST_JAR=/usr/share/java/hamcrest.jar
12062 HAMCREST_JAR=$with_hamcrest
12064 if test "$_os" = "WINNT"; then
12065 HAMCREST_JAR=`cygpath -m "$HAMCREST_JAR"`
12067 if "$JAVACOMPILER" -classpath "$HAMCREST_JAR" conftest.java >&5 2>&5; then
12068 AC_MSG_RESULT([$HAMCREST_JAR])
12070 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),
12071 specify its path with --with-hamcrest=..., or disable junit with --without-junit])
12074 rm -f conftest.class conftest.java
12076 AC_SUBST(HAMCREST_JAR)
12082 # check for wget and curl
12087 if test "$enable_fetch_external" != "no"; then
12089 CURL=`which curl 2>/dev/null`
12091 for i in wget /usr/bin/wget /usr/local/bin/wget /usr/sfw/bin/wget /opt/sfw/bin/wget /opt/local/bin/wget; do
12093 $i --help 2> /dev/null | $GREP no-use-server-timestamps 2>&1 > /dev/null
12094 if test $? -eq 0; then
12100 if test -z "$WGET" -a -z "$CURL"; then
12101 AC_MSG_ERROR([neither wget nor curl found!])
12110 # check for sha256sum
12114 for i in shasum /usr/local/bin/shasum /usr/sfw/bin/shasum /opt/sfw/bin/shasum /opt/local/bin/shasum; do
12115 eval "$i -a 256 --version" > /dev/null 2>&1
12117 if test $ret -eq 0; then
12118 SHA256SUM="$i -a 256"
12123 if test -z "$SHA256SUM"; then
12124 for i in sha256sum /usr/local/bin/sha256sum /usr/sfw/bin/sha256sum /opt/sfw/bin/sha256sum /opt/local/bin/sha256sum; do
12125 eval "$i --version" > /dev/null 2>&1
12127 if test $ret -eq 0; then
12134 if test -z "$SHA256SUM"; then
12135 AC_MSG_ERROR([no sha256sum found!])
12138 AC_SUBST(SHA256SUM)
12140 dnl ===================================================================
12141 dnl Dealing with l10n options
12142 dnl ===================================================================
12143 AC_MSG_CHECKING([which languages to be built])
12144 # get list of all languages
12145 # generate shell variable from completelangiso= from solenv/inc/langlist.mk
12146 # the sed command does the following:
12147 # + if a line ends with a backslash, append the next line to it
12148 # + adds " on the beginning of the value (after =)
12149 # + adds " at the end of the value
12150 # + removes en-US; we want to put it on the beginning
12151 # + prints just the section starting with 'completelangiso=' and ending with the " at the end of line
12152 [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)]
12153 ALL_LANGS="en-US $completelangiso"
12154 # check the configured localizations
12155 WITH_LANG="$with_lang"
12157 # Check for --without-lang which turns up as $with_lang being "no". Luckily there is no language with code "no".
12158 # (Norwegian is "nb" and "nn".)
12159 if test "$WITH_LANG" = "no"; then
12163 if test -z "$WITH_LANG" -o "$WITH_LANG" = "en-US"; then
12164 AC_MSG_RESULT([en-US])
12166 AC_MSG_RESULT([$WITH_LANG])
12167 GIT_NEEDED_SUBMODULES="translations $GIT_NEEDED_SUBMODULES"
12168 if test -z "$MSGFMT"; then
12169 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msgfmt" ; then
12170 MSGFMT="$LODE_HOME/opt/bin/msgfmt"
12171 elif test -x "/opt/lo/bin/msgfmt"; then
12172 MSGFMT="/opt/lo/bin/msgfmt"
12174 AC_CHECK_PROGS(MSGFMT, [msgfmt])
12175 if test -z "$MSGFMT"; then
12176 AC_MSG_ERROR([msgfmt not found. Install GNU gettext, or re-run without languages.])
12180 if test -z "$MSGUNIQ"; then
12181 if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
12182 MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
12183 elif test -x "/opt/lo/bin/msguniq"; then
12184 MSGUNIQ="/opt/lo/bin/msguniq"
12186 AC_CHECK_PROGS(MSGUNIQ, [msguniq])
12187 if test -z "$MSGUNIQ"; then
12188 AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
12195 # check that the list is valid
12196 for lang in $WITH_LANG; do
12197 test "$lang" = "ALL" && continue
12198 # need to check for the exact string, so add space before and after the list of all languages
12199 for vl in $ALL_LANGS; do
12200 if test "$vl" = "$lang"; then
12204 if test "$vl" != "$lang"; then
12205 # if you're reading this - you prolly quoted your languages remove the quotes ...
12206 AC_MSG_ERROR([invalid language: '$lang' (vs '$v1'); supported languages are: $ALL_LANGS])
12209 if test -n "$WITH_LANG" -a "$WITH_LANG" != "ALL"; then
12210 echo $WITH_LANG | grep -q en-US
12211 test $? -ne 1 || WITH_LANG=`echo $WITH_LANG en-US`
12213 # list with substituted ALL
12214 WITH_LANG_LIST=`echo $WITH_LANG | sed "s/ALL/$ALL_LANGS/"`
12215 test -z "$WITH_LANG_LIST" && WITH_LANG_LIST="en-US"
12216 test "$WITH_LANG" = "en-US" && WITH_LANG=
12217 if test "$enable_release_build" = "" -o "$enable_release_build" = "no"; then
12218 test "$WITH_LANG_LIST" = "en-US" || WITH_LANG_LIST=`echo $WITH_LANG_LIST qtz`
12219 ALL_LANGS=`echo $ALL_LANGS qtz`
12221 AC_SUBST(ALL_LANGS)
12222 AC_DEFINE_UNQUOTED(WITH_LANG,"$WITH_LANG")
12223 AC_SUBST(WITH_LANG)
12224 AC_SUBST(WITH_LANG_LIST)
12225 AC_SUBST(GIT_NEEDED_SUBMODULES)
12227 WITH_POOR_HELP_LOCALIZATIONS=
12228 if test -d "$SRC_ROOT/translations/source"; then
12229 for l in `ls -1 $SRC_ROOT/translations/source`; do
12230 if test ! -d "$SRC_ROOT/translations/source/$l/helpcontent2"; then
12231 WITH_POOR_HELP_LOCALIZATIONS="$WITH_POOR_HELP_LOCALIZATIONS $l"
12235 AC_SUBST(WITH_POOR_HELP_LOCALIZATIONS)
12237 if test -n "$with_locales"; then
12238 WITH_LOCALES="$with_locales"
12240 just_langs="`echo $WITH_LOCALES | sed -e 's/_[A-Z]*//g'`"
12241 # Only languages and scripts for which we actually have ifdefs need to be handled. Also see
12242 # config_host/config_locales.h.in
12243 for locale in $WITH_LOCALES; do
12246 AC_DEFINE_UNQUOTED(WITH_LOCALE_$lang, 1)
12250 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Deva)
12253 AC_DEFINE(WITH_LOCALE_FOR_SCRIPT_Cyrl)
12258 AC_DEFINE(WITH_LOCALE_ALL)
12260 AC_SUBST(WITH_LOCALES)
12262 dnl git submodule update --reference
12263 dnl ===================================================================
12264 if test -n "${GIT_REFERENCE_SRC}"; then
12265 for repo in ${GIT_NEEDED_SUBMODULES}; do
12266 if ! test -d "${GIT_REFERENCE_SRC}"/${repo}; then
12267 AC_MSG_ERROR([referenced git: required repository does not exist: ${GIT_REFERENCE_SRC}/${repo}])
12271 AC_SUBST(GIT_REFERENCE_SRC)
12273 dnl git submodules linked dirs
12274 dnl ===================================================================
12275 if test -n "${GIT_LINK_SRC}"; then
12276 for repo in ${GIT_NEEDED_SUBMODULES}; do
12277 if ! test -d "${GIT_LINK_SRC}"/${repo}; then
12278 AC_MSG_ERROR([linked git: required repository does not exist: ${GIT_LINK_SRC}/${repo}])
12282 AC_SUBST(GIT_LINK_SRC)
12285 dnl ===================================================================
12286 AC_MSG_CHECKING([for alternative branding images directory])
12287 # initialize mapped arrays
12288 BRAND_INTRO_IMAGES="flat_logo.svg intro.png intro-highres.png"
12289 brand_files="$BRAND_INTRO_IMAGES about.svg"
12291 if test -z "$with_branding" -o "$with_branding" = "no"; then
12292 AC_MSG_RESULT([none])
12293 DEFAULT_BRAND_IMAGES="$brand_files"
12295 if ! test -d $with_branding ; then
12296 AC_MSG_ERROR([No directory $with_branding, falling back to default branding])
12298 AC_MSG_RESULT([$with_branding])
12299 CUSTOM_BRAND_DIR="$with_branding"
12300 for lfile in $brand_files
12302 if ! test -f $with_branding/$lfile ; then
12303 AC_MSG_WARN([Branded file $lfile does not exist, using the default one])
12304 DEFAULT_BRAND_IMAGES="$DEFAULT_BRAND_IMAGES $lfile"
12306 CUSTOM_BRAND_IMAGES="$CUSTOM_BRAND_IMAGES $lfile"
12309 check_for_progress="yes"
12312 AC_SUBST([BRAND_INTRO_IMAGES])
12313 AC_SUBST([CUSTOM_BRAND_DIR])
12314 AC_SUBST([CUSTOM_BRAND_IMAGES])
12315 AC_SUBST([DEFAULT_BRAND_IMAGES])
12318 AC_MSG_CHECKING([for 'intro' progress settings])
12322 PROGRESSFRAMECOLOR=
12324 PROGRESSTEXTBASELINE=
12326 if test "$check_for_progress" = "yes" -a -f "$with_branding/progress.conf" ; then
12327 source "$with_branding/progress.conf"
12328 AC_MSG_RESULT([settings found in $with_branding/progress.conf])
12330 AC_MSG_RESULT([none])
12333 AC_SUBST(PROGRESSBARCOLOR)
12334 AC_SUBST(PROGRESSSIZE)
12335 AC_SUBST(PROGRESSPOSITION)
12336 AC_SUBST(PROGRESSFRAMECOLOR)
12337 AC_SUBST(PROGRESSTEXTCOLOR)
12338 AC_SUBST(PROGRESSTEXTBASELINE)
12341 AC_MSG_CHECKING([for extra build ID])
12342 if test -n "$with_extra_buildid" -a "$with_extra_buildid" != "yes" ; then
12343 EXTRA_BUILDID="$with_extra_buildid"
12345 # in tinderboxes, it is easier to set EXTRA_BUILDID via the environment variable instead of configure switch
12346 if test -n "$EXTRA_BUILDID" ; then
12347 AC_MSG_RESULT([$EXTRA_BUILDID])
12349 AC_MSG_RESULT([not set])
12351 AC_DEFINE_UNQUOTED([EXTRA_BUILDID], ["$EXTRA_BUILDID"])
12354 AC_MSG_CHECKING([for vendor])
12355 if test -z "$with_vendor" -o "$with_vendor" = "no"; then
12356 OOO_VENDOR="$USERNAME"
12358 if test -z "$OOO_VENDOR"; then
12362 if test -z "$OOO_VENDOR"; then
12363 OOO_VENDOR="`id -u -n`"
12366 AC_MSG_RESULT([not set, using $OOO_VENDOR])
12368 OOO_VENDOR="$with_vendor"
12369 AC_MSG_RESULT([$OOO_VENDOR])
12371 AC_DEFINE_UNQUOTED(OOO_VENDOR,"$OOO_VENDOR")
12372 AC_SUBST(OOO_VENDOR)
12374 if test "$_os" = "Android" ; then
12375 ANDROID_PACKAGE_NAME=
12376 AC_MSG_CHECKING([for Android package name])
12377 if test -z "$with_android_package_name" -o "$with_android_package_name" = "no"; then
12378 if test -n "$ENABLE_DEBUG"; then
12379 # Default to the package name that makes ndk-gdb happy.
12380 ANDROID_PACKAGE_NAME="org.libreoffice"
12382 ANDROID_PACKAGE_NAME="org.example.libreoffice"
12385 AC_MSG_RESULT([not set, using $ANDROID_PACKAGE_NAME])
12387 ANDROID_PACKAGE_NAME="$with_android_package_name"
12388 AC_MSG_RESULT([$ANDROID_PACKAGE_NAME])
12390 AC_SUBST(ANDROID_PACKAGE_NAME)
12393 AC_MSG_CHECKING([whether to install the compat oo* wrappers])
12394 if test "$with_compat_oowrappers" = "yes"; then
12395 WITH_COMPAT_OOWRAPPERS=TRUE
12398 WITH_COMPAT_OOWRAPPERS=
12401 AC_SUBST(WITH_COMPAT_OOWRAPPERS)
12403 INSTALLDIRNAME=`echo AC_PACKAGE_NAME | $AWK '{print tolower($0)}'`
12404 AC_MSG_CHECKING([for install dirname])
12405 if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes"; then
12406 INSTALLDIRNAME="$with_install_dirname"
12408 AC_MSG_RESULT([$INSTALLDIRNAME])
12409 AC_SUBST(INSTALLDIRNAME)
12411 AC_MSG_CHECKING([for prefix])
12412 test "x$prefix" = xNONE && prefix=$ac_default_prefix
12413 test "x$exec_prefix" = xNONE && exec_prefix=$prefix
12414 PREFIXDIR="$prefix"
12415 AC_MSG_RESULT([$PREFIXDIR])
12416 AC_SUBST(PREFIXDIR)
12418 LIBDIR=[$(eval echo $(eval echo $libdir))]
12421 DATADIR=[$(eval echo $(eval echo $datadir))]
12424 MANDIR=[$(eval echo $(eval echo $mandir))]
12427 DOCDIR=[$(eval echo $(eval echo $docdir))]
12430 BINDIR=[$(eval echo $(eval echo $bindir))]
12433 INSTALLDIR="$LIBDIR/$INSTALLDIRNAME"
12434 AC_SUBST(INSTALLDIR)
12436 TESTINSTALLDIR="${BUILDDIR}/test-install"
12437 AC_SUBST(TESTINSTALLDIR)
12440 # ===================================================================
12441 # OAuth2 id and secrets
12442 # ===================================================================
12444 AC_MSG_CHECKING([for Google Drive client id and secret])
12445 if test "$with_gdrive_client_id" = "no" -o -z "$with_gdrive_client_id"; then
12446 AC_MSG_RESULT([not set])
12447 GDRIVE_CLIENT_ID="\"\""
12448 GDRIVE_CLIENT_SECRET="\"\""
12450 AC_MSG_RESULT([set])
12451 GDRIVE_CLIENT_ID="\"$with_gdrive_client_id\""
12452 GDRIVE_CLIENT_SECRET="\"$with_gdrive_client_secret\""
12454 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_ID, $GDRIVE_CLIENT_ID)
12455 AC_DEFINE_UNQUOTED(GDRIVE_CLIENT_SECRET, $GDRIVE_CLIENT_SECRET)
12457 AC_MSG_CHECKING([for Alfresco Cloud client id and secret])
12458 if test "$with_alfresco_cloud_client_id" = "no" -o -z "$with_alfresco_cloud_client_id"; then
12459 AC_MSG_RESULT([not set])
12460 ALFRESCO_CLOUD_CLIENT_ID="\"\""
12461 ALFRESCO_CLOUD_CLIENT_SECRET="\"\""
12463 AC_MSG_RESULT([set])
12464 ALFRESCO_CLOUD_CLIENT_ID="\"$with_alfresco_cloud_client_id\""
12465 ALFRESCO_CLOUD_CLIENT_SECRET="\"$with_alfresco_cloud_client_secret\""
12467 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_ID, $ALFRESCO_CLOUD_CLIENT_ID)
12468 AC_DEFINE_UNQUOTED(ALFRESCO_CLOUD_CLIENT_SECRET, $ALFRESCO_CLOUD_CLIENT_SECRET)
12470 AC_MSG_CHECKING([for OneDrive client id and secret])
12471 if test "$with_onedrive_client_id" = "no" -o -z "$with_onedrive_client_id"; then
12472 AC_MSG_RESULT([not set])
12473 ONEDRIVE_CLIENT_ID="\"\""
12474 ONEDRIVE_CLIENT_SECRET="\"\""
12476 AC_MSG_RESULT([set])
12477 ONEDRIVE_CLIENT_ID="\"$with_onedrive_client_id\""
12478 ONEDRIVE_CLIENT_SECRET="\"$with_onedrive_client_secret\""
12480 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_ID, $ONEDRIVE_CLIENT_ID)
12481 AC_DEFINE_UNQUOTED(ONEDRIVE_CLIENT_SECRET, $ONEDRIVE_CLIENT_SECRET)
12484 dnl ===================================================================
12485 dnl Hook up LibreOffice's nodep environmental variable to automake's equivalent
12486 dnl --enable-dependency-tracking configure option
12487 dnl ===================================================================
12488 AC_MSG_CHECKING([whether to enable dependency tracking])
12489 if test "$enable_dependency_tracking" = "no"; then
12491 AC_MSG_RESULT([no])
12493 AC_MSG_RESULT([yes])
12497 dnl ===================================================================
12498 dnl Number of CPUs to use during the build
12499 dnl ===================================================================
12500 AC_MSG_CHECKING([for number of processors to use])
12501 # plain --with-parallelism is just the default
12502 if test -n "$with_parallelism" -a "$with_parallelism" != "yes"; then
12503 if test "$with_parallelism" = "no"; then
12506 PARALLELISM=$with_parallelism
12509 if test "$enable_icecream" = "yes"; then
12514 Darwin|FreeBSD|NetBSD|OpenBSD)
12515 PARALLELISM=`sysctl -n hw.ncpu`
12519 PARALLELISM=`getconf _NPROCESSORS_ONLN`
12521 # what else than above does profit here *and* has /proc?
12523 PARALLELISM=`grep $'^processor\t*:' /proc/cpuinfo | wc -l`
12527 # If we hit the catch-all case, but /proc/cpuinfo doesn't exist or has an
12528 # unexpected format, 'wc -l' will have returned 0 (and we won't use -j at all).
12532 if test "$no_parallelism_make" = "YES" && test $PARALLELISM -gt 1; then
12533 if test -z "$with_parallelism"; then
12534 AC_MSG_WARN([gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this.])
12535 add_warning "gmake 3.81 crashes with parallelism > 1, reducing it to 1. upgrade to 3.82 to avoid this."
12538 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."
12542 if test $PARALLELISM -eq 0; then
12543 AC_MSG_RESULT([explicit make -j option needed])
12545 AC_MSG_RESULT([$PARALLELISM])
12547 AC_SUBST(PARALLELISM)
12549 IWYU_PATH="$with_iwyu"
12550 AC_SUBST(IWYU_PATH)
12551 if test ! -z "$IWYU_PATH"; then
12552 if test ! -f "$IWYU_PATH"; then
12553 AC_MSG_ERROR([cannot find include-what-you-use binary specified by --with-iwyu])
12558 # Set up ILIB for MSVC build
12561 if test "$build_os" = "cygwin"; then
12563 if test -n "$JAVA_HOME"; then
12564 ILIB="$ILIB;$JAVA_HOME/lib"
12567 if test "$BITNESS_OVERRIDE" = 64; then
12568 ILIB="$ILIB;$COMPATH/lib/x64"
12569 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/x64"
12570 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/x64"
12571 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/x64"
12572 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
12573 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/x64"
12574 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/x64"
12576 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/x64"
12577 ucrtlibpath_formatted=$formatted_path
12578 ILIB="$ILIB;$ucrtlibpath_formatted"
12579 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
12581 ILIB="$ILIB;$COMPATH/lib/x86"
12582 ILIB1="$ILIB1 -LIBPATH:$COMPATH/lib/x86"
12583 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib"
12584 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib"
12585 if test $WINDOWS_SDK_VERSION = 80 -o $WINDOWS_SDK_VERSION = 81 -o $WINDOWS_SDK_VERSION = 10; then
12586 ILIB="$ILIB;$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/x86"
12587 ILIB1="$ILIB1 -LIBPATH:$WINDOWS_SDK_HOME/lib/$winsdklibsubdir/um/x86"
12589 PathFormat "${UCRTSDKDIR}lib/$UCRTVERSION/ucrt/x86"
12590 ucrtlibpath_formatted=$formatted_path
12591 ILIB="$ILIB;$ucrtlibpath_formatted"
12592 ILIB1="$ILIB1 -LIBPATH:$ucrtlibpath_formatted"
12594 if test -f "$DOTNET_FRAMEWORK_HOME/lib/mscoree.lib"; then
12595 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/lib"
12597 ILIB="$ILIB;$DOTNET_FRAMEWORK_HOME/Lib/um/$WINDOWS_SDK_ARCH"
12603 # ===================================================================
12604 # Creating bigger shared library to link against
12605 # ===================================================================
12606 AC_MSG_CHECKING([whether to create huge library])
12609 if test $_os = iOS -o $_os = Android; then
12610 # Never any point in mergelibs for these as we build just static
12611 # libraries anyway...
12612 enable_mergelibs=no
12615 if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
12616 if test $_os != Linux -a $_os != WINNT; then
12617 add_warning "--enable-mergelibs is not tested for this platform"
12620 AC_MSG_RESULT([yes])
12622 AC_MSG_RESULT([no])
12624 AC_SUBST([MERGELIBS])
12626 dnl ===================================================================
12627 dnl icerun is a wrapper that stops us spawning tens of processes
12628 dnl locally - for tools that can't be executed on the compile cluster
12629 dnl this avoids a dozen javac's ganging up on your laptop to kill it.
12630 dnl ===================================================================
12631 AC_MSG_CHECKING([whether to use icerun wrapper])
12633 if test "$enable_icecream" = "yes" && which icerun >/dev/null 2>&1 ; then
12634 ICECREAM_RUN=icerun
12635 AC_MSG_RESULT([yes])
12637 AC_MSG_RESULT([no])
12639 AC_SUBST(ICECREAM_RUN)
12641 dnl ===================================================================
12642 dnl Setup the ICECC_VERSION for the build the same way it was set for
12643 dnl configure, so that CC/CXX and ICECC_VERSION are in sync
12644 dnl ===================================================================
12645 x_ICECC_VERSION=[\#]
12646 if test -n "$ICECC_VERSION" ; then
12649 AC_SUBST(x_ICECC_VERSION)
12650 AC_SUBST(ICECC_VERSION)
12652 dnl ===================================================================
12654 AC_MSG_CHECKING([MPL subset])
12657 if test "$enable_mpl_subset" = "yes"; then
12659 if test "$enable_report_builder" != "no" -a "$with_java" != "no"; then
12661 elif test "$ENABLE_REPORTBUILDER" = "TRUE"; then
12664 if test "$warn_report" = "true"; then
12665 AC_MSG_ERROR([need to --disable-report-builder - extended database report builder.])
12667 if test "x$enable_postgresql_sdbc" != "xno"; then
12668 AC_MSG_ERROR([need to --disable-postgresql-sdbc - the PostgreSQL database backend.])
12670 if test "$enable_lotuswordpro" = "yes"; then
12671 AC_MSG_ERROR([need to --disable-lotuswordpro - a Lotus Word Pro file format import filter.])
12673 if test "$WITH_WEBDAV" = "neon"; then
12674 AC_MSG_ERROR([need --with-webdav=serf or --without-webdav - webdav support.])
12676 if test -n "$ENABLE_POPPLER"; then
12677 if test "x$SYSTEM_POPPLER" = "x"; then
12678 AC_MSG_ERROR([need to disable PDF import via poppler or use system library])
12681 # cf. m4/libo_check_extension.m4
12682 if test "x$WITH_EXTRA_EXTENSIONS" != "x"; then
12683 AC_MSG_ERROR([need to disable extra extensions '$WITH_EXTRA_EXTENSIONS'])
12685 for theme in $WITH_THEMES; do
12687 breeze|breeze_dark|breeze_svg|elementary|elementary_svg|karasa_jaga|karasa_jaga_svg) #blacklist of icon themes under GPL or LGPL
12688 AC_MSG_ERROR([need to disable icon themes from '$WITH_THEMES': $theme present, use --with-theme=tango]) ;;
12693 ENABLE_OPENGL_TRANSITIONS=
12695 if test "$enable_lpsolve" != "no" -o "x$ENABLE_LPSOLVE" = "xTRUE"; then
12696 AC_MSG_ERROR([need to --disable-lpsolve - calc linear programming solver.])
12700 AC_DEFINE(MPL_HAVE_SUBSET)
12701 AC_MSG_RESULT([only])
12703 AC_MSG_RESULT([no restrictions])
12705 AC_SUBST(MPL_SUBSET)
12707 dnl ===================================================================
12709 AC_MSG_CHECKING([formula logger])
12710 ENABLE_FORMULA_LOGGER=
12712 if test "x$enable_formula_logger" = "xyes"; then
12713 AC_MSG_RESULT([yes])
12714 AC_DEFINE(ENABLE_FORMULA_LOGGER)
12715 ENABLE_FORMULA_LOGGER=TRUE
12716 elif test -n "$ENABLE_DBGUTIL" ; then
12717 AC_MSG_RESULT([yes])
12718 AC_DEFINE(ENABLE_FORMULA_LOGGER)
12719 ENABLE_FORMULA_LOGGER=TRUE
12721 AC_MSG_RESULT([no])
12724 AC_SUBST(ENABLE_FORMULA_LOGGER)
12726 dnl ===================================================================
12727 dnl Setting up the environment.
12728 dnl ===================================================================
12729 AC_MSG_NOTICE([setting up the build environment variables...])
12733 if test "$build_os" = "cygwin"; then
12734 if test -d "$COMPATH/atlmfc/lib/spectre"; then
12735 ATL_LIB="$COMPATH/atlmfc/lib/spectre"
12736 ATL_INCLUDE="$COMPATH/atlmfc/include"
12737 elif test -d "$COMPATH/atlmfc/lib"; then
12738 ATL_LIB="$COMPATH/atlmfc/lib"
12739 ATL_INCLUDE="$COMPATH/atlmfc/include"
12741 ATL_LIB="$WINDOWS_SDK_HOME/lib" # Doesn't exist for VSE
12742 ATL_INCLUDE="$WINDOWS_SDK_HOME/include/atl"
12744 if test "$BITNESS_OVERRIDE" = 64; then
12745 ATL_LIB="$ATL_LIB/x64"
12747 ATL_LIB="$ATL_LIB/x86"
12749 ATL_LIB=`win_short_path_for_make "$ATL_LIB"`
12750 ATL_INCLUDE=`win_short_path_for_make "$ATL_INCLUDE"`
12752 # sort.exe and find.exe also exist in C:/Windows/system32 so need /usr/bin/
12753 PathFormat "/usr/bin/find.exe"
12754 FIND="$formatted_path"
12755 PathFormat "/usr/bin/sort.exe"
12756 SORT="$formatted_path"
12757 PathFormat "/usr/bin/grep.exe"
12758 WIN_GREP="$formatted_path"
12759 PathFormat "/usr/bin/ls.exe"
12760 WIN_LS="$formatted_path"
12761 PathFormat "/usr/bin/touch.exe"
12762 WIN_TOUCH="$formatted_path"
12768 AC_SUBST(ATL_INCLUDE)
12774 AC_SUBST(WIN_TOUCH)
12776 AC_SUBST(BUILD_TYPE)
12781 PERL="$formatted_path"
12784 if test -n "$TMPDIR"; then
12785 TEMP_DIRECTORY="$TMPDIR"
12787 TEMP_DIRECTORY="/tmp"
12789 if test "$build_os" = "cygwin"; then
12790 TEMP_DIRECTORY=`cygpath -m "$TEMP_DIRECTORY"`
12792 AC_SUBST(TEMP_DIRECTORY)
12794 # setup the PATH for the environment
12795 if test -n "$LO_PATH_FOR_BUILD"; then
12796 LO_PATH="$LO_PATH_FOR_BUILD"
12802 aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
12803 if test "$ENABLE_JAVA" != ""; then
12804 pathmunge "$JAVA_HOME/bin" "after"
12809 # Win32 make needs native paths
12810 if test "$GNUMAKE_WIN_NATIVE" = "TRUE" ; then
12811 LO_PATH=`cygpath -p -m "$PATH"`
12813 if test "$BITNESS_OVERRIDE" = 64; then
12814 # needed for msi packaging
12815 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
12817 # .NET 4.6 and higher don't have bin directory
12818 if test -f "$DOTNET_FRAMEWORK_HOME/bin"; then
12819 pathmunge "$DOTNET_FRAMEWORK_HOME/bin" "before"
12821 pathmunge "$WINDOWS_SDK_HOME/bin" "before"
12822 pathmunge "$CSC_PATH" "before"
12823 pathmunge "$MIDL_PATH" "before"
12824 pathmunge "$AL_PATH" "before"
12825 pathmunge "$MSPDB_PATH" "before"
12826 if test "$MSPDB_PATH" != "$CL_PATH" ; then
12827 pathmunge "$CL_PATH" "before"
12829 if test -n "$MSBUILD_PATH" ; then
12830 pathmunge "$MSBUILD_PATH" "before"
12832 if test "$BITNESS_OVERRIDE" = 64; then
12833 pathmunge "$COMPATH/bin/amd64" "before"
12834 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x64" "before"
12836 pathmunge "$COMPATH/bin" "before"
12837 pathmunge "$WINDOWS_SDK_BINDIR_NO_ARCH/x86" "before"
12839 if test "$ENABLE_JAVA" != ""; then
12840 if test -d "$JAVA_HOME/jre/bin/client"; then
12841 pathmunge "$JAVA_HOME/jre/bin/client" "before"
12843 if test -d "$JAVA_HOME/jre/bin/hotspot"; then
12844 pathmunge "$JAVA_HOME/jre/bin/hotspot" "before"
12846 pathmunge "$JAVA_HOME/bin" "before"
12851 pathmunge "/usr/css/bin" "before"
12852 if test "$ENABLE_JAVA" != ""; then
12853 pathmunge "$JAVA_HOME/bin" "after"
12863 # Generate a configuration sha256 we can use for deps
12864 if test -f config_host.mk; then
12865 config_sha256=`$SHA256SUM config_host.mk | sed "s/ .*//"`
12867 if test -f config_host_lang.mk; then
12868 config_lang_sha256=`$SHA256SUM config_host_lang.mk | sed "s/ .*//"`
12871 CFLAGS=$my_original_CFLAGS
12872 CXXFLAGS=$my_original_CXXFLAGS
12873 CPPFLAGS=$my_original_CPPFLAGS
12875 AC_CONFIG_FILES([config_host.mk
12876 config_host_lang.mk
12878 bin/bffvalidator.sh
12879 bin/odfvalidator.sh
12881 instsetoo_native/util/openoffice.lst
12882 sysui/desktop/macosx/Info.plist])
12883 AC_CONFIG_HEADERS([config_host/config_buildid.h])
12884 AC_CONFIG_HEADERS([config_host/config_clang.h])
12885 AC_CONFIG_HEADERS([config_host/config_dconf.h])
12886 AC_CONFIG_HEADERS([config_host/config_eot.h])
12887 AC_CONFIG_HEADERS([config_host/config_extensions.h])
12888 AC_CONFIG_HEADERS([config_host/config_cairo_canvas.h])
12889 AC_CONFIG_HEADERS([config_host/config_cxxabi.h])
12890 AC_CONFIG_HEADERS([config_host/config_dbus.h])
12891 AC_CONFIG_HEADERS([config_host/config_features.h])
12892 AC_CONFIG_HEADERS([config_host/config_feature_desktop.h])
12893 AC_CONFIG_HEADERS([config_host/config_feature_opencl.h])
12894 AC_CONFIG_HEADERS([config_host/config_firebird.h])
12895 AC_CONFIG_HEADERS([config_host/config_folders.h])
12896 AC_CONFIG_HEADERS([config_host/config_fuzzers.h])
12897 AC_CONFIG_HEADERS([config_host/config_gio.h])
12898 AC_CONFIG_HEADERS([config_host/config_global.h])
12899 AC_CONFIG_HEADERS([config_host/config_gpgme.h])
12900 AC_CONFIG_HEADERS([config_host/config_java.h])
12901 AC_CONFIG_HEADERS([config_host/config_langs.h])
12902 AC_CONFIG_HEADERS([config_host/config_lgpl.h])
12903 AC_CONFIG_HEADERS([config_host/config_libcxx.h])
12904 AC_CONFIG_HEADERS([config_host/config_liblangtag.h])
12905 AC_CONFIG_HEADERS([config_host/config_libnumbertext.h])
12906 AC_CONFIG_HEADERS([config_host/config_locales.h])
12907 AC_CONFIG_HEADERS([config_host/config_mpl.h])
12908 AC_CONFIG_HEADERS([config_host/config_oox.h])
12909 AC_CONFIG_HEADERS([config_host/config_options.h])
12910 AC_CONFIG_HEADERS([config_host/config_options_calc.h])
12911 AC_CONFIG_HEADERS([config_host/config_typesizes.h])
12912 AC_CONFIG_HEADERS([config_host/config_vendor.h])
12913 AC_CONFIG_HEADERS([config_host/config_vcl.h])
12914 AC_CONFIG_HEADERS([config_host/config_vclplug.h])
12915 AC_CONFIG_HEADERS([config_host/config_version.h])
12916 AC_CONFIG_HEADERS([config_host/config_oauth2.h])
12917 AC_CONFIG_HEADERS([config_host/config_poppler.h])
12918 AC_CONFIG_HEADERS([config_host/config_python.h])
12919 AC_CONFIG_HEADERS([config_host/config_writerperfect.h])
12922 if test "$CROSS_COMPILING" = TRUE; then
12923 (echo; echo export BUILD_TYPE_FOR_HOST=$BUILD_TYPE) >>config_build.mk
12926 # touch the config timestamp file
12927 if test ! -f config_host.mk.stamp; then
12928 echo > config_host.mk.stamp
12929 elif test "$config_sha256" = `$SHA256SUM config_host.mk | sed "s/ .*//"`; then
12930 echo "Host Configuration unchanged - avoiding scp2 stamp update"
12932 echo > config_host.mk.stamp
12935 # touch the config lang timestamp file
12936 if test ! -f config_host_lang.mk.stamp; then
12937 echo > config_host_lang.mk.stamp
12938 elif test "$config_lang_sha256" = `$SHA256SUM config_host_lang.mk | sed "s/ .*//"`; then
12939 echo "Language Configuration unchanged - avoiding scp2 stamp update"
12941 echo > config_host_lang.mk.stamp
12945 if test \( "$STALE_MAKE" = "TRUE" -o "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE" \) \
12946 -a "$build_os" = "cygwin"; then
12949 ****************************************************************************
12951 Your make version is known to be horribly slow, and hard to debug
12952 problems with. To get a reasonably functional make please do:
12954 to install a pre-compiled binary make for Win32
12956 mkdir -p /opt/lo/bin
12958 wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
12959 cp make-4.2.1-msvc.exe make
12962 to install from source:
12963 place yourself in a working directory of you choice.
12965 git clone git://git.savannah.gnu.org/make.git
12967 [go to Start menu, open "Visual Studio 2017", click "VS2017 x86 Native Tools Command Prompt" or "VS2017 x64 Native Tools Command Prompt"]
12968 set PATH=%PATH%;C:\Cygwin\bin
12969 [or Cygwin64, if that is what you have]
12970 cd path-to-make-repo-you-cloned-above
12971 build_w32.bat --without-guile
12973 should result in a WinRel/gnumake.exe.
12974 Copy it to the Cygwin /opt/lo/bin directory as make.exe
12976 Then re-run autogen.sh
12978 Note: autogen.sh will try to use /opt/lo/bin/make if the environment variable GNUMAKE is not already defined.
12979 Alternatively, you can install the 'new' make where ever you want and make sure that `which make` finds it.
12982 if test "$HAVE_GNUMAKE_FILE_FUNC" != "TRUE"; then
12983 AC_MSG_ERROR([no file function found; the build will fail without it; use GNU make 4.0 or later])
12989 ****************************************************************************
12994 To view some help, run:
12999 if test $_os != WINNT -a "$CROSS_COMPILING" != TRUE; then
13001 After the build of LibreOffice has finished successfully, you can immediately run LibreOffice using the command:
13004 if test $_os = Darwin; then
13005 echo open instdir/$PRODUCTNAME.app
13007 echo instdir/program/soffice
13011 If you want to run the smoketest, run:
13017 if test -f warn; then
13022 dnl vim:set shiftwidth=4 softtabstop=4 expandtab: